]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fix ecpg -? option on Windows, add -V alias for --version.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Sun, 18 Sep 2016 10:46:32 +0000 (13:46 +0300)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Sun, 18 Sep 2016 11:07:30 +0000 (14:07 +0300)
This makes the -? and -V options work consistently with other binaries.
--help and --version are now only recognized as the first option, i.e.
"ecpg --foobar --help" no longer prints the help, but that's consistent
with most of our other binaries, too.

Backpatch to all supported versions.

Haribabu Kommi

Discussion: <CAJrrPGfnRXvmCzxq6Dy=stAWebfNHxiL+Y_z7uqksZUCkW_waQ@mail.gmail.com>

src/interfaces/ecpg/preproc/ecpg.c

index 6f7314875ec26f40e1b9e37e210a451dba5c8743..9c828c74a4ae278dda9b599febc15f6ca14d25b3 100644 (file)
@@ -111,15 +111,11 @@ add_preprocessor_define(char *define)
        defines->next = pd;
 }
 
-#define ECPG_GETOPT_LONG_HELP                  1
-#define ECPG_GETOPT_LONG_VERSION               2
-#define ECPG_GETOPT_LONG_REGRESSION            3
+#define ECPG_GETOPT_LONG_REGRESSION            1
 int
 main(int argc, char *const argv[])
 {
        static struct option ecpg_options[] = {
-               {"help", no_argument, NULL, ECPG_GETOPT_LONG_HELP},
-               {"version", no_argument, NULL, ECPG_GETOPT_LONG_VERSION},
                {"regression", no_argument, NULL, ECPG_GETOPT_LONG_REGRESSION},
                {NULL, 0, NULL, 0}
        };
@@ -140,33 +136,26 @@ main(int argc, char *const argv[])
 
        find_my_exec(argv[0], my_exec_path);
 
+       if (argc > 1)
+       {
+               if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0)
+               {
+                       help(progname);
+                       exit(0);
+               }
+               if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0)
+               {
+                       printf("ecpg (PostgreSQL %s) %d.%d.%d\n", PG_VERSION,
+                                  MAJOR_VERSION, MINOR_VERSION, PATCHLEVEL);
+                       exit(0);
+               }
+       }
+
        output_filename = NULL;
-       while ((c = getopt_long(argc, argv, "vcio:I:tD:dC:r:h?", ecpg_options, NULL)) != -1)
+       while ((c = getopt_long(argc, argv, "vcio:I:tD:dC:r:h", ecpg_options, NULL)) != -1)
        {
                switch (c)
                {
-                       case ECPG_GETOPT_LONG_VERSION:
-                               printf("ecpg (PostgreSQL %s) %d.%d.%d\n", PG_VERSION,
-                                          MAJOR_VERSION, MINOR_VERSION, PATCHLEVEL);
-                               exit(0);
-                       case ECPG_GETOPT_LONG_HELP:
-                               help(progname);
-                               exit(0);
-
-                               /*
-                                * -? is an alternative spelling of --help. However it is also
-                                * returned by getopt_long for unknown options. We can
-                                * distinguish both cases by means of the optopt variable
-                                * which is set to 0 if it was really -? and not an unknown
-                                * option character.
-                                */
-                       case '?':
-                               if (optopt == 0)
-                               {
-                                       help(progname);
-                                       exit(0);
-                               }
-                               break;
                        case ECPG_GETOPT_LONG_REGRESSION:
                                regression_mode = true;
                                break;