wint_t fgetwc(Sfio_t* f) { wchar_t c; STDIO_INT(f, "fgetwc", wint_t, (Sfio_t*), (f)) FWIDE(f, WEOF); return (sfread(f, &c, sizeof(c)) == sizeof(c)) ? c : WEOF; }
wchar_t* getws(wchar_t* s) { register wchar_t* p = s; register wchar_t* e = s + BUFSIZ - 1; register wint_t c; FWIDE(sfstdin, 0); while (p < e && (c = fgetwc(sfstdin)) != WEOF && (*p++ = c) != '\n'); *p = 0; return s; }
wchar_t* fgetws(wchar_t* s, int n, Sfio_t* f) { register wchar_t* p = s; register wchar_t* e = s + n - 1; register wint_t c; STDIO_PTR(f, "fgets", wchar_t*, (wchar_t*, int, Sfio_t*), (s, n, f)) FWIDE(f, 0); while (p < e && (c = fgetwc(f)) != WEOF && (*p++ = c) != '\n'); *p = 0; return s; }
wint_t ungetwc(wint_t c, Sfio_t* f) { register unsigned char* s = (unsigned char*)&c; register unsigned char* e = s + sizeof(c); STDIO_INT(f, "ungetwc", wint_t, (wint_t, Sfio_t*), (c, f)) FWIDE(f, WEOF); while (s < e) if (sfungetc(f, *s++) == EOF) return WEOF; return c; }