These tools were used to read the koi-iso.tab, koi-win.tab, and
koi-alt.tab files, which contained the mappings between the
single-byte cyrillic encodings. However, those data files were removed
in commit
4c3c8c048d, back in 2003. These code generators have been
unused and unusable ever since.
The generated tables live in cyrillic_and_mic.c. There has been one
change to the tables since they were generated in 1999, in commit
f4b7624eb07a. So if we resurrected the original data tables, that
change would need to be taken into account.
So this code is very dead. The tables in cyrillic_and_mic.c, which
were originally generated by these tools, are now the authoritative
source for these mappings.
Reviewed-by: Tom Lane, Aleksander Alekseev
Discussion: https://www.postgresql.org/message-id/flat/
a821c3dc-36ec-4cee-8b41-
7ccaa17adb18@iki.fi
stringinfo_mb.c: public backend-only multibyte-aware stringinfo functions
wstrcmp.c: strcmp for mb
wstrncmp.c: strncmp for mb
-win866.c: a tool to generate KOI8 <--> CP866 conversion table
-iso.c: a tool to generate KOI8 <--> ISO8859-5 conversion table
-win1251.c: a tool to generate KOI8 <--> CP1251 conversion table
See also in src/common/:
+++ /dev/null
-/*
- * make KOI8->ISO8859-5 and ISO8859-5->KOI8 translation table
- * from koi-iso.tab.
- *
- * Tatsuo Ishii
- *
- * src/backend/utils/mb/iso.c
- */
-
-#include <stdio.h>
-
-
-main()
-{
- int i;
- char koitab[128],
- isotab[128];
- char buf[4096];
- int koi,
- iso;
-
- for (i = 0; i < 128; i++)
- koitab[i] = isotab[i] = 0;
-
- while (fgets(buf, sizeof(buf), stdin) != NULL)
- {
- if (*buf == '#')
- continue;
- sscanf(buf, "%d %x", &koi, &iso);
- if (koi < 128 || koi > 255 || iso < 128 || iso > 255)
- {
- fprintf(stderr, "invalid value %d\n", koi);
- exit(1);
- }
- koitab[koi - 128] = iso;
- isotab[iso - 128] = koi;
- }
-
- i = 0;
- printf("static char koi2iso[] = {\n");
- while (i < 128)
- {
- int j = 0;
-
- while (j < 8)
- {
- printf("0x%02x", koitab[i++]);
- j++;
- if (i >= 128)
- break;
- printf(", ");
- }
- printf("\n");
- }
- printf("};\n");
-
- i = 0;
- printf("static char iso2koi[] = {\n");
- while (i < 128)
- {
- int j = 0;
-
- while (j < 8)
- {
- printf("0x%02x", isotab[i++]);
- j++;
- if (i >= 128)
- break;
- printf(", ");
- }
- printf("\n");
- }
- printf("};\n");
-}
+++ /dev/null
-/*
- * make KOI8->CP1251(win-1251) and CP1251(win-1251)->KOI8 translation table
- * from koi-win.tab.
- *
- * Tatsuo Ishii
- *
- * src/backend/utils/mb/win1251.c
- */
-
-#include <stdio.h>
-
-
-main()
-{
- int i;
- char koitab[128],
- wintab[128];
- char buf[4096];
- int koi,
- win;
-
- for (i = 0; i < 128; i++)
- koitab[i] = wintab[i] = 0;
-
- while (fgets(buf, sizeof(buf), stdin) != NULL)
- {
- if (*buf == '#')
- continue;
- sscanf(buf, "%d %d", &koi, &win);
- if (koi < 128 || koi > 255 || win < 128 || win > 255)
- {
- fprintf(stderr, "invalid value %d\n", koi);
- exit(1);
- }
- koitab[koi - 128] = win;
- wintab[win - 128] = koi;
- }
-
- i = 0;
- printf("static char koi2win[] = {\n");
- while (i < 128)
- {
- int j = 0;
-
- while (j < 8)
- {
- printf("0x%02x", koitab[i++]);
- j++;
- if (i >= 128)
- break;
- printf(", ");
- }
- printf("\n");
- }
- printf("};\n");
-
- i = 0;
- printf("static char win2koi[] = {\n");
- while (i < 128)
- {
- int j = 0;
-
- while (j < 8)
- {
- printf("0x%02x", wintab[i++]);
- j++;
- if (i >= 128)
- break;
- printf(", ");
- }
- printf("\n");
- }
- printf("};\n");
-}
+++ /dev/null
-/*
- * make KOI8->CP866(ALT) and CP866(ALT)->KOI8 translation table
- * from koi-alt.tab.
- *
- * Tatsuo Ishii
- *
- * src/backend/utils/mb/win866.c
- */
-
-#include <stdio.h>
-
-
-main()
-{
- int i;
- char koitab[128],
- alttab[128];
- char buf[4096];
- int koi,
- alt;
-
- for (i = 0; i < 128; i++)
- koitab[i] = alttab[i] = 0;
-
- while (fgets(buf, sizeof(buf), stdin) != NULL)
- {
- if (*buf == '#')
- continue;
- sscanf(buf, "%d %d", &koi, &alt);
- if (koi < 128 || koi > 255 || alt < 128 || alt > 255)
- {
- fprintf(stderr, "invalid value %d\n", koi);
- exit(1);
- }
- koitab[koi - 128] = alt;
- alttab[alt - 128] = koi;
- }
-
- i = 0;
- printf("static char koi2alt[] = {\n");
- while (i < 128)
- {
- int j = 0;
-
- while (j < 8)
- {
- printf("0x%02x", koitab[i++]);
- j++;
- if (i >= 128)
- break;
- printf(", ");
- }
- printf("\n");
- }
- printf("};\n");
-
- i = 0;
- printf("static char alt2koi[] = {\n");
- while (i < 128)
- {
- int j = 0;
-
- while (j < 8)
- {
- printf("0x%02x", alttab[i++]);
- j++;
- if (i >= 128)
- break;
- printf(", ");
- }
- printf("\n");
- }
- printf("};\n");
-}