ChangeLog: * wininet: use unions instead of defines in async work requests
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); }