Properly enforce pg_dump -F formation options; only single letter or
authorBruce Momjian
Thu, 22 Mar 2007 19:42:02 +0000 (19:42 +0000)
committerBruce Momjian
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)