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!

Reply via email to