From 36ba263d8f20b789418e8d86ff7221fecc5add0d Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 13 Aug 2010 20:56:18 +0000 Subject: [PATCH] Clean up failure to use ClosePager() where appropriate in help.c. Also prevent possible repeat opening of pager in helpSQL(). --- src/bin/psql/help.c | 40 +++++++++------------------------------- 1 file changed, 9 insertions(+), 31 deletions(-) diff --git a/src/bin/psql/help.c b/src/bin/psql/help.c index 69a073a2b3..822cb59717 100644 --- a/src/bin/psql/help.c +++ b/src/bin/psql/help.c @@ -3,12 +3,10 @@ * * Copyright (c) 2000-2010, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/psql/help.c,v 1.161 2010/08/12 00:40:59 tgl Exp $ + * $PostgreSQL: pgsql/src/bin/psql/help.c,v 1.162 2010/08/13 20:56:18 tgl Exp $ */ #include "postgres_fe.h" -#include - #ifndef WIN32 #ifdef HAVE_PWD_H #include /* for getpwuid() */ @@ -27,8 +25,6 @@ #include #endif -#include "pqsignal.h" - #include "common.h" #include "help.h" #include "input.h" @@ -271,13 +267,7 @@ slashUsage(unsigned short int pager) " \\lo_list\n" " \\lo_unlink LOBOID large object operations\n")); - if (output != stdout) - { - pclose(output); -#ifndef WIN32 - pqsignal(SIGPIPE, SIG_DFL); -#endif - } + ClosePager(output); } @@ -334,14 +324,7 @@ helpSQL(const char *topic, unsigned short int pager) fputc('\n', output); } - /* Only close if we used the pager */ - if (output != stdout) - { - pclose(output); -#ifndef WIN32 - pqsignal(SIGPIPE, SIG_DFL); -#endif - } + ClosePager(output); } else { @@ -349,7 +332,7 @@ helpSQL(const char *topic, unsigned short int pager) j, x = 0; bool help_found = false; - FILE *output; + FILE *output = NULL; size_t len, wordlen; int nl_count = 0; @@ -376,7 +359,8 @@ helpSQL(const char *topic, unsigned short int pager) } if (wordlen >= len) /* Don't try again if the same word */ { - output = PageOutput(nl_count, pager); + if (!output) + output = PageOutput(nl_count, pager); break; } len = wordlen; @@ -396,7 +380,8 @@ helpSQL(const char *topic, unsigned short int pager) } } - output = PageOutput(nl_count, pager); + if (!output) + output = PageOutput(nl_count, pager); for (i = 0; QL_HELP[i].cmd; i++) { @@ -426,14 +411,7 @@ helpSQL(const char *topic, unsigned short int pager) if (!help_found) fprintf(output, _("No help available for \"%s\".\nTry \\h with no arguments to see available help.\n"), topic); - /* Only close if we used the pager */ - if (output != stdout) - { - pclose(output); -#ifndef WIN32 - pqsignal(SIGPIPE, SIG_DFL); -#endif - } + ClosePager(output); } } -- 2.40.0