xref: /csrg-svn/lib/libc/gen/getlogin.c (revision 26558)
1 #if defined(LIBC_SCCS) && !defined(lint)
2 static char sccsid[] = "@(#)getlogin.c	5.2 (Berkeley) 03/09/86";
3 #endif LIBC_SCCS and not lint
4 
5 #include <utmp.h>
6 
7 static	char UTMP[]	= "/etc/utmp";
8 static	struct utmp ubuf;
9 
10 char *
11 getlogin()
12 {
13 	register int me, uf;
14 	register char *cp;
15 
16 	if (!(me = ttyslot()))
17 		return(0);
18 	if ((uf = open(UTMP, 0)) < 0)
19 		return (0);
20 	lseek (uf, (long)(me*sizeof(ubuf)), 0);
21 	if (read(uf, (char *)&ubuf, sizeof (ubuf)) != sizeof (ubuf)) {
22 		close(uf);
23 		return (0);
24 	}
25 	close(uf);
26 	ubuf.ut_name[sizeof (ubuf.ut_name)] = ' ';
27 	for (cp = ubuf.ut_name; *cp++ != ' '; )
28 		;
29 	*--cp = '\0';
30 	return (ubuf.ut_name);
31 }
32