Fix ecpg -? option on Windows, add -V alias for --version.

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>
This commit is contained in:
Heikki Linnakangas 2016-09-18 13:46:32 +03:00
parent d8c61c9765
commit 3fcc98c990
1 changed files with 17 additions and 28 deletions

View File

@ -54,7 +54,7 @@ help(const char *progname)
" \"no_indicator\", \"prepare\", \"questionmarks\"\n"));
printf(_(" --regression run in regression testing mode\n"));
printf(_(" -t turn on autocommit of transactions\n"));
printf(_(" --version output version information, then exit\n"));
printf(_(" -V, --version output version information, then exit\n"));
printf(_(" -?, --help show this help, then exit\n"));
printf(_("\nIf no output file is specified, the name is formed by adding .c to the\n"
"input file name, after stripping off .pgc if present.\n"));
@ -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}
};
@ -144,32 +140,25 @@ main(int argc, char *const argv[])
return (ILLEGAL_OPTION);
}
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 %s\n", PG_VERSION);
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 %s\n", PG_VERSION);
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;