xref: /plan9-contrib/sys/src/ape/lib/ap/plan9/getlogin.c (revision 2d069fea74dfcc83c6858e715bf74862cb64720a)
13e12c5d1SDavid du Colombier #include <sys/types.h>
23e12c5d1SDavid du Colombier #include <sys/stat.h>
33e12c5d1SDavid du Colombier #include <fcntl.h>
43e12c5d1SDavid du Colombier #include <unistd.h>
53e12c5d1SDavid du Colombier #include <sys/limits.h>
63e12c5d1SDavid du Colombier 
73e12c5d1SDavid du Colombier char *
getlogin_r(char * buf,int len)8*2d069feaSDavid du Colombier getlogin_r(char *buf, int len)
93e12c5d1SDavid du Colombier {
103e12c5d1SDavid du Colombier 	int f, n;
113e12c5d1SDavid du Colombier 
123e12c5d1SDavid du Colombier 	f = open("/dev/user", O_RDONLY);
133e12c5d1SDavid du Colombier 	if(f < 0)
143e12c5d1SDavid du Colombier 		return 0;
15*2d069feaSDavid du Colombier 	n = read(f, buf, len);
16*2d069feaSDavid du Colombier 	buf[len-1] = 0;
173e12c5d1SDavid du Colombier 	close(f);
183e12c5d1SDavid du Colombier 	return (n>=0)? buf : 0;
193e12c5d1SDavid du Colombier }
20*2d069feaSDavid du Colombier 
21*2d069feaSDavid du Colombier char *
getlogin(void)22*2d069feaSDavid du Colombier getlogin(void)
23*2d069feaSDavid du Colombier {
24*2d069feaSDavid du Colombier 	static char buf[NAME_MAX+1];
25*2d069feaSDavid du Colombier 
26*2d069feaSDavid du Colombier 	return getlogin_r(buf, sizeof buf);
27*2d069feaSDavid du Colombier }
28