1*c9945492SAndroid Build Coastguard Worker #include "stdio_impl.h" 2*c9945492SAndroid Build Coastguard Worker #include <wchar.h> 3*c9945492SAndroid Build Coastguard Worker 4*c9945492SAndroid Build Coastguard Worker wint_t __fgetwc_unlocked(FILE *); 5*c9945492SAndroid Build Coastguard Worker fgetws(wchar_t * restrict s,int n,FILE * restrict f)6*c9945492SAndroid Build Coastguard Workerwchar_t *fgetws(wchar_t *restrict s, int n, FILE *restrict f) 7*c9945492SAndroid Build Coastguard Worker { 8*c9945492SAndroid Build Coastguard Worker wchar_t *p = s; 9*c9945492SAndroid Build Coastguard Worker 10*c9945492SAndroid Build Coastguard Worker if (!n--) return s; 11*c9945492SAndroid Build Coastguard Worker 12*c9945492SAndroid Build Coastguard Worker FLOCK(f); 13*c9945492SAndroid Build Coastguard Worker 14*c9945492SAndroid Build Coastguard Worker for (; n; n--) { 15*c9945492SAndroid Build Coastguard Worker wint_t c = __fgetwc_unlocked(f); 16*c9945492SAndroid Build Coastguard Worker if (c == WEOF) break; 17*c9945492SAndroid Build Coastguard Worker *p++ = c; 18*c9945492SAndroid Build Coastguard Worker if (c == '\n') break; 19*c9945492SAndroid Build Coastguard Worker } 20*c9945492SAndroid Build Coastguard Worker *p = 0; 21*c9945492SAndroid Build Coastguard Worker if (ferror(f)) p = s; 22*c9945492SAndroid Build Coastguard Worker 23*c9945492SAndroid Build Coastguard Worker FUNLOCK(f); 24*c9945492SAndroid Build Coastguard Worker 25*c9945492SAndroid Build Coastguard Worker return (p == s) ? NULL : s; 26*c9945492SAndroid Build Coastguard Worker } 27*c9945492SAndroid Build Coastguard Worker 28*c9945492SAndroid Build Coastguard Worker weak_alias(fgetws, fgetws_unlocked); 29