xref: /plan9/sys/src/libc/9sys/putenv.c (revision 80ee5cbfe36716af62da8896207e9763b8e3d760)
13e12c5d1SDavid du Colombier #include <u.h>
23e12c5d1SDavid du Colombier #include <libc.h>
33e12c5d1SDavid du Colombier 
43e12c5d1SDavid du Colombier int
putenv(char * name,char * val)53e12c5d1SDavid du Colombier putenv(char *name, char *val)
63e12c5d1SDavid du Colombier {
73e12c5d1SDavid du Colombier 	int f;
8*80ee5cbfSDavid du Colombier 	char ename[100];
93e12c5d1SDavid du Colombier 	long s;
103e12c5d1SDavid du Colombier 
11*80ee5cbfSDavid du Colombier 	if(strchr(name, '/') != nil)
12*80ee5cbfSDavid du Colombier 		return -1;
13*80ee5cbfSDavid du Colombier 	snprint(ename, sizeof ename, "/env/%s", name);
14*80ee5cbfSDavid du Colombier 	if(strcmp(ename+5, name) != 0)
15*80ee5cbfSDavid du Colombier 		return -1;
163e12c5d1SDavid du Colombier 	f = create(ename, OWRITE, 0664);
173e12c5d1SDavid du Colombier 	if(f < 0)
183e12c5d1SDavid du Colombier 		return -1;
193e12c5d1SDavid du Colombier 	s = strlen(val);
203e12c5d1SDavid du Colombier 	if(write(f, val, s) != s){
213e12c5d1SDavid du Colombier 		close(f);
223e12c5d1SDavid du Colombier 		return -1;
233e12c5d1SDavid du Colombier 	}
243e12c5d1SDavid du Colombier 	close(f);
253e12c5d1SDavid du Colombier 	return 0;
263e12c5d1SDavid du Colombier }
27