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 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