1*30484Slepreau static char Sccsid[] "@(#)username	2.1";
2*30484Slepreau /*
3*30484Slepreau 	Gets user's login name.
4*30484Slepreau 	Note that the argument must be an integer.
5*30484Slepreau 	Returns pointer to login name on success,
6*30484Slepreau 	pointer to string representation of used ID on failure.
7*30484Slepreau 
8*30484Slepreau 	Remembers user ID and login name for subsequent calls.
9*30484Slepreau */
10*30484Slepreau 
11*30484Slepreau username(uid)
12*30484Slepreau register int uid;
13*30484Slepreau {
14*30484Slepreau 	char pw[200];
15*30484Slepreau 	static int ouid;
16*30484Slepreau 	static char lnam[9], *lptr;
17*30484Slepreau 	register int i;
18*30484Slepreau 
19*30484Slepreau 	if (ouid!=uid || ouid==0) {
20*30484Slepreau 		if (getpw(uid,pw))
21*30484Slepreau 			sprintf(lnam,"%d",uid);
22*30484Slepreau 		else {
23*30484Slepreau 			for (i=0; i<8; i++)
24*30484Slepreau 				if ((lnam[i] = pw[i])==':') break;
25*30484Slepreau 			lnam[i] = '\0';
26*30484Slepreau 		}
27*30484Slepreau 		lptr = lnam;
28*30484Slepreau 		ouid = uid;
29*30484Slepreau 	}
30*30484Slepreau 	return(lptr);
31*30484Slepreau }
32