aboutsummaryrefslogtreecommitdiff
path: root/src/port
diff options
context:
space:
mode:
Diffstat (limited to 'src/port')
-rw-r--r--src/port/setenv.c48
-rw-r--r--src/port/unsetenv.c65
2 files changed, 0 insertions, 113 deletions
diff --git a/src/port/setenv.c b/src/port/setenv.c
deleted file mode 100644
index d13c8824671..00000000000
--- a/src/port/setenv.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * setenv.c
- * setenv() emulation for machines without it
- *
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- *
- * IDENTIFICATION
- * src/port/setenv.c
- *
- *-------------------------------------------------------------------------
- */
-
-#include "c.h"
-
-
-int
-setenv(const char *name, const char *value, int overwrite)
-{
- char *envstr;
-
- /* Error conditions, per POSIX */
- if (name == NULL || name[0] == '\0' || strchr(name, '=') != NULL ||
- value == NULL)
- {
- errno = EINVAL;
- return -1;
- }
-
- /* No work if variable exists and we're not to replace it */
- if (overwrite == 0 && getenv(name) != NULL)
- return 0;
-
- /*
- * Add or replace the value using putenv(). This will leak memory if the
- * same variable is repeatedly redefined, but there's little we can do
- * about that when sitting atop putenv().
- */
- envstr = (char *) malloc(strlen(name) + strlen(value) + 2);
- if (!envstr) /* not much we can do if no memory */
- return -1;
-
- sprintf(envstr, "%s=%s", name, value);
-
- return putenv(envstr);
-}
diff --git a/src/port/unsetenv.c b/src/port/unsetenv.c
deleted file mode 100644
index 62b806d796c..00000000000
--- a/src/port/unsetenv.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * unsetenv.c
- * unsetenv() emulation for machines without it
- *
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- *
- * IDENTIFICATION
- * src/port/unsetenv.c
- *
- *-------------------------------------------------------------------------
- */
-
-#include "c.h"
-
-
-int
-unsetenv(const char *name)
-{
- char *envstr;
-
- /* Error conditions, per POSIX */
- if (name == NULL || name[0] == '\0' || strchr(name, '=') != NULL)
- {
- errno = EINVAL;
- return -1;
- }
-
- if (getenv(name) == NULL)
- return 0; /* no work */
-
- /*
- * The technique embodied here works if libc follows the Single Unix Spec
- * and actually uses the storage passed to putenv() to hold the environ
- * entry. When we clobber the entry in the second step we are ensuring
- * that we zap the actual environ member. However, there are some libc
- * implementations (notably recent BSDs) that do not obey SUS but copy the
- * presented string. This method fails on such platforms. Hopefully all
- * such platforms have unsetenv() and thus won't be using this hack. See:
- * http://www.greenend.org.uk/rjk/2008/putenv.html
- *
- * Note that repeatedly setting and unsetting a var using this code will
- * leak memory.
- */
-
- envstr = (char *) malloc(strlen(name) + 2);
- if (!envstr) /* not much we can do if no memory */
- return -1;
-
- /* Override the existing setting by forcibly defining the var */
- sprintf(envstr, "%s=", name);
- if (putenv(envstr))
- return -1;
-
- /* Now we can clobber the variable definition this way: */
- strcpy(envstr, "=");
-
- /*
- * This last putenv cleans up if we have multiple zero-length names as a
- * result of unsetting multiple things.
- */
- return putenv(envstr);
-}