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