summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>1999-11-22 16:11:05 +1100
committerDamien Miller <djm@mindrot.org>1999-11-22 16:11:05 +1100
commitd770252d3a6dfe5e97d1a6846e2e5bfde92accc2 (patch)
treeae06bf36e1be1928026832da49c366a8b2d310ce
parentd71b12ee5b6b0283ce41ff2d9c8864c6aadc6bbe (diff)
- Added a setenv replacement for systems which lack it
-rw-r--r--ChangeLog1
-rw-r--r--configure.in2
-rw-r--r--helper.c21
-rw-r--r--helper.h4
4 files changed, 27 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index d7ea7b76..0f069dfd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -13,6 +13,7 @@
- Fix EGD problems (Thanks to Ben Taylor <bent@clark.net>)
- Retry /dev/urandom reads interrupted by signal (report from
Robert Hardy <rhardy@webcon.net>)
+ - Added a setenv replacement for systems which lack it
19991121
- OpenBSD CVS Changes:
diff --git a/configure.in b/configure.in
index 0678fa4c..a831b921 100644
--- a/configure.in
+++ b/configure.in
@@ -58,7 +58,7 @@ dnl Checks for header files.
AC_CHECK_HEADERS(pty.h endian.h paths.h lastlog.h shadow.h netgroup.h maillock.h sys/select.h sys/time.h)
dnl Checks for library functions.
-AC_CHECK_FUNCS(openpty strlcpy strlcat mkdtemp arc4random setproctitle setlogin)
+AC_CHECK_FUNCS(openpty strlcpy strlcat mkdtemp arc4random setproctitle setlogin setenv)
AC_CHECK_FUNC(login,
[AC_DEFINE(HAVE_LOGIN)],
diff --git a/helper.c b/helper.c
index 47e797b6..91a78b57 100644
--- a/helper.c
+++ b/helper.c
@@ -149,3 +149,24 @@ void setproctitle(const char *fmt, ...)
/* FIXME */
}
#endif /* !HAVE_SETPROCTITLE */
+
+#ifndef HAVE_SETENV
+int setenv(const char *name, const char *value, int overwrite)
+{
+ char *env_string;
+ int result;
+
+ /* Don't overwrite existing env. var if overwrite is 0 */
+ if (!overwrite && (getenv(name) != NULL))
+ return(0);
+
+ env_string = xmalloc(strlen(name) + strlen(value) + 2);
+ sprintf(env_string, "%s=%s", name, value);
+
+ result = putenv(env_string);
+
+ xfree(env_string);
+
+ return(result);
+}
+#endif /* !HAVE_SETENV */
diff --git a/helper.h b/helper.h
index 0e53fac4..68e0a853 100644
--- a/helper.h
+++ b/helper.h
@@ -47,4 +47,8 @@ void arc4random_stir(void);
void setproctitle(const char *fmt, ...);
#endif /* !HAVE_SETPROCTITLE */
+#ifndef HAVE_SETENV
+int setenv(const char *name, const char *value, int overwrite);
+#endif /* !HAVE_SETENV */
+
#endif /* _HELPER_H */