223{
225 BINDINFO bindinfo;
233
236
239 return INET_E_USE_DEFAULT_PROTOCOLHANDLER;
240
241 memset(&bindinfo, 0,
sizeof(bindinfo));
242 bindinfo.cbSize = sizeof(BINDINFO);
243 hres = IInternetBindInfo_GetBindInfo(pOIBindInfo, &
bindf, &bindinfo);
245 WARN(
"GetBindInfo failed: %08lx\n",
hres);
247 }
248
250
256 WARN(
"UrlUnescape failed: %08lx\n",
hres);
259 }
260
263 WARN(
"invalid url\n");
266 }
267
270 if(!chm_file) {
271 WARN(
"Could not open chm file\n");
274 }
275
278
279 if(*object_name != '/' && *object_name != '\\') {
281 *object_name = '/';
283 }
284
285 if(object_name[
len-1] ==
'/')
286 object_name[--
len] = 0;
287
288 for(
p=object_name; *
p;
p++) {
291 }
292
294
296
297 memset(&chm_object, 0,
sizeof(chm_object));
300 WARN(
"Could not resolve chm object\n");
304 }
305
306 IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_SENDINGREQUEST,
308
309
313 IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_MIMETYPEAVAILABLE,
mime);
315 }
316
318 This->chm_file = chm_file;
319 This->chm_object = chm_object;
320
321 hres = IInternetProtocolSink_ReportData(pOIProtSink,
322 BSCF_FIRSTDATANOTIFICATION|BSCF_DATAFULLYAVAILABLE,
323 chm_object.length, chm_object.length);
325 WARN(
"ReportData failed: %08lx\n",
hres);
328 }
329
330 hres = IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_BEGINDOWNLOADDATA,
NULL);
331
333}
int chm_resolve_object(struct chmFile *h, const WCHAR *objPath, struct chmUnitInfo *ui)
struct chmFile * chm_openW(const WCHAR *filename)
void chm_close(struct chmFile *h)
#define CHM_RESOLVE_SUCCESS
void WINAPI CoTaskMemFree(void *ptr)
static HRESULT report_result(MimeHtmlProtocol *protocol, HRESULT result)
static void remove_dot_segments(WCHAR *path)
static LPCWSTR skip_schema(LPCWSTR url)
HRESULT WINAPI UrlUnescapeW(WCHAR *url, WCHAR *unescaped, DWORD *unescaped_len, DWORD flags)
_ACRTIMP wchar_t *__cdecl wcsstr(const wchar_t *, const wchar_t *)
HRESULT WINAPI FindMimeFromData(LPBC pBC, LPCWSTR pwzUrl, LPVOID pBuffer, DWORD cbSize, LPCWSTR pwzMimeProposed, DWORD dwMimeFlags, LPWSTR *ppwzMimeOut, DWORD dwReserved)
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
#define URL_UNESCAPE_INPLACE
void WINAPI ReleaseBindInfo(BINDINFO *pbindinfo)
#define STG_E_FILENOTFOUND