xref: /csrg-svn/lib/libcompat/4.1/getpw.c (revision 61240)
148368Sbostic /*-
2*61240Sbostic  * Copyright (c) 1980, 1993
3*61240Sbostic  *	The Regents of the University of California.  All rights reserved.
448368Sbostic  *
548368Sbostic  * %sccs.include.proprietary.c%
621327Sdist  */
721327Sdist 
826517Sdonn #if defined(LIBC_SCCS) && !defined(lint)
9*61240Sbostic static char sccsid[] = "@(#)getpw.c	8.1 (Berkeley) 06/04/93";
1048368Sbostic #endif /* LIBC_SCCS and not lint */
1121327Sdist 
122018Swnj #include	<stdio.h>
132018Swnj 
getpw(uid,buf)142018Swnj getpw(uid, buf)
152018Swnj int uid;
162018Swnj char buf[];
172018Swnj {
182018Swnj 	static FILE *pwf;
192018Swnj 	register n, c;
202018Swnj 	register char *bp;
212018Swnj 
222018Swnj 	if(pwf == 0)
232018Swnj 		pwf = fopen("/etc/passwd", "r");
242018Swnj 	if(pwf == NULL)
252018Swnj 		return(1);
262018Swnj 	rewind(pwf);
272018Swnj 
282018Swnj 	for (;;) {
292018Swnj 		bp = buf;
302018Swnj 		while((c=getc(pwf)) != '\n') {
312018Swnj 			if(c == EOF)
322018Swnj 				return(1);
332018Swnj 			*bp++ = c;
342018Swnj 		}
352018Swnj 		*bp++ = '\0';
362018Swnj 		bp = buf;
372018Swnj 		n = 3;
382018Swnj 		while(--n)
392018Swnj 		while((c = *bp++) != ':')
402018Swnj 			if(c == '\n')
412018Swnj 				return(1);
422018Swnj 		while((c = *bp++) != ':') {
432018Swnj 			if(c<'0' || c>'9')
442018Swnj 				continue;
452018Swnj 			n = n*10+c-'0';
462018Swnj 		}
472018Swnj 		if(n == uid)
482018Swnj 			return(0);
492018Swnj 	}
502018Swnj }
51