1 static char Sccsid[] = "@(#)userdir.c 1.2 02/15/87";
2 /*
3 Gets user's login directory.
4 The argument must be an integer.
5 Note the assumption about position of directory field in
6 password file (no group id in password file).
7 Returns pointer to login directory on success,
8 0 on failure.
9 Remembers user ID and login directory for subsequent calls.
10 */
11
userdir(uid)12 userdir(uid)
13 register int uid;
14 {
15 char pw[200];
16 static int ouid;
17 static char ldir[33];
18 register int i;
19 register char *cp;
20
21 if (ouid!=uid || ouid==0) {
22 if (getpw(uid,pw))
23 return(0);
24 cp = pw;
25 while (*cp++ != ':') ; /* login name */
26 while (*cp++ != ':') ; /* passwd */
27 while (*cp++ != ':') ; /* user ID */
28 while (*cp++ != ':') ; /* comment */
29 for (i=0; i<32; i++) {
30 if ((ldir[i] = *cp)=='\0' || *cp==':') break;
31 cp++;
32 }
33 ldir[i] = '\0';
34 }
35 return(ldir);
36 }
37