[ros-diffs] [dchapyshev] 39900: - Sync comctl32, cryptui, mlang, msctf, netapi32, ole32, urlmon with Wine head

dchapyshev at svn.reactos.org dchapyshev at svn.reactos.org
Sat Mar 7 09:34:56 CET 2009


Author: dchapyshev
Date: Sat Mar  7 11:34:55 2009
New Revision: 39900

URL: http://svn.reactos.org/svn/reactos?rev=39900&view=rev
Log:
- Sync comctl32, cryptui, mlang, msctf, netapi32, ole32, urlmon with Wine head

Added:
    trunk/reactos/dll/win32/urlmon/gopher.c   (with props)
Modified:
    trunk/reactos/dll/win32/comctl32/status.c
    trunk/reactos/dll/win32/comctl32/treeview.c
    trunk/reactos/dll/win32/cryptui/main.c
    trunk/reactos/dll/win32/mlang/mlang.c
    trunk/reactos/dll/win32/msctf/msctf.c
    trunk/reactos/dll/win32/netapi32/access.c
    trunk/reactos/dll/win32/netapi32/nbt.c
    trunk/reactos/dll/win32/netapi32/netbios.c
    trunk/reactos/dll/win32/netapi32/wksta.c
    trunk/reactos/dll/win32/ole32/ole2.c
    trunk/reactos/dll/win32/urlmon/umon.c
    trunk/reactos/dll/win32/urlmon/umstream.c
    trunk/reactos/dll/win32/urlmon/urlmon.rbuild
    trunk/reactos/dll/win32/urlmon/urlmon_main.c
    trunk/reactos/dll/win32/urlmon/urlmon_main.h

Modified: trunk/reactos/dll/win32/comctl32/status.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/status.c?rev=39900&r1=39899&r2=39900&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/status.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/status.c [iso-8859-1] Sat Mar  7 11:34:55 2009
@@ -762,6 +762,7 @@
         part->text = (LPWSTR)text;
     } else {
 	LPWSTR ntext;
+	WCHAR  *idx;
 
 	if (text && !isW) {
 	    LPCSTR atxt = (LPCSTR)text;
@@ -774,6 +775,16 @@
 	    if (!ntext) return FALSE;
 	    strcpyW (ntext, text);
 	} else ntext = 0;
+
+	/* replace nonprintable characters with spaces */
+	if (ntext) {
+	    idx = ntext;
+	    while (*idx) {
+	        if(!isprintW(*idx))
+	            *idx = ' ';
+	        idx++;
+	    }
+	}
 
 	/* check if text is unchanged -> no need to redraw */
 	if (text) {

Modified: trunk/reactos/dll/win32/comctl32/treeview.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/treeview.c?rev=39900&r1=39899&r2=39900&view=diff
==============================================================================
--- trunk/reactos/dll/win32/comctl32/treeview.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/treeview.c [iso-8859-1] Sat Mar  7 11:34:55 2009
@@ -2306,11 +2306,13 @@
 		 & (TVS_LINESATROOT|TVS_HASLINES|TVS_HASBUTTONS))
 		> TVS_LINESATROOT);
     HBRUSH hbr, hbrOld;
+    COLORREF clrBk = infoPtr->clrBk == -1 ? GetSysColor(COLOR_WINDOW):
+                                            infoPtr->clrBk;
 
     if (!lar && item->iLevel == 0)
 	return;
 
-    hbr    = CreateSolidBrush(infoPtr->clrBk);
+    hbr    = CreateSolidBrush(clrBk);
     hbrOld = SelectObject(hdc, hbr);
     
     centerx = (item->linesOffset + item->stateOffset) / 2;
@@ -2423,8 +2425,8 @@
                     {
                         Rectangle(hdc, centerx - 1, centery - plussize + 1,
                         centerx + 2, centery + plussize);
-                        SetPixel(hdc, centerx - 1, centery, infoPtr->clrBk);
-                        SetPixel(hdc, centerx + 1, centery, infoPtr->clrBk);
+                        SetPixel(hdc, centerx - 1, centery, clrBk);
+                        SetPixel(hdc, centerx + 1, centery, clrBk);
                     }
                 }
             }
@@ -2472,7 +2474,8 @@
     }
     else
     {
-	nmcdhdr.clrTextBk = infoPtr->clrBk;
+	nmcdhdr.clrTextBk = infoPtr->clrBk == -1 ? GetSysColor(COLOR_WINDOW):
+                                                   infoPtr->clrBk;
 	if ((infoPtr->dwStyle & TVS_TRACKSELECT) && (wineItem == infoPtr->hotItem))
 	    nmcdhdr.clrText = comctl32_color.clrHighlight;
 	else if (infoPtr->clrText == -1)
@@ -2782,9 +2785,12 @@
 static LRESULT
 TREEVIEW_EraseBackground(const TREEVIEW_INFO *infoPtr, HDC hDC)
 {
-    HBRUSH hBrush = CreateSolidBrush(infoPtr->clrBk);
+    HBRUSH hBrush;
+    COLORREF clrBk = infoPtr->clrBk == -1 ? GetSysColor(COLOR_WINDOW):
+                                            infoPtr->clrBk;
     RECT rect;
 
+    hBrush =  CreateSolidBrush(clrBk);
     GetClientRect(infoPtr->hwnd, &rect);
     FillRect(hDC, &rect, hBrush);
     DeleteObject(hBrush);
@@ -4942,7 +4948,7 @@
 
     infoPtr->scrollX = 0;
 
-    infoPtr->clrBk = GetSysColor(COLOR_WINDOW);
+    infoPtr->clrBk   = -1; /* use system color */
     infoPtr->clrText = -1;	/* use system color */
     infoPtr->clrLine = RGB(128, 128, 128);
     infoPtr->clrInsertMark = GetSysColor(COLOR_BTNTEXT);

Modified: trunk/reactos/dll/win32/cryptui/main.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/cryptui/main.c?rev=39900&r1=39899&r2=39900&view=diff
==============================================================================
--- trunk/reactos/dll/win32/cryptui/main.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/cryptui/main.c [iso-8859-1] Sat Mar  7 11:34:55 2009
@@ -3236,8 +3236,7 @@
         name = HeapAlloc(GetProcessHeap(), 0, cb);
         if (name)
         {
-            if (!CertGetCertificateContextProperty(cert, prop, (LPBYTE)name,
-             &cb))
+            if (!CertGetCertificateContextProperty(cert, prop, name, &cb))
             {
                 HeapFree(GetProcessHeap(), 0, name);
                 name = NULL;
@@ -4460,7 +4459,7 @@
 
         if (CryptDecodeObjectEx(X509_ASN_ENCODING, szOID_BASIC_CONSTRAINTS,
          ext->Value.pbData, ext->Value.cbData, CRYPT_DECODE_ALLOC_FLAG,
-         NULL, (LPBYTE)&info, &size))
+         NULL, &info, &size))
         {
             if (info->SubjectType.cbData == 1)
                 isCA = info->SubjectType.pbData[0] & CERT_CA_SUBJECT_FLAG;

Modified: trunk/reactos/dll/win32/mlang/mlang.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mlang/mlang.c?rev=39900&r1=39899&r2=39900&view=diff
==============================================================================
--- trunk/reactos/dll/win32/mlang/mlang.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/mlang/mlang.c [iso-8859-1] Sat Mar  7 11:34:55 2009
@@ -1495,7 +1495,7 @@
 
 static inline EnumCodePage_impl *impl_from_IEnumCodePage( IEnumCodePage *iface )
 {
-    return (EnumCodePage_impl *)CONTAINING_RECORD( iface, EnumCodePage_impl, vtbl_IEnumCodePage );
+    return CONTAINING_RECORD( iface, EnumCodePage_impl, vtbl_IEnumCodePage );
 }
 
 static HRESULT WINAPI fnIEnumCodePage_QueryInterface(
@@ -1688,7 +1688,7 @@
 
 static inline EnumScript_impl *impl_from_IEnumScript( IEnumScript *iface )
 {
-    return (EnumScript_impl *)CONTAINING_RECORD( iface, EnumScript_impl, vtbl_IEnumScript );
+    return CONTAINING_RECORD( iface, EnumScript_impl, vtbl_IEnumScript );
 }
 
 static HRESULT WINAPI fnIEnumScript_QueryInterface(
@@ -1850,7 +1850,7 @@
 
 static inline MLang_impl *impl_from_IMLangFontLink( IMLangFontLink *iface )
 {
-    return (MLang_impl *)CONTAINING_RECORD( iface, MLang_impl, vtbl_IMLangFontLink );
+    return CONTAINING_RECORD( iface, MLang_impl, vtbl_IMLangFontLink );
 }
 
 static HRESULT WINAPI fnIMLangFontLink_QueryInterface(
@@ -1954,7 +1954,7 @@
 
     TRACE("(%p) Seeking %u\n",This, uCodePage);
 
-    rc = TranslateCharsetInfo((DWORD*)uCodePage, &cs, TCI_SRCCODEPAGE);
+    rc = TranslateCharsetInfo((DWORD*)(DWORD_PTR)uCodePage, &cs, TCI_SRCCODEPAGE);
 
     if (rc)
     {
@@ -1985,8 +1985,9 @@
 
     *puCodePage = 0x00000000;
 
-    rc = TranslateCharsetInfo((DWORD*)uDefaultCodePage, &cs, TCI_SRCCODEPAGE);
-  
+    rc = TranslateCharsetInfo((DWORD*)(DWORD_PTR)uDefaultCodePage, &cs,
+                              TCI_SRCCODEPAGE);
+
     if (rc && (dwCodePages & cs.fs.fsCsb[0]))
     {
         TRACE("Found Default Codepage\n");
@@ -2087,7 +2088,7 @@
 
 static inline MLang_impl *impl_from_IMultiLanguage( IMultiLanguage *iface )
 {
-    return (MLang_impl *)CONTAINING_RECORD( iface, MLang_impl, vtbl_IMultiLanguage );
+    return CONTAINING_RECORD( iface, MLang_impl, vtbl_IMultiLanguage );
 }
 
 static HRESULT WINAPI fnIMultiLanguage_QueryInterface(
@@ -2280,7 +2281,7 @@
 
 static inline EnumRfc1766_impl *impl_from_IEnumRfc1766( IEnumRfc1766 *iface )
 {
-    return (EnumRfc1766_impl *)CONTAINING_RECORD( iface, EnumRfc1766_impl, vtbl_IEnumRfc1766 );
+    return CONTAINING_RECORD( iface, EnumRfc1766_impl, vtbl_IEnumRfc1766 );
 }
 
 static HRESULT WINAPI fnIEnumRfc1766_QueryInterface(
@@ -2550,7 +2551,7 @@
 
 static inline MLang_impl *impl_from_IMultiLanguage3( IMultiLanguage3 *iface )
 {
-    return (MLang_impl *)CONTAINING_RECORD( iface, MLang_impl, vtbl_IMultiLanguage3 );
+    return CONTAINING_RECORD( iface, MLang_impl, vtbl_IMultiLanguage3 );
 }
 
 static HRESULT WINAPI fnIMultiLanguage2_QueryInterface(
@@ -2592,7 +2593,8 @@
 {
     CHARSETINFO csi;
 
-    if (TranslateCharsetInfo((DWORD *)ml_data->family_codepage, &csi, TCI_SRCCODEPAGE))
+    if (TranslateCharsetInfo((DWORD*)(DWORD_PTR)ml_data->family_codepage, &csi,
+                             TCI_SRCCODEPAGE))
         mime_cp_info->bGDICharset = csi.ciCharset;
     else
         mime_cp_info->bGDICharset = DEFAULT_CHARSET;
@@ -3169,7 +3171,7 @@
 
 static inline MLang_impl *impl_from_IMLangFontLink2( IMLangFontLink2 *iface )
 {
-    return (MLang_impl *)CONTAINING_RECORD( iface, MLang_impl, vtbl_IMLangFontLink2 );
+    return CONTAINING_RECORD( iface, MLang_impl, vtbl_IMLangFontLink2 );
 }
 
 static HRESULT WINAPI fnIMLangFontLink2_QueryInterface(
@@ -3323,7 +3325,7 @@
 
 static inline MLang_impl *impl_from_IMLangLineBreakConsole( IMLangLineBreakConsole *iface )
 {
-    return (MLang_impl *)CONTAINING_RECORD( iface, MLang_impl, vtbl_IMLangLineBreakConsole );
+    return CONTAINING_RECORD( iface, MLang_impl, vtbl_IMLangLineBreakConsole );
 }
 
 static HRESULT WINAPI fnIMLangLineBreakConsole_QueryInterface(

Modified: trunk/reactos/dll/win32/msctf/msctf.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msctf/msctf.c?rev=39900&r1=39899&r2=39900&view=diff
==============================================================================
--- trunk/reactos/dll/win32/msctf/msctf.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msctf/msctf.c [iso-8859-1] Sat Mar  7 11:34:55 2009
@@ -148,7 +148,7 @@
     This->vtbl = &ClassFactoryVtbl;
     This->ref = 1;
     This->ctor = ctor;
-    *ppvOut = (LPVOID)This;
+    *ppvOut = This;
     TRACE("Created class factory %p\n", This);
     MSCTF_refCount++;
     return S_OK;
@@ -217,7 +217,7 @@
 HRESULT WINAPI TF_GetThreadMgr(ITfThreadMgr **pptim)
 {
     TRACE("\n");
-    *pptim = (ITfThreadMgr*)TlsGetValue(tlsIndex);
+    *pptim = TlsGetValue(tlsIndex);
 
     if (*pptim)
         ITfThreadMgr_AddRef(*pptim);

Modified: trunk/reactos/dll/win32/netapi32/access.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/netapi32/access.c?rev=39900&r1=39899&r2=39900&view=diff
==============================================================================
--- trunk/reactos/dll/win32/netapi32/access.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/netapi32/access.c [iso-8859-1] Sat Mar  7 11:34:55 2009
@@ -658,7 +658,7 @@
                              admin_size - sizeof(NET_DISPLAY_USER) +
                              guest_size - sizeof(NET_DISPLAY_USER),
                              SortedBuffer);
-        inf = (PNET_DISPLAY_USER) *SortedBuffer;
+        inf = *SortedBuffer;
         str = (LPWSTR) ((PBYTE) inf + sizeof(NET_DISPLAY_USER) * records);
         inf->usri1_name = str;
         str = (LPWSTR) (
@@ -826,8 +826,7 @@
             }
 
             umi = (USER_MODALS_INFO_2 *) *pbuffer;
-            umi->usrmod2_domain_id = (PSID)(*pbuffer +
-                sizeof(USER_MODALS_INFO_2));
+            umi->usrmod2_domain_id = *pbuffer + sizeof(USER_MODALS_INFO_2);
             umi->usrmod2_domain_name = (LPWSTR)(*pbuffer +
                 sizeof(USER_MODALS_INFO_2) + GetLengthSid(domainIdentifier));
 

Modified: trunk/reactos/dll/win32/netapi32/nbt.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/netapi32/nbt.c?rev=39900&r1=39899&r2=39900&view=diff
==============================================================================
--- trunk/reactos/dll/win32/netapi32/nbt.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/netapi32/nbt.c [iso-8859-1] Sat Mar  7 11:34:55 2009
@@ -400,7 +400,7 @@
 static BOOL NetBTFindNameAnswerCallback(void *pVoid, WORD answerCount,
  WORD answerIndex, PUCHAR rData, WORD rLen)
 {
-    NetBTNameQueryData *queryData = (NetBTNameQueryData *)pVoid;
+    NetBTNameQueryData *queryData = pVoid;
     BOOL ret;
 
     if (queryData)
@@ -696,7 +696,7 @@
 static BOOL NetBTNodeStatusAnswerCallback(void *pVoid, WORD answerCount,
  WORD answerIndex, PUCHAR rData, WORD rLen)
 {
-    NetBTNodeQueryData *data = (NetBTNodeQueryData *)pVoid;
+    NetBTNodeQueryData *data = pVoid;
 
     if (data && !data->gotResponse && rData && rLen >= 1)
     {
@@ -811,7 +811,7 @@
 
 static UCHAR NetBTAstat(void *adapt, PNCB ncb)
 {
-    NetBTAdapter *adapter = (NetBTAdapter *)adapt;
+    NetBTAdapter *adapter = adapt;
     UCHAR ret;
 
     TRACE("adapt %p, NCB %p\n", adapt, ncb);
@@ -856,7 +856,7 @@
 
 static UCHAR NetBTFindName(void *adapt, PNCB ncb)
 {
-    NetBTAdapter *adapter = (NetBTAdapter *)adapt;
+    NetBTAdapter *adapter = adapt;
     UCHAR ret;
     const NBNameCacheEntry *cacheEntry = NULL;
     PFIND_NAME_HEADER foundName;
@@ -973,7 +973,7 @@
 
 static UCHAR NetBTCall(void *adapt, PNCB ncb, void **sess)
 {
-    NetBTAdapter *adapter = (NetBTAdapter *)adapt;
+    NetBTAdapter *adapter = adapt;
     UCHAR ret;
     const NBNameCacheEntry *cacheEntry = NULL;
 
@@ -1074,8 +1074,8 @@
  */
 static UCHAR NetBTSend(void *adapt, void *sess, PNCB ncb)
 {
-    NetBTAdapter *adapter = (NetBTAdapter *)adapt;
-    NetBTSession *session = (NetBTSession *)sess;
+    NetBTAdapter *adapter = adapt;
+    NetBTSession *session = sess;
     UCHAR buffer[NBSS_HDRSIZE], ret;
     int r;
     WSABUF wsaBufs[2];
@@ -1123,8 +1123,8 @@
 
 static UCHAR NetBTRecv(void *adapt, void *sess, PNCB ncb)
 {
-    NetBTAdapter *adapter = (NetBTAdapter *)adapt;
-    NetBTSession *session = (NetBTSession *)sess;
+    NetBTAdapter *adapter = adapt;
+    NetBTSession *session = sess;
     UCHAR buffer[NBSS_HDRSIZE], ret;
     int r;
     WSABUF wsaBufs[2];
@@ -1231,7 +1231,7 @@
 
 static UCHAR NetBTHangup(void *adapt, void *sess)
 {
-    NetBTSession *session = (NetBTSession *)sess;
+    NetBTSession *session = sess;
 
     TRACE("adapt %p, session %p\n", adapt, session);
 
@@ -1255,7 +1255,7 @@
     TRACE("adapt %p\n", adapt);
     if (adapt)
     {
-        NetBTAdapter *adapter = (NetBTAdapter *)adapt;
+        NetBTAdapter *adapter = adapt;
 
         if (adapter->nameCache)
             NBNameCacheDestroy(adapter->nameCache);
@@ -1310,7 +1310,7 @@
  ULONG transport, const NetBIOSAdapterImpl *data, void *closure)
 {
     BOOL ret;
-    PMIB_IPADDRTABLE table = (PMIB_IPADDRTABLE)closure;
+    PMIB_IPADDRTABLE table = closure;
 
     if (table && data)
     {
@@ -1319,7 +1319,7 @@
         ret = FALSE;
         for (ndx = 0; !ret && ndx < table->dwNumEntries; ndx++)
         {
-            const NetBTAdapter *adapter = (const NetBTAdapter *)data->data;
+            const NetBTAdapter *adapter = data->data;
 
             if (table->table[ndx].dwIndex == adapter->ipr.dwIndex)
             {

Modified: trunk/reactos/dll/win32/netapi32/netbios.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/netapi32/netbios.c?rev=39900&r1=39899&r2=39900&view=diff
==============================================================================
--- trunk/reactos/dll/win32/netapi32/netbios.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/netapi32/netbios.c [iso-8859-1] Sat Mar  7 11:34:55 2009
@@ -762,7 +762,7 @@
 
 static DWORD WINAPI nbCmdThread(LPVOID lpVoid)
 {
-    PNCB ncb = (PNCB)lpVoid;
+    PNCB ncb = lpVoid;
 
     if (ncb)
     {

Modified: trunk/reactos/dll/win32/netapi32/wksta.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/netapi32/wksta.c?rev=39900&r1=39899&r2=39900&view=diff
==============================================================================
--- trunk/reactos/dll/win32/netapi32/wksta.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/netapi32/wksta.c [iso-8859-1] Sat Mar  7 11:34:55 2009
@@ -157,8 +157,7 @@
  ULONG transport, const NetBIOSAdapterImpl *data, void *closure)
 {
     BOOL ret;
-    struct WkstaTransportEnumData *enumData = (struct WkstaTransportEnumData *)
-     closure;
+    struct WkstaTransportEnumData *enumData = closure;
 
     if (enumData && enumData->pbuf)
     {

Modified: trunk/reactos/dll/win32/ole32/ole2.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/ole2.c?rev=39900&r1=39899&r2=39900&view=diff
==============================================================================
--- trunk/reactos/dll/win32/ole32/ole2.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ole32/ole2.c [iso-8859-1] Sat Mar  7 11:34:55 2009
@@ -2642,6 +2642,7 @@
     case VT_BSTR:
     case VT_ERROR:
     case VT_BOOL:
+    case VT_DECIMAL:
     case VT_UI1:
     case VT_UI2:
     case VT_UI4:
@@ -2712,6 +2713,7 @@
     case VT_DATE:
     case VT_ERROR:
     case VT_BOOL:
+    case VT_DECIMAL:
     case VT_UI1:
     case VT_UI2:
     case VT_UI4:
@@ -2799,7 +2801,7 @@
     ULONG len;
     HRESULT hr;
 
-    TRACE("(%p, %p)\n", pvarDest, pvarSrc);
+    TRACE("(%p, %p vt %04x)\n", pvarDest, pvarSrc, pvarSrc->vt);
 
     hr = PROPVARIANT_ValidateType(pvarSrc->vt);
     if (FAILED(hr))
@@ -2817,6 +2819,7 @@
     case VT_I2:
     case VT_UI2:
     case VT_BOOL:
+    case VT_DECIMAL:
     case VT_I4:
     case VT_UI4:
     case VT_R4:

Added: trunk/reactos/dll/win32/urlmon/gopher.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/gopher.c?rev=39900&view=auto
==============================================================================
--- trunk/reactos/dll/win32/urlmon/gopher.c (added)
+++ trunk/reactos/dll/win32/urlmon/gopher.c [iso-8859-1] Sat Mar  7 11:34:55 2009
@@ -1,0 +1,299 @@
+/*
+ * Copyright 2009 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "urlmon_main.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(urlmon);
+
+typedef struct {
+    Protocol base;
+
+    const IInternetProtocolVtbl  *lpInternetProtocolVtbl;
+    const IInternetPriorityVtbl  *lpInternetPriorityVtbl;
+
+    LONG ref;
+} GopherProtocol;
+
+#define PROTOCOL(x)  ((IInternetProtocol*)  &(x)->lpInternetProtocolVtbl)
+#define PRIORITY(x)  ((IInternetPriority*)  &(x)->lpInternetPriorityVtbl)
+
+#define ASYNCPROTOCOL_THIS(iface) DEFINE_THIS2(GopherProtocol, base, iface)
+
+static HRESULT GopherProtocol_open_request(Protocol *prot, LPCWSTR url, DWORD request_flags,
+                                        IInternetBindInfo *bind_info)
+{
+    GopherProtocol *This = ASYNCPROTOCOL_THIS(prot);
+
+    This->base.request = InternetOpenUrlW(This->base.internet, url, NULL, 0,
+            request_flags, (DWORD_PTR)&This->base);
+    if (!This->base.request && GetLastError() != ERROR_IO_PENDING) {
+        WARN("InternetOpenUrl failed: %d\n", GetLastError());
+        return INET_E_RESOURCE_NOT_FOUND;
+    }
+
+    return S_OK;
+}
+
+static HRESULT GopherProtocol_start_downloading(Protocol *prot)
+{
+    return S_OK;
+}
+
+static void GopherProtocol_close_connection(Protocol *prot)
+{
+}
+
+#undef ASYNCPROTOCOL_THIS
+
+static const ProtocolVtbl AsyncProtocolVtbl = {
+    GopherProtocol_open_request,
+    GopherProtocol_start_downloading,
+    GopherProtocol_close_connection
+};
+
+#define PROTOCOL_THIS(iface) DEFINE_THIS(GopherProtocol, InternetProtocol, iface)
+
+static HRESULT WINAPI GopherProtocol_QueryInterface(IInternetProtocol *iface, REFIID riid, void **ppv)
+{
+    GopherProtocol *This = PROTOCOL_THIS(iface);
+
+    *ppv = NULL;
+    if(IsEqualGUID(&IID_IUnknown, riid)) {
+        TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
+        *ppv = PROTOCOL(This);
+    }else if(IsEqualGUID(&IID_IInternetProtocolRoot, riid)) {
+        TRACE("(%p)->(IID_IInternetProtocolRoot %p)\n", This, ppv);
+        *ppv = PROTOCOL(This);
+    }else if(IsEqualGUID(&IID_IInternetProtocol, riid)) {
+        TRACE("(%p)->(IID_IInternetProtocol %p)\n", This, ppv);
+        *ppv = PROTOCOL(This);
+    }else if(IsEqualGUID(&IID_IInternetPriority, riid)) {
+        TRACE("(%p)->(IID_IInternetPriority %p)\n", This, ppv);
+        *ppv = PRIORITY(This);
+    }
+
+    if(*ppv) {
+        IInternetProtocol_AddRef(iface);
+        return S_OK;
+    }
+
+    WARN("not supported interface %s\n", debugstr_guid(riid));
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI GopherProtocol_AddRef(IInternetProtocol *iface)
+{
+    GopherProtocol *This = PROTOCOL_THIS(iface);
+    LONG ref = InterlockedIncrement(&This->ref);
+    TRACE("(%p) ref=%d\n", This, ref);
+    return ref;
+}
+
+static ULONG WINAPI GopherProtocol_Release(IInternetProtocol *iface)
+{
+    GopherProtocol *This = PROTOCOL_THIS(iface);
+    LONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p) ref=%d\n", This, ref);
+
+    if(!ref) {
+        heap_free(This);
+
+        URLMON_UnlockModule();
+    }
+
+    return ref;
+}
+
+static HRESULT WINAPI GopherProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl,
+        IInternetProtocolSink *pOIProtSink, IInternetBindInfo *pOIBindInfo,
+        DWORD grfPI, DWORD dwReserved)
+{
+    GopherProtocol *This = PROTOCOL_THIS(iface);
+
+    TRACE("(%p)->(%s %p %p %08x %d)\n", This, debugstr_w(szUrl), pOIProtSink,
+          pOIBindInfo, grfPI, dwReserved);
+
+    return protocol_start(&This->base, PROTOCOL(This), szUrl, pOIProtSink, pOIBindInfo);
+}
+
+static HRESULT WINAPI GopherProtocol_Continue(IInternetProtocol *iface, PROTOCOLDATA *pProtocolData)
+{
+    GopherProtocol *This = PROTOCOL_THIS(iface);
+
+    TRACE("(%p)->(%p)\n", This, pProtocolData);
+
+    return protocol_continue(&This->base, pProtocolData);
+}
+
+static HRESULT WINAPI GopherProtocol_Abort(IInternetProtocol *iface, HRESULT hrReason,
+        DWORD dwOptions)
+{
+    GopherProtocol *This = PROTOCOL_THIS(iface);
+    FIXME("(%p)->(%08x %08x)\n", This, hrReason, dwOptions);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI GopherProtocol_Terminate(IInternetProtocol *iface, DWORD dwOptions)
+{
+    GopherProtocol *This = PROTOCOL_THIS(iface);
+
+    TRACE("(%p)->(%08x)\n", This, dwOptions);
+
+    protocol_close_connection(&This->base);
+    return S_OK;
+}
+
+static HRESULT WINAPI GopherProtocol_Suspend(IInternetProtocol *iface)
+{
+    GopherProtocol *This = PROTOCOL_THIS(iface);
+    FIXME("(%p)\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI GopherProtocol_Resume(IInternetProtocol *iface)
+{
+    GopherProtocol *This = PROTOCOL_THIS(iface);
+    FIXME("(%p)\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI GopherProtocol_Read(IInternetProtocol *iface, void *pv,
+        ULONG cb, ULONG *pcbRead)
+{
+    GopherProtocol *This = PROTOCOL_THIS(iface);
+
+    TRACE("(%p)->(%p %u %p)\n", This, pv, cb, pcbRead);
+
+    return protocol_read(&This->base, pv, cb, pcbRead);
+}
+
+static HRESULT WINAPI GopherProtocol_Seek(IInternetProtocol *iface, LARGE_INTEGER dlibMove,
+        DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition)
+{
+    GopherProtocol *This = PROTOCOL_THIS(iface);
+    FIXME("(%p)->(%d %d %p)\n", This, dlibMove.u.LowPart, dwOrigin, plibNewPosition);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI GopherProtocol_LockRequest(IInternetProtocol *iface, DWORD dwOptions)
+{
+    GopherProtocol *This = PROTOCOL_THIS(iface);
+
+    TRACE("(%p)->(%08x)\n", This, dwOptions);
+
+    return protocol_lock_request(&This->base);
+}
+
+static HRESULT WINAPI GopherProtocol_UnlockRequest(IInternetProtocol *iface)
+{
+    GopherProtocol *This = PROTOCOL_THIS(iface);
+
+    TRACE("(%p)\n", This);
+
+    return protocol_unlock_request(&This->base);
+}
+
+#undef PROTOCOL_THIS
+
+static const IInternetProtocolVtbl GopherProtocolVtbl = {
+    GopherProtocol_QueryInterface,
+    GopherProtocol_AddRef,
+    GopherProtocol_Release,
+    GopherProtocol_Start,
+    GopherProtocol_Continue,
+    GopherProtocol_Abort,
+    GopherProtocol_Terminate,
+    GopherProtocol_Suspend,
+    GopherProtocol_Resume,
+    GopherProtocol_Read,
+    GopherProtocol_Seek,
+    GopherProtocol_LockRequest,
+    GopherProtocol_UnlockRequest
+};
+
+#define PRIORITY_THIS(iface) DEFINE_THIS(GopherProtocol, InternetPriority, iface)
+
+static HRESULT WINAPI GopherPriority_QueryInterface(IInternetPriority *iface, REFIID riid, void **ppv)
+{
+    GopherProtocol *This = PRIORITY_THIS(iface);
+    return IInternetProtocol_QueryInterface(PROTOCOL(This), riid, ppv);
+}
+
+static ULONG WINAPI GopherPriority_AddRef(IInternetPriority *iface)
+{
+    GopherProtocol *This = PRIORITY_THIS(iface);
+    return IInternetProtocol_AddRef(PROTOCOL(This));
+}
+
+static ULONG WINAPI GopherPriority_Release(IInternetPriority *iface)
+{
+    GopherProtocol *This = PRIORITY_THIS(iface);
+    return IInternetProtocol_Release(PROTOCOL(This));
+}
+
+static HRESULT WINAPI GopherPriority_SetPriority(IInternetPriority *iface, LONG nPriority)
+{
+    GopherProtocol *This = PRIORITY_THIS(iface);
+
+    TRACE("(%p)->(%d)\n", This, nPriority);
+
+    This->base.priority = nPriority;
+    return S_OK;
+}
+
+static HRESULT WINAPI GopherPriority_GetPriority(IInternetPriority *iface, LONG *pnPriority)
+{
+    GopherProtocol *This = PRIORITY_THIS(iface);
+
+    TRACE("(%p)->(%p)\n", This, pnPriority);
+
+    *pnPriority = This->base.priority;
+    return S_OK;
+}
+
+#undef PRIORITY_THIS
+
+static const IInternetPriorityVtbl GopherPriorityVtbl = {
+    GopherPriority_QueryInterface,
+    GopherPriority_AddRef,
+    GopherPriority_Release,
+    GopherPriority_SetPriority,
+    GopherPriority_GetPriority
+};
+
+HRESULT GopherProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj)
+{
+    GopherProtocol *ret;
+
+    TRACE("(%p %p)\n", pUnkOuter, ppobj);
+
+    URLMON_LockModule();
+
+    ret = heap_alloc_zero(sizeof(GopherProtocol));
+
+    ret->base.vtbl = &AsyncProtocolVtbl;
+    ret->lpInternetProtocolVtbl = &GopherProtocolVtbl;
+    ret->lpInternetPriorityVtbl = &GopherPriorityVtbl;
+    ret->ref = 1;
+
+    *ppobj = PROTOCOL(ret);
+
+    return S_OK;
+}

Propchange: trunk/reactos/dll/win32/urlmon/gopher.c
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: trunk/reactos/dll/win32/urlmon/umon.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/umon.c?rev=39900&r1=39899&r2=39900&view=diff
==============================================================================
--- trunk/reactos/dll/win32/urlmon/umon.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/urlmon/umon.c [iso-8859-1] Sat Mar  7 11:34:55 2009
@@ -33,251 +33,6 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(urlmon);
 
-/* native urlmon.dll uses this key, too */
-static WCHAR BSCBHolder[] = { '_','B','S','C','B','_','H','o','l','d','e','r','_',0 };
-
-/*static BOOL registered_wndclass = FALSE;*/
-
-typedef struct {
-    const IBindingVtbl *lpVtbl;
-
-    LONG ref;
-
-    LPWSTR URLName;
-
-    HWND hwndCallback;
-    IBindCtx *pBC;
-    HINTERNET hinternet, hconnect, hrequest;
-    HANDLE hCacheFile;
-    IUMCacheStream *pstrCache;
-    IBindStatusCallback *pbscb;
-    DWORD total_read, expected_size;
-} Binding;
-
-static HRESULT WINAPI Binding_QueryInterface(IBinding* iface, REFIID riid, void **ppvObject)
-{
-    Binding *This = (Binding*)iface;
-
-    TRACE("(%p)->(%s,%p)\n", This, debugstr_guid(riid), ppvObject);
-
-    if((This == NULL) || (ppvObject == NULL))
-	return E_INVALIDARG;
-
-    if (IsEqualIID(&IID_IUnknown, riid) || IsEqualIID(&IID_IBinding, riid)) {
-        *ppvObject = iface;
-        IBinding_AddRef(iface);
-        return S_OK;
-    }
-
-    *ppvObject = NULL;
-    return E_NOINTERFACE;
-}
-
-static ULONG WINAPI Binding_AddRef(IBinding* iface)
-{
-    Binding *This = (Binding*)iface;
-    ULONG ref = InterlockedIncrement(&This->ref);
-
-    TRACE("(%p) ref=%d\n", This, ref);
-
-    return ref;
-}
-
-static ULONG WINAPI Binding_Release(IBinding* iface)
-{
-    Binding *This = (Binding*)iface;
-    ULONG ref = InterlockedDecrement(&This->ref);
-
-    TRACE("(%p) ref=%d\n",This, ref);
-
-    if(!ref) {
-        heap_free(This->URLName);
-        if (This->hCacheFile)
-            CloseHandle(This->hCacheFile);
-        if (This->pstrCache)
-        {
-            UMCloseCacheFileStream(This->pstrCache);
-            IStream_Release((IStream *)This->pstrCache);
-        }
-        if (This->pbscb)
-            IBindStatusCallback_Release(This->pbscb);
-
-        heap_free(This);
-
-        URLMON_UnlockModule();
-    }
-
-    return ref;
-}
-
-static HRESULT WINAPI Binding_Abort(IBinding* iface)
-{
-    Binding *This = (Binding*)iface;
-
-    FIXME("(%p): stub\n", This);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI Binding_GetBindResult(IBinding* iface, CLSID* pclsidProtocol, DWORD* pdwResult, LPOLESTR* pszResult, DWORD* pdwReserved)
-{
-    Binding *This = (Binding*)iface;
-
-    FIXME("(%p)->(%p, %p, %p, %p): stub\n", This, pclsidProtocol, pdwResult, pszResult, pdwReserved);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI Binding_GetPriority(IBinding* iface, LONG* pnPriority)
-{
-    Binding *This = (Binding*)iface;
-
-    FIXME("(%p)->(%p): stub\n", This, pnPriority);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI Binding_Resume(IBinding* iface)
-{
-    Binding *This = (Binding*)iface;
-
-    FIXME("(%p): stub\n", This);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI Binding_SetPriority(IBinding* iface, LONG nPriority)
-{
-    Binding *This = (Binding*)iface;
-
-    FIXME("(%p)->(%d): stub\n", This, nPriority);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI Binding_Suspend(IBinding* iface)
-{
-    Binding *This = (Binding*)iface;
-
-    FIXME("(%p): stub\n", This);
-
-    return E_NOTIMPL;
-}
-
-static void Binding_CloseCacheDownload(Binding *This)
-{
-    CloseHandle(This->hCacheFile);
-    This->hCacheFile = 0;
-    UMCloseCacheFileStream(This->pstrCache);
-    IStream_Release((IStream *)This->pstrCache);
-    This->pstrCache = 0;
-}
-
-static HRESULT Binding_MoreCacheData(Binding *This, const char *buf, DWORD dwBytes)
-{
-    DWORD written;
-
-    if (WriteFile(This->hCacheFile, buf, dwBytes, &written, NULL) && written == dwBytes)
-    {
-	HRESULT hr;
-
-	This->total_read += written;
-        hr = IBindStatusCallback_OnProgress(This->pbscb,
-					    This->total_read + written,
-					    This->expected_size,
-					    (This->total_read == written) ?
-					        BINDSTATUS_BEGINDOWNLOADDATA :
-					        BINDSTATUS_DOWNLOADINGDATA,
-					    This->URLName);
-	if (hr == S_OK)
-	{
-	    STGMEDIUM stg;
-	    FORMATETC fmt;
-
-            fmt.cfFormat = 0;
-            fmt.ptd = NULL;
-            fmt.dwAspect = 0;
-            fmt.lindex = -1;
-            fmt.tymed = TYMED_ISTREAM;
-
-	    stg.tymed = TYMED_ISTREAM;
-	    stg.u.pstm = (IStream *)This->pstrCache;
-	    stg.pUnkForRelease = NULL;
-
-            hr = IBindStatusCallback_OnDataAvailable(This->pbscb,
-			    			     (This->total_read == written) ?
-							 BSCF_FIRSTDATANOTIFICATION :
-						         BSCF_INTERMEDIATEDATANOTIFICATION,
-						     This->total_read + written,
-                                                     &fmt,
-						     &stg);
-	}
-	if (written < dwBytes)
-	    return STG_E_MEDIUMFULL;
-	else
-	    return hr;
-    }
-    return HRESULT_FROM_WIN32(GetLastError());
-}
-
-static void Binding_FinishedDownload(Binding *This, HRESULT hr)
-{
-    STGMEDIUM stg;
-    FORMATETC fmt;
-
-    fmt.ptd = NULL;
-    fmt.dwAspect = 0;
-    fmt.lindex = -1;
-    fmt.tymed = TYMED_ISTREAM;
-
-    stg.tymed = TYMED_ISTREAM;
-    stg.u.pstm = (IStream *)This->pstrCache;
-    stg.pUnkForRelease = NULL;
-
-    IBindStatusCallback_OnProgress(This->pbscb, This->total_read, This->expected_size,
-                                   BINDSTATUS_ENDDOWNLOADDATA, This->URLName);
-    IBindStatusCallback_OnDataAvailable(This->pbscb, BSCF_LASTDATANOTIFICATION, This->total_read, &fmt, &stg);
-    if (hr != S_OK)
-    {
-	WCHAR *pwchError = 0;
-
-        FormatMessageW (FORMAT_MESSAGE_FROM_SYSTEM |
-	                 FORMAT_MESSAGE_ALLOCATE_BUFFER,
-                        NULL, (DWORD) hr,
-		        0, (LPWSTR) &pwchError,
-		        0, NULL);
-	if (!pwchError)
-	{
-	    static const WCHAR achFormat[] = { '%', '0', '8', 'x', 0 };
-
-	    pwchError =(WCHAR *) LocalAlloc(LMEM_FIXED, sizeof(WCHAR) * 9);
-	    wsprintfW(pwchError, achFormat, hr);
-	}
-        IBindStatusCallback_OnStopBinding(This->pbscb, hr, pwchError);
-	LocalFree(pwchError);
-    }
-    else
-    {
-        IBindStatusCallback_OnStopBinding(This->pbscb, hr, NULL);
-    }
-    IBindStatusCallback_Release(This->pbscb);
-    This->pbscb = 0;
-}
-
-static const IBindingVtbl BindingVtbl =
-{
-    Binding_QueryInterface,
-    Binding_AddRef,
-    Binding_Release,
-    Binding_Abort,
-    Binding_Suspend,
-    Binding_Resume,
-    Binding_SetPriority,
-    Binding_GetPriority,
-    Binding_GetBindResult
-};
-
-/* filemoniker data structure */
 typedef struct {
 
     const IMonikerVtbl* lpvtbl;  /* VTable relative to the IMoniker interface.*/
@@ -493,158 +248,6 @@
 /******************************************************************************
  *        URLMoniker_BindToStorage
  ******************************************************************************/
-static HRESULT URLMonikerImpl_BindToStorage_hack(LPCWSTR URLName, IBindCtx* pbc, VOID** ppvObject)
-{
-    HRESULT hres;
-    BINDINFO bi;
-    DWORD bindf;
-    WCHAR szFileName[MAX_PATH + 1];
-    Binding *bind;
-    int len;
-
-    WARN("(%s %p %p)\n", debugstr_w(URLName), pbc, ppvObject);
-
-    bind = heap_alloc_zero(sizeof(Binding));
-    bind->lpVtbl = &BindingVtbl;
-    bind->ref = 1;
-    URLMON_LockModule();
-
-    len = lstrlenW(URLName)+1;
-    bind->URLName = heap_alloc(len*sizeof(WCHAR));
-    memcpy(bind->URLName, URLName, len*sizeof(WCHAR));
-
-    hres = UMCreateStreamOnCacheFile(bind->URLName, 0, szFileName, &bind->hCacheFile, &bind->pstrCache);
-
-    if(SUCCEEDED(hres)) {
-        TRACE("Created stream...\n");
-
-        *ppvObject = (void *) bind->pstrCache;
-        IStream_AddRef((IStream *) bind->pstrCache);
-
-        hres = IBindCtx_GetObjectParam(pbc, BSCBHolder, (IUnknown**)&bind->pbscb);
-        if(SUCCEEDED(hres)) {
-            TRACE("Got IBindStatusCallback...\n");
-
-            memset(&bi, 0, sizeof(bi));
-            bi.cbSize = sizeof(bi);
-            bindf = 0;
-            hres = IBindStatusCallback_GetBindInfo(bind->pbscb, &bindf, &bi);
-            if(SUCCEEDED(hres)) {
-                URL_COMPONENTSW url;
-                WCHAR *host, *path, *user, *pass;
-
-                TRACE("got bindinfo. bindf = %08x extrainfo = %s bindinfof = %08x bindverb = %08x iid %s\n",
-                      bindf, debugstr_w(bi.szExtraInfo), bi.grfBindInfoF, bi.dwBindVerb, debugstr_guid(&bi.iid));
-                hres = IBindStatusCallback_OnStartBinding(bind->pbscb, 0, (IBinding*)bind);
-                TRACE("OnStartBinding rets %08x\n", hres);
-
-                bind->expected_size = 0;
-                bind->total_read = 0;
-
-                memset(&url, 0, sizeof(url));
-                url.dwStructSize = sizeof(url);
-                url.dwSchemeLength = url.dwHostNameLength = url.dwUrlPathLength = url.dwUserNameLength = url.dwPasswordLength = 1;
-                InternetCrackUrlW(URLName, 0, ICU_ESCAPE, &url);
-                host = heap_alloc((url.dwHostNameLength + 1) * sizeof(WCHAR));
-                memcpy(host, url.lpszHostName, url.dwHostNameLength * sizeof(WCHAR));
-                host[url.dwHostNameLength] = '\0';
-                path = heap_alloc((url.dwUrlPathLength + 1) * sizeof(WCHAR));
-                memcpy(path, url.lpszUrlPath, url.dwUrlPathLength * sizeof(WCHAR));
-                path[url.dwUrlPathLength] = '\0';
-                if (url.dwUserNameLength)
-                {
-                    user = heap_alloc(((url.dwUserNameLength + 1) * sizeof(WCHAR)));
-                    memcpy(user, url.lpszUserName, url.dwUserNameLength * sizeof(WCHAR));
-                    user[url.dwUserNameLength] = 0;
-                }
-                else
-                {
-                    user = 0;
-                }
-                if (url.dwPasswordLength)
-                {
-                    pass = heap_alloc(((url.dwPasswordLength + 1) * sizeof(WCHAR)));
-                    memcpy(pass, url.lpszPassword, url.dwPasswordLength * sizeof(WCHAR));
-                    pass[url.dwPasswordLength] = 0;
-                }
-                else
-                {
-                    pass = 0;
-                }
-
-
-                do {
-                    bind->hinternet = InternetOpenA("User Agent", 0, NULL, NULL, 0);
-                    if (!bind->hinternet)
-                    {
-                            hres = HRESULT_FROM_WIN32(GetLastError());
-                            break;
-                    }
-
-                    if (!url.nPort)
-                        url.nPort = INTERNET_DEFAULT_GOPHER_PORT;
-                    bind->hconnect = InternetConnectW(bind->hinternet, host, url.nPort, user, pass,
-                                                      INTERNET_SERVICE_GOPHER, 0, (DWORD_PTR)bind);
-                    if (!bind->hconnect)
-                    {
-                            hres = HRESULT_FROM_WIN32(GetLastError());
-                            CloseHandle(bind->hinternet);
-                            break;
-                    }
-
-                    hres = IBindStatusCallback_OnProgress(bind->pbscb, 0, 0, 0x22, NULL);
-                    hres = IBindStatusCallback_OnProgress(bind->pbscb, 0, 0, BINDSTATUS_FINDINGRESOURCE, NULL);
-                    hres = IBindStatusCallback_OnProgress(bind->pbscb, 0, 0, BINDSTATUS_CONNECTING, NULL);
-                    hres = IBindStatusCallback_OnProgress(bind->pbscb, 0, 0, BINDSTATUS_SENDINGREQUEST, NULL);
-
-                    bind->hrequest = GopherOpenFileW(bind->hconnect,
-                                                     path,
-                                                     0,
-                                                     INTERNET_FLAG_RELOAD,
-                                                     0);
-                    if (bind->hrequest)
-                    {
-                        TRACE("res = %d gle = %u url len = %d\n", hres, GetLastError(), bind->expected_size);
-
-                        IBindStatusCallback_OnProgress(bind->pbscb, 0, 0, BINDSTATUS_CACHEFILENAMEAVAILABLE, szFileName);
-
-                        while(1) {
-                            char buf[4096];
-                            DWORD bufread;
-                            if(InternetReadFile(bind->hrequest, buf, sizeof(buf), &bufread)) {
-                                TRACE("read %d bytes %s...\n", bufread, debugstr_an(buf, 10));
-                                if(bufread == 0) break;
-                                hres = Binding_MoreCacheData(bind, buf, bufread);
-                            } else
-                                break;
-                        }
-                        InternetCloseHandle(bind->hrequest);
-                            hres = S_OK;
-                    }else {
-                        hres = HRESULT_FROM_WIN32(GetLastError());
-                    }
-
-            
-                    InternetCloseHandle(bind->hconnect);
-                    InternetCloseHandle(bind->hinternet);
-                } while(0);
-
-                Binding_FinishedDownload(bind, hres);
-                Binding_CloseCacheDownload(bind);
-
-                heap_free(user);
-                heap_free(pass);
-                heap_free(path);
-                heap_free(host);
-            }
-        }
-    }
-
-    IBinding_Release((IBinding*)bind);
-
-    return hres;
-}
-
 static HRESULT WINAPI URLMonikerImpl_BindToStorage(IMoniker* iface,
                                                    IBindCtx* pbc,
 						   IMoniker* pmkToLeft,
@@ -652,25 +255,11 @@
 						   VOID** ppvObject)
 {
     URLMonikerImpl *This = (URLMonikerImpl*)iface;
-    WCHAR schema[64];
-    BOOL bret;
-
-    URL_COMPONENTSW url = {sizeof(URL_COMPONENTSW), schema,
-        sizeof(schema)/sizeof(WCHAR), 0, NULL, 0, 0, NULL, 0, NULL, 0, NULL, 0, NULL, 0};
+
+    TRACE("(%p)->(%p %p %s %p)\n", This, pbc, pmkToLeft, debugstr_guid(riid), ppvObject);
 
     if(pmkToLeft)
         FIXME("Unsupported pmkToLeft\n");
-
-    bret = InternetCrackUrlW(This->URLName, 0, ICU_ESCAPE, &url);
-    if(!bret) {
-        ERR("InternetCrackUrl failed: %u\n", GetLastError());
-        return E_FAIL;
-    }
-
-    if(IsEqualGUID(&IID_IStream, riid) && url.nScheme == INTERNET_SCHEME_GOPHER)
-        return URLMonikerImpl_BindToStorage_hack(This->URLName, pbc, ppvObject);
-
-    TRACE("(%p)->(%p %p %s %p)\n", This, pbc, pmkToLeft, debugstr_guid(riid), ppvObject);
 
     return bind_to_storage(This->URLName, pbc, riid, ppvObject);
 }

Modified: trunk/reactos/dll/win32/urlmon/umstream.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/umstream.c?rev=39900&r1=39899&r2=39900&view=diff
==============================================================================
--- trunk/reactos/dll/win32/urlmon/umstream.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/urlmon/umstream.c [iso-8859-1] Sat Mar  7 11:34:55 2009
@@ -30,342 +30,6 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(urlmon);
 
-static const IStreamVtbl stvt;
-
-HRESULT UMCreateStreamOnCacheFile(LPCWSTR pszURL,
-                                  DWORD dwSize,
-                                  LPWSTR pszFileName,
-                                  HANDLE *phfile,
-                                  IUMCacheStream **ppstr)
-{
-    IUMCacheStream* ucstr;
-    HANDLE handle;
-    DWORD size;
-    LPWSTR url, c, ext = NULL;
-    HRESULT hr;
-
-    size = (strlenW(pszURL)+1)*sizeof(WCHAR);
-    url = heap_alloc(size);
-    memcpy(url, pszURL, size);
-
-    for (c = url; *c && *c != '#' && *c != '?'; ++c)
-    {
-        if (*c == '.')
-            ext = c+1;
-        else if(*c == '/')
-            ext = NULL;
-    }
-
-    *c = 0;
-
-    if(!CreateUrlCacheEntryW(url, dwSize, ext, pszFileName, 0))
-       hr = HRESULT_FROM_WIN32(GetLastError());
-    else
-       hr = S_OK;
-
-    heap_free(url);
-
-    if (hr != S_OK)
-       return hr;
-
-    TRACE("Opening %s\n", debugstr_w(pszFileName) );
-
-    handle = CreateFileW( pszFileName, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 0, NULL );
-    if( handle == INVALID_HANDLE_VALUE )
-       return HRESULT_FROM_WIN32(GetLastError());
-
-    if (phfile)
-    {
-       /* Call CreateFileW again because we need a handle with its own file pointer, and DuplicateHandle will return
-        * a handle that shares its file pointer with the original.
-        */
-           *phfile = CreateFileW( pszFileName, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL );
-
-       if (*phfile == (HANDLE) HFILE_ERROR)
-       {
-           DWORD dwError = GetLastError();
-
-           CloseHandle(handle);
-           return HRESULT_FROM_WIN32(dwError);
-       }
-    }
-
-    ucstr = heap_alloc_zero(sizeof(IUMCacheStream));
-    if(ucstr)
-    {
-       ucstr->pszURL = heap_alloc_zero(sizeof(WCHAR) * (lstrlenW(pszURL) + 1));
-       if (ucstr->pszURL)
-       {
-            ucstr->pszFileName = heap_alloc_zero(sizeof(WCHAR) * (lstrlenW(pszFileName) + 1));
-           if (ucstr->pszFileName)
-           {
-              ucstr->lpVtbl=&stvt;
-              ucstr->ref = 1;
-              ucstr->handle = handle;
-              ucstr->closed = 0;
-              lstrcpyW(ucstr->pszURL, pszURL);
-              lstrcpyW(ucstr->pszFileName, pszFileName);
-
-              *ppstr = ucstr;
-
-              return S_OK;
-           }
-           heap_free(ucstr->pszURL);
-       }
-       heap_free(ucstr);
-    }
-    CloseHandle(handle);
-    if (phfile)
-       CloseHandle(*phfile);
-    return E_OUTOFMEMORY;
-}
-
-void UMCloseCacheFileStream(IUMCacheStream *This)
-{
-    if (!This->closed)
-    {
-       FILETIME ftZero;
-
-       ftZero.dwLowDateTime = ftZero.dwHighDateTime = 0;
-
-       This->closed = 1;
-       CommitUrlCacheEntryW(This->pszURL,
-                            This->pszFileName,
-                            ftZero,
-                            ftZero,
-                            NORMAL_CACHE_ENTRY,
-                            0,
-                            0,
-                            0,
-                            0);
-    }
-}
-
-/**************************************************************************
-*  IStream_fnQueryInterface
-*/
-static HRESULT WINAPI IStream_fnQueryInterface(IStream *iface,
-                                               REFIID riid,
-                                               LPVOID *ppvObj)
-{
-    IUMCacheStream *This = (IUMCacheStream *)iface;
-
-    TRACE("(%p)->(\n\tIID:\t%s,%p)\n",This,debugstr_guid(riid),ppvObj);
-
-    *ppvObj = NULL;
-
-    if(IsEqualIID(riid, &IID_IUnknown) ||
-       IsEqualIID(riid, &IID_IStream))
-    {
-      *ppvObj = This;
-    }
-
-    if(*ppvObj)
-    {
-      IStream_AddRef((IStream*)*ppvObj);
-      TRACE("-- Interface: (%p)->(%p)\n",ppvObj,*ppvObj);
-      return S_OK;
-    }
-    TRACE("-- Interface: E_NOINTERFACE\n");
-    return E_NOINTERFACE;
-}
-
-/**************************************************************************
-*  IStream_fnAddRef
-*/
-static ULONG WINAPI IStream_fnAddRef(IStream *iface)
-{
-    IUMCacheStream *This = (IUMCacheStream *)iface;
-    ULONG refCount = InterlockedIncrement(&This->ref);
-
-    TRACE("(%p)->(count=%u)\n", This, refCount - 1);
-
-    return refCount;
-}
-
-/**************************************************************************
-*  IStream_fnRelease
-*/
-static ULONG WINAPI IStream_fnRelease(IStream *iface)
-{
-    IUMCacheStream *This = (IUMCacheStream *)iface;
-    ULONG refCount = InterlockedDecrement(&This->ref);
-
-    TRACE("(%p)->(count=%u)\n", This, refCount + 1);
-
-    if (!refCount)
-    {
-       TRACE(" destroying UMCacheStream (%p)\n",This);
-       UMCloseCacheFileStream(This);
-       CloseHandle(This->handle);
-       heap_free(This->pszFileName);
-       heap_free(This->pszURL);
-       heap_free(This);
-    }
-    return refCount;
-}
-
-static HRESULT WINAPI IStream_fnRead (IStream * iface, 
-                                      void* pv,
-                                      ULONG cb,
-                                      ULONG* pcbRead)
-{
-    ULONG dwBytesRead;
-    IUMCacheStream *This = (IUMCacheStream *)iface;
-
-    TRACE("(%p)->(%p,0x%08x,%p)\n",This, pv, cb, pcbRead);
-
-    if ( !pv )
-       return STG_E_INVALIDPOINTER;
-
-    if ( !pcbRead)
-        pcbRead = &dwBytesRead;
-
-    if ( ! ReadFile( This->handle, pv, cb, pcbRead, NULL ) )
-       return S_FALSE;
-
-    if (!*pcbRead)
-        return This->closed ? S_FALSE : E_PENDING;
-    return S_OK;
-}
-
-static HRESULT WINAPI IStream_fnWrite (IStream * iface,
-                                       const void* pv,
-                                       ULONG cb,
-                                       ULONG* pcbWritten)
-{
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IStream_fnSeek (IStream * iface,
-                                   LARGE_INTEGER dlibMove,
-                                   DWORD dwOrigin,
-                                   ULARGE_INTEGER* plibNewPosition)
-{
-    LARGE_INTEGER newpos;
-    IUMCacheStream *This = (IUMCacheStream *)iface;
-
-    TRACE("(%p)\n",This);
-
-    if (!SetFilePointerEx( This->handle, dlibMove, &newpos, dwOrigin ))
-       return E_FAIL;
-
-    if (plibNewPosition)
-        plibNewPosition->QuadPart = newpos.QuadPart;
-
-    return S_OK;
-}
-
-static HRESULT WINAPI IStream_fnSetSize (IStream * iface,
-                                         ULARGE_INTEGER libNewSize)
-{
-    LARGE_INTEGER newpos;
-    IUMCacheStream *This = (IUMCacheStream *)iface;
-
-    TRACE("(%p)\n",This);
-
-    newpos.QuadPart = libNewSize.QuadPart;
-    if( ! SetFilePointerEx( This->handle, newpos, NULL, FILE_BEGIN ) )
-       return E_FAIL;
-
-    if( ! SetEndOfFile( This->handle ) )
-       return E_FAIL;
-
-    return S_OK;
-}
-
-static HRESULT WINAPI IStream_fnCopyTo (IStream * iface,
-                                   IStream* pstm,
-                                   ULARGE_INTEGER cb,
-                                   ULARGE_INTEGER* pcbRead,
-                                   ULARGE_INTEGER* pcbWritten)
-{
-    IUMCacheStream *This = (IUMCacheStream *)iface;
-
-    TRACE("(%p)\n",This);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IStream_fnCommit (IStream * iface,
-                                   DWORD grfCommitFlags)
-{
-    IUMCacheStream *This = (IUMCacheStream *)iface;
-
-    TRACE("(%p)\n",This);
-
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI IStream_fnRevert (IStream * iface)
-{
-    IUMCacheStream *This = (IUMCacheStream *)iface;
-
-    TRACE("(%p)\n",This);
-
-    return E_NOTIMPL;
-}
-static HRESULT WINAPI IStream_fnLockRegion (IStream * iface,
-                                            ULARGE_INTEGER libOffset,
-                                            ULARGE_INTEGER cb,
-                                            DWORD dwLockType)
-{
-    IUMCacheStream *This = (IUMCacheStream *)iface;
-
-    TRACE("(%p)\n",This);
-
-    return E_NOTIMPL;
-}
-static HRESULT WINAPI IStream_fnUnlockRegion (IStream * iface,
-                                              ULARGE_INTEGER libOffset,
-                                              ULARGE_INTEGER cb,
-                                              DWORD dwLockType)
-{
-    IUMCacheStream *This = (IUMCacheStream *)iface;
-
-    TRACE("(%p)\n",This);
-
-    return E_NOTIMPL;
-}
-static HRESULT WINAPI IStream_fnStat (IStream * iface,
-                                      STATSTG*   pstatstg,
-                                      DWORD grfStatFlag)
-{
-    IUMCacheStream *This = (IUMCacheStream *)iface;
-
-    TRACE("(%p)\n",This);
-
-    return E_NOTIMPL;
-}
-static HRESULT WINAPI IStream_fnClone (IStream * iface,
-                                       IStream** ppstm)
-{
-    IUMCacheStream *This = (IUMCacheStream *)iface;
-
-    TRACE("(%p)\n",This);
-
-    return E_NOTIMPL;
-}
-
-static const IStreamVtbl stvt =
-{
-    IStream_fnQueryInterface,
-    IStream_fnAddRef,
-    IStream_fnRelease,
-    IStream_fnRead,
-    IStream_fnWrite,
-    IStream_fnSeek,
-    IStream_fnSetSize,
-    IStream_fnCopyTo,
-    IStream_fnCommit,
-    IStream_fnRevert,
-    IStream_fnLockRegion,
-    IStream_fnUnlockRegion,
-    IStream_fnStat,
-    IStream_fnClone
-
-};
-
 typedef struct ProxyBindStatusCallback
 {
     const IBindStatusCallbackVtbl *lpVtbl;

Modified: trunk/reactos/dll/win32/urlmon/urlmon.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/urlmon.rbuild?rev=39900&r1=39899&r2=39900&view=diff
==============================================================================
--- trunk/reactos/dll/win32/urlmon/urlmon.rbuild [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/urlmon/urlmon.rbuild [iso-8859-1] Sat Mar  7 11:34:55 2009
@@ -15,6 +15,7 @@
 	<file>file.c</file>
 	<file>format.c</file>
 	<file>ftp.c</file>
+	<file>gopher.c</file>
 	<file>http.c</file>
 	<file>internet.c</file>
 	<file>mk.c</file>

Modified: trunk/reactos/dll/win32/urlmon/urlmon_main.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/urlmon_main.c?rev=39900&r1=39899&r2=39900&view=diff
==============================================================================
--- trunk/reactos/dll/win32/urlmon/urlmon_main.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/urlmon/urlmon_main.c [iso-8859-1] Sat Mar  7 11:34:55 2009
@@ -173,6 +173,8 @@
     { &ClassFactoryVtbl, FileProtocol_Construct};
 static const ClassFactory FtpProtocolCF =
     { &ClassFactoryVtbl, FtpProtocol_Construct};
+static const ClassFactory GopherProtocolCF =
+    { &ClassFactoryVtbl, GopherProtocol_Construct};
 static const ClassFactory HttpProtocolCF =
     { &ClassFactoryVtbl, HttpProtocol_Construct};
 static const ClassFactory HttpSProtocolCF =
@@ -193,6 +195,7 @@
 
 static const WCHAR wszFile[] = {'f','i','l','e',0};
 static const WCHAR wszFtp[]  = {'f','t','p',0};
+static const WCHAR wszGopher[]  = {'g','o','p','h','e','r',0};
 static const WCHAR wszHttp[] = {'h','t','t','p',0};
 static const WCHAR wszHttps[] = {'h','t','t','p','s',0};
 static const WCHAR wszMk[]   = {'m','k',0};
@@ -201,6 +204,7 @@
 {
     { &CLSID_FileProtocol,            CLASSFACTORY(&FileProtocolCF),    wszFile },
     { &CLSID_FtpProtocol,             CLASSFACTORY(&FtpProtocolCF),     wszFtp  },
+    { &CLSID_GopherProtocol,          CLASSFACTORY(&GopherProtocolCF),  wszGopher },
     { &CLSID_HttpProtocol,            CLASSFACTORY(&HttpProtocolCF),    wszHttp },
     { &CLSID_HttpSProtocol,           CLASSFACTORY(&HttpSProtocolCF),   wszHttps },
     { &CLSID_MkProtocol,              CLASSFACTORY(&MkProtocolCF),      wszMk },

Modified: trunk/reactos/dll/win32/urlmon/urlmon_main.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/urlmon_main.h?rev=39900&r1=39899&r2=39900&view=diff
==============================================================================
--- trunk/reactos/dll/win32/urlmon/urlmon_main.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/urlmon/urlmon_main.h [iso-8859-1] Sat Mar  7 11:34:55 2009
@@ -42,6 +42,7 @@
 extern HRESULT HttpProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
 extern HRESULT HttpSProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
 extern HRESULT FtpProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
+extern HRESULT GopherProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
 extern HRESULT MkProtocol_Construct(IUnknown *pUnkOuter, LPVOID *ppobj);
 
 /**********************************************************************
@@ -54,19 +55,6 @@
 #define ICOM_THIS_MULTI(impl,field,iface) impl* const This=(impl*)((char*)(iface) - offsetof(impl,field))
 #define DEFINE_THIS2(cls,ifc,iface) ((cls*)((BYTE*)(iface)-offsetof(cls,ifc)))
 #define DEFINE_THIS(cls,ifc,iface) DEFINE_THIS2(cls,lp ## ifc ## Vtbl,iface)
-
-typedef struct
-{	
-	const IStreamVtbl	*lpVtbl;
-	LONG		ref;
-	HANDLE		handle;
-	BOOL		closed;
-	WCHAR		*pszFileName;
-	WCHAR		*pszURL;
-} IUMCacheStream;
-
-HRESULT	UMCreateStreamOnCacheFile(LPCWSTR pszURL, DWORD dwSize, LPWSTR pszFileName, HANDLE *phfile, IUMCacheStream **ppstr);
-void	UMCloseCacheFileStream(IUMCacheStream *pstr);
 
 IInternetProtocolInfo *get_protocol_info(LPCWSTR url);
 HRESULT get_protocol_handler(LPCWSTR url, CLSID *clsid, IClassFactory **ret);



More information about the Ros-diffs mailing list