diff options
Diffstat (limited to 'contrib/basebackup_to_shell')
| -rw-r--r-- | contrib/basebackup_to_shell/basebackup_to_shell.c | 56 | 
1 files changed, 3 insertions, 53 deletions
| diff --git a/contrib/basebackup_to_shell/basebackup_to_shell.c b/contrib/basebackup_to_shell/basebackup_to_shell.c index 8d583550b50..29f5069d427 100644 --- a/contrib/basebackup_to_shell/basebackup_to_shell.c +++ b/contrib/basebackup_to_shell/basebackup_to_shell.c @@ -12,6 +12,7 @@  #include "access/xact.h"  #include "backup/basebackup_target.h" +#include "common/percentrepl.h"  #include "miscadmin.h"  #include "storage/fd.h"  #include "utils/acl.h" @@ -208,59 +209,8 @@ static char *  shell_construct_command(const char *base_command, const char *filename,  						const char *target_detail)  { -	StringInfoData buf; -	const char *c; - -	initStringInfo(&buf); -	for (c = base_command; *c != '\0'; ++c) -	{ -		/* Anything other than '%' is copied verbatim. */ -		if (*c != '%') -		{ -			appendStringInfoChar(&buf, *c); -			continue; -		} - -		/* Any time we see '%' we eat the following character as well. */ -		++c; - -		/* -		 * The following character determines what we insert here, or may -		 * cause us to throw an error. -		 */ -		if (*c == '%') -		{ -			/* '%%' is replaced by a single '%' */ -			appendStringInfoChar(&buf, '%'); -		} -		else if (*c == 'f') -		{ -			/* '%f' is replaced by the filename */ -			appendStringInfoString(&buf, filename); -		} -		else if (*c == 'd') -		{ -			/* '%d' is replaced by the target detail */ -			appendStringInfoString(&buf, target_detail); -		} -		else if (*c == '\0') -		{ -			/* Incomplete escape sequence, expected a character afterward */ -			ereport(ERROR, -					errcode(ERRCODE_SYNTAX_ERROR), -					errmsg("shell command ends unexpectedly after escape character \"%%\"")); -		} -		else -		{ -			/* Unknown escape sequence */ -			ereport(ERROR, -					errcode(ERRCODE_SYNTAX_ERROR), -					errmsg("shell command contains unexpected escape sequence \"%c\"", -						   *c)); -		} -	} - -	return buf.data; +	return replace_percent_placeholders(base_command, "basebackup_to_shell.command", +										"df", target_detail, filename);  }  /* | 
