Blame data/xlt.c

Packit 57a33d
#include <stdio.h>
Packit 57a33d
#define NO_CHR 0xffff
Packit 57a33d
Packit 57a33d
int
Packit 57a33d
main(int argc, char *argv[])
Packit 57a33d
{
Packit 57a33d
  unsigned int target_map[0x100];
Packit 57a33d
  unsigned int source_map[0x100];
Packit 57a33d
  unsigned char xlt[0x100];
Packit 57a33d
  unsigned int ucs2_map[0x10000];
Packit 57a33d
  FILE *f;
Packit 57a33d
Packit 57a33d
  int i;
Packit 57a33d
  int c;
Packit 57a33d
Packit 57a33d
  f = fopen(argv[1], "r");
Packit 57a33d
  for (i = 0; i < 0x100; i++)
Packit 57a33d
    fscanf(f, "%x", source_map + i);
Packit 57a33d
  fclose(f);
Packit 57a33d
Packit 57a33d
  f = fopen(argv[2], "r");
Packit 57a33d
  for (i = 0; i < 0x100; i++)
Packit 57a33d
    fscanf(f, "%x", target_map + i);
Packit 57a33d
  fclose(f);
Packit 57a33d
Packit 57a33d
  for (i = 0; i < 0x100; i++)
Packit 57a33d
    xlt[i] = (unsigned char)i;
Packit 57a33d
Packit 57a33d
  for (i = 0; i < 0x10000; i++)
Packit 57a33d
    ucs2_map[i] = NO_CHR;
Packit 57a33d
Packit 57a33d
  for (i = 0xff; i >= 0; i--) {
Packit 57a33d
    if (target_map[i] != NO_CHR)
Packit 57a33d
      ucs2_map[target_map[i]] = (unsigned int)i;
Packit 57a33d
  }
Packit 57a33d
Packit 57a33d
  for (i = 0xff; i >= 0; i--) {
Packit 57a33d
    if (source_map[i] != NO_CHR
Packit 57a33d
        && ucs2_map[source_map[i]] != NO_CHR)
Packit 57a33d
      xlt[i] = (unsigned char)ucs2_map[source_map[i]];
Packit 57a33d
  }
Packit 57a33d
Packit 57a33d
  while ((c = getchar()) != EOF)
Packit 57a33d
    putchar(xlt[c]);
Packit 57a33d
Packit 57a33d
  return 0;
Packit 57a33d
}
Packit 57a33d
/* vim: ts=2
Packit 57a33d
 */