1 #include "pwf.h" 2 #include <pthread.h> 3 fgetspent(FILE * f)4struct spwd *fgetspent(FILE *f) 5 { 6 static char *line; 7 static struct spwd sp; 8 size_t size = 0; 9 struct spwd *res = 0; 10 int cs; 11 pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); 12 if (getline(&line, &size, f) >= 0 && __parsespent(line, &sp) >= 0) res = &sp; 13 pthread_setcancelstate(cs, 0); 14 return res; 15 } 16