5 char usage[] = "unicode { [-t] hex hex ... | hexmin-hexmax ... | [-n] char ... }";
6 char hex[] = "0123456789abcdefABCDEF";
17 main(int argc, char *argv[])
27 Binit(&bout, 1, OWRITE);
29 fprint(2, "usage: %s\n", usage);
32 if(!numout && utfrune(argv[0], '-'))
34 if(numout || strchr(hex, argv[0][0])==0)
48 if(strchr(hex, q[0]) == 0){
50 fprint(2, "unicode: bad range %s\n", *argv);
53 min = strtoul(q, &q, 16);
54 if(min<0 || min>Runemax || *q!='-')
57 if(strchr(hex, *q) == 0)
59 max = strtoul(q, &q, 16);
60 if(max<0 || max>Runemax || max<min || *q!=0)
64 Bprint(&bout, "%.4x %C", min, min);
66 if(min==max || (i&7)==0)
87 w = chartorune(&r, q);
91 if(runetochar(b, &r) != w || memcmp(b, q, w) != 0){
92 fprint(2, "unicode: invalid utf string %s\n", *argv);
96 Bprint(&bout, "%.4x\n", r);
112 if(strchr(hex, q[0]) == 0){
114 fprint(2, "unicode: bad unicode value %s\n", *argv);
117 m = strtoul(q, &q, 16);
118 if(m<0 || m>Runemax || *q!=0)
120 Bprint(&bout, "%C", m);