Merge pull request #227 from evanmiller/index-lang

Use the language ID from the DB header for indexing
This commit is contained in:
Evan Miller 2020-12-21 09:50:09 -05:00 committed by GitHub
commit a2f34b1748
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 1 deletions

View File

@ -247,6 +247,7 @@ typedef struct {
/* reference count */
int refs;
guint16 code_page;
guint16 lang_id;
} MdbFile;
/* offset to row count on data pages...version dependant */

View File

@ -231,6 +231,11 @@ static MdbHandle *mdb_handle_from_stream(FILE *stream, MdbFileFlags flags) {
RC4_set_key(&rc4_key, 4, (unsigned char *)&tmp_key);
RC4(&rc4_key, mdb->f->jet_version == MDB_VER_JET3 ? 126 : 128, mdb->pg_buf + 0x18);
if (mdb->f->jet_version == MDB_VER_JET3) {
mdb->f->lang_id = mdb_get_int16(mdb->pg_buf, 0x3a);
} else {
mdb->f->lang_id = mdb_get_int16(mdb->pg_buf, 0x6e);
}
mdb->f->code_page = mdb_get_int16(mdb->pg_buf, 0x3c);
mdb->f->db_key = mdb_get_int32(mdb->pg_buf, 0x3e);
if (mdb->f->jet_version == MDB_VER_JET3) {

View File

@ -389,7 +389,7 @@ mdb_index_hash_text(MdbHandle *mdb, char *text, char *hash)
out_ptr[i*2] = text[i];
out_ptr[i*2+1] = 0;
}
if (!(k=DBLCMapStringW(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT), 0),
if (!(k=DBLCMapStringW(MAKELCID(mdb->f->lang_id, 0),
LCMAP_LINGUISTIC_CASING | LCMAP_SORTKEY | NORM_IGNORECASE | NORM_IGNOREKANATYPE | NORM_IGNOREWIDTH,
(WCHAR*)out_ptr, len, (LPBYTE)hash, len*2)))
{