|
|
1.1 ! root 1: #if defined(LIBC_SCCS) && !defined(lint) ! 2: static char sccsid[] = "@(#)getlogin.c 5.3 (Berkeley) 5/9/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: if (ubuf.ut_name[0] == '\0') ! 27: return (0); ! 28: ubuf.ut_name[sizeof (ubuf.ut_name)] = ' '; ! 29: for (cp = ubuf.ut_name; *cp++ != ' '; ) ! 30: ; ! 31: *--cp = '\0'; ! 32: return (ubuf.ut_name); ! 33: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.