chiark / gitweb /
setenv emulation using putenv works properly (previously you would get wrong environm...
authorian <ian>
Wed, 19 May 1999 21:03:33 +0000 (21:03 +0000)
committerian <ian>
Wed, 19 May 1999 21:03:33 +0000 (21:03 +0000)
debian/changelog
lib.c

index 8f11832..e2f0b35 100644 (file)
@@ -1,3 +1,10 @@
+userv (0.63) unstable; urgency=low
+
+  * setenv emulation using putenv works properly (previously you would get
+    wrong environment variable settings).  (Thanks to Ben Harris.)
+
+ --
+
 userv (0.62) unstable; urgency=low
 
   * New builtin service `help' lists builtin services.
 userv (0.62) unstable; urgency=low
 
   * New builtin service `help' lists builtin services.
diff --git a/lib.c b/lib.c
index bd40ee0..22c8cd1 100644 (file)
--- a/lib.c
+++ b/lib.c
@@ -116,14 +116,10 @@ void snytprintfcat(char *buffer, size_t size, const char *fmt, ...) {
 
 #ifndef HAVE_SETENV
 int setenv(const char *name, const char *value, int overwrite) {
 
 #ifndef HAVE_SETENV
 int setenv(const char *name, const char *value, int overwrite) {
-  static char *buffer= 0;
-  static int avail= 0;
-
-  int r;
+  char *buffer= 0;
   
   assert(overwrite==1);
   
   assert(overwrite==1);
-  r= makeroom(&buffer,&avail,strlen(name)+strlen(value)+2);
-  if (r) { errno= EINVAL; return -1; }
+  buffer= xmalloc(strlen(name)+strlen(value)+2);
 
   sprintf(buffer,"%s=%s",name,value);
   return putenv(buffer);
 
   sprintf(buffer,"%s=%s",name,value);
   return putenv(buffer);