WININET: convert WININETAPPINFOA structure to unicode (resend)
Mike McCormack
mike at codeweavers.com
Wed Mar 24 23:08:45 CST 2004
(fixed a stupid bug)
Since the wininet DLL is quite large, and is almost completely ASCII
based, this is the first step towards converting it to unicode.
Mike
ChangeLog:
* convert WININETAPPINFOA structure to unicode
-------------- next part --------------
? dlls/wininet/wininet.spec.c
? dlls/wininet/tests/wininet_test.exe.spec.c
Index: dlls/wininet/dialogs.c
===================================================================
RCS file: /home/wine/wine/dlls/wininet/dialogs.c,v
retrieving revision 1.2
diff -u -r1.2 dialogs.c
--- dlls/wininet/dialogs.c 5 Sep 2003 23:08:28 -0000 1.2
+++ dlls/wininet/dialogs.c 25 Mar 2004 04:17:19 -0000
@@ -56,12 +56,12 @@
*
* Determine the name of the proxy server the request is using
*/
-static BOOL WININET_GetProxyServer( HINTERNET hRequest, LPSTR szBuf, DWORD sz )
+static BOOL WININET_GetProxyServer( HINTERNET hRequest, LPWSTR szBuf, DWORD sz )
{
LPWININETHTTPREQA lpwhr = (LPWININETHTTPREQA) hRequest;
LPWININETHTTPSESSIONA lpwhs = NULL;
- LPWININETAPPINFOA hIC = NULL;
- LPSTR p;
+ LPWININETAPPINFOW hIC = NULL;
+ LPWSTR p;
if (NULL == lpwhr)
return FALSE;
@@ -70,14 +70,14 @@
if (NULL == lpwhs)
return FALSE;
- hIC = (LPWININETAPPINFOA) lpwhs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwhs->hdr.lpwhparent;
if (NULL == hIC)
return FALSE;
- strncpy(szBuf, hIC->lpszProxy, sz);
+ strncpyW(szBuf, hIC->lpszProxy, sz);
/* FIXME: perhaps it would be better to use InternetCrackUrl here */
- p = strchr(szBuf, ':');
+ p = strchrW(szBuf, ':');
if(*p)
*p = 0;
@@ -89,14 +89,15 @@
*
* Determine the name of the (basic) Authentication realm
*/
-static BOOL WININET_GetAuthRealm( HINTERNET hRequest, LPSTR szBuf, DWORD sz )
+static BOOL WININET_GetAuthRealm( HINTERNET hRequest, LPWSTR szBuf, DWORD sz )
{
- LPSTR p, q;
+ LPWSTR p, q;
DWORD index;
+ WCHAR szRealm[] = { 'r','e','a','l','m','=',0 };
/* extract the Realm from the proxy response and show it */
index = 0;
- if( !HttpQueryInfoA( hRequest, HTTP_QUERY_PROXY_AUTHENTICATE,
+ if( !HttpQueryInfoW( hRequest, HTTP_QUERY_PROXY_AUTHENTICATE,
szBuf, &sz, &index) )
return FALSE;
@@ -104,21 +105,21 @@
* FIXME: maybe we should check that we're
* dealing with 'Basic' Authentication
*/
- p = strchr( szBuf, ' ' );
- if( p && !strncmp( p+1, "realm=", 6 ) )
+ p = strchrW( szBuf, ' ' );
+ if( p && !strncmpW( p+1, szRealm, strlenW(szRealm) ) )
{
/* remove quotes */
p += 7;
if( *p == '"' )
{
p++;
- q = strrchr( p, '"' );
+ q = strrchrW( p, '"' );
if( q )
*q = 0;
}
}
- strcpy( szBuf, p );
+ strcpyW( szBuf, p );
return TRUE;
}
@@ -126,50 +127,62 @@
/***********************************************************************
* WININET_GetSetPassword
*/
-static BOOL WININET_GetSetPassword( HWND hdlg, LPCSTR szServer,
- LPCSTR szRealm, BOOL bSet )
+static BOOL WININET_GetSetPassword( HWND hdlg, LPCWSTR szServer,
+ LPCWSTR szRealm, BOOL bSet )
{
- CHAR szResource[0x80], szUserPass[0x40];
- LPSTR p;
+ WCHAR szResource[0x80], szUserPass[0x40];
+ LPWSTR p;
HWND hUserItem, hPassItem;
DWORD r, dwMagic = 19;
- UINT len;
+ UINT r_len, u_len;
WORD sz;
+ WCHAR szColon[] = { ':',0 }, szbs[] = { '/', 0 };
hUserItem = GetDlgItem( hdlg, IDC_USERNAME );
hPassItem = GetDlgItem( hdlg, IDC_PASSWORD );
/* now try fetch the username and password */
- strcpy( szResource, szServer);
- strcat( szResource, "/");
- strcat( szResource, szRealm);
+ lstrcpyW( szResource, szServer);
+ lstrcatW( szResource, szbs);
+ lstrcatW( szResource, szRealm);
+ /*
+ * WNetCachePassword is only concerned with the length
+ * of the data stored (which we tell it) and it does
+ * not use strlen() internally so we can add WCHAR data
+ * instead of ASCII data and get it back the same way.
+ */
if( bSet )
{
szUserPass[0] = 0;
- GetWindowTextA( hUserItem, szUserPass, sizeof szUserPass-1 );
- strcat(szUserPass, ":");
- len = strlen( szUserPass );
- GetWindowTextA( hPassItem, szUserPass+len, sizeof szUserPass-len );
-
- r = WNetCachePassword( szResource, strlen( szResource ) + 1,
- szUserPass, strlen( szUserPass ) + 1, dwMagic, 0 );
+ GetWindowTextW( hUserItem, szUserPass,
+ (sizeof szUserPass-1)/sizeof(WCHAR) );
+ lstrcatW(szUserPass, szColon);
+ u_len = strlenW( szUserPass );
+ GetWindowTextW( hPassItem, szUserPass+u_len,
+ (sizeof szUserPass)/sizeof(WCHAR)-u_len );
+
+ r_len = (strlenW( szResource ) + 1)*sizeof(WCHAR);
+ u_len = (strlenW( szUserPass ) + 1)*sizeof(WCHAR);
+ r = WNetCachePassword( (CHAR*)szResource, r_len,
+ (CHAR*)szUserPass, u_len, dwMagic, 0 );
return ( r == WN_SUCCESS );
}
sz = sizeof szUserPass;
- r = WNetGetCachedPassword( szResource, strlen( szResource ) + 1,
- szUserPass, &sz, dwMagic );
+ r_len = (strlenW( szResource ) + 1)*sizeof(WCHAR);
+ r = WNetGetCachedPassword( (CHAR*)szResource, r_len,
+ (CHAR*)szUserPass, &sz, dwMagic );
if( r != WN_SUCCESS )
return FALSE;
- p = strchr( szUserPass, ':' );
+ p = strchrW( szUserPass, ':' );
if( p )
{
*p = 0;
- SetWindowTextA( hUserItem, szUserPass );
- SetWindowTextA( hPassItem, p+1 );
+ SetWindowTextW( hUserItem, szUserPass );
+ SetWindowTextW( hPassItem, p+1 );
}
return TRUE;
@@ -179,12 +192,12 @@
* WININET_SetProxyAuthorization
*/
static BOOL WININET_SetProxyAuthorization( HINTERNET hRequest,
- LPSTR username, LPSTR password )
+ LPWSTR username, LPWSTR password )
{
LPWININETHTTPREQA lpwhr = (LPWININETHTTPREQA) hRequest;
LPWININETHTTPSESSIONA lpwhs;
- LPWININETAPPINFOA hIC;
- LPSTR p;
+ LPWININETAPPINFOW hIC;
+ LPWSTR p;
lpwhs = (LPWININETHTTPSESSIONA) lpwhr->hdr.lpwhparent;
if (NULL == lpwhs || lpwhs->hdr.htype != WH_HHTTPSESSION)
@@ -193,20 +206,20 @@
return FALSE;
}
- hIC = (LPWININETAPPINFOA) lpwhs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwhs->hdr.lpwhparent;
- p = HeapAlloc( GetProcessHeap(), 0, strlen( username ) + 1 );
+ p = HeapAlloc( GetProcessHeap(), 0, (strlenW( username ) + 1)*sizeof(WCHAR) );
if( !p )
return FALSE;
- strcpy( p, username );
+ lstrcpyW( p, username );
hIC->lpszProxyUsername = p;
- p = HeapAlloc( GetProcessHeap(), 0, strlen( password ) + 1 );
+ p = HeapAlloc( GetProcessHeap(), 0, (strlenW( password ) + 1)*sizeof(WCHAR) );
if( !p )
return FALSE;
- strcpy( p, password );
+ lstrcpyW( p, password );
hIC->lpszProxyPassword = p;
return TRUE;
@@ -220,7 +233,7 @@
{
HWND hitem;
struct WININET_ErrorDlgParams *params;
- CHAR szRealm[0x80], szServer[0x80];
+ WCHAR szRealm[0x80], szServer[0x80];
if( uMsg == WM_INITDIALOG )
{
@@ -232,18 +245,18 @@
/* extract the Realm from the proxy response and show it */
if( WININET_GetAuthRealm( params->hRequest,
- szRealm, sizeof szRealm) )
+ szRealm, sizeof szRealm/sizeof(WCHAR)) )
{
hitem = GetDlgItem( hdlg, IDC_REALM );
- SetWindowTextA( hitem, szRealm );
+ SetWindowTextW( hitem, szRealm );
}
/* extract the name of the proxy server */
if( WININET_GetProxyServer( params->hRequest,
- szServer, sizeof szServer) )
+ szServer, sizeof szServer/sizeof(WCHAR)) )
{
hitem = GetDlgItem( hdlg, IDC_PROXY );
- SetWindowTextA( hitem, szServer );
+ SetWindowTextW( hitem, szServer );
}
WININET_GetSetPassword( hdlg, szServer, szRealm, FALSE );
@@ -260,25 +273,25 @@
if( wParam == IDOK )
{
LPWININETHTTPREQA lpwhr = (LPWININETHTTPREQA) params->hRequest;
- CHAR username[0x20], password[0x20];
+ WCHAR username[0x20], password[0x20];
username[0] = 0;
hitem = GetDlgItem( hdlg, IDC_USERNAME );
if( hitem )
- GetWindowTextA( hitem, username, sizeof username );
+ GetWindowTextW( hitem, username, sizeof username/sizeof(WCHAR) );
password[0] = 0;
hitem = GetDlgItem( hdlg, IDC_PASSWORD );
if( hitem )
- GetWindowTextA( hitem, password, sizeof password );
+ GetWindowTextW( hitem, password, sizeof password/sizeof(WCHAR) );
hitem = GetDlgItem( hdlg, IDC_SAVEPASSWORD );
if( hitem &&
- SendMessageA( hitem, BM_GETSTATE, 0, 0 ) &&
+ SendMessageW( hitem, BM_GETSTATE, 0, 0 ) &&
WININET_GetAuthRealm( params->hRequest,
- szRealm, sizeof szRealm) &&
+ szRealm, sizeof szRealm/sizeof(WCHAR)) &&
WININET_GetProxyServer( params->hRequest,
- szServer, sizeof szServer) )
+ szServer, sizeof szServer/sizeof(WCHAR)) )
{
WININET_GetSetPassword( hdlg, szServer, szRealm, TRUE );
}
@@ -302,17 +315,17 @@
*/
static INT WININET_GetConnectionStatus( HINTERNET hRequest )
{
- CHAR szStatus[0x20];
+ WCHAR szStatus[0x20];
DWORD sz, index, dwStatus;
TRACE("%p\n", hRequest );
sz = sizeof szStatus;
index = 0;
- if( !HttpQueryInfoA( hRequest, HTTP_QUERY_STATUS_CODE,
+ if( !HttpQueryInfoW( hRequest, HTTP_QUERY_STATUS_CODE,
szStatus, &sz, &index))
return -1;
- dwStatus = atoi( szStatus );
+ dwStatus = atoiW( szStatus );
TRACE("request %p status = %ld\n", hRequest, dwStatus );
Index: dlls/wininet/ftp.c
===================================================================
RCS file: /home/wine/wine/dlls/wininet/ftp.c,v
retrieving revision 1.38
diff -u -r1.38 ftp.c
--- dlls/wininet/ftp.c 16 Feb 2004 20:24:15 -0000 1.38
+++ dlls/wininet/ftp.c 25 Mar 2004 04:17:19 -0000
@@ -158,7 +158,7 @@
LPCSTR lpszNewRemoteFile, DWORD dwFlags, DWORD dwContext)
{
LPWININETFTPSESSIONA lpwfs;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
lpwfs = (LPWININETFTPSESSIONA) WININET_GetObject( hConnect );
if (NULL == lpwfs || WH_HFTPSESSION != lpwfs->hdr.htype)
@@ -167,7 +167,7 @@
return FALSE;
}
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
@@ -204,7 +204,7 @@
{
HANDLE hFile = NULL;
BOOL bSuccess = FALSE;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
LPWININETFTPSESSIONA lpwfs;
INT nResCode;
@@ -228,7 +228,7 @@
goto lend;
}
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->lpfnStatusCB)
hIC->lpfnStatusCB(hConnect, lpwfs->hdr.dwContext, INTERNET_STATUS_SENDING_REQUEST, NULL, 0);
@@ -287,7 +287,7 @@
BOOL WINAPI FtpSetCurrentDirectoryA(HINTERNET hConnect, LPCSTR lpszDirectory)
{
LPWININETFTPSESSIONA lpwfs;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
lpwfs = (LPWININETFTPSESSIONA) WININET_GetObject( hConnect );
if (NULL == lpwfs || WH_HFTPSESSION != lpwfs->hdr.htype)
@@ -298,7 +298,7 @@
TRACE("lpszDirectory(%s)\n", lpszDirectory);
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
@@ -360,7 +360,7 @@
{
INT nResCode;
LPWININETFTPSESSIONA lpwfs;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
DWORD bSuccess = FALSE;
TRACE("lpszDirectory(%s)\n", lpszDirectory);
@@ -375,7 +375,7 @@
/* Clear any error information */
INTERNET_SetLastError(0);
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (!FTP_SendCommand(lpwfs->sndSocket, FTP_CMD_CWD, lpszDirectory,
hIC->lpfnStatusCB, hConnect, lpwfs->hdr.dwContext))
goto lend;
@@ -418,7 +418,7 @@
BOOL WINAPI FtpCreateDirectoryA(HINTERNET hConnect, LPCSTR lpszDirectory)
{
LPWININETFTPSESSIONA lpwfs;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
lpwfs = (LPWININETFTPSESSIONA) WININET_GetObject( hConnect );
if (NULL == lpwfs || WH_HFTPSESSION != lpwfs->hdr.htype)
@@ -427,7 +427,7 @@
return FALSE;
}
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
@@ -489,7 +489,7 @@
{
INT nResCode;
BOOL bSuccess = FALSE;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
LPWININETFTPSESSIONA lpwfs;
TRACE("\n");
@@ -518,7 +518,7 @@
}
lend:
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC && hIC->lpfnStatusCB)
{
INTERNET_ASYNC_RESULT iar;
@@ -547,7 +547,7 @@
LPCSTR lpszSearchFile, LPWIN32_FIND_DATAA lpFindFileData, DWORD dwFlags, DWORD dwContext)
{
LPWININETFTPSESSIONA lpwfs;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
lpwfs = (LPWININETFTPSESSIONA) WININET_GetObject( hConnect );
if (NULL == lpwfs || WH_HFTPSESSION != lpwfs->hdr.htype)
@@ -556,7 +556,7 @@
return FALSE;
}
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
@@ -613,7 +613,7 @@
LPCSTR lpszSearchFile, LPWIN32_FIND_DATAA lpFindFileData, DWORD dwFlags, DWORD dwContext)
{
INT nResCode;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
LPWININETFTPSESSIONA lpwfs;
HINTERNET hFindNext = NULL;
@@ -638,7 +638,7 @@
if (!FTP_SendPortOrPasv(lpwfs))
goto lend;
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (!FTP_SendCommand(lpwfs->sndSocket, FTP_CMD_LIST, lpszSearchFile,
hIC->lpfnStatusCB, hConnect, lpwfs->hdr.dwContext))
goto lend;
@@ -708,7 +708,7 @@
LPDWORD lpdwCurrentDirectory)
{
LPWININETFTPSESSIONA lpwfs;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
TRACE("len(%ld)\n", *lpdwCurrentDirectory);
@@ -719,7 +719,7 @@
return FALSE;
}
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
@@ -774,7 +774,7 @@
{
INT nResCode;
LPWININETFTPSESSIONA lpwfs;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
DWORD bSuccess = FALSE;
TRACE("len(%ld)\n", *lpdwCurrentDirectory);
@@ -791,7 +791,7 @@
ZeroMemory(lpszCurrentDirectory, *lpdwCurrentDirectory);
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (!FTP_SendCommand(lpwfs->sndSocket, FTP_CMD_PWD, NULL,
hIC->lpfnStatusCB, hFtpSession, lpwfs->hdr.dwContext))
goto lend;
@@ -855,7 +855,7 @@
DWORD dwContext)
{
LPWININETFTPSESSIONA lpwfs;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
lpwfs = (LPWININETFTPSESSIONA) WININET_GetObject( hFtpSession );
if (NULL == lpwfs || WH_HFTPSESSION != lpwfs->hdr.htype)
@@ -869,7 +869,7 @@
return FALSE;
}
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
@@ -929,7 +929,7 @@
INT nDataSocket;
BOOL bSuccess = FALSE;
LPWININETFILE lpwh = NULL;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
LPWININETFTPSESSIONA lpwfs;
HINTERNET handle = NULL;
@@ -975,7 +975,7 @@
if (lpwfs->lstnSocket != -1)
close(lpwfs->lstnSocket);
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC && hIC->lpfnStatusCB)
{
INTERNET_ASYNC_RESULT iar;
@@ -1013,7 +1013,7 @@
DWORD dwContext)
{
LPWININETFTPSESSIONA lpwfs;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
lpwfs = (LPWININETFTPSESSIONA) WININET_GetObject( hInternet );
if (NULL == lpwfs || WH_HFTPSESSION != lpwfs->hdr.htype)
@@ -1027,7 +1027,7 @@
return FALSE;
}
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
@@ -1089,7 +1089,7 @@
DWORD nBytes;
BOOL bSuccess = FALSE;
HANDLE hFile;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
LPWININETFTPSESSIONA lpwfs;
TRACE("lpszRemoteFile(%s) lpszNewFile(%s)\n", lpszRemoteFile, lpszNewFile);
@@ -1144,7 +1144,7 @@
if (hFile)
CloseHandle(hFile);
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC && hIC->lpfnStatusCB)
{
INTERNET_ASYNC_RESULT iar;
@@ -1172,7 +1172,7 @@
BOOL WINAPI FtpDeleteFileA(HINTERNET hFtpSession, LPCSTR lpszFileName)
{
LPWININETFTPSESSIONA lpwfs;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
lpwfs = (LPWININETFTPSESSIONA) WININET_GetObject( hFtpSession );
if (NULL == lpwfs || WH_HFTPSESSION != lpwfs->hdr.htype)
@@ -1181,7 +1181,7 @@
return FALSE;
}
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
@@ -1215,7 +1215,7 @@
{
INT nResCode;
BOOL bSuccess = FALSE;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
LPWININETFTPSESSIONA lpwfs;
TRACE("0x%08lx\n", (ULONG) hFtpSession);
@@ -1243,7 +1243,7 @@
FTP_SetResponseError(nResCode);
}
lend:
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC && hIC->lpfnStatusCB)
{
INTERNET_ASYNC_RESULT iar;
@@ -1271,7 +1271,7 @@
BOOL WINAPI FtpRemoveDirectoryA(HINTERNET hFtpSession, LPCSTR lpszDirectory)
{
LPWININETFTPSESSIONA lpwfs;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
lpwfs = (LPWININETFTPSESSIONA) WININET_GetObject( hFtpSession );
if (NULL == lpwfs || WH_HFTPSESSION != lpwfs->hdr.htype)
@@ -1280,7 +1280,7 @@
return FALSE;
}
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
@@ -1314,7 +1314,7 @@
{
INT nResCode;
BOOL bSuccess = FALSE;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
LPWININETFTPSESSIONA lpwfs;
TRACE("\n");
@@ -1343,7 +1343,7 @@
}
lend:
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC && hIC->lpfnStatusCB)
{
INTERNET_ASYNC_RESULT iar;
@@ -1371,7 +1371,7 @@
BOOL WINAPI FtpRenameFileA(HINTERNET hFtpSession, LPCSTR lpszSrc, LPCSTR lpszDest)
{
LPWININETFTPSESSIONA lpwfs;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
lpwfs = (LPWININETFTPSESSIONA) WININET_GetObject( hFtpSession );
if (NULL == lpwfs || WH_HFTPSESSION != lpwfs->hdr.htype)
@@ -1380,7 +1380,7 @@
return FALSE;
}
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
{
WORKREQUEST workRequest;
@@ -1414,7 +1414,7 @@
{
INT nResCode;
BOOL bSuccess = FALSE;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
LPWININETFTPSESSIONA lpwfs;
TRACE("\n");
@@ -1449,7 +1449,7 @@
FTP_SetResponseError(nResCode);
lend:
- hIC = (LPWININETAPPINFOA) lpwfs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwfs->hdr.lpwhparent;
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC && hIC->lpfnStatusCB)
{
INTERNET_ASYNC_RESULT iar;
@@ -1482,7 +1482,7 @@
struct sockaddr_in socketAddr;
struct hostent *phe = NULL;
INT nsocket = -1, sock_namelen;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
BOOL bSuccess = FALSE;
LPWININETFTPSESSIONA lpwfs = NULL;
HINTERNET handle = NULL;
@@ -1491,7 +1491,7 @@
(ULONG) hInternet, lpszServerName,
nServerPort, lpszUserName, lpszPassword);
- hIC = (LPWININETAPPINFOA) WININET_GetObject( hInternet );
+ hIC = (LPWININETAPPINFOW) WININET_GetObject( hInternet );
if ( (hIC == NULL) || (hIC->hdr.htype != WH_HINIT) )
goto lerror;
Index: dlls/wininet/http.c
===================================================================
RCS file: /home/wine/wine/dlls/wininet/http.c,v
retrieving revision 1.52
diff -u -r1.52 http.c
--- dlls/wininet/http.c 22 Mar 2004 21:31:44 -0000 1.52
+++ dlls/wininet/http.c 25 Mar 2004 04:17:20 -0000
@@ -205,7 +205,7 @@
DWORD dwFlags, DWORD dwContext)
{
LPWININETHTTPSESSIONA lpwhs;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
HINTERNET handle = NULL;
TRACE("(%p, %s, %s, %s, %s, %p, %08lx, %08lx)\n", hHttpSession,
@@ -225,7 +225,7 @@
INTERNET_SetLastError(ERROR_INTERNET_INCORRECT_HANDLE_TYPE);
return NULL;
}
- hIC = (LPWININETAPPINFOA) lpwhs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwhs->hdr.lpwhparent;
/*
* My tests seem to show that the windows version does not
@@ -381,7 +381,7 @@
/***********************************************************************
* HTTP_Base64
*/
-static UINT HTTP_Base64( LPCSTR bin, LPSTR base64 )
+static UINT HTTP_Base64( LPCWSTR bin, LPWSTR base64 )
{
UINT n = 0, x;
static LPSTR HTTP_Base64Enc =
@@ -426,26 +426,28 @@
*
* Encode the basic authentication string for HTTP 1.1
*/
-static LPSTR HTTP_EncodeBasicAuth( LPCSTR username, LPCSTR password)
+static LPWSTR HTTP_EncodeBasicAuth( LPCWSTR username, LPCWSTR password)
{
UINT len;
- LPSTR in, out, szBasic = "Basic ";
+ LPWSTR in, out;
+ WCHAR szBasic[] = {'B','a','s','i','c',' ',0};
+ WCHAR szColon[] = {':',0};
- len = strlen( username ) + 1 + strlen ( password ) + 1;
- in = HeapAlloc( GetProcessHeap(), 0, len );
+ len = lstrlenW( username ) + 1 + lstrlenW ( password ) + 1;
+ in = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) );
if( !in )
return NULL;
- len = strlen(szBasic) +
- (strlen( username ) + 1 + strlen ( password ))*2 + 1 + 1;
+ len = lstrlenW(szBasic) +
+ (lstrlenW( username ) + 1 + lstrlenW ( password ))*2 + 1 + 1;
out = HeapAlloc( GetProcessHeap(), 0, len );
if( out )
{
- strcpy( in, username );
- strcat( in, ":" );
- strcat( in, password );
- strcpy( out, szBasic );
- HTTP_Base64( in, &out[strlen(out)] );
+ lstrcpyW( in, username );
+ lstrcatW( in, szColon );
+ lstrcatW( in, password );
+ lstrcpyW( out, szBasic );
+ HTTP_Base64( in, &out[strlenW(out)] );
}
HeapFree( GetProcessHeap(), 0, in );
@@ -458,13 +460,19 @@
* Insert the basic authorization field in the request header
*/
BOOL HTTP_InsertProxyAuthorization( LPWININETHTTPREQA lpwhr,
- LPCSTR username, LPCSTR password )
+ LPCWSTR username, LPCWSTR password )
{
HTTPHEADERA hdr;
- INT index;
+ INT index, len;
+ LPWSTR authW;
+
+ authW = HTTP_EncodeBasicAuth( username, password );
+
+ len = WideCharToMultiByte( CP_ACP, 0, authW, -1, NULL, 0, NULL, NULL);
+ hdr.lpszValue = HeapAlloc( GetProcessHeap(), 0, len );
+ WideCharToMultiByte( CP_ACP, 0, authW, -1, hdr.lpszValue, len, NULL, NULL);
hdr.lpszField = "Proxy-Authorization";
- hdr.lpszValue = HTTP_EncodeBasicAuth( username, password );
hdr.wFlags = HDR_ISREQUEST;
hdr.wCount = 0;
if( !hdr.lpszValue )
@@ -480,6 +488,7 @@
HTTP_InsertCustomHeader(lpwhr, &hdr);
HeapFree( GetProcessHeap(), 0, hdr.lpszValue );
+ HeapFree( GetProcessHeap(), 0, authW );
return TRUE;
}
@@ -487,7 +496,7 @@
/***********************************************************************
* HTTP_DealWithProxy
*/
-static BOOL HTTP_DealWithProxy( LPWININETAPPINFOA hIC,
+static BOOL HTTP_DealWithProxy( LPWININETAPPINFOW hIC,
LPWININETHTTPSESSIONA lpwhs, LPWININETHTTPREQA lpwhr)
{
char buf[MAXHOSTNAME];
@@ -500,10 +509,11 @@
UrlComponents.lpszHostName = buf;
UrlComponents.dwHostNameLength = MAXHOSTNAME;
- if (strncasecmp(hIC->lpszProxy,"http://",strlen("http://")))
- sprintf(proxy, "http://%s/", hIC->lpszProxy);
+ WideCharToMultiByte(CP_ACP, 0, hIC->lpszProxy, -1, buf, sizeof buf, NULL, NULL);
+ if (strncasecmp(buf,"http://",strlen("http://")))
+ sprintf(proxy, "http://%s/", buf);
else
- strcpy(proxy,hIC->lpszProxy);
+ strcpy(proxy,buf);
if( !InternetCrackUrlA(proxy, 0, 0, &UrlComponents) )
return FALSE;
if( UrlComponents.dwHostNameLength == 0 )
@@ -551,7 +561,7 @@
DWORD dwFlags, DWORD dwContext)
{
LPWININETHTTPSESSIONA lpwhs;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
LPWININETHTTPREQA lpwhr;
LPSTR lpszCookies;
LPSTR lpszUrl = NULL;
@@ -567,7 +577,7 @@
return NULL;
}
- hIC = (LPWININETAPPINFOA) lpwhs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwhs->hdr.lpwhparent;
lpwhr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WININETHTTPREQA));
if (NULL == lpwhr)
@@ -641,8 +651,16 @@
if (hIC->lpszAgent)
{
- char *agent_header = HeapAlloc(GetProcessHeap(), 0, strlen(hIC->lpszAgent) + 1 + 14);
- sprintf(agent_header, "User-Agent: %s\r\n", hIC->lpszAgent);
+ int len = WideCharToMultiByte(CP_ACP, 0, hIC->lpszAgent, -1, NULL, 0, NULL, NULL );
+ char *agent_header, *user_agent = "User-Agent: ";
+
+ agent_header = HeapAlloc( GetProcessHeap(), 0,
+ strlen(user_agent) + len + 3 );
+ strcpy(agent_header, user_agent);
+ WideCharToMultiByte(CP_ACP, 0, hIC->lpszAgent, -1,
+ agent_header+strlen(user_agent), len, NULL, NULL );
+ strcat(agent_header, "\r\n");
+
HttpAddRequestHeadersA(handle, agent_header, strlen(agent_header),
HTTP_ADDREQ_FLAG_ADD);
HeapFree(GetProcessHeap(), 0, agent_header);
@@ -1071,7 +1089,7 @@
{
LPWININETHTTPREQA lpwhr;
LPWININETHTTPSESSIONA lpwhs = NULL;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
TRACE("%p, %p (%s), %li, %p, %li)\n", hHttpRequest,
lpszHeaders, debugstr_a(lpszHeaders), dwHeaderLength, lpOptional, dwOptionalLength);
@@ -1090,7 +1108,7 @@
return FALSE;
}
- hIC = (LPWININETAPPINFOA) lpwhs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwhs->hdr.lpwhparent;
if (NULL == hIC || hIC->hdr.htype != WH_HINIT)
{
INTERNET_SetLastError(ERROR_INTERNET_INCORRECT_HANDLE_TYPE);
@@ -1162,7 +1180,7 @@
DWORD dwHeaderLength, LPVOID lpOptional, DWORD dwOptionalLength)
{
LPWININETHTTPSESSIONA lpwhs = (LPWININETHTTPSESSIONA) lpwhr->hdr.lpwhparent;
- LPWININETAPPINFOA hIC = (LPWININETAPPINFOA) lpwhs->hdr.lpwhparent;
+ LPWININETAPPINFOW hIC = (LPWININETAPPINFOW) lpwhs->hdr.lpwhparent;
char path[2048];
HINTERNET handle;
@@ -1295,7 +1313,7 @@
INT headerLength = 0;
LPWININETHTTPREQA lpwhr;
LPWININETHTTPSESSIONA lpwhs = NULL;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
BOOL loop_next = FALSE;
int CustHeaderIndex;
@@ -1316,7 +1334,7 @@
return FALSE;
}
- hIC = (LPWININETAPPINFOA) lpwhs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwhs->hdr.lpwhparent;
if (NULL == hIC || hIC->hdr.htype != WH_HINIT)
{
INTERNET_SetLastError(ERROR_INTERNET_INCORRECT_HANDLE_TYPE);
@@ -1689,13 +1707,13 @@
LPCSTR lpszPassword, DWORD dwFlags, DWORD dwContext)
{
BOOL bSuccess = FALSE;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
LPWININETHTTPSESSIONA lpwhs = NULL;
HINTERNET handle = NULL;
TRACE("-->\n");
- hIC = (LPWININETAPPINFOA) WININET_GetObject( hInternet );
+ hIC = (LPWININETAPPINFOW) WININET_GetObject( hInternet );
if( (hIC == NULL) || (hIC->hdr.htype != WH_HINIT) )
goto lerror;
@@ -1728,7 +1746,7 @@
lpwhs->hdr.dwFlags = dwFlags;
lpwhs->hdr.dwContext = dwContext;
if(hIC->lpszProxy && hIC->dwAccessType == INTERNET_OPEN_TYPE_PROXY) {
- if(strchr(hIC->lpszProxy, ' '))
+ if(strchrW(hIC->lpszProxy, ' '))
FIXME("Several proxies not implemented.\n");
if(hIC->lpszProxyBypass)
FIXME("Proxy bypass is ignored.\n");
@@ -1785,7 +1803,7 @@
{
BOOL bSuccess = FALSE;
LPWININETHTTPSESSIONA lpwhs;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
TRACE("-->\n");
@@ -1798,7 +1816,7 @@
lpwhs = (LPWININETHTTPSESSIONA)lpwhr->hdr.lpwhparent;
- hIC = (LPWININETAPPINFOA) lpwhs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwhs->hdr.lpwhparent;
SendAsyncCallback(hIC, lpwhr, lpwhr->hdr.dwContext,
INTERNET_STATUS_CONNECTING_TO_SERVER,
&(lpwhs->socketAddress),
@@ -2202,14 +2220,14 @@
LPWININETHTTPSESSIONA lpwhs = NULL;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
HINTERNET handle;
TRACE("%p\n",lpwhr);
handle = WININET_FindHandle( &lpwhr->hdr );
lpwhs = (LPWININETHTTPSESSIONA) lpwhr->hdr.lpwhparent;
- hIC = (LPWININETAPPINFOA) lpwhs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwhs->hdr.lpwhparent;
SendAsyncCallback(hIC, lpwhr, lpwhr->hdr.dwContext,
INTERNET_STATUS_CLOSING_CONNECTION, 0, 0);
@@ -2234,7 +2252,7 @@
{
int i;
LPWININETHTTPSESSIONA lpwhs = NULL;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
HINTERNET handle;
TRACE("\n");
@@ -2244,7 +2262,7 @@
handle = WININET_FindHandle( &lpwhr->hdr );
lpwhs = (LPWININETHTTPSESSIONA) lpwhr->hdr.lpwhparent;
- hIC = (LPWININETAPPINFOA) lpwhs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwhs->hdr.lpwhparent;
SendAsyncCallback(hIC, handle, lpwhr->hdr.dwContext,
INTERNET_STATUS_HANDLE_CLOSING, lpwhr,
@@ -2286,12 +2304,12 @@
*/
void HTTP_CloseHTTPSessionHandle(LPWININETHTTPSESSIONA lpwhs)
{
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
HINTERNET handle;
TRACE("%p\n", lpwhs);
- hIC = (LPWININETAPPINFOA) lpwhs->hdr.lpwhparent;
+ hIC = (LPWININETAPPINFOW) lpwhs->hdr.lpwhparent;
handle = WININET_FindHandle( &lpwhs->hdr );
SendAsyncCallback(hIC, handle, lpwhs->hdr.dwContext,
Index: dlls/wininet/internet.c
===================================================================
RCS file: /home/wine/wine/dlls/wininet/internet.c,v
retrieving revision 1.78
diff -u -r1.78 internet.c
--- dlls/wininet/internet.c 9 Feb 2004 22:07:43 -0000 1.78
+++ dlls/wininet/internet.c 25 Mar 2004 04:17:20 -0000
@@ -72,7 +72,7 @@
#define RESPONSE_TIMEOUT 30
#define GET_HWININET_FROM_LPWININETFINDNEXT(lpwh) \
-(LPWININETAPPINFOA)(((LPWININETFTPSESSIONA)(lpwh->hdr.lpwhparent))->hdr.lpwhparent)
+(LPWININETAPPINFOW)(((LPWININETFTPSESSIONA)(lpwh->hdr.lpwhparent))->hdr.lpwhparent)
typedef struct
@@ -336,12 +336,13 @@
* The proxy may be specified in the form 'http=proxy.my.org'
* Presumably that means there can be ftp=ftpproxy.my.org too.
*/
-static BOOL INTERNET_ConfigureProxyFromReg( LPWININETAPPINFOA lpwai )
+static BOOL INTERNET_ConfigureProxyFromReg( LPWININETAPPINFOW lpwai )
{
HKEY key;
DWORD r, keytype, len, enabled;
LPSTR lpszInternetSettings =
"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings";
+ WCHAR szProxyServer[] = { 'P','r','o','x','y','S','e','r','v','e','r', 0 };
r = RegOpenKeyA(HKEY_CURRENT_USER, lpszInternetSettings, &key);
if ( r != ERROR_SUCCESS )
@@ -355,31 +356,32 @@
TRACE("Proxy is enabled.\n");
/* figure out how much memory the proxy setting takes */
- r = RegQueryValueExA( key, "ProxyServer", NULL, &keytype,
+ r = RegQueryValueExW( key, szProxyServer, NULL, &keytype,
NULL, &len);
if( (r == ERROR_SUCCESS) && len && (keytype == REG_SZ) )
{
- LPSTR szProxy, p, szHttp = "http=";
+ LPWSTR szProxy, p;
+ WCHAR szHttp[] = {'h','t','t','p','=',0};
- szProxy=HeapAlloc( GetProcessHeap(), 0, len+1 );
- RegQueryValueExA( key, "ProxyServer", NULL, &keytype,
+ szProxy=HeapAlloc( GetProcessHeap(), 0, len );
+ RegQueryValueExW( key, szProxyServer, NULL, &keytype,
(BYTE*)szProxy, &len);
/* find the http proxy, and strip away everything else */
- p = strstr( szProxy, szHttp );
+ p = strstrW( szProxy, szHttp );
if( p )
{
- p += strlen(szHttp);
- strcpy( szProxy, p );
+ p += lstrlenW(szHttp);
+ lstrcpyW( szProxy, p );
}
- p = strchr( szProxy, ' ' );
+ p = strchrW( szProxy, ' ' );
if( p )
*p = 0;
lpwai->dwAccessType = INTERNET_OPEN_TYPE_PROXY;
lpwai->lpszProxy = szProxy;
- TRACE("http proxy = %s\n", lpwai->lpszProxy);
+ TRACE("http proxy = %s\n", debugstr_w(lpwai->lpszProxy));
}
else
ERR("Couldn't read proxy server settings.\n");
@@ -401,10 +403,10 @@
* NULL on failure
*
*/
-HINTERNET WINAPI InternetOpenA(LPCSTR lpszAgent, DWORD dwAccessType,
- LPCSTR lpszProxy, LPCSTR lpszProxyBypass, DWORD dwFlags)
+HINTERNET WINAPI InternetOpenW(LPCWSTR lpszAgent, DWORD dwAccessType,
+ LPCWSTR lpszProxy, LPCWSTR lpszProxyBypass, DWORD dwFlags)
{
- LPWININETAPPINFOA lpwai = NULL;
+ LPWININETAPPINFOW lpwai = NULL;
HINTERNET handle = NULL;
if (TRACE_ON(wininet)) {
@@ -425,8 +427,8 @@
const char *access_type_str = "Unknown";
DWORD flag_val = dwFlags;
- TRACE("(%s, %li, %s, %s, %li)\n", debugstr_a(lpszAgent), dwAccessType,
- debugstr_a(lpszProxy), debugstr_a(lpszProxyBypass), dwFlags);
+ TRACE("(%s, %li, %s, %s, %li)\n", debugstr_w(lpszAgent), dwAccessType,
+ debugstr_w(lpszProxy), debugstr_w(lpszProxyBypass), dwFlags);
for (i = 0; i < (sizeof(access_type) / sizeof(access_type[0])); i++) {
if (access_type[i].val == dwAccessType) {
access_type_str = access_type[i].name;
@@ -448,14 +450,14 @@
/* Clear any error information */
INTERNET_SetLastError(0);
- lpwai = HeapAlloc(GetProcessHeap(), 0, sizeof(WININETAPPINFOA));
+ lpwai = HeapAlloc(GetProcessHeap(), 0, sizeof(WININETAPPINFOW));
if (NULL == lpwai)
{
INTERNET_SetLastError(ERROR_OUTOFMEMORY);
goto lend;
}
- memset(lpwai, 0, sizeof(WININETAPPINFOA));
+ memset(lpwai, 0, sizeof(WININETAPPINFOW));
lpwai->hdr.htype = WH_HINIT;
lpwai->hdr.lpwhparent = NULL;
lpwai->hdr.dwFlags = dwFlags;
@@ -474,26 +476,26 @@
if (NULL != lpszAgent)
{
lpwai->lpszAgent = HeapAlloc( GetProcessHeap(),0,
- strlen(lpszAgent)+1);
+ (strlenW(lpszAgent)+1)*sizeof(WCHAR));
if (lpwai->lpszAgent)
- strcpy( lpwai->lpszAgent, lpszAgent );
+ lstrcpyW( lpwai->lpszAgent, lpszAgent );
}
if(dwAccessType == INTERNET_OPEN_TYPE_PRECONFIG)
INTERNET_ConfigureProxyFromReg( lpwai );
else if (NULL != lpszProxy)
{
lpwai->lpszProxy = HeapAlloc( GetProcessHeap(), 0,
- strlen(lpszProxy)+1);
+ (strlenW(lpszProxy)+1)*sizeof(WCHAR));
if (lpwai->lpszProxy)
- strcpy( lpwai->lpszProxy, lpszProxy );
+ lstrcpyW( lpwai->lpszProxy, lpszProxy );
}
if (NULL != lpszProxyBypass)
{
lpwai->lpszProxyBypass = HeapAlloc( GetProcessHeap(), 0,
- strlen(lpszProxyBypass)+1);
+ (strlenW(lpszProxyBypass)+1)*sizeof(WCHAR));
if (lpwai->lpszProxyBypass)
- strcpy( lpwai->lpszProxyBypass, lpszProxyBypass );
+ lstrcpyW( lpwai->lpszProxyBypass, lpszProxyBypass );
}
lend:
@@ -513,42 +515,45 @@
* NULL on failure
*
*/
-HINTERNET WINAPI InternetOpenW(LPCWSTR lpszAgent, DWORD dwAccessType,
- LPCWSTR lpszProxy, LPCWSTR lpszProxyBypass, DWORD dwFlags)
+HINTERNET WINAPI InternetOpenA(LPCSTR lpszAgent, DWORD dwAccessType,
+ LPCSTR lpszProxy, LPCSTR lpszProxyBypass, DWORD dwFlags)
{
HINTERNET rc = (HINTERNET)NULL;
- INT lenAgent = WideCharToMultiByte(CP_ACP, 0, lpszAgent, -1, NULL, 0, NULL, NULL);
- INT lenProxy = WideCharToMultiByte(CP_ACP, 0, lpszProxy, -1, NULL, 0, NULL, NULL);
- INT lenBypass = WideCharToMultiByte(CP_ACP, 0, lpszProxyBypass, -1, NULL, 0, NULL, NULL);
- CHAR *szAgent = (CHAR *)HeapAlloc(GetProcessHeap(), 0, lenAgent*sizeof(CHAR));
- CHAR *szProxy = (CHAR *)HeapAlloc(GetProcessHeap(), 0, lenProxy*sizeof(CHAR));
- CHAR *szBypass = (CHAR *)HeapAlloc(GetProcessHeap(), 0, lenBypass*sizeof(CHAR));
-
- TRACE("(%s, 0x%08lx, %s, %s, 0x%08lx)\n", debugstr_w(lpszAgent), dwAccessType, debugstr_w(lpszProxy), debugstr_w(lpszProxyBypass), dwFlags);
-
- if (!szAgent || !szProxy || !szBypass)
- {
- if (szAgent)
- HeapFree(GetProcessHeap(), 0, szAgent);
- if (szProxy)
- HeapFree(GetProcessHeap(), 0, szProxy);
- if (szBypass)
- HeapFree(GetProcessHeap(), 0, szBypass);
- return (HINTERNET)NULL;
- }
-
- WideCharToMultiByte(CP_ACP, 0, lpszAgent, -1, szAgent, lenAgent,
- NULL, NULL);
- WideCharToMultiByte(CP_ACP, 0, lpszProxy, -1, szProxy, lenProxy,
- NULL, NULL);
- WideCharToMultiByte(CP_ACP, 0, lpszProxyBypass, -1, szBypass, lenBypass,
- NULL, NULL);
-
- rc = InternetOpenA(szAgent, dwAccessType, szProxy, szBypass, dwFlags);
-
- HeapFree(GetProcessHeap(), 0, szAgent);
- HeapFree(GetProcessHeap(), 0, szProxy);
- HeapFree(GetProcessHeap(), 0, szBypass);
+ INT len;
+ WCHAR *szAgent = NULL, *szProxy = NULL, *szBypass = NULL;
+
+ TRACE("(%s, 0x%08lx, %s, %s, 0x%08lx)\n", debugstr_a(lpszAgent),
+ dwAccessType, debugstr_a(lpszProxy), debugstr_a(lpszProxyBypass), dwFlags);
+
+ if( lpszAgent )
+ {
+ len = MultiByteToWideChar(CP_ACP, 0, lpszAgent, -1, NULL, 0);
+ szAgent = HeapAlloc(GetProcessHeap(), 0, len*sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, lpszAgent, -1, szAgent, len);
+ }
+
+ if( lpszProxy )
+ {
+ len = MultiByteToWideChar(CP_ACP, 0, lpszProxy, -1, NULL, 0);
+ szProxy = HeapAlloc(GetProcessHeap(), 0, len*sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, lpszProxy, -1, szProxy, len);
+ }
+
+ if( lpszProxyBypass )
+ {
+ len = MultiByteToWideChar(CP_ACP, 0, lpszProxyBypass, -1, NULL, 0);
+ szBypass = HeapAlloc(GetProcessHeap(), 0, len*sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, lpszProxyBypass, -1, szBypass, len);
+ }
+
+ rc = InternetOpenW(szAgent, dwAccessType, szProxy, szBypass, dwFlags);
+
+ if( szAgent )
+ HeapFree(GetProcessHeap(), 0, szAgent);
+ if( szProxy )
+ HeapFree(GetProcessHeap(), 0, szProxy);
+ if( szBypass )
+ HeapFree(GetProcessHeap(), 0, szBypass);
return rc;
}
@@ -749,7 +754,7 @@
*/
BOOL WINAPI InternetFindNextFileA(HINTERNET hFind, LPVOID lpvFindData)
{
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
LPWININETFINDNEXTA lpwh;
TRACE("\n");
@@ -794,7 +799,7 @@
BOOL WINAPI INTERNET_FindNextFileA(HINTERNET hFind, LPVOID lpvFindData)
{
BOOL bSuccess = TRUE;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
LPWIN32_FIND_DATAA lpFindFileData;
LPWININETFINDNEXTA lpwh;
@@ -863,7 +868,7 @@
* Void
*
*/
-VOID INTERNET_CloseHandle(LPWININETAPPINFOA lpwai)
+VOID INTERNET_CloseHandle(LPWININETAPPINFOW lpwai)
{
TRACE("%p\n",lpwai);
@@ -921,7 +926,7 @@
switch (lpwh->htype)
{
case WH_HINIT:
- INTERNET_CloseHandle((LPWININETAPPINFOA) lpwh);
+ INTERNET_CloseHandle((LPWININETAPPINFOW) lpwh);
retval = TRUE;
break;
@@ -1461,9 +1466,9 @@
HINTERNET hInternet ,INTERNET_STATUS_CALLBACK lpfnIntCB)
{
INTERNET_STATUS_CALLBACK retVal;
- LPWININETAPPINFOA lpwai;
+ LPWININETAPPINFOW lpwai;
- lpwai = (LPWININETAPPINFOA)WININET_GetObject(hInternet);
+ lpwai = (LPWININETAPPINFOW)WININET_GetObject(hInternet);
if (!lpwai)
return NULL;
@@ -2126,12 +2131,12 @@
LPCSTR lpszHeaders, DWORD dwHeadersLength, DWORD dwFlags, DWORD dwContext)
{
HINTERNET ret = NULL;
- LPWININETAPPINFOA hIC = NULL;
+ LPWININETAPPINFOW hIC = NULL;
TRACE("(%p, %s, %s, %08lx, %08lx, %08lx\n", hInternet, debugstr_a(lpszUrl), debugstr_a(lpszHeaders),
dwHeadersLength, dwFlags, dwContext);
- hIC = (LPWININETAPPINFOA) WININET_GetObject( hInternet );
+ hIC = (LPWININETAPPINFOW) WININET_GetObject( hInternet );
if (NULL == hIC || hIC->hdr.htype != WH_HINIT) {
INTERNET_SetLastError(ERROR_INTERNET_INCORRECT_HANDLE_TYPE);
goto lend;
Index: dlls/wininet/internet.h
===================================================================
RCS file: /home/wine/wine/dlls/wininet/internet.h,v
retrieving revision 1.21
diff -u -r1.21 internet.h
--- dlls/wininet/internet.h 9 Feb 2004 22:01:49 -0000 1.21
+++ dlls/wininet/internet.h 25 Mar 2004 04:17:20 -0000
@@ -85,14 +85,14 @@
typedef struct
{
WININETHANDLEHEADER hdr;
- LPSTR lpszAgent;
- LPSTR lpszProxy;
- LPSTR lpszProxyBypass;
- LPSTR lpszProxyUsername;
- LPSTR lpszProxyPassword;
+ LPWSTR lpszAgent;
+ LPWSTR lpszProxy;
+ LPWSTR lpszProxyBypass;
+ LPWSTR lpszProxyUsername;
+ LPWSTR lpszProxyPassword;
DWORD dwAccessType;
INTERNET_STATUS_CALLBACK lpfnStatusCB;
-} WININETAPPINFOA, *LPWININETAPPINFOA;
+} WININETAPPINFOW, *LPWININETAPPINFOW;
typedef struct
@@ -382,16 +382,16 @@
void HTTP_CloseHTTPSessionHandle(LPWININETHTTPSESSIONA lpwhs);
void HTTP_CloseHTTPRequestHandle(LPWININETHTTPREQA lpwhr);
-VOID SendAsyncCallback(LPWININETAPPINFOA hIC, HINTERNET hHttpSession,
+VOID SendAsyncCallback(LPWININETAPPINFOW hIC, HINTERNET hHttpSession,
DWORD dwContext, DWORD dwInternetStatus, LPVOID
lpvStatusInfo , DWORD dwStatusInfoLength);
-VOID SendAsyncCallbackInt(LPWININETAPPINFOA hIC, HINTERNET hHttpSession,
+VOID SendAsyncCallbackInt(LPWININETAPPINFOW hIC, HINTERNET hHttpSession,
DWORD dwContext, DWORD dwInternetStatus, LPVOID
lpvStatusInfo , DWORD dwStatusInfoLength);
BOOL HTTP_InsertProxyAuthorization( LPWININETHTTPREQA lpwhr,
- LPCSTR username, LPCSTR password );
+ LPCWSTR username, LPCWSTR password );
BOOL NETCON_connected(WININET_NETCONNECTION *connection);
void NETCON_init(WININET_NETCONNECTION *connnection, BOOL useSSL);
Index: dlls/wininet/utility.c
===================================================================
RCS file: /home/wine/wine/dlls/wininet/utility.c,v
retrieving revision 1.14
diff -u -r1.14 utility.c
--- dlls/wininet/utility.c 9 Feb 2004 22:01:49 -0000 1.14
+++ dlls/wininet/utility.c 25 Mar 2004 04:17:20 -0000
@@ -212,7 +212,7 @@
return "Unknown";
}
-VOID SendAsyncCallbackInt(LPWININETAPPINFOA hIC, HINTERNET hHttpSession,
+VOID SendAsyncCallbackInt(LPWININETAPPINFOW hIC, HINTERNET hHttpSession,
DWORD dwContext, DWORD dwInternetStatus, LPVOID
lpvStatusInfo, DWORD dwStatusInfoLength)
{
@@ -234,7 +234,7 @@
-VOID SendAsyncCallback(LPWININETAPPINFOA hIC, HINTERNET hHttpSession,
+VOID SendAsyncCallback(LPWININETAPPINFOW hIC, HINTERNET hHttpSession,
DWORD dwContext, DWORD dwInternetStatus, LPVOID
lpvStatusInfo, DWORD dwStatusInfoLength)
{
More information about the wine-patches
mailing list