/* 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);
#include <ctype.h>
#include <memory.h>
+#define LOBYTE(w) ((uint8_t)((uint32_t)(w) & 0xff))
+
#define MAXIMUM_LEADBYTES 12
typedef struct
/* 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 */
/* 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;