15 /* There is such function in libc5 but it doesn't work for me [libc 5.4.13] */
17 #define wctomb our_wctomb
21 ud_compar(const void *u1, const void *u2){
22 unsigned short fp1 = ((struct unipair *) u1)->fontpos;
23 unsigned short fp2 = ((struct unipair *) u2)->fontpos;
24 return (int) fp1 - (int) fp2;
27 static void __attribute__ ((noreturn))
29 fprintf(stderr, _("Usage:\n\t%s [-s] [-C console]\n"), progname);
34 main(int argc, char **argv){
36 char mb[]={0,0,0,0,0,0,0,0};
42 set_progname(argv[0]);
44 setlocale(LC_ALL, "");
45 bindtextdomain(PACKAGE_NAME, LOCALEDIR);
46 textdomain(PACKAGE_NAME);
49 (!strcmp(argv[1], "-V") || !strcmp(argv[1], "--version")))
50 print_version_and_exit();
52 while ((c = getopt(argc, argv, "sC:")) != EOF) {
69 if (getunimap(fd, &ud))
73 printf("# sorted kernel unimap - count=%d\n", ud.entry_ct);
74 /* sort and merge entries */
75 qsort(ud.entries, ud.entry_ct, sizeof(ud.entries[0]),
77 for(i=0; i<ud.entry_ct; i++) {
78 int fp = ud.entries[i].fontpos;
79 printf("0x%03x\tU+%04x", fp, ud.entries[i].unicode);
80 while (i+1 < ud.entry_ct &&
81 ud.entries[i+1].fontpos == fp)
82 printf(" U+%04x", ud.entries[++i].unicode);
86 printf("# kernel unimap - count=%d\n", ud.entry_ct);
87 for(i=0; i<ud.entry_ct; i++) {
88 mb_length = wctomb (mb, ud.entries[i].unicode);
89 mb[ (mb_length > 6) ? 0 : mb_length ] = 0 ;
90 if (mb_length == 1 && !isprint(mb[0])) {
95 printf("0x%03x\tU+%04x\t# %s \n",
96 ud.entries[i].fontpos,
97 ud.entries[i].unicode, mb);