1*2018Swnj /* @(#)getpw.c 4.1 (Berkeley) 12/21/80 */ 2*2018Swnj #include <stdio.h> 3*2018Swnj 4*2018Swnj getpw(uid, buf) 5*2018Swnj int uid; 6*2018Swnj char buf[]; 7*2018Swnj { 8*2018Swnj static FILE *pwf; 9*2018Swnj register n, c; 10*2018Swnj register char *bp; 11*2018Swnj 12*2018Swnj if(pwf == 0) 13*2018Swnj pwf = fopen("/etc/passwd", "r"); 14*2018Swnj if(pwf == NULL) 15*2018Swnj return(1); 16*2018Swnj rewind(pwf); 17*2018Swnj 18*2018Swnj for (;;) { 19*2018Swnj bp = buf; 20*2018Swnj while((c=getc(pwf)) != '\n') { 21*2018Swnj if(c == EOF) 22*2018Swnj return(1); 23*2018Swnj *bp++ = c; 24*2018Swnj } 25*2018Swnj *bp++ = '\0'; 26*2018Swnj bp = buf; 27*2018Swnj n = 3; 28*2018Swnj while(--n) 29*2018Swnj while((c = *bp++) != ':') 30*2018Swnj if(c == '\n') 31*2018Swnj return(1); 32*2018Swnj while((c = *bp++) != ':') { 33*2018Swnj if(c<'0' || c>'9') 34*2018Swnj continue; 35*2018Swnj n = n*10+c-'0'; 36*2018Swnj } 37*2018Swnj if(n == uid) 38*2018Swnj return(0); 39*2018Swnj } 40*2018Swnj } 41