home *** CD-ROM | disk | FTP | other *** search
/ Popular Software (Premium Edition) / mycd.iso / DICT / DFKC / ZWH / CHCS / CHARMAP.C < prev    next >
Encoding:
C/C++ Source or Header  |  1998-01-12  |  2.7 KB  |  105 lines

  1. /*
  2.  * makechar.c
  3.  *
  4.  */
  5.  
  6. #include        <stdio.h>
  7.  
  8. typedef unsigned char   BYTE;
  9.  
  10.    BYTE         CharMap[258], Defined[258];
  11.    BYTE         Buffer[128];
  12.    BYTE         DeFile[88], MapFile[88];
  13.    FILE        *fi, *fo;
  14.  
  15. void InitCharMap()
  16. {
  17.    register int i;
  18.  
  19.    for (i = 0; i < 256; i ++) CharMap[i] = i;
  20.    CharMap[i] = 1;
  21. }
  22.  
  23. BYTE TreatLine()
  24. //
  25. //      '\x##' = '\x##'
  26. //
  27. {
  28.    unsigned     Origin, NewTo;
  29.    BYTE         Tmp1[2], Tmp2[2], Switch[8];
  30.  
  31.    for ( ; ; ) {
  32.       if (fgets(Buffer, 127, fi) == NULL) return 0;
  33.       if (Buffer[0] != '#') break;
  34.    }
  35.    if (sscanf(Buffer, "\'\\x%2x\'%1s%1s\\x%2x\'", 
  36.                       &Origin, Tmp1, Tmp2, &NewTo) == 4 && 
  37.        Tmp1[0] == '=' && Tmp2[0] == '\'') {
  38.    //   printf("Origin: %2x   NewTo: %2x\t", Origin, NewTo);
  39.       if (Defined[Origin] == 0) {
  40.          CharMap[Origin] = (BYTE)NewTo;
  41.          Defined[Origin] = 1;
  42.    //      printf("%c --> %c\n", Origin, NewTo);
  43.          return 1;
  44.       }
  45.       printf("%s┤φ╬≤ú║╫╓╖√\"%c\"╥╤╢¿╥σ╣²\n", Buffer, Origin);
  46.       return 1;
  47.    }
  48.    else 
  49.    if (sscanf(Buffer, "TreatTab%1s%s", Tmp1, Switch)) {
  50.       if (Defined[256] != 0) {
  51.          printf("%s┤φ╬≤ú║▒φ╕±┤ª└φ┐¬╣╪╥╤╢¿╥σ╣²\n", Buffer);
  52.          return 1;
  53.       }
  54.       else
  55.       if (Tmp1[0] == '=') {
  56.          if (strcmp(Switch, "on") == 0) CharMap[256] = 1;
  57.          else
  58.          if (strcmp(Switch, "off") == 0) CharMap[256] = 0;
  59.          else goto PmtError;
  60.          Defined[256] = 1;
  61.    //      printf("Set TabChar %s\n", Switch);
  62.          return 1;
  63.       }
  64.    }
  65.    PmtError:
  66.    printf("%sMakeChar: ╢¿╥σ╕±╩╜┤φ\n", Buffer);
  67.    return 1;
  68. }
  69.  
  70. void OutMapFile(char *ofile)
  71. {
  72.    if ((fo = fopen(ofile, "wb")) == NULL) {
  73.       printf("MakeChar: ╬┤─▄┤≥┐¬╬─╝■ \"%s\"\n", ofile);
  74.       exit(-1);
  75.    }
  76.    fwrite(CharMap, 257, 1, fo);
  77.    fclose(fo);
  78. }
  79.  
  80. void main(int argc, char *argv[])
  81. {
  82.    if (argc < 2 || argc > 3 || strcmp(argv[1], "/?") == 0) {
  83.       printf("\t│╔╚╗┬δ╧╡═│ASCII╧╘╩╛╫╓╖√╙│╔Σ▒φ╔·│╔│╠╨≥ 1.0░µ\n"
  84.              "\tCopyright (c) 1994.8 │┬╜¡─■\n"
  85.              "\n\t╙├╖¿: CharMap <╢¿╥σ╬─╝■>[.def] [<╙│╔Σ▒φ╬─╝■>[.chr]]"
  86.              "\n\t╛┘└²: CHARMAP ACIOS\n"
  87.       );
  88.       exit(-1);
  89.    }
  90.    strcpy(DeFile, argv[1]);
  91.    if (argc == 2) strcpy(MapFile, argv[1]);
  92.    else           strcpy(MapFile, argv[2]);
  93.  
  94.    if (strchr(DeFile, '.') == NULL) strcat(DeFile, ".def");
  95.    if (strchr(MapFile, '.') == NULL) strcat(MapFile, ".chr");
  96.  
  97.    if ((fi = fopen(DeFile, "r")) == NULL) {
  98.       printf("MakeChar: ╬┤─▄┤≥┐¬╢¿╥σ╬─╝■ \"%s\"\n", DeFile);
  99.       exit(-1);
  100.    }
  101.    InitCharMap();
  102.    while ( ! feof(fi)) TreatLine();  fclose(fi);
  103.    OutMapFile(MapFile);
  104. }
  105.