|
6 | 6 | * Portions Copyright (c) 1994, Regents of the University of California |
7 | 7 | * |
8 | 8 | * |
9 | | - * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.46 2004/08/04 21:34:12 tgl Exp $ |
| 9 | + * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.47 2004/08/08 06:44:33 momjian Exp $ |
10 | 10 | * |
11 | 11 | *------------------------------------------------------------------------- |
12 | 12 | */ |
@@ -840,21 +840,39 @@ runPgDump(const char *dbname) |
840 | 840 | const char *p; |
841 | 841 | int ret; |
842 | 842 |
|
| 843 | + /* |
| 844 | + * Win32 has to use double-quotes for args, rather than single quotes. |
| 845 | + * Strangely enough, this is the only place we pass a database name |
| 846 | + * on the command line, except template1 that doesn't need quoting. |
| 847 | + */ |
| 848 | +#ifndef WIN32 |
843 | 849 | appendPQExpBuffer(cmd, "%s\"%s\" %s -Fp '", SYSTEMQUOTE, pg_dump_bin, |
| 850 | +#else |
| 851 | + appendPQExpBuffer(cmd, "%s\"%s\" %s -Fp \"", SYSTEMQUOTE, pg_dump_bin, |
| 852 | +#endif |
844 | 853 | pgdumpopts->data); |
845 | 854 |
|
846 | 855 | /* Shell quoting is not quite like SQL quoting, so can't use fmtId */ |
847 | 856 | for (p = dbname; *p; p++) |
848 | 857 | { |
| 858 | +#ifndef WIN32 |
849 | 859 | if (*p == '\'') |
850 | 860 | appendPQExpBuffer(cmd, "'\"'\"'"); |
851 | 861 | else |
| 862 | +#endif |
| 863 | + /* not needed on Win32 */ |
852 | 864 | appendPQExpBufferChar(cmd, *p); |
853 | 865 | } |
854 | 866 |
|
| 867 | +#ifndef WIN32 |
855 | 868 | appendPQExpBufferChar(cmd, '\''); |
856 | | - appendStringLiteral(cmd, SYSTEMQUOTE, false); |
| 869 | +#else |
| 870 | + appendPQExpBufferChar(cmd, '"'); |
| 871 | +#endif |
857 | 872 |
|
| 873 | + if (strlen(SYSTEMQUOTE) > 0) |
| 874 | + appendPQExpBuffer(cmd, SYSTEMQUOTE); |
| 875 | + |
858 | 876 | if (verbose) |
859 | 877 | fprintf(stderr, _("%s: running \"%s\"\n"), progname, cmd->data); |
860 | 878 |
|
|
0 commit comments