home *** CD-ROM | disk | FTP | other *** search
- /*
- * MultiMail offline mail reader
- * conversion tables ISO 8859-1 <-> IBM codepage 437
-
- Copyright (c) 1996 Peter Karlsson <dat95pkn@idt.mdh.se>,
- Toth Istvan <stoty@vma.bme.hu>
- Copyright (c) 1999 William McBrine <wmcbrine@clark.net>
-
- Distributed under the GNU General Public License.
- For details, see the file COPYING in the parent directory. */
-
- /* Original tables by Peter Karlsson, modified by William McBrine after
- DOSEmu's video/terminal.h, by Mark D. Rejhon. */
-
- #include "interfac.h"
-
- enum cdirtype {CC_ISOTO437, CC_437TOISO};
-
- bool isoConsole;
-
- const char *dos2isotab =
- "\307\374\351\342\344\340\345\347\352\353\350\357\356\354\304\305"
- "\311\346\306\364\366\362\373\371\377\326\334\242\243\245\120\146"
- "\341\355\363\372\361\321\252\272\277\055\254\275\274\241\253\273"
- ":%&|{{{..{I.'''.``+}-+}}`.**}=**+*+``..**'.#_][~"
- "a\337\254\266{\363\265t\330\364\326\363o\370En"
- "=\261><()\367=\260\267\267%\140\262= ";
-
- const char *iso2dostab =
- "\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217"
- "\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237 "
- "\255\233\234$\235|\025\"c\246\256\252-r-\370\361\3753\'\346\024\371,1"
- "\370\257\254\253/\250AAAA\216\217\222\200E\220EEIIIID\245OOOO\231x"
- "\231UUU\232Y \341\205\240\203a\204\206\221\207\212\202\210\211\215\241"
- "\214\213 \244\225\242\223o\224\366\224\227\243\226\201y \230";
-
- char *charconv(char *buf, cdirtype cdir)
- {
- const char *ct = (cdir == CC_ISOTO437) ? iso2dostab : dos2isotab;
-
- for (char *p = buf; *p; p++) {
- unsigned char c = *p;
- if (c & 0x80)
- *p = ct[c & 0x7f];
- }
- return buf;
- }
-
- char *charconv_in(char *buf)
- {
- return (isoConsole ? charconv(buf, CC_437TOISO) : buf);
- }
-
- char *charconv_out(char *buf)
- {
- return (isoConsole ? charconv(buf, CC_ISOTO437) : buf);
- }
-
- char *letterconv_in(char *buf)
- {
- return (mm.letterList->isLatin() ^ isoConsole) ?
- charconv(buf, isoConsole ? CC_437TOISO : CC_ISOTO437) : buf;
- }
-
- char *letterconv_out(char *buf)
- {
- return (mm.letterList->isLatin() ^ isoConsole) ?
- charconv(buf, isoConsole ? CC_ISOTO437 : CC_437TOISO) : buf;
- }
-
- char *areaconv_in(char *buf)
- {
- return (mm.areaList->isLatin() ^ isoConsole) ?
- charconv(buf, isoConsole ? CC_437TOISO : CC_ISOTO437) : buf;
- }
-
- char *areaconv_out(char *buf)
- {
- return (mm.areaList->isLatin() ^ isoConsole) ?
- charconv(buf, isoConsole ? CC_ISOTO437 : CC_437TOISO) : buf;
- }
-