#ifndef _DATASNIF_HXX #define _DATASNIF_HXX //+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1996. // // File: datasnif.hxx // // Contents: Stream Mime type checking (attempts to guess the MIME type // of a buffer by simple pattern matching). // // Classes: ContentAnalyzer // // Functions: private: // // CContentAnalyzer::SampleData // CContentAnalyzer::IsBMP // CContentAnalyzer::GetDataFormat // CContentAnalyzer::FormatAgreesWithData // CContentAnalyzer::MatchDWordAtOffset // CContentAnalyzer::FindAppFromExt // CContentAnalyzer::CheckTextHeaders // CContentAnalyzer::CheckBinaryHeaders // // public: // ContentAnalyzer::FindMimeFromData // ::FindMimeFromData // // // 05-26-96 AdriaanC (Adriaan Canter) Created // 07-16-96 AdriaanC (Adriaan Canter) Modified // 08-07-96 AdriaanC (Adriaan Canter) Modified // 08-14-96 AdriaanC (Adriaan Canter) Modified // //---------------------------------------------------------------------------- class CContentAnalyzer { private: int _cbSample; int _cbText; int _cbNL; int _cbCR; int _cbFF; int _cbCtrl; int _cbHigh; char* _pBuf; WCHAR* _wzEncoding; WCHAR* _wzMimeType; DWORD _grfFlags; BOOL _fBinary; BOOL _fFoundHTML; // Patterns requiring searching through buffer BOOL _fFoundXBitMap; // BOOL _fFoundMacBinhex; // BOOL _fFoundCDF; BOOL _fFoundTextScriptlet; BOOL _fFoundXML; WCHAR _wzMimeTypeFromExt[SZMIMESIZE_MAX]; private: inline void SampleData(); inline BOOL IsBMP(); inline DWORD GetDataFormat(LPCWSTR); inline BOOL FormatAgreesWithData(DWORD); inline BOOL MatchDWordAtOffset(DWORD, int); inline BOOL FindAppFromExt(LPSTR, LPSTR, DWORD); inline BOOL CheckTextHeaders(); inline BOOL CheckBinaryHeaders(); public: CContentAnalyzer() : _cbSample(0), _cbText(0), _cbNL(0), _cbCR(0), _cbFF(0), _cbCtrl(0), _cbHigh(0), _pBuf(0), _grfFlags(0), _fFoundHTML(FALSE), _fFoundXBitMap(FALSE), _fFoundMacBinhex(FALSE), _fBinary(FALSE), _fFoundCDF(FALSE), _fFoundTextScriptlet(FALSE), _fFoundXML(FALSE) {} LPCWSTR FindMimeFromData(LPCWSTR, char*, int, LPCWSTR, DWORD); BOOL FindMimeFromExt( LPCWSTR wzFileName, CHAR *szFileName, CHAR *szMimeTypeFromExt, DWORD *pdwExtMimeTypeDataFormat, CHAR **ppszFileExt); }; LPCWSTR FindMimeFromData(LPCWSTR pwzFilename, LPVOID pBuffer, DWORD cbBufferSize, LPCWSTR pwzMimeProposed, DWORD grfFlags); // private flags for bad header #endif // _DATASNIF_HXX