<!--
-$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.275 2004/08/08 20:17:33 tgl Exp $
+$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.276 2004/08/12 19:03:17 momjian Exp $
 -->
 
 <Chapter Id="runtime">
       <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.
+        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>
 
  * 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.161 2004/08/12 18:34:45 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.162 2004/08/12 19:03:23 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
                                        /* %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;
 
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/postmaster/pgarch.c,v 1.6 2004/08/09 16:26:06 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/postmaster/pgarch.c,v 1.7 2004/08/12 19:03:34 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
                                        /* %p: full path of source file */
                                        sp++;
                                        StrNCpy(dp, pathname, endp-dp);
-#ifndef WIN32
+                                       make_native_path(dp);
                                        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 */
 
 # - 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
 
 
 #---------------------------------------------------------------------------
 
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/port/path.c,v 1.28 2004/08/12 18:32:52 momjian Exp $
+ *       $PostgreSQL: pgsql/src/port/path.c,v 1.29 2004/08/12 19:03:44 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 
 /*
- *     make_native_path
- *     On WIN32, change / to \ in the path.
+ *     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)