44 lines
605 B
C
44 lines
605 B
C
getpw(uid, buf)
|
|
int uid;
|
|
char buf[];
|
|
{
|
|
auto pbuf[259];
|
|
static pwf;
|
|
register n, c;
|
|
register char *bp;
|
|
|
|
if(pwf == 0)
|
|
pwf = open("/etc/passwd", 0);
|
|
if(pwf < 0)
|
|
return(1);
|
|
seek(pwf, 0, 0);
|
|
pbuf[0] = pwf;
|
|
pbuf[1] = 0;
|
|
pbuf[2] = 0;
|
|
uid =& 0377;
|
|
|
|
for (;;) {
|
|
bp = buf;
|
|
while((c=getc(pbuf)) != '\n') {
|
|
if(c <= 0)
|
|
return(1);
|
|
*bp++ = c;
|
|
}
|
|
*bp++ = '\0';
|
|
bp = buf;
|
|
n = 3;
|
|
while(--n)
|
|
while((c = *bp++) != ':')
|
|
if(c == '\n')
|
|
return(1);
|
|
while((c = *bp++) != ':') {
|
|
if(c<'0' || c>'9')
|
|
continue;
|
|
n = n*10+c-'0';
|
|
}
|
|
if(n == uid)
|
|
return(0);
|
|
}
|
|
return(1);
|
|
}
|