mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Reset parenthesis level counter upon \r.
This commit is contained in:
		@@ -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 @@
 | 
				
			|||||||
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);
 | 
				
			|||||||
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,
 | 
				
			|||||||
		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,
 | 
				
			|||||||
		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
 | 
				
			|||||||
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,
 | 
				
			|||||||
	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 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * 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
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
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 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * 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)
 | 
				
			|||||||
				/* 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 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * 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[])
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		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;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user