From: Stefan Csomor Date: Sat, 18 Dec 2004 10:37:12 +0000 (+0000) Subject: Big Endian Fixes, LCID support (must be paired with LCID-Charset support on the ... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/fbd3562061e859115dbcff9407c6080870d0661f Big Endian Fixes, LCID support (must be paired with LCID-Charset support on the .hhp interpretation side) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31053 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/html/chm.cpp b/src/html/chm.cpp index b7dc1ee4f5..c2ba664e27 100644 --- a/src/html/chm.cpp +++ b/src/html/chm.cpp @@ -595,7 +595,9 @@ wxChmInputStream::CreateHHPStream() { // Read #SYSTEM-Code and length i->Read(&code, 2); + code = wxUINT16_SWAP_ON_BE( code ) ; i->Read(&len, 2); + len = wxUINT16_SWAP_ON_BE( len ) ; // data buf = malloc(len); i->Read(buf, len); @@ -625,7 +627,19 @@ wxChmInputStream::CreateHHPStream() out->Write( (const void *) tmp, strlen(tmp)); tmp = NULL; break; - case 4: // STRUCT + case 4: // STRUCT SYSTEM INFO + tmp = NULL ; + if ( len >= 28 ) + { + char *structptr = (char*) buf ; + // LCID at position 0 + wxUint32 dummy = *((wxUint32 *)(structptr+0)) ; + wxUint32 lcid = wxUINT32_SWAP_ON_BE( dummy ) ; + wxString msg ; + msg.Printf("Language=0x%X\r\n",lcid) ; + out->Write(msg.c_str() , msg.Length() ) ; + } + break ; default: tmp=NULL; } @@ -659,7 +673,7 @@ wxChmInputStream::CreateHHPStream() tmp = "Index File=*.hhk\r\n"; out->Write((const void *) tmp, strlen(tmp)); } - + // Now copy the Data from the memory out->SeekO(0, wxFromEnd); m_size = out->TellO();