1*c9945492SAndroid Build Coastguard Worker #define _GNU_SOURCE 2*c9945492SAndroid Build Coastguard Worker #include "stdio_impl.h" 3*c9945492SAndroid Build Coastguard Worker #include <string.h> 4*c9945492SAndroid Build Coastguard Worker fgetln(FILE * f,size_t * plen)5*c9945492SAndroid Build Coastguard Workerchar *fgetln(FILE *f, size_t *plen) 6*c9945492SAndroid Build Coastguard Worker { 7*c9945492SAndroid Build Coastguard Worker char *ret = 0, *z; 8*c9945492SAndroid Build Coastguard Worker ssize_t l; 9*c9945492SAndroid Build Coastguard Worker FLOCK(f); 10*c9945492SAndroid Build Coastguard Worker ungetc(getc_unlocked(f), f); 11*c9945492SAndroid Build Coastguard Worker if (f->rend && (z=memchr(f->rpos, '\n', f->rend - f->rpos))) { 12*c9945492SAndroid Build Coastguard Worker ret = (char *)f->rpos; 13*c9945492SAndroid Build Coastguard Worker *plen = ++z - ret; 14*c9945492SAndroid Build Coastguard Worker f->rpos = (void *)z; 15*c9945492SAndroid Build Coastguard Worker } else if ((l = getline(&f->getln_buf, (size_t[]){0}, f)) > 0) { 16*c9945492SAndroid Build Coastguard Worker *plen = l; 17*c9945492SAndroid Build Coastguard Worker ret = f->getln_buf; 18*c9945492SAndroid Build Coastguard Worker } 19*c9945492SAndroid Build Coastguard Worker FUNLOCK(f); 20*c9945492SAndroid Build Coastguard Worker return ret; 21*c9945492SAndroid Build Coastguard Worker } 22