|
|
1.1 ! root 1: /* ! 2: * Coherent I/O Library. ! 3: * Get login name from the utmp file. ! 4: */ ! 5: ! 6: #include <stdio.h> ! 7: #include <utmp.h> ! 8: ! 9: char *ttyname(); ! 10: ! 11: char * ! 12: getlogin() ! 13: { ! 14: register struct utmp *up; ! 15: register int n; ! 16: register char *tname; ! 17: register int ufd; ! 18: char iobuf[BUFSIZ+1]; ! 19: static char uname[DIRSIZ]; ! 20: ! 21: if ((ufd = open("/etc/utmp", 0))>=0 ! 22: && (tname = ttyname(fileno(stderr)))!=NULL) { ! 23: tname += 5; /* Skip over "/dev/" */ ! 24: while ((n = read(ufd, iobuf, BUFSIZ)) > 0) ! 25: for (up = iobuf; up < &iobuf[n]; up++) ! 26: if (strncmp(up->ut_line, tname, 8) == 0) { ! 27: close(ufd); ! 28: strncpy(uname, up->ut_name, DIRSIZ); ! 29: return (uname); ! 30: } ! 31: close(ufd); ! 32: } ! 33: return (NULL); ! 34: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.