X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3527f29c8769e09d796c547c0c309f8b86407012..4fce94faca2f653e522ed2a6352dff16a5a4eeb0:/src/html/chm.cpp diff --git a/src/html/chm.cpp b/src/html/chm.cpp index bdba0005b2..bf73b40bd6 100644 --- a/src/html/chm.cpp +++ b/src/html/chm.cpp @@ -4,7 +4,7 @@ // Author: Markus Sinner // Copyright: (c) 2003 Herd Software Development // CVS-ID: $Id$ -// Licence: wxWindows Licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #include "wx/wxprec.h" @@ -122,7 +122,7 @@ wxChmTools::wxChmTools(const wxFileName &archive) // strdup() [libmspack-20030726], which would cause crashes in // Unicode build when mb_str() returns temporary buffer m_chmFileNameANSI = strdup((const char*)m_chmFileName.mb_str(wxConvFile)); - + // Open the archive and store it in class: if ( (chmh = chmd->open(chmd, (char*)m_chmFileNameANSI)) ) { @@ -204,7 +204,7 @@ bool wxChmTools::Contains(const wxString& pattern) * * Finds the next file descibed by a pattern in the archive, starting * the file given by second parameter - * + * * @param pattern The file-pattern to search for. May contain '*' and/or '?' * @param startfrom The filename which the search should start after * @returns The full pathname of the found file @@ -377,13 +377,13 @@ protected: /// See wxInputStream virtual size_t OnSysRead(void *buffer, size_t bufsize); /// See wxInputStream - virtual off_t OnSysSeek(off_t seek, wxSeekMode mode); + virtual wxFileOffset OnSysSeek(wxFileOffset seek, wxSeekMode mode); /// See wxInputStream - virtual off_t OnSysTell() const { return m_pos; } + virtual wxFileOffset OnSysTell() const { return m_pos; } private: size_t m_size; - off_t m_pos; + wxFileOffset m_pos; bool m_simulateHHP; char * m_content; @@ -501,7 +501,7 @@ size_t wxChmInputStream::OnSysRead(void *buffer, size_t bufsize) -off_t wxChmInputStream::OnSysSeek(off_t seek, wxSeekMode mode) +wxFileOffset wxChmInputStream::OnSysSeek(wxFileOffset seek, wxSeekMode mode) { wxString mode_str = wxEmptyString; @@ -512,7 +512,7 @@ off_t wxChmInputStream::OnSysSeek(off_t seek, wxSeekMode mode) } m_lasterror = wxSTREAM_NO_ERROR; - off_t nextpos; + wxFileOffset nextpos; switch ( mode ) { @@ -557,11 +557,11 @@ wxChmInputStream::CreateHHPStream() const char *tmp; // Try to open the #SYSTEM-File and create the HHP File out of it - // see http://bonedaddy.net/pabs3/chmspec/0.1/ch05s03.html#SYSTEM - if ( ! m_chm->Contains(_("/#SYSTEM")) ) + // see http://bonedaddy.net/pabs3/chmspec/0.1.2/Internal.html#SYSTEM + if ( ! m_chm->Contains(_T("/#SYSTEM")) ) { #ifdef DEBUG - wxLogDebug("Archive doesnt contain #SYSTEM file"); + wxLogDebug(_("Archive doesnt contain #SYSTEM file")); #endif return; } @@ -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(_T("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();