1 /* 2 * Some systems do not have setenv(). This one is modeled after 4.4 BSD, but 3 * is implemented in terms of portable primitives only: getenv(), putenv() 4 * and malloc(). It should therefore be safe to use on every UNIX system. 5 * 6 * If clobber == 0, do not overwrite an existing variable. 7 * 8 * Returns nonzero if memory allocation fails. 9 * 10 * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands. 11 */ 12 13 #ifndef lint 14 static char sccsid[] = "@(#) setenv.c 1.1 93/03/07 22:47:58"; 15 #endif 16 17 /* setenv - update or insert environment (name,value) pair */ 18 19 int setenv(char *name, char *value, int clobber) 20 { 21 char *malloc(); 22 char *getenv(); 23 char *cp; 24 25 if (clobber == 0 && getenv(name) != 0) 26 return (0); 27 if ((cp = malloc(strlen(name) + strlen(value) + 2)) == 0) 28 return (1); 29 sprintf(cp, "%s=%s", name, value); 30 return (putenv(cp)); 31 } 32