Add os_unsetenv()
authorHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>
Wed, 23 Mar 2016 20:19:56 +0000 (21:19 +0100)
committerHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>
Wed, 23 Mar 2016 20:51:55 +0000 (21:51 +0100)
BSDI: void unsetenv(const char*)
Other: int unsetenv(const char*)

src/OS/os.c-BSDI [new file with mode: 0644]
src/OS/os.h-BSDI
src/src/environment.c
src/src/os.c
src/src/osfunctions.h
src/src/tls.c

diff --git a/src/OS/os.c-BSDI b/src/OS/os.c-BSDI
new file mode 100644 (file)
index 0000000..43e5bb1
--- /dev/null
@@ -0,0 +1,19 @@
+/*************************************************
+*     Exim - an Internet mail transport agent    *
+*************************************************/
+
+/* Copyright (c) 2016 Heiko Schlittermann <hs@schlittermann.de> */
+/* See the file NOTICE for conditions of use and distribution. */
+
+/* BSDI-specific code. This is concatenated onto the generic
+src/os.c file. */
+
+#ifndef OS_UNSETENV
+#define OS_UNSETENV
+
+int
+os_unsetenv(const char *name)
+{
+    unsetenv(name);
+    return 0;
+}
index 6e16722fde613c4537602b69bbc95df29c1c6183..a1705ec95be8e03a7104948ff7a5b20a357da0dc 100644 (file)
@@ -5,6 +5,7 @@
 #define HAVE_MMAP
 #define HAVE_SYS_MOUNT_H
 #define SIOCGIFCONF_GIVES_ADDR
+#define OS_UNSETENV
 
 typedef struct flock flock_t;
 
index 8542dc0d265970c3509352b3f86e95e192534f44..b768a0fd6e158a383e2eb489a67cd16c1b280cd8 100644 (file)
@@ -51,7 +51,7 @@ else if (Ustrcmp(keep_environment, "*") != 0)
       uschar *name = string_copyn(*p, eqp - *p);
       if (OK != match_isinlist(name, CUSS &keep_environment,
           0, NULL, NULL, MCL_NOEXPAND, FALSE, NULL))
-        if (unsetenv(CS name) < 0) return FALSE;
+        if (os_unsetenv(name) < 0) return FALSE;
         else p = USS environ; /* RESTART from the beginning */
       else p++;
       store_reset(name);
index ee754f9f2689c44461aa56dad2f16cf72c05595f..d9ca589ee308f31c03e70073eb940f1b3fea8a56 100644 (file)
@@ -833,9 +833,25 @@ os_get_dns_resolver_res(void)
 
 #endif /* OS_GET_DNS_RESOLVER_RES */
 
-
 /* ----------------------------------------------------------------------- */
 
+/***********************************************************
+*                 unsetenv()                               *
+***********************************************************/
+
+/* Most modern systems define int unsetenv(const char*),
+* some don't. */
+
+#if !defined(OS_UNSETENV)
+int
+os_unsetenv(const char *name)
+{
+  return unsetenv(name);
+}
+#endif
+
+
+/* ----------------------------------------------------------------------- */
 
 
 
index 5527127446fc6333fdc1498d0971b7a0d253dce4..3d1914acb74a994f56ae6b5be9b11b139970add9 100644 (file)
@@ -32,5 +32,8 @@ extern const char   *os_strexit(int);     /* char to match os_strsignal */
 #ifndef os_strsignal
 extern const char   *os_strsignal(int);   /* char to match strsignal in some OS */
 #endif
+#ifndef os_unsetenv
+extern int           os_unsetenv(const char *);
+#endif
 
 /* End of osfunctions.h */
index 0406a10f98787f72caabb8a54983141ad43e2dbc..858caa2276facd5bd08bde7027b03d4b4868db43 100644 (file)
@@ -89,7 +89,7 @@ to_tz(uschar * tz)
 {
 uschar * old = US getenv("TZ");
 (void) setenv("TZ", CCS tz, 1);
-tzset(); 
+tzset();
 return old;
 }
 
@@ -99,8 +99,8 @@ restore_tz(uschar * tz)
 if (tz)
   (void) setenv("TZ", CCS tz, 1);
 else
-  (void) unsetenv("TZ");
-tzset(); 
+  (void) os_unsetenv("TZ");
+tzset();
 }
 
 /*************************************************