> On Tue, Feb 10, 2015 at 10:07:52PM +0000, Connor Lane Smith wrote: >> 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); >> } > > Very nice!
+1. Regards,