|
|
1.1 root 1: /*
2: * getlog() -- paranoid version of getlogin.
3: * Unnecessary but harmless in V9; may be essential in Sys V
4: * with botched layers implementations
5: *
6: * Try getlogin().
7: * If that fails, look in the password file.
8: * if that fails, give up.
9: */
10:
11: #include <pwd.h>
12:
13: extern int getuid();
14: extern char *getlogin(), *getenv();
15:
16: #define NULL 0
17:
18: char *
19: getlog()
20: {
21: char *p;
22: struct passwd *pw;
23:
24: if ((p = getlogin()) != NULL)
25: return p;
26:
27: /* If LOGNAME is set, and it matches getuid(), use it */
28: p = getenv ("LOGNAME");
29: if (p != NULL && *p != '\0') {
30: pw = getpwnam(p);
31: if (pw != NULL && pw->pw_uid == getuid())
32: return p;
33: }
34:
35: /* Try to get the password file entry for getuid() */
36: if ((pw = getpwuid(getuid())) != NULL)
37: return pw->pw_name;
38:
39: /* Give up */
40: return NULL;
41: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.