Index: src/backend/access/transam/xlog.c =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/access/transam/xlog.c,v retrieving revision 1.159 diff -c -c -r1.159 xlog.c *** src/backend/access/transam/xlog.c 11 Aug 2004 04:07:15 -0000 1.159 --- src/backend/access/transam/xlog.c 12 Aug 2004 18:23:58 -0000 *************** *** 1962,1978 **** /* %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 */ --- 1962,1981 ---- /* %p: full path of target file */ sp++; StrNCpy(dp, xlogpath, endp-dp); ! /* ! * make_native_path() is required because COPY is an internal ! * CMD.EXE command and doesn't process forward slashes in the ! * same way as external commands. Quoting the first argument ! * to COPY does not convert forward to backward slashes, but ! * COPY does properly process quoted forward slashes in the ! * second argument. ! * ! * COPY works with quoted forward slashes in the first argument ! * only if the current directory is the same as the directory ! * of the first argument. ! */ ! make_native_path(dp); dp += strlen(dp); break; case 'f': /* %f: filename of desired file */ Index: src/backend/utils/misc/postgresql.conf.sample =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/utils/misc/postgresql.conf.sample,v retrieving revision 1.124 diff -c -c -r1.124 postgresql.conf.sample *** src/backend/utils/misc/postgresql.conf.sample 8 Aug 2004 19:42:57 -0000 1.124 --- src/backend/utils/misc/postgresql.conf.sample 12 Aug 2004 18:24:02 -0000 *************** *** 117,129 **** # - Archiving - #archive_command = '' # command to use to archive a logfile segment ! # If archive_command is '' then archiving is disabled. Otherwise, set it ! # to a command to copy a file to the proper place. A simplistic example ! # is 'cp %p /mnt/server/archivedir/%f'. Any %p in the string is replaced ! # by the absolute path of the file to archive, while any %f is replaced by ! # the file name only. NOTE: it is important for the command to return ! # zero exit status if and only if it succeeded. #--------------------------------------------------------------------------- # QUERY TUNING --- 117,133 ---- # - Archiving - #archive_command = '' # command to use to archive a logfile segment ! # # If archive_command is '' then archiving is disabled. Otherwise, set it ! # to a command to copy a file to the proper place. Any %p in the string ! # is replaced by the absolute path of the file to archive, while any %f is ! # replaced by the file name only. NOTE: it is important for the command to ! # return zero exit status only if it succeeds. ! # ! # Examples: ! # archive_command = 'cp "%p" /mnt/server/archivedir/"%f"' ! # archive_command = 'copy "%p" /mnt/server/archivedir/"%f"' # Win32 ! #--------------------------------------------------------------------------- # QUERY TUNING Index: src/include/port.h =================================================================== RCS file: /cvsroot/pgsql-server/src/include/port.h,v retrieving revision 1.51 diff -c -c -r1.51 port.h *** src/include/port.h 9 Aug 2004 02:12:51 -0000 1.51 --- src/include/port.h 12 Aug 2004 18:24:03 -0000 *************** *** 39,44 **** --- 39,45 ---- extern char *first_path_separator(const char *filename); extern void canonicalize_path(char *path); + extern void make_native_path(char *path); extern const char *get_progname(const char *argv0); extern void get_share_path(const char *my_exec_path, char *ret_path); extern void get_etc_path(const char *my_exec_path, char *ret_path); Index: src/port/path.c =================================================================== RCS file: /cvsroot/pgsql-server/src/port/path.c,v retrieving revision 1.27 diff -c -c -r1.27 path.c *** src/port/path.c 9 Aug 2004 20:20:46 -0000 1.27 --- src/port/path.c 12 Aug 2004 18:24:08 -0000 *************** *** 88,93 **** --- 88,110 ---- /* + * make_native_path + * On WIN32, change / to \ in the path. + */ + void + make_native_path(char *filename) + { + #ifdef WIN32 + char *p; + + for (p = filename; *p; p++) + if (*p == '/') + *p = '\\'; + #endif + } + + + /* * Make all paths look like Unix */ void