aboutsummaryrefslogtreecommitdiff
path: root/src/bin/psql/help.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2003-09-11 16:22:42 +0000
committerBruce Momjian <bruce@momjian.us>2003-09-11 16:22:42 +0000
commitd768cb267b9651faeaed48e77cc398ff0be6a0df (patch)
tree2c446351106969e8222f06df2ce087640d293f57 /src/bin/psql/help.c
parentfdd93470fa583e56f1ea81cf3ec94110e0a1ce16 (diff)
downloadpostgresql-d768cb267b9651faeaed48e77cc398ff0be6a0df.tar.gz
postgresql-d768cb267b9651faeaed48e77cc398ff0be6a0df.zip
seemed like a typo in one of the appendix tables
Robert Treat
Diffstat (limited to 'src/bin/psql/help.c')
-rw-r--r--src/bin/psql/help.c38
1 files changed, 34 insertions, 4 deletions
diff --git a/src/bin/psql/help.c b/src/bin/psql/help.c
index 219e5136d21..f6e0f3961b0 100644
--- a/src/bin/psql/help.c
+++ b/src/bin/psql/help.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
- * $Header: /cvsroot/pgsql/src/bin/psql/help.c,v 1.78 2003/09/10 21:35:55 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/help.c,v 1.79 2003/09/11 16:22:42 momjian Exp $
*/
#include "postgres_fe.h"
#include "common.h"
@@ -303,20 +303,41 @@ helpSQL(const char *topic, unsigned short int pager)
{
int i;
bool help_found = false;
+ FILE *output;
size_t len;
-
+ int nl_count = 0;
+ char *ch;
+
/* don't care about trailing spaces */
len = strlen(topic);
while (topic[len - 1] == ' ')
len--;
+ /* Count newlines for pager */
+ for (i = 0; QL_HELP[i].cmd; i++)
+ {
+ if (strncasecmp(topic, QL_HELP[i].cmd, len) == 0 ||
+ strcmp(topic, "*") == 0)
+ {
+ nl_count += 5;
+ for (ch = QL_HELP[i].syntax; *ch != '\0'; ch++)
+ if (*ch == '\n')
+ nl_count++;
+ /* If we have an exact match, exit. Fixes \h SELECT */
+ if (strcasecmp(topic, QL_HELP[i].cmd) == 0)
+ break;
+ }
+ }
+
+ output = PageOutput(nl_count, pager);
+
for (i = 0; QL_HELP[i].cmd; i++)
{
if (strncasecmp(topic, QL_HELP[i].cmd, len) == 0 ||
strcmp(topic, "*") == 0)
{
help_found = true;
- printf(_("Command: %s\n"
+ fprintf(output, _("Command: %s\n"
"Description: %s\n"
"Syntax:\n%s\n\n"),
QL_HELP[i].cmd, QL_HELP[i].help, QL_HELP[i].syntax);
@@ -327,7 +348,16 @@ helpSQL(const char *topic, unsigned short int pager)
}
if (!help_found)
- printf(_("No help available for \"%-.*s\".\nTry \\h with no arguments to see available help.\n"), (int) len, topic);
+ fprintf(output, _("No help available for \"%-.*s\".\nTry \\h with no arguments to see available help.\n"), (int) len, topic);
+
+ /* Only close if we used the pager */
+ if (output != stdout)
+ {
+ pclose(output);
+#ifndef WIN32
+ pqsignal(SIGPIPE, SIG_DFL);
+#endif
+ }
}
}