remove Rune1 stuff; we've got 32-bit runes. from sources. thanks geoff. Reference: /n/atom/patch/applied2013/filermrune1 Date: Fri Aug 23 05:20:02 CES 2013 Signed-off-by: quanstro@quanstro.net --- /sys/src/cmd/file.c Fri Aug 23 05:19:39 2013 +++ /sys/src/cmd/file.c Fri Aug 23 05:19:41 2013 @@ -269,64 +269,10 @@ close(fd); } -/* - * Unicode 4.0 4-byte runes. - */ -typedef int Rune1; - -enum { - UTFmax1 = 4, -}; - -int -fullrune1(char *p, int n) -{ - int c; - - if(n >= 1) { - c = *(uchar*)p; - if(c < 0x80) - return 1; - if(n >= 2 && c < 0xE0) - return 1; - if(n >= 3 && c < 0xF0) - return 1; - if(n >= 4) - return 1; - } - return 0; -} - -int -chartorune1(Rune1 *rune, char *str) -{ - int c, c1, c2, c3, n; - Rune r; - - c = *(uchar*)str; - if(c < 0xF0){ - r = 0; - n = chartorune(&r, str); - *rune = r; - return n; - } - c &= ~0xF0; - c1 = *(uchar*)(str+1) & ~0x80; - c2 = *(uchar*)(str+2) & ~0x80; - c3 = *(uchar*)(str+3) & ~0x80; - n = (c<<18) | (c1<<12) | (c2<<6) | c3; - if(n < 0x10000 || n > 0x10FFFF){ - *rune = Runeerror; - return 1; - } - *rune = n; - return 4; -} - void filetype(int fd) { - Rune1 r; + Rune r; int i, f, n; char *p, *eob; @@ -365,9 +311,9 @@ language[i].count = 0; eob = (char *)buf+nbuf; for(n = 0, p = (char *)buf; p < eob; n++) { - if (!fullrune1(p, eob-p) && eob-p < UTFmax1) + if (!fullrune(p, eob-p) && eob-p < UTFmax) break; - p += chartorune1(&r, p); + p += chartorune(&r, p); if (r == 0) f = Cnull; else if (r <= 0x7f) {