aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2010-08-13 20:56:18 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2010-08-13 20:56:18 +0000
commit36ba263d8f20b789418e8d86ff7221fecc5add0d (patch)
treedec449393affc284a90048e6dc99bae23fd70dc5 /src
parentdebcec7dc31a992703911a9953e299c8d730c778 (diff)
downloadpostgresql-36ba263d8f20b789418e8d86ff7221fecc5add0d.tar.gz
postgresql-36ba263d8f20b789418e8d86ff7221fecc5add0d.zip
Clean up failure to use ClosePager() where appropriate in help.c.
Also prevent possible repeat opening of pager in helpSQL().
Diffstat (limited to 'src')
-rw-r--r--src/bin/psql/help.c40
1 files changed, 9 insertions, 31 deletions
diff --git a/src/bin/psql/help.c b/src/bin/psql/help.c
index 69a073a2b39..822cb597174 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 <signal.h>
-
#ifndef WIN32
#ifdef HAVE_PWD_H
#include <pwd.h> /* for getpwuid() */
@@ -27,8 +25,6 @@
#include <termios.h>
#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);
}
}