94 static const WCHAR wszSYSTEM[] = {
'#',
'S',
'Y',
'S',
'T',
'E',
'M',0};
98 WARN(
"Could not open #SYSTEM stream: %08x\n",
hres);
102 IStream_Read(
stream, &ver,
sizeof(ver), &
read);
103 TRACE(
"version is %x\n", ver);
106 buf_size = 8*
sizeof(
DWORD);
113 if(
entry.len > buf_size)
183 static const WCHAR wszIVB[] = {
'#',
'I',
'V',
'B',0};
187 WARN(
"Could not open #IVB stream: %08x\n",
hres);
194 IStream_Release(ivb_stream);
200 IStream_Release(ivb_stream);
228 static const WCHAR periodW[] = {
'.',0};
245 IStream_Release(pStream);
266 if (unhandled_params)
267 FIXME(
"Unsupported fsValidMembers fields: 0x%x\n", unhandled_params);
270 if (
dst->cbStruct == 0)
355 static const WCHAR toc_extW[] = {
'h',
'h',
'c',0};
356 static const WCHAR index_extW[] = {
'h',
'h',
'k',0};
357 static const WCHAR windowsW[] = {
'#',
'W',
'I',
'N',
'D',
'O',
'W',
'S',0};
364 BOOL fUniCodeStrings;
366 DWORD fsValidMembers;
367 DWORD fsWinProperties;
377 DWORD hwndNavigation;
385 DWORD fsToolBarFlags;
401 memset(&wintype, 0,
sizeof(wintype));
405 hr = IStorage_OpenStream(pStorage, windowsW,
NULL,
STGM_READ, 0, &pStream);
411 hr = IStream_Seek(pStream, liOffset, STREAM_SEEK_SET,
NULL);
415 hr = IStream_Read(pStream, &file_wintype,
sizeof(file_wintype), &cbRead);
423 wintype.
dwStyles = file_wintype.dwStyles;
427 wintype.
iNavWidth = file_wintype.iNavWidth;
428 wintype.
rcHTML = file_wintype.rcHTML;
436 wintype.
tabpos = file_wintype.tabpos;
437 wintype.
idNotify = file_wintype.idNotify;
439 wintype.
cHistory = file_wintype.cHistory;
444 wintype.
rcMinSize = file_wintype.rcMinSize;
450 static const WCHAR defaultwinW[] = {
'd',
'e',
'f',
'a',
'u',
'l',
't',
'w',
'i',
'n',
'\0'};
464 if (!
info->WinType.pszCaption)
470 if (!
info->WinType.pszFile)
472 if (!
info->WinType.pszToc)
474 if (!
info->WinType.pszIndex)
482 IStream_Release(pStream);
489 static const WCHAR its_schema[] = {
'i',
't',
's',
':'};
490 static const WCHAR msits_schema[] = {
'm',
's',
'-',
'i',
't',
's',
':'};
491 static const WCHAR mk_schema[] = {
'm',
'k',
':',
'@',
'M',
'S',
'I',
'T',
'S',
't',
'o',
'r',
'e',
':'};
548 if(parent_chm || chm_file->
chm_file) {
549 hres = IITStorage_StgOpenStorage(
info->pITStorage,
553 WARN(
"Could not open storage: %08x\n",
hres);
558 IStorage_AddRef(
info->pStorage);
564 WARN(
"Could not open stream: %08x\n",
hres);
585 WARN(
"Could not open storage to obtain the title for a document.\n");
593 WARN(
"Could not open stream: %08x\n",
hres);
620 IStream_Release(
str);
622 return document_title;
631 static const WCHAR wszSTRINGS[] = {
'#',
'S',
'T',
'R',
'I',
'N',
'G',
'S',0};
633 if (!(
ret = heap_alloc_zero(
sizeof(
CHMInfo))))
643 &IID_IITStorage, (
void **) &
ret->pITStorage) ;
645 WARN(
"Could not create ITStorage: %08x\n",
hres);
649 hres = IITStorage_StgOpenStorage(
ret->pITStorage, szFile,
NULL,
652 WARN(
"Could not open storage: %08x\n",
hres);
656 &
ret->strings_stream);
658 WARN(
"Could not open #STRINGS stream: %08x\n",
hres);
663 WARN(
"Could not read #SYSTEM\n");
_STLP_MOVE_TO_STD_NAMESPACE _OutputIter merge(_InputIter1 __first1, _InputIter1 __last1, _InputIter2 __first2, _InputIter2 __last2, _OutputIter __result)
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
static void * heap_realloc(void *mem, size_t len)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static WCHAR * strdupW(const WCHAR *src)
CHMInfo * CloseCHM(CHMInfo *chm)
LPWSTR FindContextAlias(CHMInfo *chm, DWORD index)
static void wintype_free(HH_WINTYPEW *wintype)
WCHAR * GetDocumentTitle(CHMInfo *info, LPCWSTR document)
static WCHAR * ConvertChmString(HHInfo *info, DWORD id)
LPCWSTR skip_schema(LPCWSTR url)
static BOOL ReadChmSystem(CHMInfo *chm)
CHMInfo * OpenCHM(LPCWSTR szFile)
void SetChmPath(ChmPath *file, LPCWSTR base_file, LPCWSTR path)
static LPCSTR GetChmString(CHMInfo *chm, DWORD offset)
static WCHAR * FindHTMLHelpSetting(HHInfo *info, const WCHAR *extW)
void MergeChmProperties(HH_WINTYPEW *src, HHInfo *info, BOOL override)
BOOL LoadWinTypeFromCHM(HHInfo *info)
IStream * GetChmStream(CHMInfo *info, LPCWSTR parent_chm, ChmPath *chm_file)
static WCHAR * MergeChmString(LPCWSTR src, WCHAR **dst)
static void strbuf_init(strbuf *buf)
static const WCHAR empty[]
static WCHAR * strdupAtoW(const char *str)
static __inline const char * debugstr_an(const char *s, int n)
#define _strnicmp(_String1, _String2, _MaxCount)
static LPWSTR HH_LoadString(DWORD dwID)
void strbuf_free(strbuf_t *buf)
BOOL next_node(stream_t *stream, strbuf_t *buf)
BOOL next_content(stream_t *stream, strbuf_t *buf)
void strbuf_zero(strbuf_t *buf)
void stream_init(stream_t *stream, IStream *str)
void get_node_name(strbuf_t *node, strbuf_t *name)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static LPWSTR strdupnAtoW(LPCSTR str, LONG lenA)
#define HHWIN_PARAM_CUR_TAB
#define HHWIN_PARAM_EXSTYLES
struct tagHH_WINTYPEW HH_WINTYPEW
#define HHWIN_PARAM_TB_FLAGS
#define HHWIN_PARAM_NAV_WIDTH
#define HHWIN_PARAM_TABPOS
#define HHWIN_PARAM_TABORDER
#define HHWIN_PARAM_INFOTYPES
#define HHWIN_PARAM_SHOWSTATE
#define HHWIN_PARAM_PROPERTIES
#define HHWIN_PROP_TRI_PANE
#define HHWIN_PARAM_EXPANSION
#define HHWIN_PARAM_STYLES
#define HHWIN_PARAM_HISTORY_COUNT
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
static const WCHAR separatorW[]
#define STGM_SHARE_DENY_WRITE
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
BYTE tabOrder[HH_MAX_TABS+1]
#define LOCALE_IDEFAULTANSICODEPAGE