jsonpath scanner: reentrant scanner
[pgsql.git] / src / common / archive.c
blob00b53705a51068e8a455374fb95da10638d47672
1 /*-------------------------------------------------------------------------
3 * archive.c
4 * Common WAL archive routines
6 * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7 * Portions Copyright (c) 1994, Regents of the University of California
10 * IDENTIFICATION
11 * src/common/archive.c
13 *-------------------------------------------------------------------------
16 #ifndef FRONTEND
17 #include "postgres.h"
18 #else
19 #include "postgres_fe.h"
20 #endif
22 #include "common/archive.h"
23 #include "common/percentrepl.h"
26 * BuildRestoreCommand
28 * Builds a restore command to retrieve a file from WAL archives, replacing
29 * the supported aliases with values supplied by the caller as defined by
30 * the GUC parameter restore_command: xlogpath for %p, xlogfname for %f and
31 * lastRestartPointFname for %r.
33 * The result is a palloc'd string for the restore command built. The
34 * caller is responsible for freeing it. If any of the required arguments
35 * is NULL and that the corresponding alias is found in the command given
36 * by the caller, then an error is thrown.
38 char *
39 BuildRestoreCommand(const char *restoreCommand,
40 const char *xlogpath,
41 const char *xlogfname,
42 const char *lastRestartPointFname)
44 char *nativePath = NULL;
45 char *result;
47 if (xlogpath)
49 nativePath = pstrdup(xlogpath);
50 make_native_path(nativePath);
53 result = replace_percent_placeholders(restoreCommand, "restore_command", "frp",
54 xlogfname, lastRestartPointFname, nativePath);
56 if (nativePath)
57 pfree(nativePath);
59 return result;