]> granicus.if.org Git - postgresql/commitdiff
Properly enforce pg_dump -F formation options; only single letter or
authorBruce Momjian <bruce@momjian.us>
Thu, 22 Mar 2007 19:42:02 +0000 (19:42 +0000)
committerBruce Momjian <bruce@momjian.us>
Thu, 22 Mar 2007 19:42:02 +0000 (19:42 +0000)
full words support, per report from Mark Stosberg.

src/bin/pg_dump/pg_dump.c

index 90e78c36d15ff50396ebdfbc33aa01a7d4cd5549..d31c47b583230de69b46568c502c42fee346ca93 100644 (file)
@@ -12,7 +12,7 @@
  *     by PostgreSQL
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.461 2007/03/19 23:38:30 wieck Exp $
+ *       $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.462 2007/03/22 19:42:02 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -476,38 +476,33 @@ main(int argc, char **argv)
        }
 
        /* open the output file */
-       switch (format[0])
+       if (strcasecmp(format, "a") == 0 || strcasecmp(format, "append") == 0)
        {
-               case 'a':
-               case 'A':
-                       plainText = 1;
-                       g_fout = CreateArchive(filename, archNull, 0, archModeAppend);
-                       break;
-                       
-               case 'c':
-               case 'C':
-                       g_fout = CreateArchive(filename, archCustom, compressLevel, archModeWrite);
-                       break;
-
-               case 'f':
-               case 'F':
-                       g_fout = CreateArchive(filename, archFiles, compressLevel, archModeWrite);
-                       break;
-
-               case 'p':
-               case 'P':
-                       plainText = 1;
-                       g_fout = CreateArchive(filename, archNull, 0, archModeWrite);
-                       break;
-
-               case 't':
-               case 'T':
-                       g_fout = CreateArchive(filename, archTar, compressLevel, archModeWrite);
-                       break;
-
-               default:
-                       write_msg(NULL, "invalid output format \"%s\" specified\n", format);
-                       exit(1);
+               /* not documented */
+               plainText = 1;
+               g_fout = CreateArchive(filename, archNull, 0, archModeAppend);
+       }
+       else if (strcasecmp(format, "c") == 0 || strcasecmp(format, "custom") == 0)
+               g_fout = CreateArchive(filename, archCustom, compressLevel, archModeWrite);
+       else if (strcasecmp(format, "f") == 0 || strcasecmp(format, "file") == 0)
+       {
+               /*
+                *      Dump files into the current directory; for demonstration only, not
+                *      documented.
+                */
+               g_fout = CreateArchive(filename, archFiles, compressLevel, archModeWrite);
+       }
+       else if (strcasecmp(format, "p") == 0 || strcasecmp(format, "plain") == 0)
+       {
+               plainText = 1;
+               g_fout = CreateArchive(filename, archNull, 0, archModeWrite);
+       }
+       else if (strcasecmp(format, "t") == 0 || strcasecmp(format, "tar") == 0)
+               g_fout = CreateArchive(filename, archTar, compressLevel, archModeWrite);
+       else
+       {
+               write_msg(NULL, "invalid output format \"%s\" specified\n", format);
+               exit(1);
        }
 
        if (g_fout == NULL)