wininet: Move ftp FindNextFile implementation to ftp.c.
This commit is contained in:
parent
2a50d52c04
commit
91312d7d57
|
@ -2705,6 +2705,64 @@ static void FTP_CloseSessionHandle(LPWININETHANDLEHEADER hdr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* FTP_FindNextFileW (Internal)
|
||||||
|
*
|
||||||
|
* Continues a file search from a previous call to FindFirstFile
|
||||||
|
*
|
||||||
|
* RETURNS
|
||||||
|
* TRUE on success
|
||||||
|
* FALSE on failure
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
BOOL WINAPI FTP_FindNextFileW(LPWININETFTPFINDNEXTW lpwh, LPVOID lpvFindData)
|
||||||
|
{
|
||||||
|
BOOL bSuccess = TRUE;
|
||||||
|
LPWIN32_FIND_DATAW lpFindFileData;
|
||||||
|
|
||||||
|
TRACE("index(%d) size(%d)\n", lpwh->index, lpwh->size);
|
||||||
|
|
||||||
|
assert (lpwh->hdr.htype == WH_HFTPFINDNEXT);
|
||||||
|
|
||||||
|
/* Clear any error information */
|
||||||
|
INTERNET_SetLastError(0);
|
||||||
|
|
||||||
|
assert(lpwh->hdr.lpwhparent->htype == WH_HFTPSESSION);
|
||||||
|
|
||||||
|
lpFindFileData = (LPWIN32_FIND_DATAW) lpvFindData;
|
||||||
|
ZeroMemory(lpFindFileData, sizeof(WIN32_FIND_DATAA));
|
||||||
|
|
||||||
|
if (lpwh->index >= lpwh->size)
|
||||||
|
{
|
||||||
|
INTERNET_SetLastError(ERROR_NO_MORE_FILES);
|
||||||
|
bSuccess = FALSE;
|
||||||
|
goto lend;
|
||||||
|
}
|
||||||
|
|
||||||
|
FTP_ConvertFileProp(&lpwh->lpafp[lpwh->index], lpFindFileData);
|
||||||
|
lpwh->index++;
|
||||||
|
|
||||||
|
TRACE("\nName: %s\nSize: %d\n", debugstr_w(lpFindFileData->cFileName), lpFindFileData->nFileSizeLow);
|
||||||
|
|
||||||
|
lend:
|
||||||
|
|
||||||
|
if (lpwh->hdr.dwFlags & INTERNET_FLAG_ASYNC)
|
||||||
|
{
|
||||||
|
INTERNET_ASYNC_RESULT iar;
|
||||||
|
|
||||||
|
iar.dwResult = (DWORD)bSuccess;
|
||||||
|
iar.dwError = iar.dwError = bSuccess ? ERROR_SUCCESS :
|
||||||
|
INTERNET_GetLastError();
|
||||||
|
|
||||||
|
INTERNET_SendCallback(&lpwh->hdr, lpwh->hdr.dwContext,
|
||||||
|
INTERNET_STATUS_REQUEST_COMPLETE, &iar,
|
||||||
|
sizeof(INTERNET_ASYNC_RESULT));
|
||||||
|
}
|
||||||
|
|
||||||
|
return bSuccess;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* FTP_CloseFindNextHandle (internal)
|
* FTP_CloseFindNextHandle (internal)
|
||||||
*
|
*
|
||||||
|
@ -2717,7 +2775,7 @@ static void FTP_CloseSessionHandle(LPWININETHANDLEHEADER hdr)
|
||||||
*/
|
*/
|
||||||
static void FTP_CloseFindNextHandle(LPWININETHANDLEHEADER hdr)
|
static void FTP_CloseFindNextHandle(LPWININETHANDLEHEADER hdr)
|
||||||
{
|
{
|
||||||
LPWININETFINDNEXTW lpwfn = (LPWININETFINDNEXTW) hdr;
|
LPWININETFTPFINDNEXTW lpwfn = (LPWININETFTPFINDNEXTW) hdr;
|
||||||
DWORD i;
|
DWORD i;
|
||||||
|
|
||||||
TRACE("\n");
|
TRACE("\n");
|
||||||
|
@ -2777,7 +2835,7 @@ static HINTERNET FTP_ReceiveFileList(LPWININETFTPSESSIONW lpwfs, INT nSocket, LP
|
||||||
{
|
{
|
||||||
DWORD dwSize = 0;
|
DWORD dwSize = 0;
|
||||||
LPFILEPROPERTIESW lpafp = NULL;
|
LPFILEPROPERTIESW lpafp = NULL;
|
||||||
LPWININETFINDNEXTW lpwfn = NULL;
|
LPWININETFTPFINDNEXTW lpwfn = NULL;
|
||||||
HINTERNET handle = 0;
|
HINTERNET handle = 0;
|
||||||
|
|
||||||
TRACE("(%p,%d,%s,%p,%d)\n", lpwfs, nSocket, debugstr_w(lpszSearchFile), lpFindFileData, dwContext);
|
TRACE("(%p,%d,%s,%p,%d)\n", lpwfs, nSocket, debugstr_w(lpszSearchFile), lpFindFileData, dwContext);
|
||||||
|
@ -2787,10 +2845,10 @@ static HINTERNET FTP_ReceiveFileList(LPWININETFTPSESSIONW lpwfs, INT nSocket, LP
|
||||||
if(lpFindFileData)
|
if(lpFindFileData)
|
||||||
FTP_ConvertFileProp(lpafp, lpFindFileData);
|
FTP_ConvertFileProp(lpafp, lpFindFileData);
|
||||||
|
|
||||||
lpwfn = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WININETFINDNEXTW));
|
lpwfn = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WININETFTPFINDNEXTW));
|
||||||
if (lpwfn)
|
if (lpwfn)
|
||||||
{
|
{
|
||||||
lpwfn->hdr.htype = WH_HFINDNEXT;
|
lpwfn->hdr.htype = WH_HFTPFINDNEXT;
|
||||||
lpwfn->hdr.lpwhparent = WININET_AddRef( &lpwfs->hdr );
|
lpwfn->hdr.lpwhparent = WININET_AddRef( &lpwfs->hdr );
|
||||||
lpwfn->hdr.dwContext = dwContext;
|
lpwfn->hdr.dwContext = dwContext;
|
||||||
lpwfn->hdr.dwRefCount = 1;
|
lpwfn->hdr.dwRefCount = 1;
|
||||||
|
|
|
@ -85,7 +85,6 @@ typedef struct
|
||||||
} WITHREADERROR, *LPWITHREADERROR;
|
} WITHREADERROR, *LPWITHREADERROR;
|
||||||
|
|
||||||
static VOID INTERNET_CloseHandle(LPWININETHANDLEHEADER hdr);
|
static VOID INTERNET_CloseHandle(LPWININETHANDLEHEADER hdr);
|
||||||
BOOL WINAPI INTERNET_FindNextFileW(LPWININETFINDNEXTW lpwh, LPVOID lpvFindData);
|
|
||||||
HINTERNET WINAPI INTERNET_InternetOpenUrlW(LPWININETAPPINFOW hIC, LPCWSTR lpszUrl,
|
HINTERNET WINAPI INTERNET_InternetOpenUrlW(LPWININETAPPINFOW hIC, LPCWSTR lpszUrl,
|
||||||
LPCWSTR lpszHeaders, DWORD dwHeadersLength, DWORD dwFlags, DWORD dwContext);
|
LPCWSTR lpszHeaders, DWORD dwHeadersLength, DWORD dwFlags, DWORD dwContext);
|
||||||
static VOID INTERNET_ExecuteWork(void);
|
static VOID INTERNET_ExecuteWork(void);
|
||||||
|
@ -943,14 +942,15 @@ BOOL WINAPI InternetFindNextFileA(HINTERNET hFind, LPVOID lpvFindData)
|
||||||
BOOL WINAPI InternetFindNextFileW(HINTERNET hFind, LPVOID lpvFindData)
|
BOOL WINAPI InternetFindNextFileW(HINTERNET hFind, LPVOID lpvFindData)
|
||||||
{
|
{
|
||||||
LPWININETAPPINFOW hIC = NULL;
|
LPWININETAPPINFOW hIC = NULL;
|
||||||
LPWININETFINDNEXTW lpwh;
|
LPWININETFTPFINDNEXTW lpwh;
|
||||||
BOOL bSuccess = FALSE;
|
BOOL bSuccess = FALSE;
|
||||||
|
|
||||||
TRACE("\n");
|
TRACE("\n");
|
||||||
|
|
||||||
lpwh = (LPWININETFINDNEXTW) WININET_GetObject( hFind );
|
lpwh = (LPWININETFTPFINDNEXTW) WININET_GetObject( hFind );
|
||||||
if (NULL == lpwh || lpwh->hdr.htype != WH_HFINDNEXT)
|
if (NULL == lpwh || lpwh->hdr.htype != WH_HFTPFINDNEXT)
|
||||||
{
|
{
|
||||||
|
FIXME("Only FTP supported\n");
|
||||||
INTERNET_SetLastError(ERROR_INTERNET_INCORRECT_HANDLE_TYPE);
|
INTERNET_SetLastError(ERROR_INTERNET_INCORRECT_HANDLE_TYPE);
|
||||||
goto lend;
|
goto lend;
|
||||||
}
|
}
|
||||||
|
@ -959,18 +959,18 @@ BOOL WINAPI InternetFindNextFileW(HINTERNET hFind, LPVOID lpvFindData)
|
||||||
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
|
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
|
||||||
{
|
{
|
||||||
WORKREQUEST workRequest;
|
WORKREQUEST workRequest;
|
||||||
struct WORKREQ_INTERNETFINDNEXTW *req;
|
struct WORKREQ_FTPFINDNEXTW *req;
|
||||||
|
|
||||||
workRequest.asyncall = INTERNETFINDNEXTW;
|
workRequest.asyncall = FTPFINDNEXTW;
|
||||||
workRequest.hdr = WININET_AddRef( &lpwh->hdr );
|
workRequest.hdr = WININET_AddRef( &lpwh->hdr );
|
||||||
req = &workRequest.u.InternetFindNextW;
|
req = &workRequest.u.FtpFindNextW;
|
||||||
req->lpFindFileData = lpvFindData;
|
req->lpFindFileData = lpvFindData;
|
||||||
|
|
||||||
bSuccess = INTERNET_AsyncCall(&workRequest);
|
bSuccess = INTERNET_AsyncCall(&workRequest);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bSuccess = INTERNET_FindNextFileW(lpwh, lpvFindData);
|
bSuccess = FTP_FindNextFileW(lpwh, lpvFindData);
|
||||||
}
|
}
|
||||||
lend:
|
lend:
|
||||||
if( lpwh )
|
if( lpwh )
|
||||||
|
@ -978,71 +978,6 @@ lend:
|
||||||
return bSuccess;
|
return bSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
* INTERNET_FindNextFileW (Internal)
|
|
||||||
*
|
|
||||||
* Continues a file search from a previous call to FindFirstFile
|
|
||||||
*
|
|
||||||
* RETURNS
|
|
||||||
* TRUE on success
|
|
||||||
* FALSE on failure
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
BOOL WINAPI INTERNET_FindNextFileW(LPWININETFINDNEXTW lpwh, LPVOID lpvFindData)
|
|
||||||
{
|
|
||||||
BOOL bSuccess = TRUE;
|
|
||||||
LPWIN32_FIND_DATAW lpFindFileData;
|
|
||||||
|
|
||||||
TRACE("\n");
|
|
||||||
|
|
||||||
assert (lpwh->hdr.htype == WH_HFINDNEXT);
|
|
||||||
|
|
||||||
/* Clear any error information */
|
|
||||||
INTERNET_SetLastError(0);
|
|
||||||
|
|
||||||
if (lpwh->hdr.lpwhparent->htype != WH_HFTPSESSION)
|
|
||||||
{
|
|
||||||
FIXME("Only FTP find next supported\n");
|
|
||||||
INTERNET_SetLastError(ERROR_INTERNET_INCORRECT_HANDLE_TYPE);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
TRACE("index(%d) size(%d)\n", lpwh->index, lpwh->size);
|
|
||||||
|
|
||||||
lpFindFileData = (LPWIN32_FIND_DATAW) lpvFindData;
|
|
||||||
ZeroMemory(lpFindFileData, sizeof(WIN32_FIND_DATAA));
|
|
||||||
|
|
||||||
if (lpwh->index >= lpwh->size)
|
|
||||||
{
|
|
||||||
INTERNET_SetLastError(ERROR_NO_MORE_FILES);
|
|
||||||
bSuccess = FALSE;
|
|
||||||
goto lend;
|
|
||||||
}
|
|
||||||
|
|
||||||
FTP_ConvertFileProp(&lpwh->lpafp[lpwh->index], lpFindFileData);
|
|
||||||
lpwh->index++;
|
|
||||||
|
|
||||||
TRACE("\nName: %s\nSize: %d\n", debugstr_w(lpFindFileData->cFileName), lpFindFileData->nFileSizeLow);
|
|
||||||
|
|
||||||
lend:
|
|
||||||
|
|
||||||
if (lpwh->hdr.dwFlags & INTERNET_FLAG_ASYNC)
|
|
||||||
{
|
|
||||||
INTERNET_ASYNC_RESULT iar;
|
|
||||||
|
|
||||||
iar.dwResult = (DWORD)bSuccess;
|
|
||||||
iar.dwError = iar.dwError = bSuccess ? ERROR_SUCCESS :
|
|
||||||
INTERNET_GetLastError();
|
|
||||||
|
|
||||||
INTERNET_SendCallback(&lpwh->hdr, lpwh->hdr.dwContext,
|
|
||||||
INTERNET_STATUS_REQUEST_COMPLETE, &iar,
|
|
||||||
sizeof(INTERNET_ASYNC_RESULT));
|
|
||||||
}
|
|
||||||
|
|
||||||
return bSuccess;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* INTERNET_CloseHandle (internal)
|
* INTERNET_CloseHandle (internal)
|
||||||
*
|
*
|
||||||
|
@ -3439,15 +3374,15 @@ static VOID INTERNET_ExecuteWork(void)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case INTERNETFINDNEXTW:
|
case FTPFINDNEXTW:
|
||||||
{
|
{
|
||||||
struct WORKREQ_INTERNETFINDNEXTW *req;
|
struct WORKREQ_FTPFINDNEXTW *req;
|
||||||
LPWININETFINDNEXTW lpwh = (LPWININETFINDNEXTW) workRequest.hdr;
|
LPWININETFTPFINDNEXTW lpwh = (LPWININETFTPFINDNEXTW) workRequest.hdr;
|
||||||
|
|
||||||
TRACE("INTERNETFINDNEXTW %p\n", lpwh);
|
TRACE("INTERNETFINDNEXTW %p\n", lpwh);
|
||||||
|
|
||||||
req = &workRequest.u.InternetFindNextW;
|
req = &workRequest.u.FtpFindNextW;
|
||||||
INTERNET_FindNextFileW(lpwh, req->lpFindFileData);
|
FTP_FindNextFileW(lpwh, req->lpFindFileData);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,7 @@ typedef enum
|
||||||
WH_HGOPHERSESSION = INTERNET_HANDLE_TYPE_CONNECT_GOPHER,
|
WH_HGOPHERSESSION = INTERNET_HANDLE_TYPE_CONNECT_GOPHER,
|
||||||
WH_HHTTPSESSION = INTERNET_HANDLE_TYPE_CONNECT_HTTP,
|
WH_HHTTPSESSION = INTERNET_HANDLE_TYPE_CONNECT_HTTP,
|
||||||
WH_HFILE = INTERNET_HANDLE_TYPE_FTP_FILE,
|
WH_HFILE = INTERNET_HANDLE_TYPE_FTP_FILE,
|
||||||
WH_HFINDNEXT = INTERNET_HANDLE_TYPE_FTP_FIND,
|
WH_HFTPFINDNEXT = INTERNET_HANDLE_TYPE_FTP_FIND,
|
||||||
WH_HHTTPREQ = INTERNET_HANDLE_TYPE_HTTP_REQUEST,
|
WH_HHTTPREQ = INTERNET_HANDLE_TYPE_HTTP_REQUEST,
|
||||||
} WH_TYPE;
|
} WH_TYPE;
|
||||||
|
|
||||||
|
@ -241,7 +241,7 @@ typedef struct
|
||||||
DWORD index;
|
DWORD index;
|
||||||
DWORD size;
|
DWORD size;
|
||||||
LPFILEPROPERTIESW lpafp;
|
LPFILEPROPERTIESW lpafp;
|
||||||
} WININETFINDNEXTW, *LPWININETFINDNEXTW;
|
} WININETFTPFINDNEXTW, *LPWININETFTPFINDNEXTW;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
@ -255,7 +255,7 @@ typedef enum
|
||||||
FTPDELETEFILEW,
|
FTPDELETEFILEW,
|
||||||
FTPREMOVEDIRECTORYW,
|
FTPREMOVEDIRECTORYW,
|
||||||
FTPRENAMEFILEW,
|
FTPRENAMEFILEW,
|
||||||
INTERNETFINDNEXTW,
|
FTPFINDNEXTW,
|
||||||
HTTPSENDREQUESTW,
|
HTTPSENDREQUESTW,
|
||||||
HTTPOPENREQUESTW,
|
HTTPOPENREQUESTW,
|
||||||
SENDCALLBACK,
|
SENDCALLBACK,
|
||||||
|
@ -329,7 +329,7 @@ struct WORKREQ_FTPRENAMEFILEW
|
||||||
LPWSTR lpszDestFile;
|
LPWSTR lpszDestFile;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct WORKREQ_INTERNETFINDNEXTW
|
struct WORKREQ_FTPFINDNEXTW
|
||||||
{
|
{
|
||||||
LPWIN32_FIND_DATAW lpFindFileData;
|
LPWIN32_FIND_DATAW lpFindFileData;
|
||||||
};
|
};
|
||||||
|
@ -394,7 +394,7 @@ typedef struct WORKREQ
|
||||||
struct WORKREQ_FTPDELETEFILEW FtpDeleteFileW;
|
struct WORKREQ_FTPDELETEFILEW FtpDeleteFileW;
|
||||||
struct WORKREQ_FTPREMOVEDIRECTORYW FtpRemoveDirectoryW;
|
struct WORKREQ_FTPREMOVEDIRECTORYW FtpRemoveDirectoryW;
|
||||||
struct WORKREQ_FTPRENAMEFILEW FtpRenameFileW;
|
struct WORKREQ_FTPRENAMEFILEW FtpRenameFileW;
|
||||||
struct WORKREQ_INTERNETFINDNEXTW InternetFindNextW;
|
struct WORKREQ_FTPFINDNEXTW FtpFindNextW;
|
||||||
struct WORKREQ_HTTPOPENREQUESTW HttpOpenRequestW;
|
struct WORKREQ_HTTPOPENREQUESTW HttpOpenRequestW;
|
||||||
struct WORKREQ_HTTPSENDREQUESTW HttpSendRequestW;
|
struct WORKREQ_HTTPSENDREQUESTW HttpSendRequestW;
|
||||||
struct WORKREQ_SENDCALLBACK SendCallback;
|
struct WORKREQ_SENDCALLBACK SendCallback;
|
||||||
|
@ -441,6 +441,7 @@ BOOLAPI FTP_FtpSetCurrentDirectoryW(LPWININETFTPSESSIONW lpwfs, LPCWSTR lpszDire
|
||||||
BOOLAPI FTP_FtpCreateDirectoryW(LPWININETFTPSESSIONW lpwfs, LPCWSTR lpszDirectory);
|
BOOLAPI FTP_FtpCreateDirectoryW(LPWININETFTPSESSIONW lpwfs, LPCWSTR lpszDirectory);
|
||||||
INTERNETAPI HINTERNET WINAPI FTP_FtpFindFirstFileW(LPWININETFTPSESSIONW lpwfs,
|
INTERNETAPI HINTERNET WINAPI FTP_FtpFindFirstFileW(LPWININETFTPSESSIONW lpwfs,
|
||||||
LPCWSTR lpszSearchFile, LPWIN32_FIND_DATAW lpFindFileData, DWORD dwFlags, DWORD dwContext);
|
LPCWSTR lpszSearchFile, LPWIN32_FIND_DATAW lpFindFileData, DWORD dwFlags, DWORD dwContext);
|
||||||
|
BOOL WINAPI FTP_FindNextFileW(LPWININETFTPFINDNEXTW lpwh, LPVOID lpvFindData);
|
||||||
BOOLAPI FTP_FtpGetCurrentDirectoryW(LPWININETFTPSESSIONW lpwfs, LPWSTR lpszCurrentDirectory,
|
BOOLAPI FTP_FtpGetCurrentDirectoryW(LPWININETFTPSESSIONW lpwfs, LPWSTR lpszCurrentDirectory,
|
||||||
LPDWORD lpdwCurrentDirectory);
|
LPDWORD lpdwCurrentDirectory);
|
||||||
BOOL FTP_ConvertFileProp(LPFILEPROPERTIESW lpafp, LPWIN32_FIND_DATAW lpFindFileData);
|
BOOL FTP_ConvertFileProp(LPFILEPROPERTIESW lpafp, LPWIN32_FIND_DATAW lpFindFileData);
|
||||||
|
|
Loading…
Reference in New Issue