<varlistentry>
       <term><option>-d</option></term>
+      <term><option>--debug</option></term>
       <listitem>
        <para>
         Print lots of debug logging output on <filename>stderr</filename>.
 
      <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).
      </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
 
 
 #include "access/xlog_internal.h"
 #include "common/logging.h"
-#include "pg_getopt.h"
+#include "getopt_long.h"
 
 const char *progname;
 
    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"
 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]);
        }
    }
 
-   while ((c = getopt(argc, argv, "dnx:")) != -1)
+   while ((c = getopt_long(argc, argv, "dnx:", long_options, NULL)) != -1)
    {
        switch (c)
        {