Commit 10249abf authored by Bruce Momjian's avatar Bruce Momjian

Cleanup Win32 COPY handling, and move archive examples to SGML.

parent 43ea65a0
<!--
$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">
......@@ -1435,16 +1435,24 @@ SET ENABLE_SEQSCAN TO OFF;
<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),
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, 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.
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>
......
......@@ -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.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 $
*
*-------------------------------------------------------------------------
*/
......@@ -1962,18 +1962,6 @@ RestoreArchivedFile(char *path, const char *xlogfname,
/* %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;
......
......@@ -19,7 +19,7 @@
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
......@@ -436,17 +436,8 @@ pgarch_archiveXlog(char *xlog)
/* %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 */
......
......@@ -117,16 +117,6 @@
# - 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
#---------------------------------------------------------------------------
......
......@@ -8,7 +8,7 @@
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
......@@ -88,8 +88,17 @@ last_dir_separator(const char *filename)
/*
* 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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment