4.3BSD-UWisc/src/lib/libc/gen/getlogin.c
#if defined(LIBC_RCS) && !defined(lint)
static char rcs_id[] =
"$Header: getlogin.c,v 1.3 86/09/08 14:43:07 tadl Exp $";
#endif
/*
* RCS info
* $Locker: $
*/
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)getlogin.c 5.3 (Berkeley) 5/9/86";
#endif LIBC_SCCS and not lint
#include <utmp.h>
static char UTMP[] = "/etc/utmp";
static struct utmp ubuf;
char *
getlogin()
{
register int me, uf;
register char *cp;
if (!(me = ttyslot()))
return(0);
if ((uf = open(UTMP, 0)) < 0)
return (0);
lseek (uf, (long)(me*sizeof(ubuf)), 0);
if (read(uf, (char *)&ubuf, sizeof (ubuf)) != sizeof (ubuf)) {
close(uf);
return (0);
}
close(uf);
if (ubuf.ut_name[0] == '\0')
return (0);
ubuf.ut_name[sizeof (ubuf.ut_name)] = ' ';
for (cp = ubuf.ut_name; *cp++ != ' '; )
;
*--cp = '\0';
return (ubuf.ut_name);
}