From 098dea8633cfd638ba92d3eb4b2577aca434b074 Mon Sep 17 00:00:00 2001 From: Bruce Momjian <bruce@momjian.us> Date: Sat, 24 May 1997 14:38:05 +0000 Subject: [PATCH] Fix core dump on \c. --- src/bin/psql/psql.c | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/bin/psql/psql.c b/src/bin/psql/psql.c index aa60a311f6..e91bcd2654 100644 --- a/src/bin/psql/psql.c +++ b/src/bin/psql/psql.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.65 1997/05/24 01:45:17 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.66 1997/05/24 14:38:05 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -1088,7 +1088,7 @@ HandleSlashCmds(PsqlSettings * settings, optarg = NULL; blank_loc = strcspn(cmd, " \t"); - if (blank_loc == 0) + if (blank_loc == 0 || !cmd[blank_loc]) optarg2 = NULL; else optarg2 = cmd + blank_loc + strspn(cmd + blank_loc, " \t"); @@ -1114,17 +1114,20 @@ HandleSlashCmds(PsqlSettings * settings, case 'c':{ if (strncmp(cmd, "copy ", strlen("copy ")) == 0) do_copy(optarg2, settings); - else if (strncmp(cmd, "connect ", strlen("connect ")) == 0) { + else if (strncmp(cmd, "connect ", strlen("connect ")) == 0 || + strcmp(cmd, "connect") == 0 /* issue error message */) { char *optarg3; int blank_loc2; - blank_loc2 = strcspn(optarg2, " \t"); - if (blank_loc2 == 0 || *(optarg2 + blank_loc2) == '\0') - optarg3 = NULL; - else { - optarg3 = optarg2 + blank_loc2 + + if (optarg2) { + blank_loc2 = strcspn(optarg2, " \t"); + if (blank_loc2 == 0 || *(optarg2 + blank_loc2) == '\0') + optarg3 = NULL; + else { + optarg3 = optarg2 + blank_loc2 + strspn(optarg2 + blank_loc2, " \t"); - *(optarg2 + blank_loc2) = '\0'; + *(optarg2 + blank_loc2) = '\0'; + } } do_connect(optarg2, optarg3, settings); } @@ -1132,13 +1135,15 @@ HandleSlashCmds(PsqlSettings * settings, char *optarg3; int blank_loc2; - blank_loc2 = strcspn(optarg, " \t"); - if (blank_loc2 == 0 || *(optarg + blank_loc2) == '\0') - optarg3 = NULL; - else { - optarg3 = optarg + blank_loc2 + + if (optarg) { + blank_loc2 = strcspn(optarg, " \t"); + if (blank_loc2 == 0 || *(optarg + blank_loc2) == '\0') + optarg3 = NULL; + else { + optarg3 = optarg + blank_loc2 + strspn(optarg + blank_loc2, " \t"); - *(optarg + blank_loc2) = '\0'; + *(optarg + blank_loc2) = '\0'; + } } do_connect(optarg, optarg3, settings); } -- 2.24.1