mirror of https://github.com/postgres/postgres
Replace pg_asprintf() with psprintf().
This eliminates an awkward coding pattern that's also unnecessarily inconsistent with backend coding. psprintf() is now the thing to use everywhere.
This commit is contained in:
parent
09a89cb5fc
commit
2c66f9924c
|
@ -508,7 +508,7 @@ sql_exec_searchtables(PGconn *conn, struct options * opts)
|
|||
free(comma_filenodes);
|
||||
|
||||
/* now build the query */
|
||||
pg_asprintf(&todo,
|
||||
todo = psprintf(
|
||||
"SELECT pg_catalog.pg_relation_filenode(c.oid) as \"Filenode\", relname as \"Table Name\" %s\n"
|
||||
"FROM pg_catalog.pg_class c \n"
|
||||
" LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace \n"
|
||||
|
|
|
@ -458,10 +458,9 @@ create_script_for_cluster_analyze(char **analyze_script_file_name)
|
|||
prep_status("Creating script to analyze new cluster");
|
||||
|
||||
if (os_info.user_specified)
|
||||
pg_asprintf(&user_specification, "-U \"%s\" ", os_info.user);
|
||||
user_specification = psprintf("-U \"%s\" ", os_info.user);
|
||||
|
||||
pg_asprintf(analyze_script_file_name, "analyze_new_cluster.%s",
|
||||
SCRIPT_EXT);
|
||||
*analyze_script_file_name = psprintf("analyze_new_cluster.%s", SCRIPT_EXT);
|
||||
|
||||
if ((script = fopen_priv(*analyze_script_file_name, "w")) == NULL)
|
||||
pg_fatal("Could not open file \"%s\": %s\n",
|
||||
|
@ -592,8 +591,7 @@ create_script_for_old_cluster_deletion(char **deletion_script_file_name)
|
|||
int tblnum;
|
||||
char old_cluster_pgdata[MAXPGPATH];
|
||||
|
||||
pg_asprintf(deletion_script_file_name, "delete_old_cluster.%s",
|
||||
SCRIPT_EXT);
|
||||
*deletion_script_file_name = psprintf("delete_old_cluster.%s", SCRIPT_EXT);
|
||||
|
||||
/*
|
||||
* Some users (oddly) create tablespaces inside the cluster data
|
||||
|
|
|
@ -86,7 +86,8 @@ set_tablespace_directory_suffix(ClusterInfo *cluster)
|
|||
/* This cluster has a version-specific subdirectory */
|
||||
|
||||
/* The leading slash is needed to start a new directory. */
|
||||
pg_asprintf(&cluster->tablespace_suffix, "/PG_%s_%d",
|
||||
cluster->major_version_str, cluster->controldata.cat_ver);
|
||||
cluster->tablespace_suffix = psprintf("/PG_%s_%d",
|
||||
cluster->major_version_str,
|
||||
cluster->controldata.cat_ver);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -278,7 +278,7 @@ pg_putenv(const char *var, const char *val)
|
|||
#ifndef WIN32
|
||||
char *envstr;
|
||||
|
||||
pg_asprintf(&envstr, "%s=%s", var, val);
|
||||
envstr = psprintf("%s=%s", var, val);
|
||||
putenv(envstr);
|
||||
|
||||
/*
|
||||
|
|
|
@ -32,10 +32,6 @@ static char *format_type_internal(Oid type_oid, int32 typemod,
|
|||
bool typemod_given, bool allow_invalid,
|
||||
bool force_qualify);
|
||||
static char *printTypmod(const char *typname, int32 typmod, Oid typmodout);
|
||||
static char *
|
||||
psnprintf(size_t len, const char *fmt,...)
|
||||
/* This lets gcc check the format string for consistency. */
|
||||
__attribute__((format(PG_PRINTF_ATTRIBUTE, 2, 3)));
|
||||
|
||||
|
||||
/*
|
||||
|
@ -320,7 +316,7 @@ format_type_internal(Oid type_oid, int32 typemod,
|
|||
}
|
||||
|
||||
if (is_array)
|
||||
buf = psnprintf(strlen(buf) + 3, "%s[]", buf);
|
||||
buf = psprintf("%s[]", buf);
|
||||
|
||||
ReleaseSysCache(tuple);
|
||||
|
||||
|
@ -342,8 +338,7 @@ printTypmod(const char *typname, int32 typmod, Oid typmodout)
|
|||
if (typmodout == InvalidOid)
|
||||
{
|
||||
/* Default behavior: just print the integer typmod with parens */
|
||||
res = psnprintf(strlen(typname) + MAX_INT32_LEN + 3, "%s(%d)",
|
||||
typname, (int) typmod);
|
||||
res = psprintf("%s(%d)", typname, (int) typmod);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -352,8 +347,7 @@ printTypmod(const char *typname, int32 typmod, Oid typmodout)
|
|||
|
||||
tmstr = DatumGetCString(OidFunctionCall1(typmodout,
|
||||
Int32GetDatum(typmod)));
|
||||
res = psnprintf(strlen(typname) + strlen(tmstr) + 1, "%s%s",
|
||||
typname, tmstr);
|
||||
res = psprintf("%s%s", typname, tmstr);
|
||||
}
|
||||
|
||||
return res;
|
||||
|
@ -448,20 +442,3 @@ oidvectortypes(PG_FUNCTION_ARGS)
|
|||
|
||||
PG_RETURN_TEXT_P(cstring_to_text(result));
|
||||
}
|
||||
|
||||
|
||||
/* snprintf into a palloc'd string */
|
||||
static char *
|
||||
psnprintf(size_t len, const char *fmt,...)
|
||||
{
|
||||
va_list ap;
|
||||
char *buf;
|
||||
|
||||
buf = palloc(len);
|
||||
|
||||
va_start(ap, fmt);
|
||||
vsnprintf(buf, len, fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
|
|
@ -949,7 +949,7 @@ mkdatadir(const char *subdir)
|
|||
char *path;
|
||||
|
||||
if (subdir)
|
||||
pg_asprintf(&path, "%s/%s", pg_data, subdir);
|
||||
path = psprintf("%s/%s", pg_data, subdir);
|
||||
else
|
||||
path = pg_strdup(pg_data);
|
||||
|
||||
|
@ -969,7 +969,7 @@ mkdatadir(const char *subdir)
|
|||
static void
|
||||
set_input(char **dest, char *filename)
|
||||
{
|
||||
pg_asprintf(dest, "%s/%s", share_path, filename);
|
||||
*dest = psprintf("%s/%s", share_path, filename);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1023,9 +1023,9 @@ write_version_file(char *extrapath)
|
|||
char *path;
|
||||
|
||||
if (extrapath == NULL)
|
||||
pg_asprintf(&path, "%s/PG_VERSION", pg_data);
|
||||
path = psprintf("%s/PG_VERSION", pg_data);
|
||||
else
|
||||
pg_asprintf(&path, "%s/%s/PG_VERSION", pg_data, extrapath);
|
||||
path = psprintf("%s/%s/PG_VERSION", pg_data, extrapath);
|
||||
|
||||
if ((version_file = fopen(path, PG_BINARY_W)) == NULL)
|
||||
{
|
||||
|
@ -1053,7 +1053,7 @@ set_null_conf(void)
|
|||
FILE *conf_file;
|
||||
char *path;
|
||||
|
||||
pg_asprintf(&path, "%s/postgresql.conf", pg_data);
|
||||
path = psprintf("%s/postgresql.conf", pg_data);
|
||||
conf_file = fopen(path, PG_BINARY_W);
|
||||
if (conf_file == NULL)
|
||||
{
|
||||
|
@ -2951,7 +2951,7 @@ setup_pgdata(void)
|
|||
* need quotes otherwise on Windows because paths there are most likely to
|
||||
* have embedded spaces.
|
||||
*/
|
||||
pg_asprintf(&pgdata_set_env, "PGDATA=%s", pg_data);
|
||||
pgdata_set_env = psprintf("PGDATA=%s", pg_data);
|
||||
putenv(pgdata_set_env);
|
||||
}
|
||||
|
||||
|
@ -3345,7 +3345,7 @@ create_xlog_symlink(void)
|
|||
}
|
||||
|
||||
/* form name of the place where the symlink must go */
|
||||
pg_asprintf(&linkloc, "%s/pg_xlog", pg_data);
|
||||
linkloc = psprintf("%s/pg_xlog", pg_data);
|
||||
|
||||
#ifdef HAVE_SYMLINK
|
||||
if (symlink(xlog_dir, linkloc) != 0)
|
||||
|
|
|
@ -2049,7 +2049,7 @@ main(int argc, char **argv)
|
|||
|
||||
pgdata_D = pg_strdup(optarg);
|
||||
canonicalize_path(pgdata_D);
|
||||
pg_asprintf(&env_var, "PGDATA=%s", pgdata_D);
|
||||
env_var = psprintf("PGDATA=%s", pgdata_D);
|
||||
putenv(env_var);
|
||||
|
||||
/*
|
||||
|
@ -2057,7 +2057,7 @@ main(int argc, char **argv)
|
|||
* variable but we do -D too for clearer postmaster
|
||||
* 'ps' display
|
||||
*/
|
||||
pg_asprintf(&pgdata_opt, "-D \"%s\" ", pgdata_D);
|
||||
pgdata_opt = psprintf("-D \"%s\" ", pgdata_D);
|
||||
break;
|
||||
}
|
||||
case 'l':
|
||||
|
@ -2098,7 +2098,7 @@ main(int argc, char **argv)
|
|||
register_username = pg_strdup(optarg);
|
||||
else
|
||||
/* Prepend .\ for local accounts */
|
||||
pg_asprintf(®ister_username, ".\\%s", optarg);
|
||||
register_username = psprintf(".\\%s", optarg);
|
||||
break;
|
||||
case 'w':
|
||||
do_wait = true;
|
||||
|
|
|
@ -489,7 +489,7 @@ cfopen_read(const char *path, const char *mode)
|
|||
{
|
||||
char *fname;
|
||||
|
||||
pg_asprintf(&fname, "%s.gz", path);
|
||||
fname = psprintf("%s.gz", path);
|
||||
fp = cfopen(fname, mode, 1);
|
||||
free(fname);
|
||||
}
|
||||
|
@ -519,7 +519,7 @@ cfopen_write(const char *path, const char *mode, int compression)
|
|||
#ifdef HAVE_LIBZ
|
||||
char *fname;
|
||||
|
||||
pg_asprintf(&fname, "%s.gz", path);
|
||||
fname = psprintf("%s.gz", path);
|
||||
fp = cfopen(fname, mode, 1);
|
||||
free(fname);
|
||||
#else
|
||||
|
|
|
@ -10439,7 +10439,7 @@ convertOperatorReference(Archive *fout, const char *opr)
|
|||
/* If not schema-qualified, don't need to add OPERATOR() */
|
||||
if (!sawdot)
|
||||
return name;
|
||||
pg_asprintf(&oname, "OPERATOR(%s)", name);
|
||||
oname = psprintf("OPERATOR(%s)", name);
|
||||
free(name);
|
||||
return oname;
|
||||
}
|
||||
|
@ -12753,7 +12753,7 @@ dumpTable(Archive *fout, TableInfo *tbinfo)
|
|||
char *acltag;
|
||||
|
||||
attnamecopy = pg_strdup(fmtId(attname));
|
||||
pg_asprintf(&acltag, "%s.%s", tbinfo->dobj.name, attname);
|
||||
acltag = psprintf("%s.%s", tbinfo->dobj.name, attname);
|
||||
/* Column's GRANT type is always TABLE */
|
||||
dumpACL(fout, tbinfo->dobj.catId, tbinfo->dobj.dumpId, "TABLE",
|
||||
namecopy, attnamecopy, acltag,
|
||||
|
|
|
@ -1188,7 +1188,7 @@ exec_command(const char *cmd,
|
|||
/* Set variable to the value of the next argument */
|
||||
char *newval;
|
||||
|
||||
pg_asprintf(&newval, "%s=%s", envvar, envval);
|
||||
newval = psprintf("%s=%s", envvar, envval);
|
||||
putenv(newval);
|
||||
success = true;
|
||||
|
||||
|
@ -1549,7 +1549,7 @@ prompt_for_password(const char *username)
|
|||
{
|
||||
char *prompt_text;
|
||||
|
||||
pg_asprintf(&prompt_text, _("Password for user %s: "), username);
|
||||
prompt_text = psprintf(_("Password for user %s: "), username);
|
||||
result = simple_prompt(prompt_text, 100, false);
|
||||
free(prompt_text);
|
||||
}
|
||||
|
@ -1929,17 +1929,17 @@ editFile(const char *fname, int lineno)
|
|||
*/
|
||||
#ifndef WIN32
|
||||
if (lineno > 0)
|
||||
pg_asprintf(&sys, "exec %s %s%d '%s'",
|
||||
sys = psprintf("exec %s %s%d '%s'",
|
||||
editorName, editor_lineno_arg, lineno, fname);
|
||||
else
|
||||
pg_asprintf(&sys, "exec %s '%s'",
|
||||
sys = psprintf("exec %s '%s'",
|
||||
editorName, fname);
|
||||
#else
|
||||
if (lineno > 0)
|
||||
pg_asprintf(&sys, SYSTEMQUOTE "\"%s\" %s%d \"%s\"" SYSTEMQUOTE,
|
||||
sys = psprintf(SYSTEMQUOTE "\"%s\" %s%d \"%s\"" SYSTEMQUOTE,
|
||||
editorName, editor_lineno_arg, lineno, fname);
|
||||
else
|
||||
pg_asprintf(&sys, SYSTEMQUOTE "\"%s\" \"%s\"" SYSTEMQUOTE,
|
||||
sys = psprintf(SYSTEMQUOTE "\"%s\" \"%s\"" SYSTEMQUOTE,
|
||||
editorName, fname);
|
||||
#endif
|
||||
result = system(sys);
|
||||
|
@ -2635,9 +2635,9 @@ do_shell(const char *command)
|
|||
|
||||
/* See EDITOR handling comment for an explanation */
|
||||
#ifndef WIN32
|
||||
pg_asprintf(&sys, "exec %s", shellName);
|
||||
sys = psprintf("exec %s", shellName);
|
||||
#else
|
||||
pg_asprintf(&sys, SYSTEMQUOTE "\"%s\"" SYSTEMQUOTE, shellName);
|
||||
sys = psprintf(SYSTEMQUOTE "\"%s\"" SYSTEMQUOTE, shellName);
|
||||
#endif
|
||||
result = system(sys);
|
||||
free(sys);
|
||||
|
|
|
@ -594,7 +594,7 @@ StoreQueryTuple(const PGresult *result)
|
|||
char *value;
|
||||
|
||||
/* concate prefix and column name */
|
||||
pg_asprintf(&varname, "%s%s", pset.gset_prefix, colname);
|
||||
varname = psprintf("%s%s", pset.gset_prefix, colname);
|
||||
|
||||
if (!PQgetisnull(result, 0, i))
|
||||
value = PQgetvalue(result, 0, i);
|
||||
|
@ -1685,7 +1685,7 @@ expand_tilde(char **filename)
|
|||
{
|
||||
char *newfn;
|
||||
|
||||
pg_asprintf(&newfn, "%s%s", home, p);
|
||||
newfn = psprintf("%s%s", home, p);
|
||||
free(fn);
|
||||
*filename = newfn;
|
||||
}
|
||||
|
|
|
@ -79,7 +79,7 @@ xstrcat(char **var, const char *more)
|
|||
{
|
||||
char *newvar;
|
||||
|
||||
pg_asprintf(&newvar, "%s%s", *var, more);
|
||||
newvar = psprintf("%s%s", *var, more);
|
||||
free(*var);
|
||||
*var = newvar;
|
||||
}
|
||||
|
|
|
@ -298,7 +298,7 @@ initializeInput(int flags)
|
|||
if (histfile == NULL)
|
||||
{
|
||||
if (get_home_path(home))
|
||||
pg_asprintf(&psql_history, "%s/%s", home, PSQLHISTORY);
|
||||
psql_history = psprintf("%s/%s", home, PSQLHISTORY);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -182,8 +182,8 @@ main(int argc, char *argv[])
|
|||
if (options.username == NULL)
|
||||
password_prompt = pg_strdup(_("Password: "));
|
||||
else
|
||||
pg_asprintf(&password_prompt, _("Password for user %s: "),
|
||||
options.username);
|
||||
password_prompt = psprintf(_("Password for user %s: "),
|
||||
options.username);
|
||||
|
||||
if (pset.getPassword == TRI_YES)
|
||||
password = simple_prompt(password_prompt, 100, false);
|
||||
|
@ -638,8 +638,8 @@ process_psqlrc_file(char *filename)
|
|||
#define R_OK 4
|
||||
#endif
|
||||
|
||||
pg_asprintf(&psqlrc_minor, "%s-%s", filename, PG_VERSION);
|
||||
pg_asprintf(&psqlrc_major, "%s-%s", filename, PG_MAJORVERSION);
|
||||
psqlrc_minor = psprintf("%s-%s", filename, PG_VERSION);
|
||||
psqlrc_major = psprintf("%s-%s", filename, PG_MAJORVERSION);
|
||||
|
||||
/* check for minor version first, then major, then no version */
|
||||
if (access(psqlrc_minor, R_OK) == 0)
|
||||
|
|
|
@ -3832,8 +3832,6 @@ complete_from_variables(char *text, const char *prefix, const char *suffix)
|
|||
|
||||
for (ptr = pset.vars->next; ptr; ptr = ptr->next)
|
||||
{
|
||||
char *buffer;
|
||||
|
||||
if (nvars >= maxvars)
|
||||
{
|
||||
maxvars *= 2;
|
||||
|
@ -3846,8 +3844,7 @@ complete_from_variables(char *text, const char *prefix, const char *suffix)
|
|||
}
|
||||
}
|
||||
|
||||
pg_asprintf(&buffer, "%s%s%s", prefix, ptr->name, suffix);
|
||||
varnames[nvars++] = buffer;
|
||||
varnames[nvars++] = psprintf("%s%s%s", prefix, ptr->name, suffix);
|
||||
}
|
||||
|
||||
varnames[nvars] = NULL;
|
||||
|
|
|
@ -167,41 +167,3 @@ pvsnprintf(char *buf, size_t len, const char *fmt, va_list args)
|
|||
|
||||
return len * 2;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* XXX this is going away shortly.
|
||||
*/
|
||||
#ifdef FRONTEND
|
||||
int
|
||||
pg_asprintf(char **ret, const char *fmt, ...)
|
||||
{
|
||||
size_t len = 128; /* initial assumption about buffer size */
|
||||
|
||||
for (;;)
|
||||
{
|
||||
char *result;
|
||||
va_list args;
|
||||
|
||||
/*
|
||||
* Allocate result buffer. Note that in frontend this maps to malloc
|
||||
* with exit-on-error.
|
||||
*/
|
||||
result = (char *) palloc(len);
|
||||
|
||||
/* Try to format the data. */
|
||||
va_start(args, fmt);
|
||||
len = pvsnprintf(result, len, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
if (len == 0)
|
||||
{
|
||||
*ret = result;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Release buffer and loop around to try again with larger len. */
|
||||
pfree(result);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -14,7 +14,6 @@ extern void *pg_malloc(size_t size);
|
|||
extern void *pg_malloc0(size_t size);
|
||||
extern void *pg_realloc(void *pointer, size_t size);
|
||||
extern void pg_free(void *pointer);
|
||||
extern int pg_asprintf(char **ret, const char *format, ...) __attribute__((format(PG_PRINTF_ATTRIBUTE, 2, 3)));
|
||||
|
||||
#include "utils/palloc.h"
|
||||
|
||||
|
|
|
@ -466,7 +466,7 @@ report_two_error_messages(Step * step1, Step * step2)
|
|||
{
|
||||
char *prefix;
|
||||
|
||||
pg_asprintf(&prefix, "%s %s", step1->name, step2->name);
|
||||
prefix = psprintf("%s %s", step1->name, step2->name);
|
||||
|
||||
if (step1->errormsg)
|
||||
{
|
||||
|
@ -794,7 +794,7 @@ try_complete_step(Step * step, int flags)
|
|||
PG_DIAG_MESSAGE_PRIMARY);
|
||||
|
||||
if (sev && msg)
|
||||
pg_asprintf(&step->errormsg, "%s: %s", sev, msg);
|
||||
step->errormsg = psprintf("%s: %s", sev, msg);
|
||||
else
|
||||
step->errormsg = pg_strdup(PQresultErrorMessage(res));
|
||||
}
|
||||
|
|
|
@ -656,7 +656,7 @@ doputenv(const char *var, const char *val)
|
|||
{
|
||||
char *s;
|
||||
|
||||
pg_asprintf(&s, "%s=%s", var, val);
|
||||
s = psprintf("%s=%s", var, val);
|
||||
putenv(s);
|
||||
}
|
||||
|
||||
|
@ -671,10 +671,12 @@ add_to_path(const char *pathname, char separator, const char *addval)
|
|||
char *newval;
|
||||
|
||||
if (!oldval || !oldval[0])
|
||||
{
|
||||
/* no previous value */
|
||||
pg_asprintf(&newval, "%s=%s", pathname, addval);
|
||||
newval = psprintf("%s=%s", pathname, addval);
|
||||
}
|
||||
else
|
||||
pg_asprintf(&newval, "%s=%s%c%s", pathname, addval, separator, oldval);
|
||||
newval = psprintf("%s=%s%c%s", pathname, addval, separator, oldval);
|
||||
|
||||
putenv(newval);
|
||||
}
|
||||
|
@ -685,8 +687,6 @@ add_to_path(const char *pathname, char separator, const char *addval)
|
|||
static void
|
||||
initialize_environment(void)
|
||||
{
|
||||
char *tmp;
|
||||
|
||||
putenv("PGAPPNAME=pg_regress");
|
||||
|
||||
if (nolocale)
|
||||
|
@ -742,7 +742,8 @@ initialize_environment(void)
|
|||
|
||||
if (!old_pgoptions)
|
||||
old_pgoptions = "";
|
||||
pg_asprintf(&new_pgoptions, "PGOPTIONS=%s %s", old_pgoptions, my_pgoptions);
|
||||
new_pgoptions = psprintf("PGOPTIONS=%s %s",
|
||||
old_pgoptions, my_pgoptions);
|
||||
putenv(new_pgoptions);
|
||||
}
|
||||
|
||||
|
@ -792,14 +793,11 @@ initialize_environment(void)
|
|||
/*
|
||||
* Adjust path variables to point into the temp-install tree
|
||||
*/
|
||||
pg_asprintf(&tmp, "%s/install/%s", temp_install, bindir);
|
||||
bindir = tmp;
|
||||
bindir = psprintf("%s/install/%s", temp_install, bindir);
|
||||
|
||||
pg_asprintf(&tmp, "%s/install/%s", temp_install, libdir);
|
||||
libdir = tmp;
|
||||
libdir = psprintf("%s/install/%s", temp_install, libdir);
|
||||
|
||||
pg_asprintf(&tmp, "%s/install/%s", temp_install, datadir);
|
||||
datadir = tmp;
|
||||
datadir = psprintf("%s/install/%s", temp_install, datadir);
|
||||
|
||||
/* psql will be installed into temp-install bindir */
|
||||
psqldir = bindir;
|
||||
|
@ -954,7 +952,7 @@ spawn_process(const char *cmdline)
|
|||
*/
|
||||
char *cmdline2;
|
||||
|
||||
pg_asprintf(&cmdline2, "exec %s", cmdline);
|
||||
cmdline2 = psprintf("exec %s", cmdline);
|
||||
execl(shellprog, shellprog, "-c", cmdline2, (char *) NULL);
|
||||
fprintf(stderr, _("%s: could not exec \"%s\": %s\n"),
|
||||
progname, shellprog, strerror(errno));
|
||||
|
@ -1031,7 +1029,7 @@ spawn_process(const char *cmdline)
|
|||
exit(2);
|
||||
}
|
||||
|
||||
pg_asprintf(&cmdline2, "cmd /c %s", cmdline);
|
||||
cmdline2 = psprintf("cmd /c %s", cmdline);
|
||||
|
||||
#ifndef __CYGWIN__
|
||||
AddUserToTokenDacl(restrictedToken);
|
||||
|
@ -1852,7 +1850,7 @@ make_absolute_path(const char *in)
|
|||
}
|
||||
}
|
||||
|
||||
pg_asprintf(&result, "%s/%s", cwdbuf, in);
|
||||
result = psprintf("%s/%s", cwdbuf, in);
|
||||
}
|
||||
|
||||
canonicalize_path(result);
|
||||
|
|
Loading…
Reference in New Issue