- Implementation of [Internet|Ftp]*W functions to extend (almost)

non-existant wide-character support.
- Moved some functions from "stub in wininet.spec" to "FIXME("STUB")"
  to allow for testing of changes.
This commit is contained in:
Jaco Greeff 2002-10-28 18:48:24 +00:00 committed by Alexandre Julliard
parent c36d63f436
commit aeef9b4f71
3 changed files with 461 additions and 43 deletions

View File

@ -7,6 +7,7 @@
* Noureddine Jemmali * Noureddine Jemmali
* *
* Copyright 2000 Andreas Mohr * Copyright 2000 Andreas Mohr
* Copyright 2002 Jaco Greeff
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -43,6 +44,7 @@
#include "wingdi.h" #include "wingdi.h"
#include "winuser.h" #include "winuser.h"
#include "wininet.h" #include "wininet.h"
#include "winnls.h"
#include "winerror.h" #include "winerror.h"
#include "wine/debug.h" #include "wine/debug.h"
@ -301,6 +303,33 @@ BOOL WINAPI FtpSetCurrentDirectoryA(HINTERNET hConnect, LPCSTR lpszDirectory)
} }
/***********************************************************************
* FtpSetCurrentDirectoryW (WININET.@)
*
* Change the working directory on the FTP server
*
* RETURNS
* TRUE on success
* FALSE on failure
*
*/
BOOL WINAPI FtpSetCurrentDirectoryW(HINTERNET hConnect, LPCWSTR lpszDirectory)
{
CHAR *szDir;
INT len;
BOOL rc;
len = lstrlenW(lpszDirectory)+1;
if (!(szDir = (CHAR *)malloc(len*sizeof(CHAR))))
return FALSE;
WideCharToMultiByte(CP_ACP, -1, lpszDirectory, -1, szDir, len, NULL, NULL);
rc = FtpSetCurrentDirectoryA(hConnect, szDir);
free(szDir);
return rc;
}
/*********************************************************************** /***********************************************************************
* FTP_FtpSetCurrentDirectoryA (Internal) * FTP_FtpSetCurrentDirectoryA (Internal)
* *
@ -398,6 +427,33 @@ BOOL WINAPI FtpCreateDirectoryA(HINTERNET hConnect, LPCSTR lpszDirectory)
} }
/***********************************************************************
* FtpCreateDirectoryW (WININET.@)
*
* Create new directory on the FTP server
*
* RETURNS
* TRUE on success
* FALSE on failure
*
*/
BOOL WINAPI FtpCreateDirectoryW(HINTERNET hConnect, LPCWSTR lpszDirectory)
{
CHAR *szDir;
INT len;
BOOL rc;
len = lstrlenW(lpszDirectory)+1;
if (!(szDir = (CHAR *)malloc(len*sizeof(CHAR))))
return FALSE;
WideCharToMultiByte(CP_ACP, -1, lpszDirectory, -1, szDir, len, NULL, NULL);
rc = FtpCreateDirectoryA(hConnect, szDir);
free(szDir);
return rc;
}
/*********************************************************************** /***********************************************************************
* FTP_FtpCreateDirectoryA (Internal) * FTP_FtpCreateDirectoryA (Internal)
* *
@ -499,6 +555,24 @@ HINTERNET WINAPI FtpFindFirstFileA(HINTERNET hConnect,
} }
/***********************************************************************
* FtpFindFirstFileA (WININET.@)
*
* Search the specified directory
*
* RETURNS
* HINTERNET on success
* NULL on failure
*
*/
HINTERNET WINAPI FtpFindFirstFileW(HINTERNET hConnect,
LPCWSTR lpszSearchFile, LPWIN32_FIND_DATAW lpFindFileData, DWORD dwFlags, DWORD dwContext)
{
FIXME("STUB\n");
return NULL;
}
/*********************************************************************** /***********************************************************************
* FTP_FtpFindFirstFileA (Internal) * FTP_FtpFindFirstFileA (Internal)
* *
@ -604,7 +678,7 @@ lend:
* *
*/ */
BOOL WINAPI FtpGetCurrentDirectoryA(HINTERNET hFtpSession, LPSTR lpszCurrentDirectory, BOOL WINAPI FtpGetCurrentDirectoryA(HINTERNET hFtpSession, LPSTR lpszCurrentDirectory,
LPDWORD lpdwCurrentDirectory) LPDWORD lpdwCurrentDirectory)
{ {
LPWININETFTPSESSIONA lpwfs = (LPWININETFTPSESSIONA) hFtpSession; LPWININETFTPSESSIONA lpwfs = (LPWININETFTPSESSIONA) hFtpSession;
LPWININETAPPINFOA hIC = NULL; LPWININETAPPINFOA hIC = NULL;
@ -637,6 +711,24 @@ BOOL WINAPI FtpGetCurrentDirectoryA(HINTERNET hFtpSession, LPSTR lpszCurrentDire
} }
/***********************************************************************
* FtpGetCurrentDirectoryW (WININET.@)
*
* Retrieves the current directory
*
* RETURNS
* TRUE on success
* FALSE on failure
*
*/
BOOL WINAPI FtpGetCurrentDirectoryW(HINTERNET hFtpSession, LPWSTR lpszCurrentDirectory,
LPDWORD lpdwCurrentDirectory)
{
FIXME("STUB\n");
return FALSE;
}
/*********************************************************************** /***********************************************************************
* FTP_FtpGetCurrentDirectoryA (Internal) * FTP_FtpGetCurrentDirectoryA (Internal)
* *
@ -728,8 +820,8 @@ lend:
* *
*/ */
HINTERNET WINAPI FtpOpenFileA(HINTERNET hFtpSession, HINTERNET WINAPI FtpOpenFileA(HINTERNET hFtpSession,
LPCSTR lpszFileName, DWORD fdwAccess, DWORD dwFlags, LPCSTR lpszFileName, DWORD fdwAccess, DWORD dwFlags,
DWORD dwContext) DWORD dwContext)
{ {
LPWININETFTPSESSIONA lpwfs = (LPWININETFTPSESSIONA) hFtpSession; LPWININETFTPSESSIONA lpwfs = (LPWININETFTPSESSIONA) hFtpSession;
LPWININETAPPINFOA hIC = NULL; LPWININETAPPINFOA hIC = NULL;
@ -762,6 +854,25 @@ HINTERNET WINAPI FtpOpenFileA(HINTERNET hFtpSession,
} }
/***********************************************************************
* FtpOpenFileW (WININET.@)
*
* Open a remote file for writing or reading
*
* RETURNS
* HINTERNET handle on success
* NULL on failure
*
*/
HINTERNET WINAPI FtpOpenFileW(HINTERNET hFtpSession,
LPCWSTR lpszFileName, DWORD fdwAccess, DWORD dwFlags,
DWORD dwContext)
{
FIXME("STUB\n");
return NULL;
}
/*********************************************************************** /***********************************************************************
* FTP_FtpOpenFileA (Internal) * FTP_FtpOpenFileA (Internal)
* *
@ -852,8 +963,8 @@ HINTERNET FTP_FtpOpenFileA(HINTERNET hFtpSession,
* *
*/ */
BOOL WINAPI FtpGetFileA(HINTERNET hInternet, LPCSTR lpszRemoteFile, LPCSTR lpszNewFile, BOOL WINAPI FtpGetFileA(HINTERNET hInternet, LPCSTR lpszRemoteFile, LPCSTR lpszNewFile,
BOOL fFailIfExists, DWORD dwLocalFlagsAttribute, DWORD dwInternetFlags, BOOL fFailIfExists, DWORD dwLocalFlagsAttribute, DWORD dwInternetFlags,
DWORD dwContext) DWORD dwContext)
{ {
LPWININETFTPSESSIONA lpwfs = (LPWININETFTPSESSIONA) hInternet; LPWININETFTPSESSIONA lpwfs = (LPWININETFTPSESSIONA) hInternet;
LPWININETAPPINFOA hIC = NULL; LPWININETAPPINFOA hIC = NULL;
@ -888,6 +999,25 @@ BOOL WINAPI FtpGetFileA(HINTERNET hInternet, LPCSTR lpszRemoteFile, LPCSTR lpszN
} }
/***********************************************************************
* FtpGetFileW (WININET.@)
*
* Retrieve file from the FTP server
*
* RETURNS
* TRUE on success
* FALSE on failure
*
*/
BOOL WINAPI FtpGetFileW(HINTERNET hInternet, LPCWSTR lpszRemoteFile, LPCWSTR lpszNewFile,
BOOL fFailIfExists, DWORD dwLocalFlagsAttribute, DWORD dwInternetFlags,
DWORD dwContext)
{
FIXME("STUB\n");
return FALSE;
}
/*********************************************************************** /***********************************************************************
* FTP_FtpGetFileA (Internal) * FTP_FtpGetFileA (Internal)
* *

View File

@ -7,6 +7,8 @@
* Ulrich Czekalla * Ulrich Czekalla
* Aric Stewart * Aric Stewart
* *
* Copyright 2002 Jaco Greeff
*
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
@ -45,6 +47,7 @@
#include "winbase.h" #include "winbase.h"
#include "winreg.h" #include "winreg.h"
#include "wininet.h" #include "wininet.h"
#include "winnls.h"
#include "wine/debug.h" #include "wine/debug.h"
#include "winerror.h" #include "winerror.h"
#define NO_SHLWAPI_STREAM #define NO_SHLWAPI_STREAM
@ -165,6 +168,26 @@ WININET_LibMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
} }
/***********************************************************************
* InternetInitializeAutoProxyDll (WININET.@)
*
* Setup the internal proxy
*
* PARAMETERS
* dwReserved
*
* RETURNS
* FALSE on failure
*
*/
BOOL InternetInitializeAutoProxyDll(DWORD dwReserved)
{
FIXME("STUB\n");
INTERNET_SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return FALSE;
}
/*********************************************************************** /***********************************************************************
* InternetOpenA (WININET.@) * InternetOpenA (WININET.@)
* *
@ -175,9 +198,8 @@ WININET_LibMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
* NULL on failure * NULL on failure
* *
*/ */
HINTERNET WINAPI InternetOpenA(LPCSTR lpszAgent, HINTERNET WINAPI InternetOpenA(LPCSTR lpszAgent, DWORD dwAccessType,
DWORD dwAccessType, LPCSTR lpszProxy, LPCSTR lpszProxy, LPCSTR lpszProxyBypass, DWORD dwFlags)
LPCSTR lpszProxyBypass, DWORD dwFlags)
{ {
LPWININETAPPINFOA lpwai = NULL; LPWININETAPPINFOA lpwai = NULL;
@ -217,6 +239,54 @@ HINTERNET WINAPI InternetOpenA(LPCSTR lpszAgent,
} }
/***********************************************************************
* InternetOpenW (WININET.@)
*
* Per-application initialization of wininet
*
* RETURNS
* HINTERNET on success
* NULL on failure
*
*/
HINTERNET WINAPI InternetOpenW(LPCWSTR lpszAgent, DWORD dwAccessType,
LPCWSTR lpszProxy, LPCWSTR lpszProxyBypass, DWORD dwFlags)
{
HINTERNET rc = (HINTERNET)NULL;
INT lenAgent = lstrlenW(lpszAgent)+1;
INT lenProxy = lstrlenW(lpszProxy)+1;
INT lenBypass = lstrlenW(lpszProxyBypass)+1;
CHAR *szAgent = (CHAR *)malloc(lenAgent*sizeof(CHAR));
CHAR *szProxy = (CHAR *)malloc(lenProxy*sizeof(CHAR));
CHAR *szBypass = (CHAR *)malloc(lenBypass*sizeof(CHAR));
if (!szAgent || !szProxy || !szBypass)
{
if (szAgent)
free(szAgent);
if (szProxy)
free(szProxy);
if (szBypass)
free(szBypass);
return (HINTERNET)NULL;
}
WideCharToMultiByte(CP_ACP, -1, lpszAgent, -1, szAgent, lenAgent,
NULL, NULL);
WideCharToMultiByte(CP_ACP, -1, lpszProxy, -1, szProxy, lenProxy,
NULL, NULL);
WideCharToMultiByte(CP_ACP, -1, lpszProxyBypass, -1, szBypass, lenBypass,
NULL, NULL);
rc = InternetOpenA(szAgent, dwAccessType, szProxy, szBypass, dwFlags);
free(szAgent);
free(szProxy);
free(szBypass);
return rc;
}
/*********************************************************************** /***********************************************************************
* InternetGetLastResponseInfoA (WININET.@) * InternetGetLastResponseInfoA (WININET.@)
* *
@ -310,6 +380,58 @@ HINTERNET WINAPI InternetConnectA(HINTERNET hInternet,
return rc; return rc;
} }
/***********************************************************************
* InternetConnectW (WININET.@)
*
* Open a ftp, gopher or http session
*
* RETURNS
* HINTERNET a session handle on success
* NULL on failure
*
*/
HINTERNET WINAPI InternetConnectW(HINTERNET hInternet,
LPCWSTR lpszServerName, INTERNET_PORT nServerPort,
LPCWSTR lpszUserName, LPCWSTR lpszPassword,
DWORD dwService, DWORD dwFlags, DWORD dwContext)
{
HINTERNET rc = (HINTERNET)NULL;
INT lenServer = lstrlenW(lpszServerName)+1;
INT lenUser = lstrlenW(lpszUserName)+1;
INT lenPass = lstrlenW(lpszPassword)+1;
CHAR *szServerName = (CHAR *)malloc(lenServer*sizeof(CHAR));
CHAR *szUserName = (CHAR *)malloc(lenUser*sizeof(CHAR));
CHAR *szPassword = (CHAR *)malloc(lenPass*sizeof(CHAR));
if (!szServerName || !szUserName || !szPassword)
{
if (szServerName)
free(szServerName);
if (szUserName)
free(szUserName);
if (szPassword)
free(szPassword);
return (HINTERNET)NULL;
}
WideCharToMultiByte(CP_ACP, -1, lpszServerName, -1, szServerName, lenServer,
NULL, NULL);
WideCharToMultiByte(CP_ACP, -1, lpszUserName, -1, szUserName, lenUser,
NULL, NULL);
WideCharToMultiByte(CP_ACP, -1, lpszPassword, -1, szPassword, lenPass,
NULL, NULL);
rc = InternetConnectA(hInternet, szServerName, nServerPort,
szUserName, szPassword, dwService, dwFlags, dwContext);
free(szServerName);
free(szUserName);
free(szPassword);
return rc;
}
/*********************************************************************** /***********************************************************************
* InternetFindNextFileA (WININET.@) * InternetFindNextFileA (WININET.@)
* *
@ -524,7 +646,8 @@ BOOL WINAPI InternetCloseHandle(HINTERNET hInternet)
* FALSE on failure * FALSE on failure
* *
*/ */
BOOL SetUrlComponentValue(LPSTR* lppszComponent, LPDWORD dwComponentLen, LPCSTR lpszStart, INT len) BOOL SetUrlComponentValue(LPSTR* lppszComponent, LPDWORD dwComponentLen,
LPCSTR lpszStart, INT len)
{ {
TRACE("%s (%d)\n", lpszStart, len); TRACE("%s (%d)\n", lpszStart, len);
@ -561,7 +684,7 @@ BOOL SetUrlComponentValue(LPSTR* lppszComponent, LPDWORD dwComponentLen, LPCSTR
* *
*/ */
BOOL WINAPI InternetCrackUrlA(LPCSTR lpszUrl, DWORD dwUrlLength, DWORD dwFlags, BOOL WINAPI InternetCrackUrlA(LPCSTR lpszUrl, DWORD dwUrlLength, DWORD dwFlags,
LPURL_COMPONENTSA lpUrlComponents) LPURL_COMPONENTSA lpUrlComponents)
{ {
/* /*
* RFC 1808 * RFC 1808
@ -821,6 +944,34 @@ BOOL WINAPI InternetCanonicalizeUrlA(LPCSTR lpszUrl, LPSTR lpszBuffer,
return (hr == S_OK) ? TRUE : FALSE; return (hr == S_OK) ? TRUE : FALSE;
} }
/***********************************************************************
* InternetCanonicalizeUrlW (WININET.@)
*
* Escape unsafe characters and spaces
*
* RETURNS
* TRUE on success
* FALSE on failure
*
*/
BOOL WINAPI InternetCanonicalizeUrlW(LPCWSTR lpszUrl, LPWSTR lpszBuffer,
LPDWORD lpdwBufferLength, DWORD dwFlags)
{
HRESULT hr;
TRACE("%s %p %p %08lx\n", debugstr_w(lpszUrl), lpszBuffer,
lpdwBufferLength, dwFlags);
/* Flip this bit to correspond to URL_ESCAPE_UNSAFE */
dwFlags ^= ICU_NO_ENCODE;
dwFlags |= 0x80000000; /* Don't know what this means */
hr = UrlCanonicalizeW(lpszUrl, lpszBuffer, lpdwBufferLength, dwFlags);
return (hr == S_OK) ? TRUE : FALSE;
}
/*********************************************************************** /***********************************************************************
* InternetSetStatusCallback (WININET.@) * InternetSetStatusCallback (WININET.@)
* *
@ -1107,7 +1258,7 @@ BOOL WINAPI InternetSetOptionW(HINTERNET hInternet, DWORD dwOption,
{ {
default: default:
INTERNET_SetLastError(ERROR_INVALID_PARAMETER); INTERNET_SetLastError(ERROR_INVALID_PARAMETER);
FIXME("Stub!\n"); FIXME("STUB\n");
break; break;
} }
@ -1146,13 +1297,35 @@ BOOL WINAPI InternetSetOptionA(HINTERNET hInternet, DWORD dwOption,
* *
*/ */
BOOL WINAPI InternetGetCookieA(LPCSTR lpszUrl, LPCSTR lpszCookieName, BOOL WINAPI InternetGetCookieA(LPCSTR lpszUrl, LPCSTR lpszCookieName,
LPSTR lpCookieData, LPDWORD lpdwSize) LPSTR lpCookieData, LPDWORD lpdwSize)
{ {
FIXME("(%s,%s,%p), stub!\n",debugstr_a(lpszUrl),debugstr_a(lpszCookieName), FIXME("STUB\n");
lpCookieData TRACE("(%s,%s,%p)\n", debugstr_a(lpszUrl),debugstr_a(lpszCookieName),
); lpCookieData);
return FALSE; return FALSE;
} }
/***********************************************************************
* InternetGetCookieW (WININET.@)
*
* Retrieve cookie from the specified url
*
* RETURNS
* TRUE on success
* FALSE on failure
*
*/
BOOL WINAPI InternetGetCookieW(LPCSTR lpszUrl, LPCWSTR lpszCookieName,
LPWSTR lpCookieData, LPDWORD lpdwSize)
{
FIXME("STUB\n");
TRACE("(%s,%s,%p)\n", debugstr_a(lpszUrl), debugstr_w(lpszCookieName),
lpCookieData);
return FALSE;
}
/*********************************************************************** /***********************************************************************
* InternetSetCookieA (WININET.@) * InternetSetCookieA (WININET.@)
* *
@ -1163,13 +1336,36 @@ BOOL WINAPI InternetGetCookieA(LPCSTR lpszUrl, LPCSTR lpszCookieName,
* FALSE on failure * FALSE on failure
* *
*/ */
BOOL WINAPI InternetSetCookieA( BOOL WINAPI InternetSetCookieA(LPCSTR lpszUrl, LPCSTR lpszCookieName,
LPCSTR lpszUrl, LPCSTR lpszCookieName, LPCSTR lpCookieData LPCSTR lpCookieData)
) { {
FIXME("(%s,%s,%s), stub!\n",debugstr_a(lpszUrl),debugstr_a(lpszCookieName),debugstr_a(lpCookieData)); FIXME("STUB\n");
TRACE("(%s,%s,%s)\n", debugstr_a(lpszUrl),
debugstr_a(lpszCookieName), debugstr_a(lpCookieData));
return FALSE; return FALSE;
} }
/***********************************************************************
* InternetSetCookieW (WININET.@)
*
* Sets cookie for the specified url
*
* RETURNS
* TRUE on success
* FALSE on failure
*
*/
BOOL WINAPI InternetSetCookieW(LPCSTR lpszUrl, LPCWSTR lpszCookieName,
LPCWSTR lpCookieData)
{
FIXME("STUB\n");
TRACE("(%s,%s,%s)\n", debugstr_a(lpszUrl),
debugstr_w(lpszCookieName), debugstr_w(lpCookieData));
return FALSE;
}
/*********************************************************************** /***********************************************************************
* GetInternetScheme (internal) * GetInternetScheme (internal)
* *
@ -1210,9 +1406,8 @@ INTERNET_SCHEME GetInternetScheme(LPCSTR lpszScheme, INT nMaxCmp)
* Pings a requested host to check internet connection * Pings a requested host to check internet connection
* *
* RETURNS * RETURNS
* * TRUE on success and FALSE on failure. If a failure then
* TRUE on success and FALSE on failure. if a failures then * ERROR_NOT_CONNECTED is placesd into GetLastError
* ERROR_NOT_CONNECTED is places into GetLastError
* *
*/ */
BOOL WINAPI InternetCheckConnectionA( LPCSTR lpszUrl, DWORD dwFlags, DWORD dwReserved ) BOOL WINAPI InternetCheckConnectionA( LPCSTR lpszUrl, DWORD dwFlags, DWORD dwReserved )
@ -1284,6 +1479,34 @@ End:
return rc; return rc;
} }
/***********************************************************************
* InternetCheckConnectionW (WININET.@)
*
* Pings a requested host to check internet connection
*
* RETURNS
* TRUE on success and FALSE on failure. If a failure then
* ERROR_NOT_CONNECTED is placed into GetLastError
*
*/
BOOL WINAPI InternetCheckConnectionW(LPCWSTR lpszUrl, DWORD dwFlags, DWORD dwReserved)
{
CHAR *szUrl;
INT len;
BOOL rc;
len = lstrlenW(lpszUrl)+1;
if (!(szUrl = (CHAR *)malloc(len*sizeof(CHAR))))
return FALSE;
WideCharToMultiByte(CP_ACP, -1, lpszUrl, -1, szUrl, len, NULL, NULL);
rc = InternetCheckConnectionA((LPCSTR)szUrl, dwFlags, dwReserved);
free(szUrl);
return rc;
}
/********************************************************** /**********************************************************
* InternetOpenUrlA (WININET.@) * InternetOpenUrlA (WININET.@)
* *
@ -1292,10 +1515,12 @@ End:
* RETURNS * RETURNS
* handle of connection or NULL on failure * handle of connection or NULL on failure
*/ */
HINTERNET WINAPI InternetOpenUrlA(HINTERNET hInternet, LPCSTR lpszUrl, LPCSTR lpszHeaders, DWORD dwHeadersLength, DWORD dwFlags, DWORD dwContext) HINTERNET WINAPI InternetOpenUrlA(HINTERNET hInternet, LPCSTR lpszUrl,
LPCSTR lpszHeaders, DWORD dwHeadersLength, DWORD dwFlags, DWORD dwContext)
{ {
URL_COMPONENTSA urlComponents; URL_COMPONENTSA urlComponents;
char protocol[32], hostName[MAXHOSTNAME], userName[1024], password[1024], path[2048], extra[1024]; char protocol[32], hostName[MAXHOSTNAME], userName[1024];
char password[1024], path[2048], extra[1024];
HINTERNET client = NULL, client1 = NULL; HINTERNET client = NULL, client1 = NULL;
urlComponents.dwStructSize = sizeof(URL_COMPONENTSA); urlComponents.dwStructSize = sizeof(URL_COMPONENTSA);
urlComponents.lpszScheme = protocol; urlComponents.lpszScheme = protocol;
@ -1316,7 +1541,8 @@ HINTERNET WINAPI InternetOpenUrlA(HINTERNET hInternet, LPCSTR lpszUrl, LPCSTR lp
case INTERNET_SCHEME_FTP: case INTERNET_SCHEME_FTP:
if(urlComponents.nPort == 0) if(urlComponents.nPort == 0)
urlComponents.nPort = INTERNET_DEFAULT_FTP_PORT; urlComponents.nPort = INTERNET_DEFAULT_FTP_PORT;
client = InternetConnectA(hInternet, hostName, urlComponents.nPort, userName, password, INTERNET_SERVICE_FTP, dwFlags, dwContext); client = InternetConnectA(hInternet, hostName, urlComponents.nPort,
userName, password, INTERNET_SERVICE_FTP, dwFlags, dwContext);
return FtpOpenFileA(client, path, GENERIC_READ, dwFlags, dwContext); return FtpOpenFileA(client, path, GENERIC_READ, dwFlags, dwContext);
break; break;
case INTERNET_SCHEME_HTTP: case INTERNET_SCHEME_HTTP:
@ -1331,7 +1557,8 @@ HINTERNET WINAPI InternetOpenUrlA(HINTERNET hInternet, LPCSTR lpszUrl, LPCSTR lp
else else
urlComponents.nPort = INTERNET_DEFAULT_HTTPS_PORT; urlComponents.nPort = INTERNET_DEFAULT_HTTPS_PORT;
} }
client = InternetConnectA(hInternet, hostName, urlComponents.nPort, userName, password, INTERNET_SERVICE_HTTP, dwFlags, dwContext); client = InternetConnectA(hInternet, hostName, urlComponents.nPort, userName,
password, INTERNET_SERVICE_HTTP, dwFlags, dwContext);
if(client == NULL) if(client == NULL)
return NULL; return NULL;
client1 = HttpOpenRequestA(hInternet, NULL, path, NULL, NULL, accept, dwFlags, dwContext); client1 = HttpOpenRequestA(hInternet, NULL, path, NULL, NULL, accept, dwFlags, dwContext);
@ -1360,6 +1587,48 @@ HINTERNET WINAPI InternetOpenUrlA(HINTERNET hInternet, LPCSTR lpszUrl, LPCSTR lp
} }
/**********************************************************
* InternetOpenUrlW (WININET.@)
*
* Opens an URL
*
* RETURNS
* handle of connection or NULL on failure
*/
HINTERNET WINAPI InternetOpenUrlW(HINTERNET hInternet, LPCWSTR lpszUrl,
LPCWSTR lpszHeaders, DWORD dwHeadersLength, DWORD dwFlags, DWORD dwContext)
{
HINTERNET rc = (HINTERNET)NULL;
INT lenUrl = lstrlenW(lpszUrl)+1;
INT lenHeaders = lstrlenW(lpszHeaders)+1;
CHAR *szUrl = (CHAR *)malloc(lenUrl*sizeof(CHAR));
CHAR *szHeaders = (CHAR *)malloc(lenHeaders*sizeof(CHAR));
if (!szUrl || !szHeaders)
{
if (szUrl)
free(szUrl);
if (szHeaders)
free(szHeaders);
return (HINTERNET)NULL;
}
WideCharToMultiByte(CP_ACP, -1, lpszUrl, -1, szUrl, lenUrl,
NULL, NULL);
WideCharToMultiByte(CP_ACP, -1, lpszHeaders, -1, szHeaders, lenHeaders,
NULL, NULL);
rc = InternetOpenUrlA(hInternet, szUrl, szHeaders,
dwHeadersLength, dwFlags, dwContext);
free(szUrl);
free(szHeaders);
return rc;
}
/*********************************************************************** /***********************************************************************
* INTERNET_SetLastError (internal) * INTERNET_SetLastError (internal)
* *
@ -1829,7 +2098,6 @@ BOOL WINAPI InternetUnlockRequestFile( HANDLE hLockHandle)
* FALSE on failure * FALSE on failure
* *
*/ */
BOOL WINAPI InternetAutoDial(DWORD dwFlags, HWND hwndParent) BOOL WINAPI InternetAutoDial(DWORD dwFlags, HWND hwndParent)
{ {
FIXME("STUB\n"); FIXME("STUB\n");
@ -1837,3 +2105,23 @@ BOOL WINAPI InternetAutoDial(DWORD dwFlags, HWND hwndParent)
/* Tell that we are connected to the internet. */ /* Tell that we are connected to the internet. */
return TRUE; return TRUE;
} }
/***********************************************************************
* InternetAutoDialHangup
*
* Hangs up an connection made with InternetAutoDial
*
* PARAM
* dwReserved
* RETURNS
* TRUE on success
* FALSE on failure
*
*/
BOOL WINAPI InternetAutodialHangup(DWORD dwReserved)
{
FIXME("STUB\n");
/* we didn't dial, we don't disconnect */
return TRUE;
}

View File

@ -1,6 +1,6 @@
init WININET_LibMain init WININET_LibMain
@ stub InternetInitializeAutoProxyDll @ stdcall InternetInitializeAutoProxyDll(long) InternetInitializeAutoProxyDll
@ stub ShowCertificate @ stub ShowCertificate
@ stdcall CommitUrlCacheEntryA(str str long long long str long str str) CommitUrlCacheEntryA @ stdcall CommitUrlCacheEntryA(str str long long long str long str str) CommitUrlCacheEntryA
@ stub CommitUrlCacheEntryW @ stub CommitUrlCacheEntryW
@ -30,18 +30,18 @@ init WININET_LibMain
@ stub FindNextUrlCacheEntryW @ stub FindNextUrlCacheEntryW
@ stub FreeUrlCacheSpaceA @ stub FreeUrlCacheSpaceA
@ stub FreeUrlCacheSpaceW @ stub FreeUrlCacheSpaceW
@ stdcall FtpCreateDirectoryA(ptr str) FtpCreateDirectoryA @ stdcall FtpCreateDirectoryA(ptr str) FtpCreateDirectoryA
@ stub FtpCreateDirectoryW @ stdcall FtpCreateDirectoryW(ptr wstr) FtpCreateDirectoryW
@ stdcall FtpDeleteFileA(ptr str) FtpDeleteFileA @ stdcall FtpDeleteFileA(ptr str) FtpDeleteFileA
@ stub FtpDeleteFileW @ stub FtpDeleteFileW
@ stdcall FtpFindFirstFileA(ptr str str long long) FtpFindFirstFileA @ stdcall FtpFindFirstFileA(ptr str str long long) FtpFindFirstFileA
@ stub FtpFindFirstFileW @ stdcall FtpFindFirstFileW(ptr wstr wstr long long) FtpFindFirstFileW
@ stdcall FtpGetCurrentDirectoryA(ptr str ptr) FtpGetCurrentDirectoryA @ stdcall FtpGetCurrentDirectoryA(ptr str ptr) FtpGetCurrentDirectoryA
@ stub FtpGetCurrentDirectoryW @ stdcall FtpGetCurrentDirectoryW(ptr wstr ptr) FtpGetCurrentDirectoryW
@ stdcall FtpGetFileA(ptr str str long long long long) FtpGetFileA @ stdcall FtpGetFileA(ptr str str long long long long) FtpGetFileA
@ stub FtpGetFileW @ stdcall FtpGetFileW(ptr wstr wstr long long long long) FtpGetFileW
@ stdcall FtpOpenFileA(ptr str long long long) FtpOpenFileA @ stdcall FtpOpenFileA(ptr str long long long) FtpOpenFileA
@ stub FtpOpenFileW @ stdcall FtpOpenFileW(ptr wstr long long long) FtpOpenFileW
@ stdcall FtpPutFileA(ptr str str long long) FtpPutFileA @ stdcall FtpPutFileA(ptr str str long long) FtpPutFileA
@ stub FtpPutFileW @ stub FtpPutFileW
@ stdcall FtpRemoveDirectoryA(ptr str) FtpRemoveDirectoryA @ stdcall FtpRemoveDirectoryA(ptr str) FtpRemoveDirectoryA
@ -49,7 +49,7 @@ init WININET_LibMain
@ stdcall FtpRenameFileA(ptr str str) FtpRenameFileA @ stdcall FtpRenameFileA(ptr str str) FtpRenameFileA
@ stub FtpRenameFileW @ stub FtpRenameFileW
@ stdcall FtpSetCurrentDirectoryA(ptr str) FtpSetCurrentDirectoryA @ stdcall FtpSetCurrentDirectoryA(ptr str) FtpSetCurrentDirectoryA
@ stub FtpSetCurrentDirectoryW @ stdcall FtpSetCurrentDirectoryW(ptr wstr) FtpSetCurrentDirectoryW
@ stub GetUrlCacheConfigInfoA @ stub GetUrlCacheConfigInfoA
@ stub GetUrlCacheConfigInfoW @ stub GetUrlCacheConfigInfoW
@ stdcall GetUrlCacheEntryInfoA(str ptr long) GetUrlCacheEntryInfoA @ stdcall GetUrlCacheEntryInfoA(str ptr long) GetUrlCacheEntryInfoA
@ -83,17 +83,17 @@ init WININET_LibMain
@ stdcall InternetAttemptConnect(long) InternetAttemptConnect @ stdcall InternetAttemptConnect(long) InternetAttemptConnect
@ stdcall InternetAutodial(long ptr) InternetAutoDial @ stdcall InternetAutodial(long ptr) InternetAutoDial
@ stub InternetAutodialCallback @ stub InternetAutodialCallback
@ stub InternetAutodialHangup @ stdcall InternetAutodialHangup(long) InternetAutodialHangup
@ stdcall InternetCanonicalizeUrlA(str str ptr long) InternetCanonicalizeUrlA @ stdcall InternetCanonicalizeUrlA(str str ptr long) InternetCanonicalizeUrlA
@ stub InternetCanonicalizeUrlW @ stdcall InternetCanonicalizeUrlW(wstr wstr ptr long) InternetCanonicalizeUrlW
@ stdcall InternetCheckConnectionA(ptr long long) InternetCheckConnectionA @ stdcall InternetCheckConnectionA(ptr long long) InternetCheckConnectionA
@ stub InternetCheckConnectionW @ stdcall InternetCheckConnectionW(ptr long long) InternetCheckConnectionW
@ stdcall InternetCloseHandle(long) InternetCloseHandle @ stdcall InternetCloseHandle(long) InternetCloseHandle
@ stub InternetCombineUrlA @ stub InternetCombineUrlA
@ stub InternetCombineUrlW @ stub InternetCombineUrlW
@ stub InternetConfirmZoneCrossing @ stub InternetConfirmZoneCrossing
@ stdcall InternetConnectA(ptr str long str str long long long) InternetConnectA @ stdcall InternetConnectA(ptr str long str str long long long) InternetConnectA
@ stub InternetConnectW @ stdcall InternetConnectW(ptr wstr long wstr wstr long long long) InternetConnectW
@ stdcall InternetCrackUrlA(str long long ptr) InternetCrackUrlA @ stdcall InternetCrackUrlA(str long long ptr) InternetCrackUrlA
@ stub InternetCrackUrlW @ stub InternetCrackUrlW
@ stub InternetCreateUrlA @ stub InternetCreateUrlA
@ -106,17 +106,17 @@ init WININET_LibMain
@ stub InternetGetCertByURL @ stub InternetGetCertByURL
@ stdcall InternetGetConnectedState(ptr long) InternetGetConnectedState @ stdcall InternetGetConnectedState(ptr long) InternetGetConnectedState
@ stdcall InternetGetCookieA(str str ptr long) InternetGetCookieA @ stdcall InternetGetCookieA(str str ptr long) InternetGetCookieA
@ stub InternetGetCookieW @ stdcall InternetGetCookieW(wstr wstr ptr long) InternetGetCookieW
@ stdcall InternetGetLastResponseInfoA(ptr str ptr) InternetGetLastResponseInfoA @ stdcall InternetGetLastResponseInfoA(ptr str ptr) InternetGetLastResponseInfoA
@ stub InternetGetLastResponseInfoW @ stub InternetGetLastResponseInfoW
@ stub InternetGoOnline @ stub InternetGoOnline
@ stub InternetHangUp @ stub InternetHangUp
@ stdcall InternetLockRequestFile(ptr ptr) InternetLockRequestFile @ stdcall InternetLockRequestFile(ptr ptr) InternetLockRequestFile
@ stdcall InternetOpenA(str long str str long) InternetOpenA @ stdcall InternetOpenA(str long str str long) InternetOpenA
@ stdcall InternetOpenW(wstr long wstr wstr long) InternetOpenW
@ stub InternetOpenServerPushParse @ stub InternetOpenServerPushParse
@ stdcall InternetOpenUrlA(ptr str str long long long) InternetOpenUrlA @ stdcall InternetOpenUrlA(ptr str str long long long) InternetOpenUrlA
@ stub InternetOpenUrlW @ stdcall InternetOpenUrlW(ptr wstr wstr long long long) InternetOpenUrlW
@ stub InternetOpenW
@ stdcall InternetQueryDataAvailable(ptr ptr long long) InternetQueryDataAvailable @ stdcall InternetQueryDataAvailable(ptr ptr long long) InternetQueryDataAvailable
@ stdcall InternetQueryOptionA(ptr long ptr ptr) InternetQueryOptionA @ stdcall InternetQueryOptionA(ptr long ptr ptr) InternetQueryOptionA
@ stub InternetQueryOptionW @ stub InternetQueryOptionW
@ -125,7 +125,7 @@ init WININET_LibMain
@ stdcall InternetReadFileExW(ptr ptr long long) InternetReadFileExW @ stdcall InternetReadFileExW(ptr ptr long long) InternetReadFileExW
@ stub InternetServerPushParse @ stub InternetServerPushParse
@ stdcall InternetSetCookieA(str str str) InternetSetCookieA @ stdcall InternetSetCookieA(str str str) InternetSetCookieA
@ stub InternetSetCookieW @ stdcall InternetSetCookieW(wstr wstr wstr) InternetSetCookieW
@ stub InternetSetDialState @ stub InternetSetDialState
@ stub InternetSetFilePointer @ stub InternetSetFilePointer
@ stdcall InternetSetOptionA(ptr long ptr long) InternetSetOptionA @ stdcall InternetSetOptionA(ptr long ptr long) InternetSetOptionA