From d235d9b8a3b63d81e2ba60dfc54937a318ae0f95 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Wed, 27 Mar 2002 19:16:13 +0000 Subject: [PATCH] Reset parenthesis level counter upon \r. --- src/bin/psql/command.c | 17 +++++++++++------ src/bin/psql/command.h | 5 +++-- src/bin/psql/mainloop.c | 5 +++-- src/bin/psql/startup.c | 4 ++-- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 97f58dc3f6..a0d4a5ca1a 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -3,7 +3,7 @@ * * Copyright 2000 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.70 2002/03/19 02:32:21 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.71 2002/03/27 19:16:13 petere Exp $ */ #include "postgres_fe.h" #include "command.h" @@ -52,7 +52,8 @@ static backslashResult exec_command(const char *cmd, const char *options_string, const char **continue_parse, - PQExpBuffer query_buf); + PQExpBuffer query_buf, + volatile int *paren_level); /* different ways for scan_option to handle parameter words */ enum option_type @@ -94,7 +95,8 @@ static bool do_shell(const char *command); backslashResult HandleSlashCmds(const char *line, PQExpBuffer query_buf, - const char **end_of_cmd) + const char **end_of_cmd, + volatile int *paren_level) { backslashResult status = CMD_SKIP_LINE; char *my_line; @@ -132,7 +134,7 @@ HandleSlashCmds(const char *line, my_line[blank_loc] = '\0'; } - status = exec_command(my_line, options_string, &continue_parse, query_buf); + status = exec_command(my_line, options_string, &continue_parse, query_buf, paren_level); if (status == CMD_UNKNOWN) { @@ -147,7 +149,7 @@ HandleSlashCmds(const char *line, new_cmd[1] = '\0'; /* use line for options, because my_line was clobbered above */ - status = exec_command(new_cmd, line + 1, &continue_parse, query_buf); + status = exec_command(new_cmd, line + 1, &continue_parse, query_buf, paren_level); /* * continue_parse must be relative to my_line for calculation @@ -192,7 +194,8 @@ static backslashResult exec_command(const char *cmd, const char *options_string, const char **continue_parse, - PQExpBuffer query_buf) + PQExpBuffer query_buf, + volatile int *paren_level) { bool success = true; /* indicate here if the command ran ok or * failed */ @@ -636,6 +639,8 @@ exec_command(const char *cmd, else if (strcmp(cmd, "r") == 0 || strcmp(cmd, "reset") == 0) { resetPQExpBuffer(query_buf); + if (paren_level) + *paren_level = 0; if (!quiet) puts(gettext("Query buffer reset (cleared).")); } diff --git a/src/bin/psql/command.h b/src/bin/psql/command.h index b026cf4f8a..f74be3a851 100644 --- a/src/bin/psql/command.h +++ b/src/bin/psql/command.h @@ -3,7 +3,7 @@ * * Copyright 2000 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/command.h,v 1.13 2001/11/05 17:46:30 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/command.h,v 1.14 2002/03/27 19:16:13 petere Exp $ */ #ifndef COMMAND_H #define COMMAND_H @@ -28,7 +28,8 @@ typedef enum _backslashResult backslashResult HandleSlashCmds(const char *line, PQExpBuffer query_buf, - const char **end_of_cmd); + const char **end_of_cmd, + volatile int *paren_level); int process_file(char *filename); diff --git a/src/bin/psql/mainloop.c b/src/bin/psql/mainloop.c index 954b575274..06ca83a7fe 100644 --- a/src/bin/psql/mainloop.c +++ b/src/bin/psql/mainloop.c @@ -3,7 +3,7 @@ * * Copyright 2000 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/mainloop.c,v 1.46 2002/02/18 05:57:41 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/mainloop.c,v 1.47 2002/03/27 19:16:13 petere Exp $ */ #include "postgres_fe.h" #include "mainloop.h" @@ -465,7 +465,8 @@ MainLoop(FILE *source) /* handle backslash command */ slashCmdStatus = HandleSlashCmds(&line[i], query_buf->len > 0 ? query_buf : previous_buf, - &end_of_cmd); + &end_of_cmd, + &paren_level); success = slashCmdStatus != CMD_ERROR; diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c index 9e4185de3b..3a7b7a0f93 100644 --- a/src/bin/psql/startup.c +++ b/src/bin/psql/startup.c @@ -3,7 +3,7 @@ * * Copyright 2000 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/startup.c,v 1.54 2001/11/05 17:46:31 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/startup.c,v 1.55 2002/03/27 19:16:13 petere Exp $ */ #include "postgres_fe.h" @@ -256,7 +256,7 @@ main(int argc, char *argv[]) if ((value = GetVariable(pset.vars, "ECHO")) && strcmp(value, "all") == 0) puts(options.action_string); - successResult = HandleSlashCmds(options.action_string, NULL, NULL) != CMD_ERROR + successResult = HandleSlashCmds(options.action_string, NULL, NULL, NULL) != CMD_ERROR ? EXIT_SUCCESS : EXIT_FAILURE; } -- 2.40.0