Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Add -D option to specify data directory to pg_controldata and pg_resetxlog.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Thu, 25 Sep 2014 10:26:18 +0000 (13:26 +0300)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Thu, 25 Sep 2014 10:37:19 +0000 (13:37 +0300)
It was confusing that to other commands, like initdb and postgres, you would
pass the data directory with "-D datadir", but pg_controldata and
pg_resetxlog would take just plain path, without the "-D". With this patch,
pg_controldata and pg_resetxlog also accept "-D datadir".

Abhijit Menon-Sen, with minor kibitzing by me

doc/src/sgml/ref/pg_controldata.sgml
doc/src/sgml/ref/pg_resetxlog.sgml
src/bin/pg_controldata/pg_controldata.c
src/bin/pg_resetxlog/pg_resetxlog.c

index fbf40fcf9de8083f6d79daebe819f8977fa35c20..4a360d61fd31a737a82940d2e1819e25f0084bb5 100644 (file)
@@ -23,7 +23,7 @@ PostgreSQL documentation
   <cmdsynopsis>
    <command>pg_controldata</command>
    <arg choice="opt"><replaceable class="parameter">option</replaceable></arg>
-   <arg choice="opt"><replaceable class="parameter">datadir</replaceable></arg>
+   <arg choice="opt"><arg choice="opt"><option>-D</option></arg> <replaceable class="parameter">datadir</replaceable></arg>
   </cmdsynopsis>
  </refsynopsisdiv>
 
index 0b53bd68595a471e0723521c93fd95d2495e8413..aba7185f35592780673aa2add2febed6f5e8f36c 100644 (file)
@@ -30,7 +30,7 @@ PostgreSQL documentation
    <arg choice="opt"><option>-m</option> <replaceable class="parameter">mxid</replaceable>,<replaceable class="parameter">mxid</replaceable></arg>
    <arg choice="opt"><option>-O</option> <replaceable class="parameter">mxoff</replaceable></arg>
    <arg choice="opt"><option>-l</option> <replaceable class="parameter">xlogfile</replaceable></arg>
-   <arg choice="plain"><replaceable>datadir</replaceable></arg>
+   <arg choice="req"><arg choice="opt"><option>-D</option></arg> <replaceable class="parameter">datadir</replaceable></arg>
   </cmdsynopsis>
  </refsynopsisdiv>
 
index f81502466e59771add1bee2acdea74e305a2f236..118e653b7972ccf7b3a75464807caf71010176ea 100644 (file)
@@ -33,7 +33,7 @@ usage(const char *progname)
 {
    printf(_("%s displays control information of a PostgreSQL database cluster.\n\n"), progname);
    printf(_("Usage:\n"));
-   printf(_("  %s [OPTION] [DATADIR]\n"), progname);
+   printf(_("  %s [OPTION] [[-D] DATADIR]\n"), progname);
    printf(_("\nOptions:\n"));
    printf(_("  -V, --version  output version information, then exit\n"));
    printf(_("  -?, --help     show this help, then exit\n"));
index 302d0054b2c9151031ee3af99cf676039d3c7d22..028a1f05665972219b1686c548f6097fbe05e3f1 100644 (file)
@@ -89,7 +89,7 @@ main(int argc, char *argv[])
    MultiXactId set_oldestmxid = 0;
    char       *endptr;
    char       *endptr2;
-   char       *DataDir;
+   char       *DataDir = NULL;
    int         fd;
 
    set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_resetxlog"));
@@ -111,10 +111,14 @@ main(int argc, char *argv[])
    }
 
 
-   while ((c = getopt(argc, argv, "fl:m:no:O:x:e:")) != -1)
+   while ((c = getopt(argc, argv, "D:fl:m:no:O:x:e:")) != -1)
    {
        switch (c)
        {
+           case 'D':
+               DataDir = optarg;
+               break;
+
            case 'f':
                force = true;
                break;
@@ -233,12 +237,14 @@ main(int argc, char *argv[])
        }
    }
 
-   if (optind == argc)
+   if (DataDir == NULL && optind == argc)
    {
        fprintf(stderr, _("%s: no data directory specified\n"), progname);
        fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
        exit(1);
    }
+   if (DataDir == NULL)
+       DataDir = argv[optind];
 
    /*
     * Don't allow pg_resetxlog to be run as root, to avoid overwriting the
@@ -257,8 +263,6 @@ main(int argc, char *argv[])
    }
 #endif
 
-   DataDir = argv[optind];
-
    if (chdir(DataDir) < 0)
    {
        fprintf(stderr, _("%s: could not change directory to \"%s\": %s\n"),
@@ -1077,7 +1081,7 @@ static void
 usage(void)
 {
    printf(_("%s resets the PostgreSQL transaction log.\n\n"), progname);
-   printf(_("Usage:\n  %s [OPTION]... DATADIR\n\n"), progname);
+   printf(_("Usage:\n  %s [OPTION]... {[-D] DATADIR}\n\n"), progname);
    printf(_("Options:\n"));
    printf(_("  -e XIDEPOCH      set next transaction ID epoch\n"));
    printf(_("  -f               force update to be done\n"));