V5/usr/source/s4/getpw.c

Compare this file to the similar file:
Show the results in this format:

getpw(uid, buf)
int uid;
char buf[];
{
	auto pbuf[259];
	static pwf;
	register n, c;
	register char *bp;

	if(pwf == 0) {
		fopen("/etc/passwd", pbuf);
		pwf = pbuf[0];
	} else
		pbuf[0] = pwf;
	if(pwf < 0)
		return(1);
	seek(pwf, 0, 0);
	pbuf[1] = 0;
	pbuf[2] = 0;

	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);
}