From 35f539b481b5524bd331cb7b75df848da51b43e5 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 9 Aug 2004 16:26:06 +0000 Subject: [PATCH] When expanding %p in archive_command or restore_command, translate 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 | 12 +++++++++++- src/backend/postmaster/pgarch.c | 12 +++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 1036365896..28fb4c733a 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -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 */ diff --git a/src/backend/postmaster/pgarch.c b/src/backend/postmaster/pgarch.c index 1d398ba596..83587551c9 100644 --- a/src/backend/postmaster/pgarch.c +++ b/src/backend/postmaster/pgarch.c @@ -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 */