1 /*
2  * make KOI8->CP1251(win-1251) and CP1251(win-1251)->KOI8 translation table
3  * from koi-win.tab.
4  *
5  * Tatsuo Ishii
6  *
7  * src/backend/utils/mb/win1251.c
8  */
9 
10 #include <stdio.h>
11 
12 
13 main()
new(stream_id: StreamId, size_increment: u32) -> WindowUpdate14 {
15 	int			i;
16 	char		koitab[128],
17 				wintab[128];
18 	char		buf[4096];
19 	int			koi,
20 				win;
21 
22 	for (i = 0; i < 128; i++)
23 		koitab[i] = wintab[i] = 0;
24 
25 	while (fgets(buf, sizeof(buf), stdin) != NULL)
26 	{
27 		if (*buf == '#')
28 			continue;
29 		sscanf(buf, "%d %d", &koi, &win);
30 		if (koi < 128 || koi > 255 || win < 128 || win > 255)
31 		{
32 			fprintf(stderr, "invalid value %d\n", koi);
33 			exit(1);
34 		}
35 		koitab[koi - 128] = win;
36 		wintab[win - 128] = koi;
37 	}
38 
39 	i = 0;
40 	printf("static char koi2win[] = {\n");
41 	while (i < 128)
42 	{
43 		int			j = 0;
44 
45 		while (j < 8)
46 		{
47 			printf("0x%02x", koitab[i++]);
48 			j++;
49 			if (i >= 128)
50 				break;
51 			printf(", ");
52 		}
53 		printf("\n");
54 	}
55 	printf("};\n");
56 
57 	i = 0;
58 	printf("static char win2koi[] = {\n");
59 	while (i < 128)
60 	{
61 		int			j = 0;
62 
63 		while (j < 8)
64 		{
65 			printf("0x%02x", wintab[i++]);
66 			j++;
67 			if (i >= 128)
68 				break;
69 			printf(", ");
70 		}
71 		printf("\n");
72 	}
73 	printf("};\n");
74 }
75