xref: /csrg-svn/lib/libc/gen/getlogin.c (revision 26558)
1*26558Sdonn #if defined(LIBC_SCCS) && !defined(lint)
2*26558Sdonn static char sccsid[] = "@(#)getlogin.c	5.2 (Berkeley) 03/09/86";
3*26558Sdonn #endif LIBC_SCCS and not lint
49193Ssam 
59109Ssam #include <utmp.h>
69109Ssam 
79193Ssam static	char UTMP[]	= "/etc/utmp";
89193Ssam static	struct utmp ubuf;
99109Ssam 
109109Ssam char *
119109Ssam getlogin()
129109Ssam {
139193Ssam 	register int me, uf;
149109Ssam 	register char *cp;
159109Ssam 
169193Ssam 	if (!(me = ttyslot()))
179109Ssam 		return(0);
189193Ssam 	if ((uf = open(UTMP, 0)) < 0)
199193Ssam 		return (0);
209193Ssam 	lseek (uf, (long)(me*sizeof(ubuf)), 0);
219193Ssam 	if (read(uf, (char *)&ubuf, sizeof (ubuf)) != sizeof (ubuf)) {
229193Ssam 		close(uf);
239193Ssam 		return (0);
249193Ssam 	}
259109Ssam 	close(uf);
269109Ssam 	ubuf.ut_name[sizeof (ubuf.ut_name)] = ' ';
279193Ssam 	for (cp = ubuf.ut_name; *cp++ != ' '; )
289109Ssam 		;
299109Ssam 	*--cp = '\0';
309193Ssam 	return (ubuf.ut_name);
319109Ssam }
32