Index: doc/src/sgml/runtime.sgml
===================================================================
RCS file: /cvsroot/pgsql-server/doc/src/sgml/runtime.sgml,v
retrieving revision 1.275
diff -c -c -r1.275 runtime.sgml
*** doc/src/sgml/runtime.sgml	8 Aug 2004 20:17:33 -0000	1.275
--- doc/src/sgml/runtime.sgml	12 Aug 2004 18:54:37 -0000
***************
*** 1435,1450 ****
        <term><varname>archive_command</varname> (<type>string</type>)</term>
        <listitem>
         <para>
!         The shell command to execute to archive a completed segment of the
! 	WAL file series.  If this is an empty string (which is the default),
! 	WAL archiving is disabled.  Any <literal>%p</> in the string is
! 	replaced 
! 	by the absolute path of the file to archive, while any <literal>%f</>
! 	is replaced by the file name only.  Write <literal>%%</> if you need
! 	to embed an actual <literal>%</> character in the command.  For more
! 	information see <xref linkend="backup-archiving-wal">.  This option
! 	can only be set at server start or in the
! 	<filename>postgresql.conf</filename> file.
         </para>
        </listitem>
       </varlistentry>
--- 1435,1458 ----
        <term><varname>archive_command</varname> (<type>string</type>)</term>
        <listitem>
         <para>
!         The shell command to execute to archive a completed segment of
!         the WAL file series. If this is an empty string (the default),
!         WAL archiving is disabled. Any <literal>%p</> in the string is
!         replaced by the absolute path of the file to archive, and any
!         <literal>%f</> is replaced by the file name only. Use
!         <literal>%%</> to embed an actual <literal>%</> character in the
!         command. For more information see <xref
!         linkend="backup-archiving-wal">. This option can only be set at
!         server start or in the <filename>postgresql.conf</filename>
!         file.
!        </para>
!        <para>
!         It is important for the command to return a zero exit status only if
! 	it succeeds.  Examples:
! <programlisting>
! archive_command = 'cp "%p" /mnt/server/archivedir/"%f"'
! archive_command = 'copy "%p" /mnt/server/archivedir/"%f"'  # Win32
! </programlisting>
         </para>
        </listitem>
       </varlistentry>
Index: src/backend/access/transam/xlog.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/access/transam/xlog.c,v
retrieving revision 1.161
diff -c -c -r1.161 xlog.c
*** src/backend/access/transam/xlog.c	12 Aug 2004 18:34:45 -0000	1.161
--- src/backend/access/transam/xlog.c	12 Aug 2004 18:54:50 -0000
***************
*** 1962,1979 ****
  					/* %p: full path of target file */
  					sp++;
  					StrNCpy(dp, xlogpath, endp-dp);
- 					/*
- 					 *	make_native_path() is required because WIN32 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;
--- 1962,1967 ----
Index: src/backend/postmaster/pgarch.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/postmaster/pgarch.c,v
retrieving revision 1.6
diff -c -c -r1.6 pgarch.c
*** src/backend/postmaster/pgarch.c	9 Aug 2004 16:26:06 -0000	1.6
--- src/backend/postmaster/pgarch.c	12 Aug 2004 18:54:52 -0000
***************
*** 436,452 ****
  					/* %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 */
--- 436,443 ----
  					/* %p: full path of source file */
  					sp++;
  					StrNCpy(dp, pathname, endp-dp);
! 					make_native_path(dp);
  					dp += strlen(dp);
  					break;
  				case 'f':
  					/* %f: filename of source 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.125
diff -c -c -r1.125 postgresql.conf.sample
*** src/backend/utils/misc/postgresql.conf.sample	12 Aug 2004 18:32:37 -0000	1.125
--- src/backend/utils/misc/postgresql.conf.sample	12 Aug 2004 18:54:55 -0000
***************
*** 117,132 ****
  # - 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
  
  
  #---------------------------------------------------------------------------
--- 117,122 ----
Index: src/port/path.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/port/path.c,v
retrieving revision 1.28
diff -c -c -r1.28 path.c
*** src/port/path.c	12 Aug 2004 18:32:52 -0000	1.28
--- src/port/path.c	12 Aug 2004 18:55:02 -0000
***************
*** 88,95 ****
  
  
  /*
!  *	make_native_path
!  *	On WIN32, change / to \ in the path.
   */
  void
  make_native_path(char *filename)
--- 88,104 ----
  
  
  /*
!  *	make_native_path - on WIN32, change / to \ in the path
!  *
!  *	This is required because WIN32 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.
   */
  void
  make_native_path(char *filename)
