diff options
Diffstat (limited to 'engines/glk/alan3/sysdep.cpp')
-rw-r--r-- | engines/glk/alan3/sysdep.cpp | 341 |
1 files changed, 169 insertions, 172 deletions
diff --git a/engines/glk/alan3/sysdep.cpp b/engines/glk/alan3/sysdep.cpp index 0966d54d7b..58f0fa0098 100644 --- a/engines/glk/alan3/sysdep.cpp +++ b/engines/glk/alan3/sysdep.cpp @@ -36,180 +36,176 @@ namespace Alan3 { move to Unicode). */ -static const byte spaceCharacters[] = -{ - 0x0A, /* linefeed */ - 0x20, /* space */ - 0xA0, /* non-breaking space */ - 0x00 +static const byte spaceCharacters[] = { + 0x0A, /* linefeed */ + 0x20, /* space */ + 0xA0, /* non-breaking space */ + 0x00 }; -static const byte lowerCaseCharacters[] = -{ - 0x61, /* a */ 0x62, /* b */ 0x63, /* c */ 0x64, /* d */ - 0x65, /* e */ 0x66, /* f */ 0x67, /* g */ 0x68, /* h */ - 0x69, /* i */ 0x6A, /* j */ 0x6B, /* k */ 0x6C, /* l */ - 0x6D, /* m */ 0x6E, /* n */ 0x6F, /* o */ 0x70, /* p */ - 0x71, /* q */ 0x72, /* r */ 0x73, /* s */ 0x74, /* t */ - 0x75, /* u */ 0x76, /* v */ 0x77, /* w */ 0x78, /* x */ - 0x79, /* y */ 0x7A, /* z */ 0xDF, /* ss <small sharp s> */ - 0xE0, /* a grave */ 0xE1, /* a acute */ - 0xE2, /* a circumflex */ 0xE3, /* a tilde */ - 0xE4, /* a diaeresis */ 0xE5, /* a ring */ - 0xE6, /* ae */ 0xE7, /* c cedilla */ - 0xE8, /* e grave */ 0xE9, /* e acute */ - 0xEA, /* e circumflex */ 0xEB, /* e diaeresis */ - 0xEC, /* i grave */ 0xED, /* i acute */ - 0xEE, /* i circumflex */ 0xEF, /* i diaeresis */ - 0xF0, /* <small eth> */ 0xF1, /* n tilde */ - 0xF2, /* o grave */ 0xF3, /* o acute */ - 0xF4, /* o circumflex */ 0xF5, /* o tilde */ - 0xF6, /* o diaeresis */ 0xF8, /* o slash */ - 0xF9, /* u grave */ 0xFA, /* u acute */ - 0xFB, /* u circumflex */ 0xFC, /* u diaeresis */ - 0xFD, /* y acute */ 0xFE, /* <small thorn> */ - 0xFF, /* y diaeresis */ 0x00 +static const byte lowerCaseCharacters[] = { + 0x61, /* a */ 0x62, /* b */ 0x63, /* c */ 0x64, /* d */ + 0x65, /* e */ 0x66, /* f */ 0x67, /* g */ 0x68, /* h */ + 0x69, /* i */ 0x6A, /* j */ 0x6B, /* k */ 0x6C, /* l */ + 0x6D, /* m */ 0x6E, /* n */ 0x6F, /* o */ 0x70, /* p */ + 0x71, /* q */ 0x72, /* r */ 0x73, /* s */ 0x74, /* t */ + 0x75, /* u */ 0x76, /* v */ 0x77, /* w */ 0x78, /* x */ + 0x79, /* y */ 0x7A, /* z */ 0xDF, /* ss <small sharp s> */ + 0xE0, /* a grave */ 0xE1, /* a acute */ + 0xE2, /* a circumflex */ 0xE3, /* a tilde */ + 0xE4, /* a diaeresis */ 0xE5, /* a ring */ + 0xE6, /* ae */ 0xE7, /* c cedilla */ + 0xE8, /* e grave */ 0xE9, /* e acute */ + 0xEA, /* e circumflex */ 0xEB, /* e diaeresis */ + 0xEC, /* i grave */ 0xED, /* i acute */ + 0xEE, /* i circumflex */ 0xEF, /* i diaeresis */ + 0xF0, /* <small eth> */ 0xF1, /* n tilde */ + 0xF2, /* o grave */ 0xF3, /* o acute */ + 0xF4, /* o circumflex */ 0xF5, /* o tilde */ + 0xF6, /* o diaeresis */ 0xF8, /* o slash */ + 0xF9, /* u grave */ 0xFA, /* u acute */ + 0xFB, /* u circumflex */ 0xFC, /* u diaeresis */ + 0xFD, /* y acute */ 0xFE, /* <small thorn> */ + 0xFF, /* y diaeresis */ 0x00 }; /* FIXME: ss <small sharp s> and y diaeresis have no UC analogues Are they really considered LC? */ -static const byte upperCaseCharacters[] = -{ - 0x41, /* A */ 0x42, /* B */ 0x43, /* C */ 0x44, /* D */ - 0x45, /* E */ 0x46, /* F */ 0x47, /* G */ 0x48, /* H */ - 0x49, /* I */ 0x4A, /* J */ 0x4B, /* K */ 0x4C, /* L */ - 0x4D, /* M */ 0x4E, /* N */ 0x4F, /* O */ 0x50, /* P */ - 0x51, /* Q */ 0x52, /* R */ 0x53, /* S */ 0x54, /* T */ - 0x55, /* U */ 0x56, /* V */ 0x57, /* W */ 0x58, /* X */ - 0x59, /* Y */ 0x5A, /* Z */ - 0xC0, /* A grave */ 0xC1, /* A acute */ - 0xC2, /* A circumflex */ 0xC3, /* A tilde */ - 0xC4, /* A diaeresis */ 0xC5, /* A ring */ - 0xC6, /* AE */ 0xC7, /* C cedilla */ - 0xC8, /* E grave */ 0xC9, /* E acute */ - 0xCA, /* E circumflex */ 0xCB, /* E diaeresis */ - 0xCC, /* I grave */ 0xCD, /* I acute */ - 0xCE, /* I circumflex */ 0xCF, /* I diaeresis */ - 0xD0, /* <capital eth> */ 0xD1, /* N tilde */ - 0xD2, /* O grave */ 0xD3, /* O acute */ - 0xD4, /* O circumflex */ 0xD5, /* O tilde */ - 0xD6, /* O diaeresis */ 0xD8, /* O slash */ - 0xD9, /* U grave */ 0xDA, /* U acute */ - 0xDB, /* U circumflex */ 0xDC, /* U diaeresis */ - 0xDD, /* Y acute */ 0xDE, /* <capital thorn> */ - 0x00 +static const byte upperCaseCharacters[] = { + 0x41, /* A */ 0x42, /* B */ 0x43, /* C */ 0x44, /* D */ + 0x45, /* E */ 0x46, /* F */ 0x47, /* G */ 0x48, /* H */ + 0x49, /* I */ 0x4A, /* J */ 0x4B, /* K */ 0x4C, /* L */ + 0x4D, /* M */ 0x4E, /* N */ 0x4F, /* O */ 0x50, /* P */ + 0x51, /* Q */ 0x52, /* R */ 0x53, /* S */ 0x54, /* T */ + 0x55, /* U */ 0x56, /* V */ 0x57, /* W */ 0x58, /* X */ + 0x59, /* Y */ 0x5A, /* Z */ + 0xC0, /* A grave */ 0xC1, /* A acute */ + 0xC2, /* A circumflex */ 0xC3, /* A tilde */ + 0xC4, /* A diaeresis */ 0xC5, /* A ring */ + 0xC6, /* AE */ 0xC7, /* C cedilla */ + 0xC8, /* E grave */ 0xC9, /* E acute */ + 0xCA, /* E circumflex */ 0xCB, /* E diaeresis */ + 0xCC, /* I grave */ 0xCD, /* I acute */ + 0xCE, /* I circumflex */ 0xCF, /* I diaeresis */ + 0xD0, /* <capital eth> */ 0xD1, /* N tilde */ + 0xD2, /* O grave */ 0xD3, /* O acute */ + 0xD4, /* O circumflex */ 0xD5, /* O tilde */ + 0xD6, /* O diaeresis */ 0xD8, /* O slash */ + 0xD9, /* U grave */ 0xDA, /* U acute */ + 0xDB, /* U circumflex */ 0xDC, /* U diaeresis */ + 0xDD, /* Y acute */ 0xDE, /* <capital thorn> */ + 0x00 }; int isSpace(unsigned int c) { - return (c != '\0' && strchr((const char *)spaceCharacters, c) != 0); + return (c != '\0' && strchr((const char *)spaceCharacters, c) != 0); } int isLower(unsigned int c) { - return (c != '\0' && strchr((const char *)lowerCaseCharacters, c) != 0); + return (c != '\0' && strchr((const char *)lowerCaseCharacters, c) != 0); } int isUpper(unsigned int c) { - return (c != '\0' && strchr((const char *)upperCaseCharacters, c) != 0); + return (c != '\0' && strchr((const char *)upperCaseCharacters, c) != 0); } int isLetter(unsigned int c) { - return(c != '\0' && (isLower(c)? !0: isUpper(c))); + return (c != '\0' && (isLower(c) ? !0 : isUpper(c))); } int toLower(unsigned int c) { - return g_vm->glk_char_to_lower(c); + return g_vm->glk_char_to_lower(c); } int toUpper(unsigned int c) { - return g_vm->glk_char_to_upper(c); + return g_vm->glk_char_to_upper(c); } char *strlow(char str[]) { - char *s; + char *s; - for (s = str; *s; s++) - *s = toLower(*s); - return(str); + for (s = str; *s; s++) + *s = toLower(*s); + return (str); } char *strupp(char str[]) { - char *s; + char *s; - for (s = str; *s; s++) - *s = toUpper(*s); - return(str); + for (s = str; *s; s++) + *s = toUpper(*s); + return (str); } /* The following work on ISO characters */ int isLowerCase(unsigned int c) { - uint i; - for (i = 0; i < strlen((const char *)lowerCaseCharacters); i++) - if (((unsigned int)lowerCaseCharacters[i]) == c) return 1; - return 0; + uint i; + for (i = 0; i < strlen((const char *)lowerCaseCharacters); i++) + if (((unsigned int)lowerCaseCharacters[i]) == c) return 1; + return 0; } int isUpperCase(unsigned int c) { - uint i; - for (i = 0; i < strlen((const char *)upperCaseCharacters); i++) - if (upperCaseCharacters[i] == c) return 1; - return 0; + uint i; + for (i = 0; i < strlen((const char *)upperCaseCharacters); i++) + if (upperCaseCharacters[i] == c) return 1; + return 0; } int isISOLetter(int c) { - return (isLowerCase(c) || isUpperCase(c)); + return (isLowerCase(c) || isUpperCase(c)); } char IsoToLowerCase(int c) { - return (isUpperCase(c)? c + ('a' - 'A'): c); + return (isUpperCase(c) ? c + ('a' - 'A') : c); } char IsoToUpperCase(int c) { - return (isLowerCase(c)? c - ('a' - 'A'): c); + return (isLowerCase(c) ? c - ('a' - 'A') : c); } char *stringLower(char str[]) { - char *s; + char *s; - for (s = str; *s; s++) - *s = IsoToLowerCase(*s); - return(str); + for (s = str; *s; s++) + *s = IsoToLowerCase(*s); + return (str); } char *stringUpper(char str[]) { - char *s; + char *s; - for (s = str; *s; s++) - *s = IsoToUpperCase(*s); - return(str); + for (s = str; *s; s++) + *s = IsoToUpperCase(*s); + return (str); } /*----------------------------------------------------------------------*/ -int compareStrings(char *str1, char *str2) -{ - char *s1 = str1, *s2 = str2; - - while (*s1 != '\0' && *s2 != '\0') { - if (IsoToLowerCase(*s1) < IsoToLowerCase(*s2)) return -1; - if (IsoToLowerCase(*s1) > IsoToLowerCase(*s2)) return 1; - s1++; - s2++; - } - return IsoToLowerCase(*s2) - IsoToLowerCase(*s1); +int compareStrings(char *str1, char *str2) { + char *s1 = str1, *s2 = str2; + + while (*s1 != '\0' && *s2 != '\0') { + if (IsoToLowerCase(*s1) < IsoToLowerCase(*s2)) return -1; + if (IsoToLowerCase(*s1) > IsoToLowerCase(*s2)) return 1; + s1++; + s2++; + } + return IsoToLowerCase(*s2) - IsoToLowerCase(*s1); } @@ -223,65 +219,66 @@ int compareStrings(char *str1, char *str2) */ void toIso(char copy[], /* OUT - Mapped string */ - char original[], /* IN - string to convert */ - int charset) /* IN - the current character set */ -{ -static const unsigned char macMap[256] -= { -0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0A,0x0E,0x0F, -0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, -0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, -0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, -0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, -0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, -0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, -0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, -0xC4,0xC5,0xC7,0xC9,0xD1,0xD6,0xDC,0xE1,0xE0,0xE2,0xE4,0xE3,0xE5,0xE7,0xE9,0xE8, -0xEA,0xEB,0xED,0xEC,0xEE,0xEF,0xF1,0xF3,0xF2,0xF4,0xF6,0xF5,0xFA,0xF9,0xFB,0xFC, -0xB9,0xB0,0xA2,0xA3,0xA7,0xB7,0xB6,0xDF,0xAE,0xA9,0xB2,0xB4,0xA8,0xD7,0xC6,0xD8, -0xA4,0xB1,0xCD,0xCC,0xA5,0xB5,0xF0,0xCA,0xDE,0xFE,0xA6,0xAA,0xBA,0xD4,0xE6,0xF8, -0xBF,0xA1,0xAC,0xCE,0xCF,0xC8,0xD0,0xAB,0xBB,0xCB,0xA0,0xC0,0xC3,0xD5,0xDD,0xFD, -0xAD,0xAF,0xDA,0xD9,0xB8,0xB3,0xF7,0xC2,0xFF,0xBC,0xBD,0xBE,0xC1,0xD2,0xD3,0xDB, -0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, -0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F}; - -static const unsigned char dosMap[256] -= { -0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0A,0x0E,0x0F, -0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, -0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, -0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, -0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, -0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, -0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, -0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, -0xC7,0xFC,0xE9,0xE2,0xE4,0xE0,0xE5,0xE7,0xEA,0xEB,0xE8,0xEF,0xEE,0xEC,0xC4,0xC5, -0xC9,0xE6,0xC6,0xF4,0xF6,0xF2,0xFB,0xF9,0xFF,0xD6,0xDC,0xA2,0xA3,0xA5,0xDE,0xA6, -0xE1,0xED,0xF3,0xFA,0xF1,0xD1,0xAA,0xBA,0xBF,0xC0,0xC1,0xBD,0xBC,0xCF,0xAB,0xBB, -0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, -0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, -0xA1,0xA7,0xAD,0xB3,0xB8,0xB9,0xC3,0xCE,0xD2,0xD3,0xDB,0xDD,0xE3,0xF5,0xF8,0xFD, -0xA9,0xDF,0xC8,0xB6,0xCA,0xA4,0xB5,0xAE,0xD5,0xD0,0xD4,0xF0,0xD7,0xD8,0xCB,0xC2, -0xBE,0xB1,0xD9,0xDA,0xCD,0xCC,0xF7,0xA8,0xB0,0xB7,0xAF,0xAC,0xFE,0xB2,0xB4,0xA0}; - unsigned char *o, *c; - - switch (charset) { - case 0: /* ISO */ - if (copy != original) - (void)strcpy(copy, original); - break; - case 1: /* Mac */ - for (o = (unsigned char *)original, c = (unsigned char *)copy; *o; o++, c++) - *c = macMap[*o]; - *c = '\0'; - break; - - case 2: /* Dos */ - for (o = (unsigned char *)original, c = (unsigned char *)copy; *o; o++, c++) - *c = dosMap[*o]; - *c = '\0'; - break; - } + char original[], /* IN - string to convert */ + int charset) { /* IN - the current character set */ + static const unsigned char macMap[256] + = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0A, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, + 0xC4, 0xC5, 0xC7, 0xC9, 0xD1, 0xD6, 0xDC, 0xE1, 0xE0, 0xE2, 0xE4, 0xE3, 0xE5, 0xE7, 0xE9, 0xE8, + 0xEA, 0xEB, 0xED, 0xEC, 0xEE, 0xEF, 0xF1, 0xF3, 0xF2, 0xF4, 0xF6, 0xF5, 0xFA, 0xF9, 0xFB, 0xFC, + 0xB9, 0xB0, 0xA2, 0xA3, 0xA7, 0xB7, 0xB6, 0xDF, 0xAE, 0xA9, 0xB2, 0xB4, 0xA8, 0xD7, 0xC6, 0xD8, + 0xA4, 0xB1, 0xCD, 0xCC, 0xA5, 0xB5, 0xF0, 0xCA, 0xDE, 0xFE, 0xA6, 0xAA, 0xBA, 0xD4, 0xE6, 0xF8, + 0xBF, 0xA1, 0xAC, 0xCE, 0xCF, 0xC8, 0xD0, 0xAB, 0xBB, 0xCB, 0xA0, 0xC0, 0xC3, 0xD5, 0xDD, 0xFD, + 0xAD, 0xAF, 0xDA, 0xD9, 0xB8, 0xB3, 0xF7, 0xC2, 0xFF, 0xBC, 0xBD, 0xBE, 0xC1, 0xD2, 0xD3, 0xDB, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F + }; + + static const unsigned char dosMap[256] + = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0A, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, + 0xC7, 0xFC, 0xE9, 0xE2, 0xE4, 0xE0, 0xE5, 0xE7, 0xEA, 0xEB, 0xE8, 0xEF, 0xEE, 0xEC, 0xC4, 0xC5, + 0xC9, 0xE6, 0xC6, 0xF4, 0xF6, 0xF2, 0xFB, 0xF9, 0xFF, 0xD6, 0xDC, 0xA2, 0xA3, 0xA5, 0xDE, 0xA6, + 0xE1, 0xED, 0xF3, 0xFA, 0xF1, 0xD1, 0xAA, 0xBA, 0xBF, 0xC0, 0xC1, 0xBD, 0xBC, 0xCF, 0xAB, 0xBB, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, + 0xA1, 0xA7, 0xAD, 0xB3, 0xB8, 0xB9, 0xC3, 0xCE, 0xD2, 0xD3, 0xDB, 0xDD, 0xE3, 0xF5, 0xF8, 0xFD, + 0xA9, 0xDF, 0xC8, 0xB6, 0xCA, 0xA4, 0xB5, 0xAE, 0xD5, 0xD0, 0xD4, 0xF0, 0xD7, 0xD8, 0xCB, 0xC2, + 0xBE, 0xB1, 0xD9, 0xDA, 0xCD, 0xCC, 0xF7, 0xA8, 0xB0, 0xB7, 0xAF, 0xAC, 0xFE, 0xB2, 0xB4, 0xA0 + }; + unsigned char *o, *c; + + switch (charset) { + case 0: /* ISO */ + if (copy != original) + (void)strcpy(copy, original); + break; + case 1: /* Mac */ + for (o = (unsigned char *)original, c = (unsigned char *)copy; *o; o++, c++) + *c = macMap[*o]; + *c = '\0'; + break; + + case 2: /* Dos */ + for (o = (unsigned char *)original, c = (unsigned char *)copy; *o; o++, c++) + *c = dosMap[*o]; + *c = '\0'; + break; + } } /*---------------------------------------------------------------------- @@ -293,8 +290,8 @@ static const unsigned char dosMap[256] */ void fromIso(char copy[], char original[]) { - if (copy != original) - (void)strcpy(copy, original); + if (copy != original) + (void)strcpy(copy, original); } @@ -309,28 +306,28 @@ void fromIso(char copy[], char original[]) { charset - the current character set */ void toNative(char copy[], char original[], int charset) { - toIso(copy, original, charset); - if (NATIVECHARSET != 0) - fromIso(copy, copy); + toIso(copy, original, charset); + if (NATIVECHARSET != 0) + fromIso(copy, copy); } /*======================================================================*/ int littleEndian() { - int x = 1; - return (*(char *)&x == 1); + int x = 1; + return (*(char *)&x == 1); } /*======================================================================*/ char *baseNameStart(char *fullPathName) { - const char *delimiters = "\\>]/:"; - int i; + const char *delimiters = "\\>]/:"; + int i; - for (i = strlen(fullPathName)-1; i > 0; i--) - if (strchr(delimiters, fullPathName[i]) != NULL) - return &fullPathName[i+1]; - return(fullPathName); + for (i = strlen(fullPathName) - 1; i > 0; i--) + if (strchr(delimiters, fullPathName[i]) != NULL) + return &fullPathName[i + 1]; + return (fullPathName); } } // End of namespace Alan3 |