46 lines
616 B
C
46 lines
616 B
C
#include <stdio.h>
|
|
#include <ctype.h>
|
|
|
|
extern void rewind();
|
|
extern FILE *fopen();
|
|
|
|
static FILE *pwf;
|
|
|
|
int
|
|
getpw(uid, buf)
|
|
int uid;
|
|
char buf[];
|
|
{
|
|
register n, c;
|
|
register char *bp;
|
|
|
|
if(pwf == 0)
|
|
pwf = fopen("/etc/passwd", "r");
|
|
if(pwf == NULL)
|
|
return(1);
|
|
rewind(pwf);
|
|
|
|
while(1) {
|
|
bp = buf;
|
|
while((c=getc(pwf)) != '\n') {
|
|
if(c == EOF)
|
|
return(1);
|
|
*bp++ = c;
|
|
}
|
|
*bp = '\0';
|
|
bp = buf;
|
|
n = 3;
|
|
while(--n)
|
|
while((c = *bp++) != ':')
|
|
if(c == '\n')
|
|
return(1);
|
|
while((c = *bp++) != ':')
|
|
if(isdigit(c))
|
|
n = n*10+c-'0';
|
|
else
|
|
continue;
|
|
if(n == uid)
|
|
return(0);
|
|
}
|
|
}
|