#include "internal.h" int utf8·runetobyte(byte* s, rune* r) { int i, j; rune c; c = *r; if(c <= Rune1) { s[0] = c; return 1; } for(i = 2; i < UTFmax + 1; i++){ if(i == 3){ if(c > RuneMax) c = RuneErr; if(SurrogateMin <= c && c <= SurrogateMax) c = RuneErr; } if(c <= RuneX(i) || i == UTFmax) { s[0] = Tbyte(i) | (c >> (i - 1)*Bitx); for(j = 1; j < i; j++) s[j] = Tx | ((c >> (i - j - 1)*Bitx) & Maskx); return i; } } return UTFmax; }