diff options
author | Bruce Momjian | 2011-05-16 14:46:52 +0000 |
---|---|---|
committer | Bruce Momjian | 2011-05-16 14:48:40 +0000 |
commit | 6c19bd96bc5139fabace94c5a0a5624fd9d8e986 (patch) | |
tree | a7cf4bf9d1462848d010218ccf7ce57554089f45 /contrib/pg_upgrade/util.c | |
parent | 78b66cff72d6f337a685355f7ccede1c518681b5 (diff) |
Allow pg_upgrade to honor libpq environment variables. Add 'local'
checks for PGHOST and PGHOSTADDR.
Diffstat (limited to 'contrib/pg_upgrade/util.c')
-rw-r--r-- | contrib/pg_upgrade/util.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/contrib/pg_upgrade/util.c b/contrib/pg_upgrade/util.c index 9b0bf0f82a7..4094895f46c 100644 --- a/contrib/pg_upgrade/util.c +++ b/contrib/pg_upgrade/util.c @@ -244,3 +244,41 @@ str2uint(const char *str) { return strtoul(str, NULL, 10); } + + +/* + * pg_putenv() + * + * This is like putenv(), but takes two arguments. + * It also does unsetenv() if val is NULL. + */ +void +pg_putenv(const char *var, const char *val) +{ + if (val) + { +#ifndef WIN32 + char *envstr = (char *) pg_malloc(strlen(var) + + strlen(val) + 2); + + sprintf(envstr, "%s=%s", var, val); + putenv(envstr); + + /* + * Do not free envstr because it becomes part of the environment on + * some operating systems. See port/unsetenv.c::unsetenv. + */ +#else + SetEnvironmentVariableA(var, val); +#endif + } + else + { +#ifndef WIN32 + unsetenv(var); +#else + SetEnvironmentVariableA(var, ""); +#endif + } +} + |