Temporary fix, it only rebuilds environ on successful creation
of the new|modified variable:
acme# diff -c /sys/src/ape/lib/bsd/putenv.c putenv.c
/sys/src/ape/lib/bsd/putenv.c:2,8 - putenv.c:2,12
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
+ #include <stdlib.h>
+ extern char **environ;
+ extern void _envsetup(void);
+
int
putenv(char *s)
{
/sys/src/ape/lib/bsd/putenv.c:26,31 - putenv.c:30,38
if(write(f, value, n) != n)
return -1;
close(f);
+ if(environ != NULL)
+ free(environ);
+ _envsetup();
return 0;
} else
return -1;