103 lines
3.5 KiB
C
103 lines
3.5 KiB
C
|
// Copyright (C) Microsoft Corporation 1996-1997, All Rights reserved.
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#ifndef _SYSTEM_H_
|
||
|
#define _SYSTEM_H_
|
||
|
|
||
|
#include "..\hhctrl\fs.h"
|
||
|
|
||
|
typedef enum {
|
||
|
TAG_DEFAULT_TOC, // needed if no window definitions
|
||
|
TAG_DEFAULT_INDEX, // needed if no window definitions
|
||
|
TAG_DEFAULT_HTML, // needed if no window definitions
|
||
|
TAG_DEFAULT_CAPTION, // needed if no window definitions
|
||
|
TAG_SYSTEM_FLAGS,
|
||
|
TAG_DEFAULT_WINDOW,
|
||
|
TAG_SHORT_NAME, // short name of title (ex. root filename)
|
||
|
TAG_HASH_BINARY_INDEX,
|
||
|
TAG_INFO_TYPES,
|
||
|
TAG_COMPILER_VERSION, // specifies the version of the compiler used
|
||
|
TAG_TIME, // the time the file was compiled
|
||
|
} SYSTEM_TAG_TYPE;
|
||
|
|
||
|
typedef struct {
|
||
|
WORD tag;
|
||
|
WORD cbTag;
|
||
|
} SYSTEM_TAG;
|
||
|
|
||
|
typedef struct {
|
||
|
LCID lcid;
|
||
|
BOOL fDBCS; // Don't use bitflags! Can't assume byte-order
|
||
|
BOOL fFTI; // full-text search enabled
|
||
|
BOOL fKeywordLinks;
|
||
|
BOOL fALinks;
|
||
|
FILETIME FileTime; // title uniqueness (should match .chi file)
|
||
|
} SYSTEM_FLAGS;
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
// CTitleInformation - read in the title informaton file (#SYSTEM) settings for each title
|
||
|
//
|
||
|
|
||
|
class CTitleInformation
|
||
|
{
|
||
|
public:
|
||
|
CTitleInformation( CFileSystem* pFileSystem );
|
||
|
~CTitleInformation();
|
||
|
|
||
|
inline LPCSTR GetShortName() { Init(); return m_pszShortName; }
|
||
|
inline LPCSTR GetTitleName() { Init(); return m_pszTitleName; }
|
||
|
inline FILETIME GetFileTime() { Init(); return m_Settings.FileTime; }
|
||
|
inline LCID GetLanguage() { Init(); return m_Settings.lcid; }
|
||
|
inline BOOL IsKeywordLinks() { Init(); return m_Settings.fKeywordLinks; }
|
||
|
inline BOOL IsAssociativeLinks() { Init(); return m_Settings.fALinks; }
|
||
|
inline BOOL IsFullTextSearch() { Init(); return m_Settings.fFTI; }
|
||
|
inline BOOL IsDoubleByte() { Init(); return m_Settings.fDBCS; }
|
||
|
inline LPCSTR GetCompilerVersion() { Init(); return m_pszCompilerVersion; }
|
||
|
|
||
|
HRESULT Initialize();
|
||
|
|
||
|
private:
|
||
|
inline BOOL Init() { if( !m_bInit ) Initialize(); return m_bInit; }
|
||
|
|
||
|
BOOL m_bInit; // self-initing class
|
||
|
CFileSystem* m_pFileSystem; // title file system handle
|
||
|
SYSTEM_FLAGS m_Settings; // simple title information settings
|
||
|
LPCSTR m_pszShortName; // short title name
|
||
|
LPCSTR m_pszTitleName; // title name
|
||
|
LPCSTR m_pszCompilerVersion; // compiler version
|
||
|
};
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
// CTitleInformation2 - get title informaton without going through the file system
|
||
|
//
|
||
|
|
||
|
class CTitleInformation2
|
||
|
{
|
||
|
public:
|
||
|
CTitleInformation2( LPCTSTR pszPathName );
|
||
|
~CTitleInformation2();
|
||
|
|
||
|
inline LPCTSTR GetShortName() { Init(); return m_pszShortName; }
|
||
|
inline FILETIME GetFileTime() { Init(); return m_FileTime; }
|
||
|
inline LCID GetLanguage() { Init(); return m_lcid; }
|
||
|
|
||
|
HRESULT Initialize();
|
||
|
|
||
|
private:
|
||
|
inline BOOL Init() { if( !m_bInit ) Initialize(); return m_bInit; }
|
||
|
|
||
|
BOOL m_bInit; // self-initing class
|
||
|
LPCTSTR m_pszPathName; // title pathname
|
||
|
LPCTSTR m_pszShortName; // short title name
|
||
|
LCID m_lcid; // language
|
||
|
FILETIME m_FileTime; // file time
|
||
|
};
|
||
|
|
||
|
HRESULT DumpTitleInformation( CFileSystem* pFileSystem );
|
||
|
HRESULT DumpTitleInformation2( CFileSystem* pFileSystem );
|
||
|
|
||
|
#endif // _SYSTEM_H_
|