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