Index: fusl/src/stdio/fgetws.c |
diff --git a/fusl/src/stdio/fgetws.c b/fusl/src/stdio/fgetws.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..195cb4355a14b10b05b0b50cf293456b5b7b4f75 |
--- /dev/null |
+++ b/fusl/src/stdio/fgetws.c |
@@ -0,0 +1,28 @@ |
+#include "stdio_impl.h" |
+#include <wchar.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); |