mirror of
https://github.com/postgres/postgres.git
synced 2025-04-29 13:56:47 +03:00
Use a more portable technique for unsetting environment variables,
and unset PGCLIENTENCODING to prevent backend from dying if it's set to something incompatible with the -E option.
This commit is contained in:
parent
e845adf31f
commit
c7007d1848
@ -43,7 +43,7 @@
|
|||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
* Portions taken from FreeBSD.
|
* Portions taken from FreeBSD.
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.23 2004/03/09 04:49:02 momjian Exp $
|
* $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.24 2004/05/05 16:09:31 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -263,6 +263,24 @@ xstrdup(const char *s)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* unsetenv() doesn't exist everywhere, so emulate it with this ugly
|
||||||
|
* but well-tested technique (borrowed from backend's variable.c).
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
pg_unsetenv(const char *varname)
|
||||||
|
{
|
||||||
|
char *envstr = xmalloc(strlen(varname) + 2);
|
||||||
|
|
||||||
|
/* First, override any existing setting by forcibly defining the var */
|
||||||
|
sprintf(envstr, "%s=", varname);
|
||||||
|
putenv(envstr);
|
||||||
|
|
||||||
|
/* Now we can clobber the variable definition this way: */
|
||||||
|
strcpy(envstr, "=");
|
||||||
|
putenv(envstr);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* delete a directory tree recursively
|
* delete a directory tree recursively
|
||||||
* assumes path points to a valid directory
|
* assumes path points to a valid directory
|
||||||
@ -1242,7 +1260,10 @@ bootstrap_template1(char *short_version)
|
|||||||
snprintf(cmd, sizeof(cmd), "LC_CTYPE=%s", lc_ctype);
|
snprintf(cmd, sizeof(cmd), "LC_CTYPE=%s", lc_ctype);
|
||||||
putenv(xstrdup(cmd));
|
putenv(xstrdup(cmd));
|
||||||
|
|
||||||
putenv("LC_ALL");
|
pg_unsetenv("LC_ALL");
|
||||||
|
|
||||||
|
/* Also ensure backend isn't confused by this environment var: */
|
||||||
|
pg_unsetenv("PGCLIENTENCODING");
|
||||||
|
|
||||||
snprintf(cmd, sizeof(cmd),
|
snprintf(cmd, sizeof(cmd),
|
||||||
"\"%s/postgres\" -boot -x1 %s %s template1",
|
"\"%s/postgres\" -boot -x1 %s %s template1",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user