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!