From: Dmitry Chapyshev Date: Sat, 17 Sep 2016 20:03:13 +0000 (+0000) Subject: [TXT2NLS] TransUniDefaultChar has to be received from WideCharTable. TransDefaultChar... X-Git-Tag: ReactOS-0.4.3~347 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=40a137dfa84cab9f63cf6667e83567f2b71aa733 [TXT2NLS] TransUniDefaultChar has to be received from WideCharTable. TransDefaultChar has to be received from MultiByteTable (or from DBCS table) svn path=/trunk/; revision=72708 --- diff --git a/rosapps/applications/devutils/txt2nls/nls.c b/rosapps/applications/devutils/txt2nls/nls.c index 6067736e1d4..02d84bab89a 100644 --- a/rosapps/applications/devutils/txt2nls/nls.c +++ b/rosapps/applications/devutils/txt2nls/nls.c @@ -131,6 +131,21 @@ nls_from_txt(const char *txt_file_path, const char *nls_file_path) /* GLYPHTABLE optionally. We do not leave if it is absent */ glyph_table = txt_get_glyph_table(txt_file_path, header.UniDefaultChar); + if (is_dbcs) + { + /* DBCS codepage */ + uint16_t *table = (uint16_t*)wc_table; + header.TransUniDefaultChar = table[header.UniDefaultChar]; + /* TODO: TransDefaultChar for DBCS codepages */ + } + else + { + /* SBCS codepage */ + uint8_t *table = (uint8_t*)wc_table; + header.TransUniDefaultChar = table[header.UniDefaultChar]; + header.TransDefaultChar = mb_table[LOBYTE(header.DefaultChar)]; + } + #ifdef _NLS_DEBUG_PRINT nls_print_header(&header); nls_print_mb_table(mb_table, header.UniDefaultChar); diff --git a/rosapps/applications/devutils/txt2nls/precomp.h b/rosapps/applications/devutils/txt2nls/precomp.h index d0b383935ee..7c6ee49b337 100644 --- a/rosapps/applications/devutils/txt2nls/precomp.h +++ b/rosapps/applications/devutils/txt2nls/precomp.h @@ -15,6 +15,8 @@ #include #include +#define LOBYTE(w) ((uint8_t)((uint32_t)(w) & 0xff)) + #define MAXIMUM_LEADBYTES 12 typedef struct diff --git a/rosapps/applications/devutils/txt2nls/txt.c b/rosapps/applications/devutils/txt2nls/txt.c index 56acb042e4f..abf4dd2c37c 100644 --- a/rosapps/applications/devutils/txt2nls/txt.c +++ b/rosapps/applications/devutils/txt2nls/txt.c @@ -96,6 +96,7 @@ txt_get_header(const char *file_path, NLS_FILE_HEADER *header) /* Convert string to uint32_t */ val = strtoul(p, &p, 16); header->DefaultChar = (uint16_t)val; + /* By default set value as DefaultChar */ header->TransDefaultChar = (uint16_t)val; /* Skip all spaces after default char */ @@ -104,6 +105,7 @@ txt_get_header(const char *file_path, NLS_FILE_HEADER *header) /* Convert string to uint32_t */ val = strtoul(p, &p, 16); header->UniDefaultChar = (uint16_t)val; + /* By default set value as UniDefaultChar */ header->TransUniDefaultChar = (uint16_t)val; found = 1;