Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
 
4
char*
5
getenv(char *name)
6
{
7
	int r, f;
8
	long s;
9
	char *ans;
10
	char *p, *ep, ename[100];
11
 
12
	if(strchr(name, '/') != nil)
13
		return nil;
14
	snprint(ename, sizeof ename, "/env/%s", name);
15
	if(strcmp(ename+5, name) != 0)
16
		return nil;
17
	f = open(ename, OREAD);
18
	if(f < 0)
19
		return 0;
20
	s = seek(f, 0, 2);
21
	ans = malloc(s+1);
22
	if(ans) {
23
		setmalloctag(ans, getcallerpc(&name));
24
		seek(f, 0, 0);
25
		r = read(f, ans, s);
26
		if(r >= 0) {
27
			ep = ans + s - 1;
28
			for(p = ans; p < ep; p++)
29
				if(*p == '\0')
30
					*p = ' ';
31
			ans[s] = '\0';
32
		}
33
	}
34
	close(f);
35
	return ans;
36
}