home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / D / CLISP / CLISPSRC.TAR / clisp-1995-01-01 / utils / charset / cv-to-ascii.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-07-23  |  4.4 KB  |  140 lines

  1. /* Konversionsprogramm ISO-Latin1-Zeichensatz -> ASCII-Zeichensatz */
  2. /* Bruno Haible 11.12.1992 */
  3.  
  4. #include <stdio.h>
  5.  
  6. main ()
  7. { static int tabelle[256];
  8.   /* Tabelle initialisieren: */
  9.   int iso;
  10.   long ascii;
  11. #define ISO(x) iso=x;
  12. #define ASCII(y) ascii=y;
  13. #define ASCII2(y1,y2) ascii=(y2<<8)|y1;
  14. #define ASCII3(y1,y2,y3) ascii=(y3<<16)|(y2<<8)|y1;
  15. #define _ tabelle[iso]=ascii;
  16.   { int i;
  17.     for (i=0;i<128;i++) { ISO(i) ASCII(i) _ }
  18.   }
  19.   { int i;
  20.     for (i=0;i<32;i++) { ISO(128+i) ASCII(i) _ }
  21.   }
  22.   ISO(160) ASCII(' ') _ /* á */
  23.   ISO(161) ASCII('!') _ /* í */
  24.   ISO(162) ASCII('c') _ /* ó */
  25.   ISO(163) ASCII2('l','b') _ /* ú */
  26.   ISO(164) ASCII(0) _ /* ñ */
  27.   ISO(165) ASCII3('y','e','n') _ /* Ñ */
  28.   ISO(166) ASCII('|') _ /* ª */
  29.   ISO(167) ASCII2('S','S') _ /* º */
  30.   ISO(168) ASCII('\"') _ /* ¿ */
  31.   ISO(169) ASCII3('(','c',')') _ /* ⌐ */
  32.   ISO(170) ASCII('a') _ /* ¬ */
  33.   ISO(171) ASCII2('<','<') _ /* ½ */
  34.   ISO(172) ASCII3('n','o','t') _ /* ¼ */
  35.   ISO(173) ASCII('-') _ /* ¡ */
  36.   ISO(174) ASCII3('(','R',')') _ /* « */
  37.   ISO(175) ASCII(0) _ /* » */
  38.   ISO(176) ASCII2('^','0') _ /* ░ */
  39.   ISO(177) ASCII2('+','-') _ /* ▒ */
  40.   ISO(178) ASCII2('^','2') _ /* ▓ */
  41.   ISO(179) ASCII2('^','3') _ /* │ */
  42.   ISO(180) ASCII('\'') _ /* ┤ */
  43.   ISO(181) ASCII('u') _ /* ╡ */
  44.   ISO(182) ASCII('P') _ /* ╢ */
  45.   ISO(183) ASCII('.') _ /* ╖ */
  46.   ISO(184) ASCII(',') _ /* ╕ */
  47.   ISO(185) ASCII2('^','1') _ /* ╣ */
  48.   ISO(186) ASCII('o') _ /* ║ */
  49.   ISO(187) ASCII2('>','>') _ /* ╗ */
  50.   ISO(188) ASCII3('1','/','4') _ /* ╝ */
  51.   ISO(189) ASCII3('1','/','2') _ /* ╜ */
  52.   ISO(190) ASCII3('3','/','4') _ /* ╛ */
  53.   ISO(191) ASCII('?') _ /* ┐ */
  54.   ISO(192) ASCII2('`','A') _ /* └ */
  55.   ISO(193) ASCII2('\'','A') _ /* ┴ */
  56.   ISO(194) ASCII2('^','A') _ /* ┬ */
  57.   ISO(195) ASCII2('~','A') _ /* ├ */
  58.   ISO(196) ASCII2('A','e') _ /* ─ */
  59.   ISO(197) ASCII('A') _ /* ┼ */
  60.   ISO(198) ASCII2('A','E') _ /* ╞ */
  61.   ISO(199) ASCII('C') _ /* ╟ */
  62.   ISO(200) ASCII2('`','E') _ /* ╚ */
  63.   ISO(201) ASCII2('\'','E') _ /* ╔ */
  64.   ISO(202) ASCII2('^','E') _ /* ╩ */
  65.   ISO(203) ASCII2('\"','E') _ /* ╦ */
  66.   ISO(204) ASCII2('`','I') _ /* ╠ */
  67.   ISO(205) ASCII2('\'','I') _ /* ═ */
  68.   ISO(206) ASCII2('^','I') _ /* ╬ */
  69.   ISO(207) ASCII2('\"','I') _ /* ╧ */
  70.   ISO(208) ASCII('D') _ /* ╨ */
  71.   ISO(209) ASCII2('~','N') _ /* ╤ */
  72.   ISO(210) ASCII2('`','O') _ /* ╥ */
  73.   ISO(211) ASCII2('\'','O') _ /* ╙ */
  74.   ISO(212) ASCII2('^','O') _ /* ╘ */
  75.   ISO(213) ASCII2('~','O') _ /* ╒ */
  76.   ISO(214) ASCII2('O','e') _ /* ╓ */
  77.   ISO(215) ASCII('x') _ /* ╫ */
  78.   ISO(216) ASCII('O') _ /* ╪ */
  79.   ISO(217) ASCII2('`','U') _ /* ┘ */
  80.   ISO(218) ASCII2('\'','U') _ /* ┌ */
  81.   ISO(219) ASCII2('^','U') _ /* █ */
  82.   ISO(220) ASCII2('U','e') _ /* ▄ */
  83.   ISO(221) ASCII2('\'','Y') _ /* ▌ */
  84.   ISO(222) ASCII(0) _ /* ▐ */
  85.   ISO(223) ASCII2('s','s') _ /* ▀ */
  86.   ISO(224) ASCII2('`','a') _ /* α */
  87.   ISO(225) ASCII2('\'','a') _ /* ß */
  88.   ISO(226) ASCII2('^','a') _ /* Γ */
  89.   ISO(227) ASCII2('~','a') _ /* π */
  90.   ISO(228) ASCII2('a','e') _ /* Σ */
  91.   ISO(229) ASCII('a') _ /* σ */
  92.   ISO(230) ASCII2('a','e') _ /* µ */
  93.   ISO(231) ASCII('c') _ /* τ */
  94.   ISO(232) ASCII2('`','e') _ /* Φ */
  95.   ISO(233) ASCII2('\'','e') _ /* Θ */
  96.   ISO(234) ASCII2('^','e') _ /* Ω */
  97.   ISO(235) ASCII2('\"','e') _ /* δ */
  98.   ISO(236) ASCII2('`','i') _ /* ∞ */
  99.   ISO(237) ASCII2('\'','i') _ /* φ */
  100.   ISO(238) ASCII2('^','i') _ /* ε */
  101.   ISO(239) ASCII2('\"','i') _ /* ∩ */
  102.   ISO(240) ASCII('d') _ /* ≡ */
  103.   ISO(241) ASCII2('~','n') _ /* ± */
  104.   ISO(242) ASCII2('`','o') _ /* ≥ */
  105.   ISO(243) ASCII2('\'','o') _ /* ≤ */
  106.   ISO(244) ASCII2('^','o') _ /* ⌠ */
  107.   ISO(245) ASCII2('~','o') _ /* ⌡ */
  108.   ISO(246) ASCII2('o','e') _ /* ÷ */
  109.   ISO(247) ASCII(':') _ /* ≈ */
  110.   ISO(248) ASCII('o') _ /* ° */
  111.   ISO(249) ASCII2('`','u') _ /* ∙ */
  112.   ISO(250) ASCII2('\'','u') _ /* · */
  113.   ISO(251) ASCII2('^','u') _ /* √ */
  114.   ISO(252) ASCII2('u','e') _ /* ⁿ */
  115.   ISO(253) ASCII2('\'','y') _ /* ² */
  116.   ISO(254) ASCII(0) _ /* ■ */
  117.   ISO(255) ASCII2('\"','y') _ /*   */
  118. #undef _
  119. #undef ASCII3
  120. #undef ASCII2
  121. #undef ASCII
  122. #undef ISO
  123.   { int fehler = 0;
  124.     int c;
  125.     while (!((c = getchar()) == EOF))
  126.       { long cx = tabelle[c];
  127.         if (cx == 0)
  128.           { fehler++; }
  129.           else
  130.           { do { putchar(cx & 0xFF); cx = cx>>8; } while (!(cx == 0)); }
  131.       }
  132.     if (!(fehler == 0))
  133.       { fprintf(stderr,"%d illegal characters\n",fehler); exit(1); }
  134.       else
  135.       if (ferror(stdin) || ferror(stdout))
  136.         { exit(1); }
  137.         else
  138.         { exit(0); }
  139. } }
  140.