1*30488Slepreau static char Sccsid[] = "@(#)userdir.c	1.2	02/15/87";
230482Slepreau /*
330482Slepreau 	Gets user's login directory.
430482Slepreau 	The argument must be an integer.
530482Slepreau 	Note the assumption about position of directory field in
630482Slepreau 	password file (no group id in password file).
730482Slepreau 	Returns pointer to login directory on success,
830482Slepreau 	0 on failure.
930482Slepreau         Remembers user ID and login directory for subsequent calls.
1030482Slepreau */
1130482Slepreau 
userdir(uid)1230482Slepreau userdir(uid)
1330482Slepreau register int uid;
1430482Slepreau {
1530482Slepreau 	char pw[200];
1630482Slepreau 	static int ouid;
1730482Slepreau 	static char ldir[33];
1830482Slepreau 	register int i;
1930482Slepreau 	register char *cp;
2030482Slepreau 
2130482Slepreau 	if (ouid!=uid || ouid==0) {
2230482Slepreau 		if (getpw(uid,pw))
2330482Slepreau 			return(0);
2430482Slepreau 		cp = pw;
2530482Slepreau 		while (*cp++ != ':') ; /* login name */
2630482Slepreau 		while (*cp++ != ':') ; /* passwd */
2730482Slepreau 		while (*cp++ != ':') ; /* user ID */
2830482Slepreau 		while (*cp++ != ':') ; /* comment */
2930482Slepreau 		for (i=0; i<32; i++) {
3030482Slepreau 			if ((ldir[i] = *cp)=='\0' || *cp==':') break;
3130482Slepreau 			cp++;
3230482Slepreau 		}
3330482Slepreau 		ldir[i] = '\0';
3430482Slepreau 	}
3530482Slepreau 	return(ldir);
3630482Slepreau }
37