wininet: use unions instead of defines in async work requests
Mike McCormack
mike at codeweavers.com
Wed Sep 24 04:24:13 CDT 2003
ChangeLog:
* wininet: use unions instead of defines in async work requests
-------------- next part --------------
Index: dlls/wininet/ftp.c
===================================================================
RCS file: /home/wine/wine/dlls/wininet/ftp.c,v
retrieving revision 1.32
diff -u -r1.32 ftp.c
--- dlls/wininet/ftp.c 5 Sep 2003 23:08:28 -0000 1.32
+++ dlls/wininet/ftp.c 23 Sep 2003 05:58:18 -0000
@@ -169,13 +169,14 @@
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
+ struct WORKREQ_FTPPUTFILEA *req = &workRequest.u.FtpPutFileA;
workRequest.asyncall = FTPPUTFILEA;
- workRequest.HFTPSESSION = (DWORD)hConnect;
- workRequest.LPSZLOCALFILE = (DWORD)FTP_strdup(lpszLocalFile);
- workRequest.LPSZNEWREMOTEFILE = (DWORD)FTP_strdup(lpszNewRemoteFile);
- workRequest.DWFLAGS = dwFlags;
- workRequest.DWCONTEXT = dwContext;
+ workRequest.handle = hConnect;
+ req->lpszLocalFile = FTP_strdup(lpszLocalFile);
+ req->lpszNewRemoteFile = FTP_strdup(lpszNewRemoteFile);
+ req->dwFlags = dwFlags;
+ req->dwContext = dwContext;
return INTERNET_AsyncCall(&workRequest);
}
@@ -296,10 +297,12 @@
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
+ struct WORKREQ_FTPSETCURRENTDIRECTORYA *req;
workRequest.asyncall = FTPSETCURRENTDIRECTORYA;
- workRequest.HFTPSESSION = (DWORD)hConnect;
- workRequest.LPSZDIRECTORY = (DWORD)FTP_strdup(lpszDirectory);
+ workRequest.handle = hConnect;
+ req = &workRequest.u.FtpSetCurrentDirectoryA;
+ req->lpszDirectory = FTP_strdup(lpszDirectory);
return INTERNET_AsyncCall(&workRequest);
}
@@ -420,10 +423,12 @@
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
+ struct WORKREQ_FTPCREATEDIRECTORYA *req;
workRequest.asyncall = FTPCREATEDIRECTORYA;
- workRequest.HFTPSESSION = (DWORD)hConnect;
- workRequest.LPSZDIRECTORY = (DWORD)FTP_strdup(lpszDirectory);
+ workRequest.handle = hConnect;
+ req = &workRequest.u.FtpCreateDirectoryA;
+ req->lpszDirectory = FTP_strdup(lpszDirectory);
return INTERNET_AsyncCall(&workRequest);
}
@@ -543,13 +548,15 @@
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
+ struct WORKREQ_FTPFINDFIRSTFILEA *req;
workRequest.asyncall = FTPFINDFIRSTFILEA;
- workRequest.HFTPSESSION = (DWORD)hConnect;
- workRequest.LPSZSEARCHFILE = (DWORD)FTP_strdup(lpszSearchFile);
- workRequest.LPFINDFILEDATA = (DWORD)lpFindFileData;
- workRequest.DWFLAGS = dwFlags;
- workRequest.DWCONTEXT= dwContext;
+ workRequest.handle = hConnect;
+ req = &workRequest.u.FtpFindFirstFileA;
+ req->lpszSearchFile = FTP_strdup(lpszSearchFile);
+ req->lpFindFileData = lpFindFileData;
+ req->dwFlags = dwFlags;
+ req->dwContext= dwContext;
INTERNET_AsyncCall(&workRequest);
return NULL;
@@ -702,11 +709,13 @@
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
+ struct WORKREQ_FTPGETCURRENTDIRECTORYA *req;
workRequest.asyncall = FTPGETCURRENTDIRECTORYA;
- workRequest.HFTPSESSION = (DWORD)hFtpSession;
- workRequest.LPSZDIRECTORY = (DWORD)lpszCurrentDirectory;
- workRequest.LPDWDIRECTORY = (DWORD)lpdwCurrentDirectory;
+ workRequest.handle = hFtpSession;
+ req = &workRequest.u.FtpGetCurrentDirectoryA;
+ req->lpszDirectory = lpszCurrentDirectory;
+ req->lpdwDirectory = lpdwCurrentDirectory;
return INTERNET_AsyncCall(&workRequest);
}
@@ -848,13 +857,15 @@
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
+ struct WORKREQ_FTPOPENFILEA *req;
workRequest.asyncall = FTPOPENFILEA;
- workRequest.HFTPSESSION = (DWORD)hFtpSession;
- workRequest.LPSZFILENAME = (DWORD)FTP_strdup(lpszFileName);
- workRequest.FDWACCESS = fdwAccess;
- workRequest.DWFLAGS = dwFlags;
- workRequest.DWCONTEXT = dwContext;
+ workRequest.handle = hFtpSession;
+ req = &workRequest.u.FtpOpenFileA;
+ req->lpszFilename = FTP_strdup(lpszFileName);
+ req->dwAccess = fdwAccess;
+ req->dwFlags = dwFlags;
+ req->dwContext = dwContext;
INTERNET_AsyncCall(&workRequest);
return NULL;
@@ -1000,15 +1011,17 @@
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
+ struct WORKREQ_FTPGETFILEA *req;
workRequest.asyncall = FTPGETFILEA;
- workRequest.HFTPSESSION = (DWORD)hInternet;
- workRequest.LPSZREMOTEFILE = (DWORD)FTP_strdup(lpszRemoteFile);
- workRequest.LPSZNEWFILE = (DWORD)FTP_strdup(lpszNewFile);
- workRequest.DWLOCALFLAGSATTRIBUTE = dwLocalFlagsAttribute;
- workRequest.FFAILIFEXISTS = (DWORD)fFailIfExists;
- workRequest.DWFLAGS = dwInternetFlags;
- workRequest.DWCONTEXT = dwContext;
+ workRequest.handle = hInternet;
+ req = &workRequest.u.FtpGetFileA;
+ req->lpszRemoteFile = FTP_strdup(lpszRemoteFile);
+ req->lpszNewFile = FTP_strdup(lpszNewFile);
+ req->dwLocalFlagsAttribute = dwLocalFlagsAttribute;
+ req->fFailIfExists = fFailIfExists;
+ req->dwFlags = dwInternetFlags;
+ req->dwContext = dwContext;
return INTERNET_AsyncCall(&workRequest);
}
@@ -1149,10 +1162,12 @@
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
+ struct WORKREQ_FTPDELETEFILEA *req;
- workRequest.asyncall = FTPRENAMEFILEA;
- workRequest.HFTPSESSION = (DWORD)hFtpSession;
- workRequest.LPSZFILENAME = (DWORD)FTP_strdup(lpszFileName);
+ workRequest.asyncall = FTPDELETEFILEA;
+ workRequest.handle = hFtpSession;
+ req = &workRequest.u.FtpDeleteFileA;
+ req->lpszFilename = FTP_strdup(lpszFileName);
return INTERNET_AsyncCall(&workRequest);
}
@@ -1243,10 +1258,12 @@
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
+ struct WORKREQ_FTPREMOVEDIRECTORYA *req;
workRequest.asyncall = FTPREMOVEDIRECTORYA;
- workRequest.HFTPSESSION = (DWORD)hFtpSession;
- workRequest.LPSZDIRECTORY = (DWORD)FTP_strdup(lpszDirectory);
+ workRequest.handle = hFtpSession;
+ req = &workRequest.u.FtpRemoveDirectoryA;
+ req->lpszDirectory = FTP_strdup(lpszDirectory);
return INTERNET_AsyncCall(&workRequest);
}
@@ -1338,11 +1355,13 @@
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
+ struct WORKREQ_FTPRENAMEFILEA *req;
workRequest.asyncall = FTPRENAMEFILEA;
- workRequest.HFTPSESSION = (DWORD)hFtpSession;
- workRequest.LPSZSRCFILE = (DWORD)FTP_strdup(lpszSrc);
- workRequest.LPSZDESTFILE = (DWORD)FTP_strdup(lpszDest);
+ workRequest.handle = hFtpSession;
+ req = &workRequest.u.FtpRenameFileA;
+ req->lpszSrcFile = FTP_strdup(lpszSrc);
+ req->lpszDestFile = FTP_strdup(lpszDest);
return INTERNET_AsyncCall(&workRequest);
}
Index: dlls/wininet/http.c
===================================================================
RCS file: /home/wine/wine/dlls/wininet/http.c,v
retrieving revision 1.41
diff -u -r1.41 http.c
--- dlls/wininet/http.c 5 Sep 2003 23:08:28 -0000 1.41
+++ dlls/wininet/http.c 23 Sep 2003 05:58:19 -0000
@@ -243,22 +243,24 @@
if (0)
{
WORKREQUEST workRequest;
+ struct WORKREQ_HTTPOPENREQUESTA *req;
workRequest.asyncall = HTTPOPENREQUESTA;
- workRequest.HFTPSESSION = (DWORD)hHttpSession;
- workRequest.LPSZVERB = (DWORD)HTTP_strdup(lpszVerb);
- workRequest.LPSZOBJECTNAME = (DWORD)HTTP_strdup(lpszObjectName);
+ workRequest.handle = hHttpSession;
+ req = &workRequest.u.HttpOpenRequestA;
+ req->lpszVerb = HTTP_strdup(lpszVerb);
+ req->lpszObjectName = HTTP_strdup(lpszObjectName);
if (lpszVersion)
- workRequest.LPSZVERSION = (DWORD)HTTP_strdup(lpszVersion);
+ req->lpszVersion = HTTP_strdup(lpszVersion);
else
- workRequest.LPSZVERSION = 0;
+ req->lpszVersion = 0;
if (lpszReferrer)
- workRequest.LPSZREFERRER = (DWORD)HTTP_strdup(lpszReferrer);
+ req->lpszReferrer = HTTP_strdup(lpszReferrer);
else
- workRequest.LPSZREFERRER = 0;
- workRequest.LPSZACCEPTTYPES = (DWORD)lpszAcceptTypes;
- workRequest.DWFLAGS = dwFlags;
- workRequest.DWCONTEXT = dwContext;
+ req->lpszReferrer = 0;
+ req->lpszAcceptTypes = lpszAcceptTypes;
+ req->dwFlags = dwFlags;
+ req->dwContext = dwContext;
INTERNET_AsyncCall(&workRequest);
TRACE ("returning NULL\n");
@@ -972,16 +974,18 @@
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
+ struct WORKREQ_HTTPSENDREQUESTA *req;
workRequest.asyncall = HTTPSENDREQUESTA;
- workRequest.HFTPSESSION = (DWORD)hHttpRequest;
+ workRequest.handle = hHttpRequest;
+ req = &workRequest.u.HttpSendRequestA;
if (lpszHeaders)
- workRequest.LPSZHEADER = (DWORD)HTTP_strdup(lpszHeaders);
+ req->lpszHeader = HTTP_strdup(lpszHeaders);
else
- workRequest.LPSZHEADER = 0;
- workRequest.DWHEADERLENGTH = dwHeaderLength;
- workRequest.LPOPTIONAL = (DWORD)lpOptional;
- workRequest.DWOPTIONALLENGTH = dwOptionalLength;
+ req->lpszHeader = 0;
+ req->dwHeaderLength = dwHeaderLength;
+ req->lpOptional = lpOptional;
+ req->dwOptionalLength = dwOptionalLength;
INTERNET_AsyncCall(&workRequest);
/*
Index: dlls/wininet/internet.c
===================================================================
RCS file: /home/wine/wine/dlls/wininet/internet.c,v
retrieving revision 1.67
diff -u -r1.67 internet.c
--- dlls/wininet/internet.c 22 Sep 2003 19:45:50 -0000 1.67
+++ dlls/wininet/internet.c 23 Sep 2003 05:58:20 -0000
@@ -593,10 +593,12 @@
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
+ struct WORKREQ_INTERNETFINDNEXTA *req;
workRequest.asyncall = INTERNETFINDNEXTA;
- workRequest.HFTPSESSION = (DWORD)hFind;
- workRequest.LPFINDFILEDATA = (DWORD)lpvFindData;
+ workRequest.handle = hFind;
+ req = &workRequest.u.InternetFindNextA;
+ req->lpFindFileData = lpvFindData;
return INTERNET_AsyncCall(&workRequest);
}
@@ -2146,120 +2148,159 @@
TRACE("\n");
- if (INTERNET_GetWorkRequest(&workRequest))
+ if (!INTERNET_GetWorkRequest(&workRequest))
+ return;
+ TRACE("Got work %d\n", workRequest.asyncall);
+ switch (workRequest.asyncall)
{
- TRACE("Got work %d\n", workRequest.asyncall);
- switch (workRequest.asyncall)
- {
- case FTPPUTFILEA:
- FTP_FtpPutFileA((HINTERNET)workRequest.HFTPSESSION, (LPCSTR)workRequest.LPSZLOCALFILE,
- (LPCSTR)workRequest.LPSZNEWREMOTEFILE, workRequest.DWFLAGS, workRequest.DWCONTEXT);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZLOCALFILE);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZNEWREMOTEFILE);
- break;
+ case FTPPUTFILEA:
+ {
+ struct WORKREQ_FTPPUTFILEA *req = &workRequest.u.FtpPutFileA;
- case FTPSETCURRENTDIRECTORYA:
- FTP_FtpSetCurrentDirectoryA((HINTERNET)workRequest.HFTPSESSION,
- (LPCSTR)workRequest.LPSZDIRECTORY);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZDIRECTORY);
- break;
+ FTP_FtpPutFileA(workRequest.handle, req->lpszLocalFile,
+ req->lpszNewRemoteFile, req->dwFlags, req->dwContext);
- case FTPCREATEDIRECTORYA:
- FTP_FtpCreateDirectoryA((HINTERNET)workRequest.HFTPSESSION,
- (LPCSTR)workRequest.LPSZDIRECTORY);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZDIRECTORY);
- break;
+ HeapFree(GetProcessHeap(), 0, req->lpszLocalFile);
+ HeapFree(GetProcessHeap(), 0, req->lpszNewRemoteFile);
+ }
+ break;
- case FTPFINDFIRSTFILEA:
- FTP_FtpFindFirstFileA((HINTERNET)workRequest.HFTPSESSION,
- (LPCSTR)workRequest.LPSZSEARCHFILE,
- (LPWIN32_FIND_DATAA)workRequest.LPFINDFILEDATA, workRequest.DWFLAGS,
- workRequest.DWCONTEXT);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZSEARCHFILE);
- break;
+ case FTPSETCURRENTDIRECTORYA:
+ {
+ struct WORKREQ_FTPSETCURRENTDIRECTORYA *req;
- case FTPGETCURRENTDIRECTORYA:
- FTP_FtpGetCurrentDirectoryA((HINTERNET)workRequest.HFTPSESSION,
- (LPSTR)workRequest.LPSZDIRECTORY, (LPDWORD)workRequest.LPDWDIRECTORY);
- break;
+ req = &workRequest.u.FtpSetCurrentDirectoryA;
+ FTP_FtpSetCurrentDirectoryA(workRequest.handle, req->lpszDirectory);
+ HeapFree(GetProcessHeap(), 0, req->lpszDirectory);
+ }
+ break;
- case FTPOPENFILEA:
- FTP_FtpOpenFileA((HINTERNET)workRequest.HFTPSESSION,
- (LPCSTR)workRequest.LPSZFILENAME,
- workRequest.FDWACCESS,
- workRequest.DWFLAGS,
- workRequest.DWCONTEXT);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZFILENAME);
- break;
-
- case FTPGETFILEA:
- FTP_FtpGetFileA((HINTERNET)workRequest.HFTPSESSION,
- (LPCSTR)workRequest.LPSZREMOTEFILE,
- (LPCSTR)workRequest.LPSZNEWFILE,
- (BOOL)workRequest.FFAILIFEXISTS,
- workRequest.DWLOCALFLAGSATTRIBUTE,
- workRequest.DWFLAGS,
- workRequest.DWCONTEXT);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZREMOTEFILE);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZNEWFILE);
- break;
+ case FTPCREATEDIRECTORYA:
+ {
+ struct WORKREQ_FTPCREATEDIRECTORYA *req;
- case FTPDELETEFILEA:
- FTP_FtpDeleteFileA((HINTERNET)workRequest.HFTPSESSION,
- (LPCSTR)workRequest.LPSZFILENAME);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZFILENAME);
- break;
+ req = &workRequest.u.FtpCreateDirectoryA;
+ FTP_FtpCreateDirectoryA(workRequest.handle, req->lpszDirectory);
+ HeapFree(GetProcessHeap(), 0, req->lpszDirectory);
+ }
+ break;
- case FTPREMOVEDIRECTORYA:
- FTP_FtpRemoveDirectoryA((HINTERNET)workRequest.HFTPSESSION,
- (LPCSTR)workRequest.LPSZDIRECTORY);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZDIRECTORY);
- break;
+ case FTPFINDFIRSTFILEA:
+ {
+ struct WORKREQ_FTPFINDFIRSTFILEA *req;
- case FTPRENAMEFILEA:
- FTP_FtpRenameFileA((HINTERNET)workRequest.HFTPSESSION,
- (LPCSTR)workRequest.LPSZSRCFILE,
- (LPCSTR)workRequest.LPSZDESTFILE);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZSRCFILE);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZDESTFILE);
- break;
+ req = &workRequest.u.FtpFindFirstFileA;
+ FTP_FtpFindFirstFileA(workRequest.handle, req->lpszSearchFile,
+ req->lpFindFileData, req->dwFlags, req->dwContext);
+ HeapFree(GetProcessHeap(), 0, req->lpszSearchFile);
+ }
+ break;
- case INTERNETFINDNEXTA:
- INTERNET_FindNextFileA((HINTERNET)workRequest.HFTPSESSION,
- (LPWIN32_FIND_DATAA)workRequest.LPFINDFILEDATA);
- break;
+ case FTPGETCURRENTDIRECTORYA:
+ {
+ struct WORKREQ_FTPGETCURRENTDIRECTORYA *req;
- case HTTPSENDREQUESTA:
- HTTP_HttpSendRequestA((HINTERNET)workRequest.HFTPSESSION,
- (LPCSTR)workRequest.LPSZHEADER,
- workRequest.DWHEADERLENGTH,
- (LPVOID)workRequest.LPOPTIONAL,
- workRequest.DWOPTIONALLENGTH);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZHEADER);
- break;
-
- case HTTPOPENREQUESTA:
- HTTP_HttpOpenRequestA((HINTERNET)workRequest.HFTPSESSION,
- (LPCSTR)workRequest.LPSZVERB,
- (LPCSTR)workRequest.LPSZOBJECTNAME,
- (LPCSTR)workRequest.LPSZVERSION,
- (LPCSTR)workRequest.LPSZREFERRER,
- (LPCSTR*)workRequest.LPSZACCEPTTYPES,
- workRequest.DWFLAGS,
- workRequest.DWCONTEXT);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZVERB);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZOBJECTNAME);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZVERSION);
- HeapFree(GetProcessHeap(), 0, (LPVOID)workRequest.LPSZREFERRER);
- break;
-
- case SENDCALLBACK:
- SendAsyncCallbackInt((LPWININETAPPINFOA)workRequest.param1,
- (HINTERNET)workRequest.param2, workRequest.param3,
- workRequest.param4, (LPVOID)workRequest.param5,
- workRequest.param6);
- break;
- }
+ req = &workRequest.u.FtpGetCurrentDirectoryA;
+ FTP_FtpGetCurrentDirectoryA(workRequest.handle,
+ req->lpszDirectory, req->lpdwDirectory);
+ }
+ break;
+
+ case FTPOPENFILEA:
+ {
+ struct WORKREQ_FTPOPENFILEA *req = &workRequest.u.FtpOpenFileA;
+
+ FTP_FtpOpenFileA(workRequest.handle, req->lpszFilename,
+ req->dwAccess, req->dwFlags, req->dwContext);
+ HeapFree(GetProcessHeap(), 0, req->lpszFilename);
+ }
+ break;
+
+ case FTPGETFILEA:
+ {
+ struct WORKREQ_FTPGETFILEA *req = &workRequest.u.FtpGetFileA;
+
+ FTP_FtpGetFileA(workRequest.handle, req->lpszRemoteFile,
+ req->lpszNewFile, req->fFailIfExists,
+ req->dwLocalFlagsAttribute, req->dwFlags, req->dwContext);
+ HeapFree(GetProcessHeap(), 0, req->lpszRemoteFile);
+ HeapFree(GetProcessHeap(), 0, req->lpszNewFile);
+ }
+ break;
+
+ case FTPDELETEFILEA:
+ {
+ struct WORKREQ_FTPDELETEFILEA *req = &workRequest.u.FtpDeleteFileA;
+
+ FTP_FtpDeleteFileA(workRequest.handle, req->lpszFilename);
+ HeapFree(GetProcessHeap(), 0, req->lpszFilename);
+ }
+ break;
+
+ case FTPREMOVEDIRECTORYA:
+ {
+ struct WORKREQ_FTPREMOVEDIRECTORYA *req;
+
+ req = &workRequest.u.FtpRemoveDirectoryA;
+ FTP_FtpRemoveDirectoryA(workRequest.handle, req->lpszDirectory);
+ HeapFree(GetProcessHeap(), 0, req->lpszDirectory);
+ }
+ break;
+
+ case FTPRENAMEFILEA:
+ {
+ struct WORKREQ_FTPRENAMEFILEA *req = &workRequest.u.FtpRenameFileA;
+
+ FTP_FtpRenameFileA(workRequest.handle, req->lpszSrcFile, req->lpszDestFile);
+ HeapFree(GetProcessHeap(), 0, req->lpszSrcFile);
+ HeapFree(GetProcessHeap(), 0, req->lpszDestFile);
+ }
+ break;
+
+ case INTERNETFINDNEXTA:
+ {
+ struct WORKREQ_INTERNETFINDNEXTA *req;
+
+ req = &workRequest.u.InternetFindNextA;
+ INTERNET_FindNextFileA(workRequest.handle, req->lpFindFileData);
+ }
+ break;
+
+ case HTTPSENDREQUESTA:
+ {
+ struct WORKREQ_HTTPSENDREQUESTA *req = &workRequest.u.HttpSendRequestA;
+
+ HTTP_HttpSendRequestA(workRequest.handle, req->lpszHeader,
+ req->dwHeaderLength, req->lpOptional, req->dwOptionalLength);
+
+ HeapFree(GetProcessHeap(), 0, req->lpszHeader);
+ }
+ break;
+
+ case HTTPOPENREQUESTA:
+ {
+ struct WORKREQ_HTTPOPENREQUESTA *req = &workRequest.u.HttpOpenRequestA;
+
+ HTTP_HttpOpenRequestA(workRequest.handle, req->lpszVerb,
+ req->lpszObjectName, req->lpszVersion, req->lpszReferrer,
+ req->lpszAcceptTypes, req->dwFlags, req->dwContext);
+
+ HeapFree(GetProcessHeap(), 0, req->lpszVerb);
+ HeapFree(GetProcessHeap(), 0, req->lpszObjectName);
+ HeapFree(GetProcessHeap(), 0, req->lpszVersion);
+ HeapFree(GetProcessHeap(), 0, req->lpszReferrer);
+ }
+ break;
+
+ case SENDCALLBACK:
+ {
+ struct WORKREQ_SENDCALLBACK *req = &workRequest.u.SendCallback;
+
+ SendAsyncCallbackInt(workRequest.handle, req->hHttpSession,
+ req->dwContext, req->dwInternetStatus, req->lpvStatusInfo,
+ req->dwStatusInfoLength);
+ }
+ break;
}
}
Index: dlls/wininet/internet.h
===================================================================
RCS file: /home/wine/wine/dlls/wininet/internet.h,v
retrieving revision 1.15
diff -u -r1.15 internet.h
--- dlls/wininet/internet.h 5 Aug 2003 19:21:08 -0000 1.15
+++ dlls/wininet/internet.h 23 Sep 2003 05:58:20 -0000
@@ -177,50 +177,126 @@
SENDCALLBACK,
} ASYNC_FUNC;
+struct WORKREQ_FTPPUTFILEA
+{
+ LPSTR lpszLocalFile;
+ LPSTR lpszNewRemoteFile;
+ DWORD dwFlags;
+ DWORD dwContext;
+};
+
+struct WORKREQ_FTPSETCURRENTDIRECTORYA
+{
+ LPSTR lpszDirectory;
+};
+
+struct WORKREQ_FTPCREATEDIRECTORYA
+{
+ LPSTR lpszDirectory;
+};
+
+struct WORKREQ_FTPFINDFIRSTFILEA
+{
+ LPSTR lpszSearchFile;
+ LPWIN32_FIND_DATAA lpFindFileData;
+ DWORD dwFlags;
+ DWORD dwContext;
+};
+
+struct WORKREQ_FTPGETCURRENTDIRECTORYA
+{
+ LPSTR lpszDirectory;
+ DWORD *lpdwDirectory;
+};
+
+struct WORKREQ_FTPOPENFILEA
+{
+ LPSTR lpszFilename;
+ DWORD dwAccess;
+ DWORD dwFlags;
+ DWORD dwContext;
+};
+
+struct WORKREQ_FTPGETFILEA
+{
+ LPSTR lpszRemoteFile;
+ LPSTR lpszNewFile;
+ BOOL fFailIfExists;
+ DWORD dwLocalFlagsAttribute;
+ DWORD dwFlags;
+ DWORD dwContext;
+};
+
+struct WORKREQ_FTPDELETEFILEA
+{
+ LPSTR lpszFilename;
+};
+
+struct WORKREQ_FTPREMOVEDIRECTORYA
+{
+ LPSTR lpszDirectory;
+};
+
+struct WORKREQ_FTPRENAMEFILEA
+{
+ LPSTR lpszSrcFile;
+ LPSTR lpszDestFile;
+};
+
+struct WORKREQ_INTERNETFINDNEXTA
+{
+ LPWIN32_FIND_DATAA lpFindFileData;
+};
+
+struct WORKREQ_HTTPOPENREQUESTA
+{
+ LPSTR lpszVerb;
+ LPSTR lpszObjectName;
+ LPSTR lpszVersion;
+ LPSTR lpszReferrer;
+ LPCSTR *lpszAcceptTypes;
+ DWORD dwFlags;
+ DWORD dwContext;
+};
+
+struct WORKREQ_HTTPSENDREQUESTA
+{
+ LPSTR lpszHeader;
+ DWORD dwHeaderLength;
+ LPVOID lpOptional;
+ DWORD dwOptionalLength;
+};
+
+struct WORKREQ_SENDCALLBACK
+{
+ HINTERNET hHttpSession;
+ DWORD dwContext;
+ DWORD dwInternetStatus;
+ LPVOID lpvStatusInfo;
+ DWORD dwStatusInfoLength;
+};
+
typedef struct WORKREQ
{
ASYNC_FUNC asyncall;
- DWORD param1;
-#define HFTPSESSION param1
-
- DWORD param2;
-#define LPSZLOCALFILE param2
-#define LPSZREMOTEFILE param2
-#define LPSZFILENAME param2
-#define LPSZSRCFILE param2
-#define LPSZDIRECTORY param2
-#define LPSZSEARCHFILE param2
-#define LPSZHEADER param2
-#define LPSZVERB param2
-
- DWORD param3;
-#define LPSZNEWREMOTEFILE param3
-#define LPSZNEWFILE param3
-#define LPFINDFILEDATA param3
-#define LPDWDIRECTORY param3
-#define FDWACCESS param3
-#define LPSZDESTFILE param3
-#define DWHEADERLENGTH param3
-#define LPSZOBJECTNAME param3
-
- DWORD param4;
-#define DWFLAGS param4
-#define LPOPTIONAL param4
-
- DWORD param5;
-#define DWCONTEXT param5
-#define DWOPTIONALLENGTH param5
-
- DWORD param6;
-#define FFAILIFEXISTS param6
-#define LPSZVERSION param6
-
- DWORD param7;
-#define DWLOCALFLAGSATTRIBUTE param7
-#define LPSZREFERRER param7
+ HINTERNET handle;
- DWORD param8;
-#define LPSZACCEPTTYPES param8
+ union {
+ struct WORKREQ_FTPPUTFILEA FtpPutFileA;
+ struct WORKREQ_FTPSETCURRENTDIRECTORYA FtpSetCurrentDirectoryA;
+ struct WORKREQ_FTPCREATEDIRECTORYA FtpCreateDirectoryA;
+ struct WORKREQ_FTPFINDFIRSTFILEA FtpFindFirstFileA;
+ struct WORKREQ_FTPGETCURRENTDIRECTORYA FtpGetCurrentDirectoryA;
+ struct WORKREQ_FTPOPENFILEA FtpOpenFileA;
+ struct WORKREQ_FTPGETFILEA FtpGetFileA;
+ struct WORKREQ_FTPDELETEFILEA FtpDeleteFileA;
+ struct WORKREQ_FTPREMOVEDIRECTORYA FtpRemoveDirectoryA;
+ struct WORKREQ_FTPRENAMEFILEA FtpRenameFileA;
+ struct WORKREQ_INTERNETFINDNEXTA InternetFindNextA;
+ struct WORKREQ_HTTPOPENREQUESTA HttpOpenRequestA;
+ struct WORKREQ_HTTPSENDREQUESTA HttpSendRequestA;
+ struct WORKREQ_SENDCALLBACK SendCallback;
+ } u;
struct WORKREQ *next;
struct WORKREQ *prev;
Index: dlls/wininet/utility.c
===================================================================
RCS file: /home/wine/wine/dlls/wininet/utility.c,v
retrieving revision 1.12
diff -u -r1.12 utility.c
--- dlls/wininet/utility.c 5 Sep 2003 23:08:28 -0000 1.12
+++ dlls/wininet/utility.c 23 Sep 2003 05:58:20 -0000
@@ -202,15 +202,16 @@
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
+ struct WORKREQ_SENDCALLBACK *req;
workRequest.asyncall = SENDCALLBACK;
-
- workRequest.param1 = (DWORD)hIC;
- workRequest.param2 = (DWORD)hHttpSession;
- workRequest.param3 = dwContext;
- workRequest.param4 = dwInternetStatus;
- workRequest.param5 = (DWORD)lpvStatusInfo;
- workRequest.param6 = dwStatusInfoLength;
+ workRequest.handle = hIC;
+ req = &workRequest.u.SendCallback;
+ req->hHttpSession = hHttpSession;
+ req->dwContext = dwContext;
+ req->dwInternetStatus = dwInternetStatus;
+ req->lpvStatusInfo = lpvStatusInfo;
+ req->dwStatusInfoLength = dwStatusInfoLength;
INTERNET_AsyncCall(&workRequest);
}
More information about the wine-patches
mailing list