summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorAlvaro Herrera2012-02-01 16:56:59 +0000
committerAlvaro Herrera2012-02-01 17:18:12 +0000
commitb2e431a4db81a735d1474c4d1565a20b835878c9 (patch)
treece6c8589e56179be38882ead46541f0451045f17 /contrib
parent21238deea50e194bfa1c844b01ffbd15ed56c01a (diff)
Implement dry-run mode for pg_archivecleanup
In dry-run mode, just the name of the file to be removed is printed to stdout; this is so the user can easily plug it into another program through a pipe. If debug mode is also specified, a more verbose message is printed to stderr. Author: Gabriele Bartolini Reviewer: Josh Kupershmidt
Diffstat (limited to 'contrib')
-rw-r--r--contrib/pg_archivecleanup/pg_archivecleanup.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/contrib/pg_archivecleanup/pg_archivecleanup.c b/contrib/pg_archivecleanup/pg_archivecleanup.c
index 400968ce399..adfc83dea70 100644
--- a/contrib/pg_archivecleanup/pg_archivecleanup.c
+++ b/contrib/pg_archivecleanup/pg_archivecleanup.c
@@ -36,6 +36,7 @@ const char *progname;
/* Options and defaults */
bool debug = false; /* are we debugging? */
+bool dryrun = false; /* are we performing a dry-run operation? */
char *archiveLocation; /* where to find the archive? */
char *restartWALFileName; /* the file from which we can restart restore */
@@ -119,6 +120,22 @@ CleanupPriorWALFiles(void)
{
snprintf(WALFilePath, MAXPGPATH, "%s/%s",
archiveLocation, xlde->d_name);
+
+ if (dryrun)
+ {
+ /*
+ * Prints the name of the file to be removed and skips the
+ * actual removal. The regular printout is so that the
+ * user can pipe the output into some other program.
+ */
+ printf("%s\n", WALFilePath);
+ if (debug)
+ fprintf(stderr,
+ "%s: file \"%s\" would be removed\n",
+ progname, WALFilePath);
+ continue;
+ }
+
if (debug)
fprintf(stderr, "%s: removing file \"%s\"\n",
progname, WALFilePath);
@@ -205,6 +222,7 @@ usage(void)
printf(" %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n", progname);
printf("\nOptions:\n");
printf(" -d generates debug output (verbose mode)\n");
+ printf(" -n shows the names of the files that would have been removed (dry-run)\n");
printf(" --help show this help, then exit\n");
printf(" --version output version information, then exit\n");
printf("\n"
@@ -241,13 +259,16 @@ main(int argc, char **argv)
}
}
- while ((c = getopt(argc, argv, "d")) != -1)
+ while ((c = getopt(argc, argv, "dn")) != -1)
{
switch (c)
{
case 'd': /* Debug mode */
debug = true;
break;
+ case 'n': /* Dry-Run mode */
+ dryrun = true;
+ break;
default:
fprintf(stderr, "Try \"%s --help\" for more information.\n", progname);
exit(2);