Guest User

Untitled

a guest
Jan 23rd, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.08 KB | None | 0 0
  1. /*
  2. * .
  3. * .__ .______/| .____ ____. .___ __.
  4. * _____\ \ ___/_ \ _|____\____Y __/____ _____\ Y /__.
  5. * / _ \ X / \ X | \ X _ \ | ___/---.
  6. * | \ | / l____ > | | \ | \ |
  7. * | ::.. __l__/ ::.__| / .: /:.__l__ ..:: | ::.. __l__ ..:: |
  8. * l______ / \______/ /___ /| _/ \ ______l______ / \ ______|
  9. * \/ \/ |/ \/ \/ \/ x0!
  10. *
  11. * ansicat: cp437 decoder. display ansi art in modern utf8 shells
  12. * cc0 / kopimi: unixbros (dcat & x0)
  13. * install:
  14. * $ printf "all: ansicat\n" > Makefile && make
  15. * usage:
  16. * $ ansicat < rad-shit.ans
  17. */
  18.  
  19. #include <locale.h>
  20. #include <stdio.h>
  21. #include <wchar.h>
  22.  
  23. int table[] = {
  24. /* ascii */
  25. '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08',
  26. '\t', '\n', '\x0b', '\x0c', '\r', '\x0e', '\x0f', '\x10', '\x11',
  27. '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a',
  28. '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', ' ', '!', '"', '#',
  29. '$', '%', '&', '\'', '(', ')', '*', '+', ',',
  30. '-', '.', '/', '0', '1', '2', '3', '4', '5',
  31. '6', '7', '8', '9', ':', ';', '<', '=', '>',
  32. '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
  33. 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
  34. 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',
  35. 'Z', '[', '\\', ']', '^', '_', '`', 'a', 'b',
  36. 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
  37. 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
  38. 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}',
  39. '~', '\x7f',
  40.  
  41. '\xc7', /* 0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA*/
  42. '\xfc', /* 0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS*/
  43. '\xe9', /* 0x0082 -> LATIN SMALL LETTER E WITH ACUTE*/
  44. '\xe2', /* 0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX*/
  45. '\xe4', /* 0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS*/
  46. '\xe0', /* 0x0085 -> LATIN SMALL LETTER A WITH GRAVE*/
  47. '\xe5', /* 0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE*/
  48. '\xe7', /* 0x0087 -> LATIN SMALL LETTER C WITH CEDILLA*/
  49. '\xea', /* 0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX*/
  50. '\xeb', /* 0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS*/
  51. '\xe8', /* 0x008a -> LATIN SMALL LETTER E WITH GRAVE*/
  52. '\xef', /* 0x008b -> LATIN SMALL LETTER I WITH DIAERESIS*/
  53. '\xee', /* 0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX*/
  54. '\xec', /* 0x008d -> LATIN SMALL LETTER I WITH GRAVE*/
  55. '\xc4', /* 0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS*/
  56. '\xc5', /* 0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE*/
  57. '\xc9', /* 0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE*/
  58. '\xe6', /* 0x0091 -> LATIN SMALL LIGATURE AE*/
  59. '\xc6', /* 0x0092 -> LATIN CAPITAL LIGATURE AE*/
  60. '\xf4', /* 0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX*/
  61. '\xf6', /* 0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS*/
  62. '\xf2', /* 0x0095 -> LATIN SMALL LETTER O WITH GRAVE*/
  63. '\xfb', /* 0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX*/
  64. '\xf9', /* 0x0097 -> LATIN SMALL LETTER U WITH GRAVE*/
  65. '\xff', /* 0x0098 -> LATIN SMALL LETTER Y WITH DIAERESIS*/
  66. '\xd6', /* 0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS*/
  67. '\xdc', /* 0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS*/
  68. '\xa2', /* 0x009b -> CENT SIGN*/
  69. '\xa3', /* 0x009c -> POUND SIGN*/
  70. '\xa5', /* 0x009d -> YEN SIGN*/
  71. 0x20a7, /* 0x009e -> PESETA SIGN*/
  72. 0x0192, /* 0x009f -> LATIN SMALL LETTER F WITH HOOK*/
  73. '\xe1', /* 0x00a0 -> LATIN SMALL LETTER A WITH ACUTE*/
  74. '\xed', /* 0x00a1 -> LATIN SMALL LETTER I WITH ACUTE*/
  75. '\xf3', /* 0x00a2 -> LATIN SMALL LETTER O WITH ACUTE*/
  76. '\xfa', /* 0x00a3 -> LATIN SMALL LETTER U WITH ACUTE*/
  77. '\xf1', /* 0x00a4 -> LATIN SMALL LETTER N WITH TILDE*/
  78. '\xd1', /* 0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE*/
  79. '\xaa', /* 0x00a6 -> FEMININE ORDINAL INDICATOR*/
  80. '\xba', /* 0x00a7 -> MASCULINE ORDINAL INDICATOR*/
  81. '\xbf', /* 0x00a8 -> INVERTED QUESTION MARK*/
  82. 0x2310, /* 0x00a9 -> REVERSED NOT SIGN*/
  83. '\xac', /* 0x00aa -> NOT SIGN*/
  84. '\xbd', /* 0x00ab -> VULGAR FRACTION ONE HALF*/
  85. '\xbc', /* 0x00ac -> VULGAR FRACTION ONE QUARTER*/
  86. '\xa1', /* 0x00ad -> INVERTED EXCLAMATION MARK*/
  87. '\xab', /* 0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK*/
  88. '\xbb', /* 0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK*/
  89. 0x2591, /* 0x00b0 -> LIGHT SHADE*/
  90. 0x2592, /* 0x00b1 -> MEDIUM SHADE*/
  91. 0x2593, /* 0x00b2 -> DARK SHADE*/
  92. 0x2502, /* 0x00b3 -> BOX DRAWINGS LIGHT VERTICAL*/
  93. 0x2524, /* 0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT*/
  94. 0x2561, /* 0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE*/
  95. 0x2562, /* 0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE*/
  96. 0x2556, /* 0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE*/
  97. 0x2555, /* 0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE*/
  98. 0x2563, /* 0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT*/
  99. 0x2551, /* 0x00ba -> BOX DRAWINGS DOUBLE VERTICAL*/
  100. 0x2557, /* 0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT*/
  101. 0x255d, /* 0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT*/
  102. 0x255c, /* 0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE*/
  103. 0x255b, /* 0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE*/
  104. 0x2510, /* 0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT*/
  105. 0x2514, /* 0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT*/
  106. 0x2534, /* 0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL*/
  107. 0x252c, /* 0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL*/
  108. 0x251c, /* 0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT*/
  109. 0x2500, /* 0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL*/
  110. 0x253c, /* 0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL*/
  111. 0x255e, /* 0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE*/
  112. 0x255f, /* 0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE*/
  113. 0x255a, /* 0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT*/
  114. 0x2554, /* 0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT*/
  115. 0x2569, /* 0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL*/
  116. 0x2566, /* 0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL*/
  117. 0x2560, /* 0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT*/
  118. 0x2550, /* 0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL*/
  119. 0x256c, /* 0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL*/
  120. 0x2567, /* 0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE*/
  121. 0x2568, /* 0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE*/
  122. 0x2564, /* 0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE*/
  123. 0x2565, /* 0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE*/
  124. 0x2559, /* 0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE*/
  125. 0x2558, /* 0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE*/
  126. 0x2552, /* 0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE*/
  127. 0x2553, /* 0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE*/
  128. 0x256b, /* 0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE*/
  129. 0x256a, /* 0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE*/
  130. 0x2518, /* 0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT*/
  131. 0x250c, /* 0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT*/
  132. 0x2588, /* 0x00db -> FULL BLOCK*/
  133. 0x2584, /* 0x00dc -> LOWER HALF BLOCK*/
  134. 0x258c, /* 0x00dd -> LEFT HALF BLOCK*/
  135. 0x2590, /* 0x00de -> RIGHT HALF BLOCK*/
  136. 0x2580, /* 0x00df -> UPPER HALF BLOCK*/
  137. 0x03b1, /* 0x00e0 -> GREEK SMALL LETTER ALPHA*/
  138. '\xdf', /* 0x00e1 -> LATIN SMALL LETTER SHARP S*/
  139. 0x0393, /* 0x00e2 -> GREEK CAPITAL LETTER GAMMA*/
  140. 0x03c0, /* 0x00e3 -> GREEK SMALL LETTER PI*/
  141. 0x03a3, /* 0x00e4 -> GREEK CAPITAL LETTER SIGMA*/
  142. 0x03c3, /* 0x00e5 -> GREEK SMALL LETTER SIGMA*/
  143. '\xb5', /* 0x00e6 -> MICRO SIGN*/
  144. 0x03c4, /* 0x00e7 -> GREEK SMALL LETTER TAU*/
  145. 0x03a6, /* 0x00e8 -> GREEK CAPITAL LETTER PHI*/
  146. 0x0398, /* 0x00e9 -> GREEK CAPITAL LETTER THETA*/
  147. 0x03a9, /* 0x00ea -> GREEK CAPITAL LETTER OMEGA*/
  148. 0x03b4, /* 0x00eb -> GREEK SMALL LETTER DELTA*/
  149. 0x221e, /* 0x00ec -> INFINITY*/
  150. 0x03c6, /* 0x00ed -> GREEK SMALL LETTER PHI*/
  151. 0x03b5, /* 0x00ee -> GREEK SMALL LETTER EPSILON*/
  152. 0x2229, /* 0x00ef -> INTERSECTION*/
  153. 0x2261, /* 0x00f0 -> IDENTICAL TO*/
  154. '\xb1', /* 0x00f1 -> PLUS-MINUS SIGN*/
  155. 0x2265, /* 0x00f2 -> GREATER-THAN OR EQUAL TO*/
  156. 0x2264, /* 0x00f3 -> LESS-THAN OR EQUAL TO*/
  157. 0x2320, /* 0x00f4 -> TOP HALF INTEGRAL*/
  158. 0x2321, /* 0x00f5 -> BOTTOM HALF INTEGRAL*/
  159. '\xf7', /* 0x00f6 -> DIVISION SIGN*/
  160. 0x2248, /* 0x00f7 -> ALMOST EQUAL TO*/
  161. '\xb0', /* 0x00f8 -> DEGREE SIGN*/
  162. 0x2219, /* 0x00f9 -> BULLET OPERATOR*/
  163. '\xb7', /* 0x00fa -> MIDDLE DOT*/
  164. 0x221a, /* 0x00fb -> SQUARE ROOT*/
  165. 0x207f, /* 0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N*/
  166. '\xb2', /* 0x00fd -> SUPERSCRIPT TWO*/
  167. 0x25a0, /* 0x00fe -> BLACK SQUARE*/
  168. '\xa0', /* 0x00ff -> NO-BREAK SPACE*/
  169. };
  170.  
  171.  
  172. int
  173. main(int argc, char **argv) {
  174. int chr;
  175.  
  176. setlocale(LC_ALL, "");
  177.  
  178. while ((chr = getchar()) != 0x1a)
  179. if (feof(stdin))
  180. break;
  181. else if (table[chr])
  182. printf("%lc", table[chr]);
  183.  
  184. return 0;
  185. }
Add Comment
Please, Sign In to add comment