From 22b743b2ca18a692ba8d91bc18e7c42a8b7941ad Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Fri, 24 Oct 2014 18:55:33 +0300 Subject: [PATCH] Oops, the commit accept pg_controldata -D datadir missed code changes. I updated the docs and usage blurp, but forgot to commit the code changes required. Spotted by Michael Paquier. --- src/bin/pg_controldata/pg_controldata.c | 29 ++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/bin/pg_controldata/pg_controldata.c b/src/bin/pg_controldata/pg_controldata.c index 118e653b79..dd68f793c3 100644 --- a/src/bin/pg_controldata/pg_controldata.c +++ b/src/bin/pg_controldata/pg_controldata.c @@ -90,7 +90,7 @@ main(int argc, char *argv[]) ControlFileData ControlFile; int fd; char ControlFilePath[MAXPGPATH]; - char *DataDir; + char *DataDir = NULL; pg_crc32 crc; time_t time_tmp; char pgctime_str[128]; @@ -100,6 +100,7 @@ main(int argc, char *argv[]) const char *progname; XLogSegNo segno; char xlogfilename[MAXFNAMELEN]; + int c; set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_controldata")); @@ -119,10 +120,28 @@ main(int argc, char *argv[]) } } - if (argc > 1) - DataDir = argv[1]; - else - DataDir = getenv("PGDATA"); + while ((c = getopt(argc, argv, "D:")) != -1) + { + switch (c) + { + case 'D': + DataDir = optarg; + break; + + default: + fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); + exit(1); + } + } + + if (DataDir == NULL) + { + if (optind < argc) + DataDir = argv[optind++]; + else + DataDir = getenv("PGDATA"); + } + if (DataDir == NULL) { fprintf(stderr, _("%s: no data directory specified\n"), progname);