Commit d235d9b8 authored by Peter Eisentraut's avatar Peter Eisentraut

Reset parenthesis level counter upon \r.

parent 2442e79e
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright 2000 by PostgreSQL Global Development Group * 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 "postgres_fe.h"
#include "command.h" #include "command.h"
...@@ -52,7 +52,8 @@ ...@@ -52,7 +52,8 @@
static backslashResult exec_command(const char *cmd, static backslashResult exec_command(const char *cmd,
const char *options_string, const char *options_string,
const char **continue_parse, const char **continue_parse,
PQExpBuffer query_buf); PQExpBuffer query_buf,
volatile int *paren_level);
/* different ways for scan_option to handle parameter words */ /* different ways for scan_option to handle parameter words */
enum option_type enum option_type
...@@ -94,7 +95,8 @@ static bool do_shell(const char *command); ...@@ -94,7 +95,8 @@ static bool do_shell(const char *command);
backslashResult backslashResult
HandleSlashCmds(const char *line, HandleSlashCmds(const char *line,
PQExpBuffer query_buf, PQExpBuffer query_buf,
const char **end_of_cmd) const char **end_of_cmd,
volatile int *paren_level)
{ {
backslashResult status = CMD_SKIP_LINE; backslashResult status = CMD_SKIP_LINE;
char *my_line; char *my_line;
...@@ -132,7 +134,7 @@ HandleSlashCmds(const char *line, ...@@ -132,7 +134,7 @@ HandleSlashCmds(const char *line,
my_line[blank_loc] = '\0'; 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) if (status == CMD_UNKNOWN)
{ {
...@@ -147,7 +149,7 @@ HandleSlashCmds(const char *line, ...@@ -147,7 +149,7 @@ HandleSlashCmds(const char *line,
new_cmd[1] = '\0'; new_cmd[1] = '\0';
/* use line for options, because my_line was clobbered above */ /* 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 * continue_parse must be relative to my_line for calculation
...@@ -192,7 +194,8 @@ static backslashResult ...@@ -192,7 +194,8 @@ static backslashResult
exec_command(const char *cmd, exec_command(const char *cmd,
const char *options_string, const char *options_string,
const char **continue_parse, 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 bool success = true; /* indicate here if the command ran ok or
* failed */ * failed */
...@@ -636,6 +639,8 @@ exec_command(const char *cmd, ...@@ -636,6 +639,8 @@ exec_command(const char *cmd,
else if (strcmp(cmd, "r") == 0 || strcmp(cmd, "reset") == 0) else if (strcmp(cmd, "r") == 0 || strcmp(cmd, "reset") == 0)
{ {
resetPQExpBuffer(query_buf); resetPQExpBuffer(query_buf);
if (paren_level)
*paren_level = 0;
if (!quiet) if (!quiet)
puts(gettext("Query buffer reset (cleared).")); puts(gettext("Query buffer reset (cleared)."));
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright 2000 by PostgreSQL Global Development Group * 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 #ifndef COMMAND_H
#define COMMAND_H #define COMMAND_H
...@@ -28,7 +28,8 @@ typedef enum _backslashResult ...@@ -28,7 +28,8 @@ typedef enum _backslashResult
backslashResult HandleSlashCmds(const char *line, backslashResult HandleSlashCmds(const char *line,
PQExpBuffer query_buf, PQExpBuffer query_buf,
const char **end_of_cmd); const char **end_of_cmd,
volatile int *paren_level);
int int
process_file(char *filename); process_file(char *filename);
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright 2000 by PostgreSQL Global Development Group * 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 "postgres_fe.h"
#include "mainloop.h" #include "mainloop.h"
...@@ -465,7 +465,8 @@ MainLoop(FILE *source) ...@@ -465,7 +465,8 @@ MainLoop(FILE *source)
/* handle backslash command */ /* handle backslash command */
slashCmdStatus = HandleSlashCmds(&line[i], slashCmdStatus = HandleSlashCmds(&line[i],
query_buf->len > 0 ? query_buf : previous_buf, query_buf->len > 0 ? query_buf : previous_buf,
&end_of_cmd); &end_of_cmd,
&paren_level);
success = slashCmdStatus != CMD_ERROR; success = slashCmdStatus != CMD_ERROR;
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright 2000 by PostgreSQL Global Development Group * 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" #include "postgres_fe.h"
...@@ -256,7 +256,7 @@ main(int argc, char *argv[]) ...@@ -256,7 +256,7 @@ main(int argc, char *argv[])
if ((value = GetVariable(pset.vars, "ECHO")) && strcmp(value, "all") == 0) if ((value = GetVariable(pset.vars, "ECHO")) && strcmp(value, "all") == 0)
puts(options.action_string); 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; ? EXIT_SUCCESS : EXIT_FAILURE;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment