/* See LICENSE file for copyright and license details. */ #include #include "utf.h" int utftorunestr(const char *s, Rune *p) { int i, n; for(i = 0; (n = chartorune(&p[i], s)), p[i] != 0; i++) s += n; return i; } int fgetrune(Rune *p, FILE *fp) { char buf[UTFmax]; int c, i = 0; do { if((c = fgetc(fp)) == EOF) break; buf[i++] = c; } while(!fullrune(buf, i)); if(i == 0) return EOF; return charntorune(p, buf, i); } int fputrune(const Rune *p, FILE *fp) { char buf[UTFmax]; return fwrite(buf, runetochar(buf, p), 1, fp); }