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>0xFFFF || *q!='-')
57 if(strchr(hex, *q) == 0)
59 max = strtoul(q, &q, 16);
60 if(max<0 || max>0xFFFF || max<min || *q!=0)
64 Bprint(&bout, "%.4x %C", min, min);
66 if(min==max || (i&7)==0)
87 w = chartorune(&r, q);
88 if(r==0x80 && (q[0]&0xFF)!=0x80){
89 fprint(2, "unicode: invalid utf string %s\n", *argv);
92 Bprint(&bout, "%.4x\n", r);
108 if(strchr(hex, q[0]) == 0){
110 fprint(2, "unicode: bad unicode value %s\n", *argv);
113 m = strtoul(q, &q, 16);
114 if(m<0 || m>0xFFFF || *q!=0)
116 Bprint(&bout, "%C", m);