From: Atsushi Torikoshi Date: Wed, 21 Jun 2023 11:34:10 +0900 Subject: [PATCH v10 1/3] Introduce pg_archivecleanup into getopt_long This patch is a preliminary step to add an easy-to-understand option to delete backup history files, but it also adds long options to the existing options. --- doc/src/sgml/ref/pgarchivecleanup.sgml | 5 ++++- src/bin/pg_archivecleanup/pg_archivecleanup.c | 22 +++++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/doc/src/sgml/ref/pgarchivecleanup.sgml b/doc/src/sgml/ref/pgarchivecleanup.sgml index 635e7c7685..09991c2fcd 100644 --- a/doc/src/sgml/ref/pgarchivecleanup.sgml +++ b/doc/src/sgml/ref/pgarchivecleanup.sgml @@ -95,6 +95,7 @@ pg_archivecleanup: removing file "archive/00000001000000370000000E" + Print lots of debug logging output on stderr. @@ -104,6 +105,7 @@ pg_archivecleanup: removing file "archive/00000001000000370000000E" + Print the names of the files that would have been removed on stdout (performs a dry run). @@ -122,7 +124,8 @@ pg_archivecleanup: removing file "archive/00000001000000370000000E" - extension + + Provide an extension diff --git a/src/bin/pg_archivecleanup/pg_archivecleanup.c b/src/bin/pg_archivecleanup/pg_archivecleanup.c index 7726d05149..fc0dca9856 100644 --- a/src/bin/pg_archivecleanup/pg_archivecleanup.c +++ b/src/bin/pg_archivecleanup/pg_archivecleanup.c @@ -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) { -- 2.39.3 ----Next_Part(Wed_Jun_21_11_59_41_2023_371)-- Content-Type: Text/X-Patch; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="v10-0002-Preliminary-refactoring-for-a-subsequent-patch.patch"