|
7 | 7 | *
|
8 | 8 | *
|
9 | 9 | * IDENTIFICATION
|
10 |
| - * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.156 1998/08/27 13:25:18 scrappy Exp $ |
| 10 | + * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.157 1998/08/29 04:05:39 momjian Exp $ |
11 | 11 | *
|
12 | 12 | *-------------------------------------------------------------------------
|
13 | 13 | */
|
@@ -89,7 +89,8 @@ char *__progname = "psql";
|
89 | 89 | #define PROMPT_READY '='
|
90 | 90 | #define PROMPT_CONTINUE '-'
|
91 | 91 | #define PROMPT_COMMENT '*'
|
92 |
| -#define PROMPT_QUOTE '\'' |
| 92 | +#define PROMPT_SINGLEQUOTE '\'' |
| 93 | +#define PROMPT_DOUBLEQUOTE '"' |
93 | 94 |
|
94 | 95 | /* Backslash command handling:
|
95 | 96 | * 0 - send currently constructed query to backend (i.e. we got a \g)
|
@@ -2310,7 +2311,7 @@ MainLoop(PsqlSettings *pset, char *query, FILE *source)
|
2310 | 2311 |
|
2311 | 2312 | /* We've reached the end of our command input. */
|
2312 | 2313 | bool success;
|
2313 |
| - bool in_quote; |
| 2314 | + char in_quote; /* == 0 for no in_quote */ |
2314 | 2315 | bool was_bslash; /* backslash */
|
2315 | 2316 | int paren_level;
|
2316 | 2317 | char *query_start;
|
@@ -2380,8 +2381,10 @@ MainLoop(PsqlSettings *pset, char *query, FILE *source)
|
2380 | 2381 | {
|
2381 | 2382 | if (interactive && !pset->quiet)
|
2382 | 2383 | {
|
2383 |
| - if (in_quote) |
2384 |
| - pset->prompt[strlen(pset->prompt) - 3] = PROMPT_QUOTE; |
| 2384 | + if (in_quote && in_quote == PROMPT_SINGLEQUOTE) |
| 2385 | + pset->prompt[strlen(pset->prompt) - 3] = PROMPT_SINGLEQUOTE; |
| 2386 | + else if (in_quote && in_quote == PROMPT_DOUBLEQUOTE) |
| 2387 | + pset->prompt[strlen(pset->prompt) - 3] = PROMPT_DOUBLEQUOTE; |
2385 | 2388 | else if (xcomment != NULL)
|
2386 | 2389 | pset->prompt[strlen(pset->prompt) - 3] = PROMPT_COMMENT;
|
2387 | 2390 | else if (query[0] != '\0' && !querySent)
|
@@ -2500,7 +2503,7 @@ MainLoop(PsqlSettings *pset, char *query, FILE *source)
|
2500 | 2503 | was_bslash = true;
|
2501 | 2504 |
|
2502 | 2505 | /* inside a quote? */
|
2503 |
| - if (in_quote && (line[i] != '\'' || was_bslash)) |
| 2506 | + if (in_quote && (line[i] != in_quote || was_bslash)) |
2504 | 2507 | /* do nothing */ ;
|
2505 | 2508 | else if (xcomment != NULL) /* inside an extended
|
2506 | 2509 | * comment? */
|
@@ -2548,8 +2551,10 @@ MainLoop(PsqlSettings *pset, char *query, FILE *source)
|
2548 | 2551 | line[i] = '\0'; /* remove comment */
|
2549 | 2552 | break;
|
2550 | 2553 | }
|
2551 |
| - else if (line[i] == '\'') |
2552 |
| - in_quote ^= 1; |
| 2554 | + else if (in_quote && line[i] == in_quote) |
| 2555 | + in_quote = false; |
| 2556 | + else if (!in_quote && (line[i] == '\'' || line[i] == '"')) |
| 2557 | + in_quote = line[i]; |
2553 | 2558 | /* semi-colon? then send query now */
|
2554 | 2559 | else if (!paren_level && line[i] == ';')
|
2555 | 2560 | {
|
|
0 commit comments