| /* |
| * Some systems do not have setenv(). This one is modeled after 4.4 BSD, but |
| * is implemented in terms of portable primitives only: getenv(), putenv() |
| * and malloc(). It should therefore be safe to use on every UNIX system. |
| * |
| * If clobber == 0, do not overwrite an existing variable. |
| * |
| * Returns nonzero if memory allocation fails. |
| * |
| * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands. |
| */ |
| |
| #ifndef lint |
| static char sccsid[] = "@(#) setenv.c 1.1 93/03/07 22:47:58"; |
| #endif |
| |
| /* setenv - update or insert environment (name,value) pair */ |
| |
| int setenv(name, value, clobber) |
| char *name; |
| char *value; |
| int clobber; |
| { |
| char *malloc(); |
| char *getenv(); |
| char *cp; |
| |
| if (clobber == 0 && getenv(name) != 0) |
| return (0); |
| if ((cp = malloc(strlen(name) + strlen(value) + 2)) == 0) |
| return (1); |
| sprintf(cp, "%s=%s", name, value); |
| return (putenv(cp)); |
| } |