wininet: Don't change the verb if the server response is HTTP_STATUS_REDIRECT_KEEP_VERB.
[wine] / dlls / dmloader / loaderstream.c
index bbaf0d2..b565292 100644 (file)
@@ -64,6 +64,14 @@ static ULONG WINAPI IDirectMusicLoaderGenericStream_IDirectMusicGetLoader_AddRef
  * IDirectMusicLoaderFileStream implementation
  */
 /* Custom : */
+
+static void IDirectMusicLoaderFileStream_Detach (LPSTREAM iface) {
+    ICOM_THIS_MULTI(IDirectMusicLoaderFileStream, StreamVtbl, iface);
+    TRACE("(%p)\n", This);
+    if (This->hFile != INVALID_HANDLE_VALUE) CloseHandle(This->hFile);
+    This->wzFileName[0] = '\0';
+}
+
 HRESULT WINAPI IDirectMusicLoaderFileStream_Attach (LPSTREAM iface, LPCWSTR wzFile, LPDIRECTMUSICLOADER8 pLoader) {
        ICOM_THIS_MULTI(IDirectMusicLoaderFileStream, StreamVtbl, iface);
     TRACE("(%p, %s, %p)\n", This, debugstr_w(wzFile), pLoader);
@@ -80,15 +88,6 @@ HRESULT WINAPI IDirectMusicLoaderFileStream_Attach (LPSTREAM iface, LPCWSTR wzFi
     return S_OK;
 }
 
-void WINAPI IDirectMusicLoaderFileStream_Detach (LPSTREAM iface) {
-       ICOM_THIS_MULTI(IDirectMusicLoaderFileStream, StreamVtbl, iface);
-       TRACE("(%p)\n", This);
-       if (This->hFile != INVALID_HANDLE_VALUE) {
-        CloseHandle(This->hFile);
-    }
-    This->wzFileName[0] = (L'\0');
-}
-
 
 /* IUnknown/IStream part: */
 static HRESULT WINAPI IDirectMusicLoaderFileStream_IStream_QueryInterface (LPSTREAM iface, REFIID riid, void** ppobj) {
@@ -97,11 +96,11 @@ static HRESULT WINAPI IDirectMusicLoaderFileStream_IStream_QueryInterface (LPSTR
        TRACE("(%p, %s, %p)\n", This, debugstr_dmguid(riid), ppobj);
        if (IsEqualIID (riid, &IID_IUnknown) ||
                IsEqualIID (riid, &IID_IStream)) {
-               *ppobj = (LPVOID)&This->StreamVtbl;
+               *ppobj = &This->StreamVtbl;
                IDirectMusicLoaderFileStream_IStream_AddRef ((LPSTREAM)&This->StreamVtbl);
                return S_OK;
        } else if (IsEqualIID (riid, &IID_IDirectMusicGetLoader)) {
-               *ppobj = (LPVOID)&This->GetLoaderVtbl;
+               *ppobj = &This->GetLoaderVtbl;
                IDirectMusicLoaderFileStream_IDirectMusicGetLoader_AddRef ((LPDIRECTMUSICGETLOADER)&This->GetLoaderVtbl);               
                return S_OK;
        }
@@ -147,9 +146,9 @@ static HRESULT WINAPI IDirectMusicLoaderFileStream_IStream_Seek (LPSTREAM iface,
        ICOM_THIS_MULTI(IDirectMusicLoaderFileStream, StreamVtbl, iface);
     LARGE_INTEGER liNewPos;
        
-       TRACE_(dmfileraw)("(%p, 0x%08llX, %s, %p)\n", This, dlibMove.QuadPart, resolve_STREAM_SEEK(dwOrigin), plibNewPosition);
+    TRACE_(dmfileraw)("(%p, %s, %s, %p)\n", This, wine_dbgstr_longlong(dlibMove.QuadPart), resolve_STREAM_SEEK(dwOrigin), plibNewPosition);
 
-       if (This->hFile == INVALID_HANDLE_VALUE) return E_FAIL;
+    if (This->hFile == INVALID_HANDLE_VALUE) return E_FAIL;
 
     liNewPos.u.HighPart = dlibMove.u.HighPart;
     liNewPos.u.LowPart = SetFilePointer (This->hFile, dlibMove.u.LowPart, &liNewPos.u.HighPart, dwOrigin);
@@ -179,16 +178,16 @@ static HRESULT WINAPI IDirectMusicLoaderFileStream_IStream_Clone (LPSTREAM iface
                if (SUCCEEDED(result)) {
                        LARGE_INTEGER liNewPosition;
                        liNewPosition.QuadPart = ullCurrentPosition.QuadPart;
-                       result = IDirectMusicLoaderFileStream_IStream_Seek ((LPSTREAM)pOther, liNewPosition, STREAM_SEEK_SET, &ullCurrentPosition);
+                       result = IDirectMusicLoaderFileStream_IStream_Seek (pOther, liNewPosition, STREAM_SEEK_SET, &ullCurrentPosition);
                }
                if (FAILED(result)) {
                        TRACE(": failed\n");
-                       IDirectMusicLoaderFileStream_IStream_Release ((LPSTREAM)pOther);
+                       IDirectMusicLoaderFileStream_IStream_Release (pOther);
                        return result;
                }
        }
        TRACE(": succeeded\n");
-       *ppstm = (IStream*)pOther;
+       *ppstm = pOther;
        return S_OK;
 }
 
@@ -311,10 +310,19 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderFileStream (LPVOID* ppobj) {
  * IDirectMusicLoaderResourceStream implementation
  */
 /* Custom : */
+
+static void IDirectMusicLoaderResourceStream_Detach (LPSTREAM iface) {
+       ICOM_THIS_MULTI(IDirectMusicLoaderResourceStream, StreamVtbl, iface);
+       TRACE("(%p)\n", This);
+
+       This->pbMemData = NULL;
+       This->llMemLength = 0;
+}
+
 HRESULT WINAPI IDirectMusicLoaderResourceStream_Attach (LPSTREAM iface, LPBYTE pbMemData, LONGLONG llMemLength, LONGLONG llPos, LPDIRECTMUSICLOADER8 pLoader) {
        ICOM_THIS_MULTI(IDirectMusicLoaderResourceStream, StreamVtbl, iface);
     
-       TRACE("(%p, %p, 0x%08llX, 0x%08llx, %p)\n", This, pbMemData, llMemLength, llPos, pLoader);
+       TRACE("(%p, %p, %s, %s, %p)\n", This, pbMemData, wine_dbgstr_longlong(llMemLength), wine_dbgstr_longlong(llPos), pLoader);
        if (!pbMemData || !llMemLength) {
                WARN(": invalid pbMemData or llMemLength\n");
                return E_FAIL;
@@ -328,14 +336,6 @@ HRESULT WINAPI IDirectMusicLoaderResourceStream_Attach (LPSTREAM iface, LPBYTE p
     return S_OK;
 }
 
-void WINAPI IDirectMusicLoaderResourceStream_Detach (LPSTREAM iface) {
-       ICOM_THIS_MULTI(IDirectMusicLoaderResourceStream, StreamVtbl, iface);
-       TRACE("(%p)\n", This);
-       
-       This->pbMemData = NULL;
-       This->llMemLength = 0;
-}
-
 
 /* IUnknown/IStream part: */
 static HRESULT WINAPI IDirectMusicLoaderResourceStream_IStream_QueryInterface (LPSTREAM iface, REFIID riid, void** ppobj) {
@@ -344,11 +344,11 @@ static HRESULT WINAPI IDirectMusicLoaderResourceStream_IStream_QueryInterface (L
        TRACE("(%p, %s, %p)\n", This, debugstr_dmguid(riid), ppobj);
        if (IsEqualIID (riid, &IID_IUnknown) ||
                IsEqualIID (riid, &IID_IStream)) {
-               *ppobj = (LPVOID)&This->StreamVtbl;
+               *ppobj = &This->StreamVtbl;
                IDirectMusicLoaderResourceStream_IStream_AddRef ((LPSTREAM)&This->StreamVtbl);
                return S_OK;
        } else if (IsEqualIID (riid, &IID_IDirectMusicGetLoader)) {
-               *ppobj = (LPVOID)&This->GetLoaderVtbl;
+               *ppobj = &This->GetLoaderVtbl;
                IDirectMusicLoaderResourceStream_IDirectMusicGetLoader_AddRef ((LPDIRECTMUSICGETLOADER)&This->GetLoaderVtbl);           
                return S_OK;
        }
@@ -398,7 +398,7 @@ static HRESULT WINAPI IDirectMusicLoaderResourceStream_IStream_Read (LPSTREAM if
 
 static HRESULT WINAPI IDirectMusicLoaderResourceStream_IStream_Seek (LPSTREAM iface, LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER* plibNewPosition) {
        ICOM_THIS_MULTI(IDirectMusicLoaderResourceStream, StreamVtbl, iface);   
-       TRACE_(dmfileraw)("(%p, 0x%08llX, %s, %p)\n", This, dlibMove.QuadPart, resolve_STREAM_SEEK(dwOrigin), plibNewPosition);
+       TRACE_(dmfileraw)("(%p, %s, %s, %p)\n", This, wine_dbgstr_longlong(dlibMove.QuadPart), resolve_STREAM_SEEK(dwOrigin), plibNewPosition);
        
        switch (dwOrigin) {
                case STREAM_SEEK_CUR: {
@@ -452,7 +452,7 @@ static HRESULT WINAPI IDirectMusicLoaderResourceStream_IStream_Clone (LPSTREAM i
        IDirectMusicLoaderResourceStream_Attach (pOther, This->pbMemData, This->llMemLength, This->llPos, This->pLoader);
 
        TRACE(": succeeded\n");
-       *ppstm = (IStream*)pOther;
+       *ppstm = pOther;
        return S_OK;
 }
 
@@ -567,6 +567,15 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicLoaderResourceStream (LPVOID* ppobj) {
  * IDirectMusicLoaderGenericStream implementation
  */
 /* Custom : */
+
+static void IDirectMusicLoaderGenericStream_Detach (LPSTREAM iface) {
+       ICOM_THIS_MULTI(IDirectMusicLoaderGenericStream, StreamVtbl, iface);
+
+       if (This->pStream)
+               IStream_Release (This->pStream);
+       This->pStream = NULL;
+}
+
 HRESULT WINAPI IDirectMusicLoaderGenericStream_Attach (LPSTREAM iface, LPSTREAM pStream, LPDIRECTMUSICLOADER8 pLoader) {
        ICOM_THIS_MULTI(IDirectMusicLoaderGenericStream, StreamVtbl, iface);
     
@@ -587,14 +596,6 @@ HRESULT WINAPI IDirectMusicLoaderGenericStream_Attach (LPSTREAM iface, LPSTREAM
     return S_OK;
 }
 
-void WINAPI IDirectMusicLoaderGenericStream_Detach (LPSTREAM iface) {
-       ICOM_THIS_MULTI(IDirectMusicLoaderGenericStream, StreamVtbl, iface);
-       
-       if (This->pStream)
-               IStream_Release (This->pStream);
-       This->pStream = NULL;
-}
-
 
 /* IUnknown/IStream part: */
 static HRESULT WINAPI IDirectMusicLoaderGenericStream_IStream_QueryInterface (LPSTREAM iface, REFIID riid, void** ppobj) {
@@ -603,11 +604,11 @@ static HRESULT WINAPI IDirectMusicLoaderGenericStream_IStream_QueryInterface (LP
        TRACE("(%p, %s, %p)\n", This, debugstr_dmguid(riid), ppobj);
        if (IsEqualIID (riid, &IID_IUnknown) ||
                IsEqualIID (riid, &IID_IStream)) {
-               *ppobj = (LPVOID)&This->StreamVtbl;
+               *ppobj = &This->StreamVtbl;
                IDirectMusicLoaderGenericStream_IStream_AddRef ((LPSTREAM)&This->StreamVtbl);
                return S_OK;
        } else if (IsEqualIID (riid, &IID_IDirectMusicGetLoader)) {
-               *ppobj = (LPVOID)&This->GetLoaderVtbl;
+               *ppobj = &This->GetLoaderVtbl;
                IDirectMusicLoaderGenericStream_IDirectMusicGetLoader_AddRef ((LPDIRECTMUSICGETLOADER)&This->GetLoaderVtbl);            
                return S_OK;
        }
@@ -647,7 +648,7 @@ static HRESULT WINAPI IDirectMusicLoaderGenericStream_IStream_Read (LPSTREAM ifa
 
 static HRESULT WINAPI IDirectMusicLoaderGenericStream_IStream_Seek (LPSTREAM iface, LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER* plibNewPosition) {
        ICOM_THIS_MULTI(IDirectMusicLoaderGenericStream, StreamVtbl, iface);    
-       TRACE_(dmfileraw)("(%p, 0x%08llX, %s, %p): redirecting to low-level stream\n", This, dlibMove.QuadPart, resolve_STREAM_SEEK(dwOrigin), plibNewPosition);
+       TRACE_(dmfileraw)("(%p, %s, %s, %p): redirecting to low-level stream\n", This, wine_dbgstr_longlong(dlibMove.QuadPart), resolve_STREAM_SEEK(dwOrigin), plibNewPosition);
        if (!This->pStream)
                return E_FAIL;
 
@@ -670,7 +671,7 @@ static HRESULT WINAPI IDirectMusicLoaderGenericStream_IStream_Clone (LPSTREAM if
        IDirectMusicLoaderGenericStream_Attach (pOther, pLowLevel, This->pLoader);
 
        TRACE(": succeeded\n");
-       *ppstm = (IStream*)pOther;
+       *ppstm = pOther;
        return S_OK;
 }
 
@@ -685,7 +686,7 @@ static HRESULT WINAPI IDirectMusicLoaderGenericStream_IStream_Write (LPSTREAM if
 
 static HRESULT WINAPI IDirectMusicLoaderGenericStream_IStream_SetSize (LPSTREAM iface, ULARGE_INTEGER libNewSize) {
        ICOM_THIS_MULTI(IDirectMusicLoaderGenericStream, StreamVtbl, iface);    
-       TRACE("(%p, 0x%08llX): redirecting to low-level stream\n", This, libNewSize.QuadPart);
+       TRACE("(%p, %s): redirecting to low-level stream\n", This, wine_dbgstr_longlong(libNewSize.QuadPart));
        if (!This->pStream)
                return E_FAIL;
 
@@ -694,7 +695,7 @@ static HRESULT WINAPI IDirectMusicLoaderGenericStream_IStream_SetSize (LPSTREAM
 
 static HRESULT WINAPI IDirectMusicLoaderGenericStream_IStream_CopyTo (LPSTREAM iface, IStream* pstm, ULARGE_INTEGER cb, ULARGE_INTEGER* pcbRead, ULARGE_INTEGER* pcbWritten) {
        ICOM_THIS_MULTI(IDirectMusicLoaderGenericStream, StreamVtbl, iface);    
-       TRACE("(%p, %p, 0x%08llX, %p, %p): redirecting to low-level stream\n", This, pstm, cb.QuadPart, pcbRead, pcbWritten);
+       TRACE("(%p, %p, %s, %p, %p): redirecting to low-level stream\n", This, pstm, wine_dbgstr_longlong(cb.QuadPart), pcbRead, pcbWritten);
        if (!This->pStream)
                return E_FAIL;
 
@@ -721,7 +722,7 @@ static HRESULT WINAPI IDirectMusicLoaderGenericStream_IStream_Revert (LPSTREAM i
 
 static HRESULT WINAPI IDirectMusicLoaderGenericStream_IStream_LockRegion (LPSTREAM iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) {
        ICOM_THIS_MULTI(IDirectMusicLoaderGenericStream, StreamVtbl, iface);    
-       TRACE("(%p, 0x%08llX, 0x%08llX, 0x%08X): redirecting to low-level stream\n", This, libOffset.QuadPart, cb.QuadPart, dwLockType);
+       TRACE("(%p, %s, %s, 0x%08X): redirecting to low-level stream\n", This, wine_dbgstr_longlong(libOffset.QuadPart), wine_dbgstr_longlong(cb.QuadPart), dwLockType);
        if (!This->pStream)
                return E_FAIL;
 
@@ -730,7 +731,7 @@ static HRESULT WINAPI IDirectMusicLoaderGenericStream_IStream_LockRegion (LPSTRE
 
 static HRESULT WINAPI IDirectMusicLoaderGenericStream_IStream_UnlockRegion (LPSTREAM iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) {
        ICOM_THIS_MULTI(IDirectMusicLoaderGenericStream, StreamVtbl, iface);    
-       TRACE("(%p, 0x%08llX, 0x%08llX, 0x%08X): redirecting to low-level stream\n", This, libOffset.QuadPart, cb.QuadPart, dwLockType);
+       TRACE("(%p, %s, %s, 0x%08X): redirecting to low-level stream\n", This, wine_dbgstr_longlong(libOffset.QuadPart), wine_dbgstr_longlong(cb.QuadPart), dwLockType);
        if (!This->pStream)
                return E_FAIL;