#include <wchar.h> | |
#include "stdio_impl.h" | |
wint_t __fgetwc_unlocked(FILE*); | |
wchar_t* fgetws(wchar_t* restrict s, int n, FILE* restrict f) { | |
wchar_t* p = s; | |
if (!n--) | |
return s; | |
FLOCK(f); | |
for (; n; n--) { | |
wint_t c = __fgetwc_unlocked(f); | |
if (c == WEOF) | |
break; | |
*p++ = c; | |
if (c == '\n') | |
break; | |
} | |
*p = 0; | |
if (ferror(f)) | |
p = s; | |
FUNLOCK(f); | |
return (p == s) ? NULL : s; | |
} | |
weak_alias(fgetws, fgetws_unlocked); |