Introduce long options in pg_archivecleanup
authorMichael Paquier <[email protected]>
Fri, 30 Jun 2023 06:47:11 +0000 (15:47 +0900)
committerMichael Paquier <[email protected]>
Fri, 30 Jun 2023 06:47:11 +0000 (15:47 +0900)
This  is a preliminary refactoring for an upcoming  aimed at
adding new options to this tool, and using long options for these is
more user-friendly.  The existing short options gain long flavors, as
of:
* -d/--debug
* -n/--dry-run
* -x/--strip-extension

Author: Atsushi Torikoshi
Reviewed-by: Fujii Masao, Kyotaro Horiguchi, Michael Paquier
Discussion: https://postgr.es/m/d660ef741ce3d82f3b4283f1cafd576c@oss.nttdata.com

doc/src/sgml/ref/pgarchivecleanup.sgml
src/bin/pg_archivecleanup/pg_archivecleanup.c

index 635e7c7685473130452bb9199956885690ded0c3..09991c2fcdd342cc0d79373ab3c210dc1ba776ff 100644 (file)
@@ -95,6 +95,7 @@ pg_archivecleanup:  removing file "archive/00000001000000370000000E"
 
      <varlistentry>
       <term><option>-d</option></term>
+      <term><option>--debug</option></term>
       <listitem>
        <para>
         Print lots of debug logging output on <filename>stderr</filename>.
@@ -104,6 +105,7 @@ pg_archivecleanup:  removing file "archive/00000001000000370000000E"
 
      <varlistentry>
       <term><option>-n</option></term>
+      <term><option>--dry-run</option></term>
       <listitem>
        <para>
         Print the names of the files that would have been removed on <filename>stdout</filename> (performs a dry run).
@@ -122,7 +124,8 @@ pg_archivecleanup:  removing file "archive/00000001000000370000000E"
      </varlistentry>
 
      <varlistentry>
-      <term><option>-x</option> <replaceable>extension</replaceable></term>
+      <term><option>-x <replaceable class="parameter">extension</replaceable></option></term>
+      <term><option>--strip-extension=<replaceable class="parameter">extension</replaceable></option></term>
       <listitem>
        <para>
         Provide an extension
index 7726d051499b7c9d14819938cb3d8ccb59a1977f..fc0dca98568b2b77caebdc103601891ed5640254 100644 (file)
@@ -17,7 +17,7 @@
 
 #include "access/xlog_internal.h"
 #include "common/logging.h"
-#include "pg_getopt.h"
+#include "getopt_long.h"
 
 const char *progname;
 
@@ -252,11 +252,13 @@ usage(void)
    printf(_("Usage:\n"));
    printf(_("  %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"), progname);
    printf(_("\nOptions:\n"));
-   printf(_("  -d             generate debug output (verbose mode)\n"));
-   printf(_("  -n             dry run, show the names of the files that would be removed\n"));
-   printf(_("  -V, --version  output version information, then exit\n"));
-   printf(_("  -x EXT         clean up files if they have this extension\n"));
-   printf(_("  -?, --help     show this help, then exit\n"));
+   printf(_("  -d, --debug                 generate debug output (verbose mode)\n"));
+   printf(_("  -n, --dry-run               dry run, show the names of the files that would be\n"
+            "                              removed\n"));
+   printf(_("  -V, --version               output version information, then exit\n"));
+   printf(_("  -x, --strip-extension=EXT   strip this extention before identifying files for\n"
+            "                              clean up\n"));
+   printf(_("  -?, --help                  show this help, then exit\n"));
    printf(_("\n"
             "For use as archive_cleanup_command in postgresql.conf:\n"
             "  archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %%r'\n"
@@ -274,6 +276,12 @@ usage(void)
 int
 main(int argc, char **argv)
 {
+   static struct option long_options[] = {
+       {"debug", no_argument, NULL, 'd'},
+       {"dry-run", no_argument, NULL, 'n'},
+       {"strip-extension", required_argument, NULL, 'x'},
+       {NULL, 0, NULL, 0}
+   };
    int         c;
 
    pg_logging_init(argv[0]);
@@ -294,7 +302,7 @@ main(int argc, char **argv)
        }
    }
 
-   while ((c = getopt(argc, argv, "dnx:")) != -1)
+   while ((c = getopt_long(argc, argv, "dnx:", long_options, NULL)) != -1)
    {
        switch (c)
        {