#include "internal.h" rune io·getr(io·Header *io) { int c, i; rune r; char buf[UTFmax]; c = io·getc(io); if(utf8·onebyte(c)){ io->runesz = 1; return c; } buf[0] = c; for(i=1;;){ if((c = io·getc(io))<0) return c; buf[i++] = c; if(utf8·fullrune(buf, i)){ io->runesz = utf8·decode(buf, &r); while(i-- > io->runesz) io·ungetc(io); return r; } } }