File: createM.c

package info (click to toggle)
jgroff 0.100-2
  • links: PTS
  • area: main
  • in suites: slink
  • size: 5,896 kB
  • ctags: 6,984
  • sloc: cpp: 55,956; ansic: 5,480; yacc: 2,957; asm: 1,866; makefile: 1,099; sh: 409; perl: 397; sed: 123
file content (68 lines) | stat: -rw-r--r-- 1,620 bytes parent folder | download | duplicates (2)
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);
}