From 99c4646a198a6a49a087e22a7d03af495d044ec6 Mon Sep 17 00:00:00 2001 From: Herb Lewis Date: Wed, 6 Mar 2002 20:38:51 +0000 Subject: fixed the upper/lower case table generation on big-endian machines (tridge, using Herbs console) (This used to be commit e5d80779a384c9a806fc545032330f760d8c11cb) --- source3/lib/util_unistr.c | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) (limited to 'source3/lib') diff --git a/source3/lib/util_unistr.c b/source3/lib/util_unistr.c index 31b557bbfc..45e6e6d87e 100644 --- a/source3/lib/util_unistr.c +++ b/source3/lib/util_unistr.c @@ -51,15 +51,31 @@ void load_case_tables(void) if (!upcase_table) { DEBUG(1,("creating lame upcase table\n")); upcase_table = malloc(0x20000); - for (i=0;i<0x10000;i++) upcase_table[i] = i; - for (i=0;i<256;i++) upcase_table[UCS2_CHAR(i)] = UCS2_CHAR(islower(i)?toupper(i):i); + for (i=0;i<0x10000;i++) { + smb_ucs2_t v; + SSVAL(&v, 0, i); + upcase_table[v] = i; + } + for (i=0;i<256;i++) { + smb_ucs2_t v; + SSVAL(&v, 0, UCS2_CHAR(i)); + upcase_table[v] = UCS2_CHAR(islower(i)?toupper(i):i); + } } if (!lowcase_table) { DEBUG(1,("creating lame lowcase table\n")); lowcase_table = malloc(0x20000); - for (i=0;i<0x10000;i++) lowcase_table[i] = i; - for (i=0;i<256;i++) lowcase_table[UCS2_CHAR(i)] = UCS2_CHAR(isupper(i)?tolower(i):i); + for (i=0;i<0x10000;i++) { + smb_ucs2_t v; + SSVAL(&v, 0, i); + lowcase_table[v] = i; + } + for (i=0;i<256;i++) { + smb_ucs2_t v; + SSVAL(&v, 0, UCS2_CHAR(i)); + lowcase_table[v] = UCS2_CHAR(isupper(i)?tolower(i):i); + } } } @@ -238,7 +254,7 @@ uint32 buffer2_to_uint32(BUFFER2 *str) smb_ucs2_t toupper_w(smb_ucs2_t val) { - return upcase_table[val]; + return upcase_table[SVAL(&val,0)]; } /******************************************************************* @@ -247,7 +263,8 @@ smb_ucs2_t toupper_w(smb_ucs2_t val) smb_ucs2_t tolower_w( smb_ucs2_t val ) { - return lowcase_table[val]; + return lowcase_table[SVAL(&val,0)]; + } /******************************************************************* @@ -255,7 +272,7 @@ determine if a character is lowercase ********************************************************************/ BOOL islower_w(smb_ucs2_t c) { - return upcase_table[c] != c; + return upcase_table[SVAL(&c,0)] != c; } /******************************************************************* @@ -263,7 +280,7 @@ determine if a character is uppercase ********************************************************************/ BOOL isupper_w(smb_ucs2_t c) { - return lowcase_table[c] != c; + return lowcase_table[SVAL(&c,0)] != c; } @@ -272,7 +289,7 @@ determine if a character is valid in a 8.3 name ********************************************************************/ BOOL isvalid83_w(smb_ucs2_t c) { - return valid_table[c] != 0; + return valid_table[SVAL(&c,0)] != 0; } /******************************************************************* -- cgit