When expanding %p in archive_command or restore_command, translate
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 9 Aug 2004 16:26:06 +0000 (16:26 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 9 Aug 2004 16:26:06 +0000 (16:26 +0000)
slashes to backslashes #ifdef WIN32.  This is to cope with the fact
that Windows seems exceedingly unfriendly to slashes in shell commands,
as per recent discussion.

src/backend/access/transam/xlog.c
src/backend/postmaster/pgarch.c

index 1036365896f3ffd2106c4be237c20e03ed529f58..28fb4c733a6032613428ac8b83a8c528e83b4cb5 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.157 2004/08/08 03:22:08 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.158 2004/08/09 16:26:01 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1962,7 +1962,17 @@ RestoreArchivedFile(char *path, const char *xlogfname,
                    /* %p: full path of target file */
                    sp++;
                    StrNCpy(dp, xlogpath, endp-dp);
+#ifndef WIN32
                    dp += strlen(dp);
+#else
+                   /* On Windows, change / to \ in the substituted path */
+                   while (*dp)
+                   {
+                       if (*dp == '/')
+                           *dp = '\\';
+                       dp++;
+                   }
+#endif
                    break;
                case 'f':
                    /* %f: filename of desired file */
index 1d398ba596212f688deb621de0a0f314f1b65924..83587551c9b0ac364fc745e1282d0ac5bb39518d 100644 (file)
@@ -19,7 +19,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/postmaster/pgarch.c,v 1.5 2004/08/05 23:32:10 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/postmaster/pgarch.c,v 1.6 2004/08/09 16:26:06 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -436,7 +436,17 @@ pgarch_archiveXlog(char *xlog)
                    /* %p: full path of source file */
                    sp++;
                    StrNCpy(dp, pathname, endp-dp);
+#ifndef WIN32
                    dp += strlen(dp);
+#else
+                   /* On Windows, change / to \ in the substituted path */
+                   while (*dp)
+                   {
+                       if (*dp == '/')
+                           *dp = '\\';
+                       dp++;
+                   }
+#endif
                    break;
                case 'f':
                    /* %f: filename of source file */