1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
#include <stdio.h>
#define WCTABLE_OFFSET 0xa1
#define WCTABLE_SIZE 94
#ifndef BUFSIZ
# define BUFSIZ 1024
#endif
main(argc, argv)
int argc;
char *argv[];
{
int ku, ten, jis_output = 0;
unsigned short wc;
char *metric, *type, header[BUFSIZ];
if (argc != 4) {
fprintf(stderr,
"Usage: cat <header> | createM -{jis|euc} <metric> <type>\n");
exit(1);
}
if (strcmp(argv[1], "-jis") == 0)
jis_output = 1;
metric = argv[2];
type = argv[3];
while (fgets(header, BUFSIZ, stdin) != NULL) {
fputs(header, stdout);
}
printf("charset\n");
for (ku = 0; ku < WCTABLE_SIZE; ku++) {
for (ten = 0; ten < WCTABLE_SIZE; ten++) {
wc = ((ku + WCTABLE_OFFSET) << 8) & 0xff00;
wc |= (ten + WCTABLE_OFFSET) & 0xff;
if (wc >= 0xa2af && wc <= 0xa2b9 ||
wc >= 0xa2c2 && wc <= 0xa2c9 ||
wc >= 0xa2d1 && wc <= 0xa2db ||
wc >= 0xa2eb && wc <= 0xa2f1 ||
wc >= 0xa2fa && wc <= 0xa2fd ||
wc >= 0xa3a1 && wc <= 0xa3af ||
wc >= 0xa3ba && wc <= 0xa3c0 ||
wc >= 0xa3db && wc <= 0xa3e0 ||
wc >= 0xa3fb && wc <= 0xa3fe ||
wc >= 0xa4f4 && wc <= 0xa4fe ||
wc >= 0xa5f7 && wc <= 0xa5fe ||
wc >= 0xa6b9 && wc <= 0xa6c0 ||
wc >= 0xa6d9 && wc <= 0xa6fe ||
wc >= 0xa7c2 && wc <= 0xa7d0 ||
wc >= 0xa7f2 && wc <= 0xa7fe ||
wc >= 0xa8c1 && wc <= 0xaffe ||
wc >= 0xcfd4 && wc <= 0xcffe)
continue;
else if (wc >= 0xf4a5)
goto done;
else {
putchar(ku + WCTABLE_OFFSET);
putchar(ten + WCTABLE_OFFSET);
printf("\t%s\t%s\t%#x\n",
metric, type, jis_output ? (wc & 0x7f7f) : wc);
}
}
}
done:
exit(0);
}
|