From fc6603ff75eb22c3ae9ba9d3ecde552cf06807cd Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Sat, 25 Nov 2000 19:05:44 +0000 Subject: [PATCH] Advertise --help (rather than '-?') as help option (problems with csh). Accept --help even if no general long options support exists. --- src/backend/postmaster/postmaster.c | 81 ++++++++++++---------------- src/backend/tcop/postgres.c | 49 ++++++++--------- src/bin/initdb/initdb.sh | 4 +- src/bin/initlocation/initlocation.sh | 4 +- src/bin/pg_passwd/pg_passwd.c | 4 +- src/bin/psql/startup.c | 24 +++++++-- src/bin/scripts/createdb | 4 +- src/bin/scripts/createlang.sh | 4 +- src/bin/scripts/createuser | 4 +- src/bin/scripts/dropdb | 4 +- src/bin/scripts/droplang | 4 +- src/bin/scripts/dropuser | 4 +- src/bin/scripts/vacuumdb | 4 +- 13 files changed, 96 insertions(+), 98 deletions(-) diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 32ebb2c48e..805fd679be 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.190 2000/11/25 04:13:17 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.191 2000/11/25 19:05:42 petere Exp $ * * NOTES * @@ -310,6 +310,25 @@ PostmasterMain(int argc, char *argv[]) real_argv = argv; real_argc = argc; + /* + * Catch standard options before doing much else. This even works + * on systems without getopt_long. + */ + if (argc > 1) + { + if (strcmp(argv[1], "--help")==0 || strcmp(argv[1], "-?")==0) + { + usage(progname); + exit(0); + } + if (strcmp(argv[1], "--version")==0 || strcmp(argv[1], "-V")==0) + { + puts("postmaster (PostgreSQL) " PG_VERSION); + exit(0); + } + } + + /* * for security, no dir or file created can be group or other * accessible @@ -358,7 +377,7 @@ PostmasterMain(int argc, char *argv[]) * will occur. */ opterr = 1; - while ((opt = getopt(argc, argv, "A:a:B:b:c:D:d:Fh:ik:lm:MN:no:p:SsV-:?")) != EOF) + while ((opt = getopt(argc, argv, "A:a:B:b:c:D:d:Fh:ik:lm:MN:no:p:Ss-:")) != EOF) { switch(opt) { @@ -366,43 +385,22 @@ PostmasterMain(int argc, char *argv[]) potential_DataDir = optarg; break; - case 'V': - puts("postmaster (PostgreSQL) " PG_VERSION); - exit(0); - - case '-': - { - char *name, *value; - - ParseLongOption(optarg, &name, &value); - if (strcmp(name, "help")==0) - { - usage(progname); - exit(0); - } - else if (strcmp(name, "version")==0) - { - puts("postmaster (PostgreSQL) " PG_VERSION); - exit(0); - } - break; - } - case '?': - if (strcmp(argv[optind - 1], "-?") == 0) - { - usage(progname); - exit(0); - } - else - { - fprintf(stderr, "Try -? for help.\n"); - exit(1); - } - break; + fprintf(stderr, "Try '%s --help' for more information.\n", progname); + exit(1); } } + /* + * Non-option switch arguments don't exist. + */ + if (optind < argc) + { + fprintf(stderr, "%s: invalid argument -- %s\n", progname, argv[optind]); + fprintf(stderr, "Try '%s --help' for more information.\n", progname); + exit(1); + } + checkDataDir(potential_DataDir); /* issues error messages */ SetDataDir(potential_DataDir); @@ -414,7 +412,7 @@ PostmasterMain(int argc, char *argv[]) #ifdef HAVE_INT_OPTRESET optreset = 1; #endif - while ((opt = getopt(argc, argv, "A:a:B:b:c:D:d:Fh:ik:lm:MN:no:p:SsV-:?")) != EOF) + while ((opt = getopt(argc, argv, "A:a:B:b:c:D:d:Fh:ik:lm:MN:no:p:Ss-:")) != EOF) { switch (opt) { @@ -546,20 +544,11 @@ PostmasterMain(int argc, char *argv[]) default: /* shouldn't get here */ - fprintf(stderr, "Try -? for help.\n"); + fprintf(stderr, "Try '%s --help' for more information.\n", progname); exit(1); } } - /* - * Non-option switch arguments don't exist. - */ - if (optind < argc) - { - fprintf(stderr, "%s: invalid argument -- %s\n", progname, argv[optind]); - exit(1); - } - /* * Check for invalid combinations of switches */ diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 86d80660d9..f7d3e1c1b0 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.189 2000/11/21 21:16:02 petere Exp $ + * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.190 2000/11/25 19:05:42 petere Exp $ * * NOTES * this is the "main" module of the postgres backend and @@ -1062,6 +1062,24 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[], const cha char *potential_DataDir = NULL; + /* + * Catch standard options before doing much else. This even works + * on systems without getopt_long. + */ + if (!IsUnderPostmaster && argc > 1) + { + if (strcmp(argv[1], "--help")==0 || strcmp(argv[1], "-?")==0) + { + usage(argv[0]); + exit(0); + } + if (strcmp(argv[1], "--version")==0 || strcmp(argv[1], "-V")==0) + { + puts("postgres (PostgreSQL) " PG_VERSION); + exit(0); + } + } + /* * Fire up essential subsystems: error and memory management * @@ -1110,7 +1128,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[], const cha optind = 1; /* reset after postmaster's usage */ - while ((flag = getopt(argc, argv, "A:B:c:CD:d:Eef:FiLNOPo:p:S:st:v:VW:x:-:?")) != EOF) + while ((flag = getopt(argc, argv, "A:B:c:CD:d:Eef:FiLNOPo:p:S:st:v:W:x:-:")) != EOF) switch (flag) { case 'A': @@ -1336,10 +1354,6 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[], const cha FrontendProtocol = (ProtocolVersion) atoi(optarg); break; - case 'V': - puts("postgres (PostgreSQL) " PG_VERSION); - exit(0); - case 'W': /* ---------------- * wait N seconds to allow attach from a debugger @@ -1387,16 +1401,6 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[], const cha char *name, *value; ParseLongOption(optarg, &name, &value); - if (strcmp(name, "help")==0) - { - usage(argv[0]); - exit(0); - } - else if (strcmp(name, "version")==0) - { - puts("postgres (PostgreSQL) " PG_VERSION); - exit(0); - } if (!value) { if (flag == '-') @@ -1412,18 +1416,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[], const cha break; } - case '?': - if (strcmp(argv[optind - 1], "-?") == 0) - { - usage(argv[0]); - exit(0); - } - else - errs++; - break; - default: - /* shouldn't get here */ errs++; break; } @@ -1643,7 +1636,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[], const cha if (!IsUnderPostmaster) { puts("\nPOSTGRES backend interactive interface "); - puts("$Revision: 1.189 $ $Date: 2000/11/21 21:16:02 $\n"); + puts("$Revision: 1.190 $ $Date: 2000/11/25 19:05:42 $\n"); } /* diff --git a/src/bin/initdb/initdb.sh b/src/bin/initdb/initdb.sh index 22843e6fd9..b83b181025 100644 --- a/src/bin/initdb/initdb.sh +++ b/src/bin/initdb/initdb.sh @@ -24,7 +24,7 @@ # # Copyright (c) 1994, Regents of the University of California # -# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.116 2000/11/21 20:55:57 tgl Exp $ +# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.117 2000/11/25 19:05:43 petere Exp $ # #------------------------------------------------------------------------- @@ -253,7 +253,7 @@ do ;; -*) echo "$CMDNAME: invalid option: $1" - echo "Try '$CMDNAME -?' for help." + echo "Try '$CMDNAME --help' for more information." exit 1 ;; *) diff --git a/src/bin/initlocation/initlocation.sh b/src/bin/initlocation/initlocation.sh index df8abda1f4..10c802c228 100644 --- a/src/bin/initlocation/initlocation.sh +++ b/src/bin/initlocation/initlocation.sh @@ -8,7 +8,7 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/bin/initlocation/Attic/initlocation.sh,v 1.9 2000/11/11 22:59:46 petere Exp $ +# $Header: /cvsroot/pgsql/src/bin/initlocation/Attic/initlocation.sh,v 1.10 2000/11/25 19:05:43 petere Exp $ # #------------------------------------------------------------------------- @@ -51,7 +51,7 @@ do -*) echo "$CMDNAME: invalid option: $1" 1>&2 - echo "Try '$CMDNAME -?' for help." 1>&2 + echo "Try '$CMDNAME --help' for more information." 1>&2 exit 1 ;; *) diff --git a/src/bin/pg_passwd/pg_passwd.c b/src/bin/pg_passwd/pg_passwd.c index 6faad3088b..db057c8878 100644 --- a/src/bin/pg_passwd/pg_passwd.c +++ b/src/bin/pg_passwd/pg_passwd.c @@ -333,7 +333,7 @@ main(int argc, char *argv[]) if (argc != 2) { - fprintf(stderr, "%s: too %s arguments\nTry '%s -?' for help.\n", + fprintf(stderr, "%s: too %s arguments\nTry '%s --help' for more information.\n", progname, argc > 2 ? "many" : "few", progname); exit(1); } @@ -350,7 +350,7 @@ main(int argc, char *argv[]) } if (argv[1][0] == '-') { - fprintf(stderr, "%s: invalid option: %s\nTry '%s -?' for help.\n", + fprintf(stderr, "%s: invalid option: %s\nTry '%s --help' for more information.\n", progname, argv[1], progname); exit(1); } diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c index 46e476a2ae..1a66d5fce3 100644 --- a/src/bin/psql/startup.c +++ b/src/bin/psql/startup.c @@ -3,7 +3,7 @@ * * Copyright 2000 by PostgreSQL Global Development Group * - * $Header: /cvsroot/pgsql/src/bin/psql/startup.c,v 1.39 2000/11/13 23:37:53 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/startup.c,v 1.40 2000/11/25 19:05:44 petere Exp $ */ #include "postgres.h" @@ -107,6 +107,20 @@ main(int argc, char *argv[]) else pset.progname = strrchr(argv[0], SEP_CHAR) + 1; + if (argc > 1) + { + if (strcmp(argv[1], "--help")==0 || strcmp(argv[1], "-?")==0) + { + usage(); + exit(EXIT_SUCCESS); + } + if (strcmp(argv[1], "--version")==0 || strcmp(argv[1], "-V")==0) + { + showVersion(); + exit(EXIT_SUCCESS); + } + } + pset.cur_cmd_source = stdin; pset.cur_cmd_interactive = false; pset.encoding = PQenv2encoding(); @@ -520,19 +534,21 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options) /* unknown option reported by getopt */ else { - fputs("Try -? for help.\n", stderr); + fprintf(stderr, "Try '%s --help' for more information.\n", + pset.progname); exit(EXIT_FAILURE); } break; #ifndef HAVE_GETOPT_LONG case '-': fprintf(stderr, "%s was compiled without support for long options.\n" - "Use -? for help on invocation options.\n", pset.progname); + "Use --help for help on invocation options.\n", pset.progname); exit(EXIT_FAILURE); break; #endif default: - fputs("Try -? for help.\n", stderr); + fprintf(stderr, "Try '%s --help' for more information.\n", + pset.progname); exit(EXIT_FAILURE); break; } diff --git a/src/bin/scripts/createdb b/src/bin/scripts/createdb index e506af5885..3937b61913 100644 --- a/src/bin/scripts/createdb +++ b/src/bin/scripts/createdb @@ -11,7 +11,7 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createdb,v 1.11 2000/11/13 23:37:53 momjian Exp $ +# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createdb,v 1.12 2000/11/25 19:05:44 petere Exp $ # #------------------------------------------------------------------------- @@ -89,7 +89,7 @@ do ;; -*) echo "$CMDNAME: invalid option: $1" 1>&2 - echo "Try '$CMDNAME -?' for help." 1>&2 + echo "Try '$CMDNAME --help' for more information." 1>&2 exit 1 ;; *) diff --git a/src/bin/scripts/createlang.sh b/src/bin/scripts/createlang.sh index 02c27aaf90..db4189bd07 100644 --- a/src/bin/scripts/createlang.sh +++ b/src/bin/scripts/createlang.sh @@ -8,7 +8,7 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createlang.sh,v 1.20 2000/11/20 20:36:50 tgl Exp $ +# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createlang.sh,v 1.21 2000/11/25 19:05:44 petere Exp $ # #------------------------------------------------------------------------- @@ -99,7 +99,7 @@ do -*) echo "$CMDNAME: invalid option: $1" 1>&2 - echo "Try '$CMDNAME -?' for help." 1>&2 + echo "Try '$CMDNAME --help' for more information." 1>&2 exit 1 ;; *) diff --git a/src/bin/scripts/createuser b/src/bin/scripts/createuser index e3859eb2a7..37a7636805 100644 --- a/src/bin/scripts/createuser +++ b/src/bin/scripts/createuser @@ -8,7 +8,7 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createuser,v 1.14 2000/11/13 23:37:53 momjian Exp $ +# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createuser,v 1.15 2000/11/25 19:05:44 petere Exp $ # # Note - this should NOT be setuid. # @@ -110,7 +110,7 @@ do ;; -*) echo "$CMDNAME: invalid option: $1" 1>&2 - echo "Try '$CMDNAME -?' for help." 1>&2 + echo "Try '$CMDNAME --help' for more information." 1>&2 exit 1 ;; *) diff --git a/src/bin/scripts/dropdb b/src/bin/scripts/dropdb index 35bb08a71a..a3db4babe3 100644 --- a/src/bin/scripts/dropdb +++ b/src/bin/scripts/dropdb @@ -10,7 +10,7 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/dropdb,v 1.9 2000/11/13 23:37:53 momjian Exp $ +# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/dropdb,v 1.10 2000/11/25 19:05:44 petere Exp $ # #------------------------------------------------------------------------- @@ -83,7 +83,7 @@ do ;; -*) echo "$CMDNAME: invalid option: $1" 1>&2 - echo "Try '$CMDNAME -?' for help." 1>&2 + echo "Try '$CMDNAME --help' for more information." 1>&2 exit 1 ;; *) diff --git a/src/bin/scripts/droplang b/src/bin/scripts/droplang index 023ae4fc99..43154b2e7d 100644 --- a/src/bin/scripts/droplang +++ b/src/bin/scripts/droplang @@ -8,7 +8,7 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/droplang,v 1.10 2000/11/13 23:37:53 momjian Exp $ +# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/droplang,v 1.11 2000/11/25 19:05:44 petere Exp $ # #------------------------------------------------------------------------- @@ -89,7 +89,7 @@ do -*) echo "$CMDNAME: invalid option: $1" 1>&2 - echo "Try '$CMDNAME -?' for help." 1>&2 + echo "Try '$CMDNAME --help' for more information." 1>&2 exit 1 ;; *) diff --git a/src/bin/scripts/dropuser b/src/bin/scripts/dropuser index e7be5dc867..21e71d8705 100644 --- a/src/bin/scripts/dropuser +++ b/src/bin/scripts/dropuser @@ -8,7 +8,7 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/dropuser,v 1.9 2000/11/13 23:37:53 momjian Exp $ +# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/dropuser,v 1.10 2000/11/25 19:05:44 petere Exp $ # # Note - this should NOT be setuid. # @@ -85,7 +85,7 @@ do ;; -*) echo "$CMDNAME: invalid option: $1" 1>&2 - echo "Try '$CMDNAME -?' for help." 1>&2 + echo "Try '$CMDNAME --help' for more information." 1>&2 exit 1 ;; *) diff --git a/src/bin/scripts/vacuumdb b/src/bin/scripts/vacuumdb index 0981f31e72..9b310327a1 100644 --- a/src/bin/scripts/vacuumdb +++ b/src/bin/scripts/vacuumdb @@ -11,7 +11,7 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/vacuumdb,v 1.12 2000/11/13 23:37:53 momjian Exp $ +# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/vacuumdb,v 1.13 2000/11/25 19:05:44 petere Exp $ # #------------------------------------------------------------------------- @@ -102,7 +102,7 @@ do -*) echo "$CMDNAME: invalid option: $1" 1>&2 - echo "Try '$CMDNAME -?' for help." 1>&2 + echo "Try '$CMDNAME --help' for more information." 1>&2 exit 1 ;; *) -- 2.40.0