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)1230482Slepreauuserdir(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