xref: /csrg-svn/lib/libcompat/4.1/getpw.c (revision 26517)
121327Sdist /*
221327Sdist  * Copyright (c) 1980 Regents of the University of California.
321327Sdist  * All rights reserved.  The Berkeley software License Agreement
421327Sdist  * specifies the terms and conditions for redistribution.
521327Sdist  */
621327Sdist 
7*26517Sdonn #if defined(LIBC_SCCS) && !defined(lint)
8*26517Sdonn static char sccsid[] = "@(#)getpw.c	5.2 (Berkeley) 03/09/86";
9*26517Sdonn #endif LIBC_SCCS and not lint
1021327Sdist 
112018Swnj #include	<stdio.h>
122018Swnj 
132018Swnj getpw(uid, buf)
142018Swnj int uid;
152018Swnj char buf[];
162018Swnj {
172018Swnj 	static FILE *pwf;
182018Swnj 	register n, c;
192018Swnj 	register char *bp;
202018Swnj 
212018Swnj 	if(pwf == 0)
222018Swnj 		pwf = fopen("/etc/passwd", "r");
232018Swnj 	if(pwf == NULL)
242018Swnj 		return(1);
252018Swnj 	rewind(pwf);
262018Swnj 
272018Swnj 	for (;;) {
282018Swnj 		bp = buf;
292018Swnj 		while((c=getc(pwf)) != '\n') {
302018Swnj 			if(c == EOF)
312018Swnj 				return(1);
322018Swnj 			*bp++ = c;
332018Swnj 		}
342018Swnj 		*bp++ = '\0';
352018Swnj 		bp = buf;
362018Swnj 		n = 3;
372018Swnj 		while(--n)
382018Swnj 		while((c = *bp++) != ':')
392018Swnj 			if(c == '\n')
402018Swnj 				return(1);
412018Swnj 		while((c = *bp++) != ':') {
422018Swnj 			if(c<'0' || c>'9')
432018Swnj 				continue;
442018Swnj 			n = n*10+c-'0';
452018Swnj 		}
462018Swnj 		if(n == uid)
472018Swnj 			return(0);
482018Swnj 	}
492018Swnj }
50