From d89f5d025fe889f6a5df5b21a154874aaa53d093 Mon Sep 17 00:00:00 2001 From: Pietro Cerutti Date: Mon, 23 Jan 2017 14:45:25 +0000 Subject: [PATCH] Remove in-house implementation of setenv Issue: #325 --- configure.ac | 2 +- protos.h | 4 ---- setenv.c | 45 --------------------------------------------- 3 files changed, 1 insertion(+), 50 deletions(-) delete mode 100644 setenv.c diff --git a/configure.ac b/configure.ac index 849e41a9d..7ca0d80eb 100644 --- a/configure.ac +++ b/configure.ac @@ -492,7 +492,7 @@ AC_CHECK_TYPE(ssize_t, int) AC_CHECK_FUNCS(fgetpos memmove setegid srand48 strerror) -AC_REPLACE_FUNCS([setenv strcasecmp strsep strtok_r wcscasecmp]) +AC_REPLACE_FUNCS([strsep strtok_r wcscasecmp]) AC_REPLACE_FUNCS([strcasestr mkdtemp]) AC_CHECK_FUNC(getopt) diff --git a/protos.h b/protos.h index b318c802e..39186432f 100644 --- a/protos.h +++ b/protos.h @@ -560,10 +560,6 @@ int ci_send_message (int, HEADER *, char *, CONTEXT *, HEADER *); /* prototypes for compatibility functions */ -#ifndef HAVE_SETENV -int setenv (const char *, const char *, int); -#endif - #ifndef HAVE_STRSEP char *strsep (char **, const char *); #endif diff --git a/setenv.c b/setenv.c deleted file mode 100644 index 36fe7def4..000000000 --- a/setenv.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Replacement for a missing setenv. -** -** Written by Russ Allbery -** This work is hereby placed in the public domain by its author. -** -** Provides the same functionality as the standard library routine setenv -** for those platforms that don't have it. -*/ - -#include "config.h" - -#include -#include - -int -setenv(const char *name, const char *value, int overwrite) -{ - char *envstring; - - if (!overwrite && getenv(name) != NULL) - return 0; - - /* Allocate memory for the environment string. We intentionally don't - use concat here, or the xmalloc family of allocation routines, since - the intention is to provide a replacement for the standard library - function which sets errno and returns in the event of a memory - allocation failure. */ - envstring = malloc(strlen(name) + 1 + strlen(value) + 1); /* __MEM_CHECKED__ */ - if (envstring == NULL) - return -1; - - /* Build the environment string and add it to the environment using - putenv. Systems without putenv lose, but XPG4 requires it. */ - strcpy(envstring, name); /* __STRCPY_CHECKED__ */ - strcat(envstring, "="); /* __STRCAT_CHECKED__ */ - strcat(envstring, value); /* __STRCAT_CHECKED__ */ - return putenv(envstring); - - /* Note that the memory allocated is not freed. This is intentional; - many implementations of putenv assume that the string passed to - putenv will never be freed and don't make a copy of it. Repeated use - of this function will therefore leak memory, since most - implementations of putenv also don't free strings removed from the - environment (due to being overwritten). */ -} -- 2.40.0