1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-26 12:21:12 +03:00

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 3ed7f54bc4
commit ed29d2de25

View 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;