Remove references to HEAP_strdupAtoW.

This commit is contained in:
Mike McCormack 2003-09-27 02:24:31 +00:00 committed by Alexandre Julliard
parent 4d6a47a268
commit f92deed281
4 changed files with 38 additions and 32 deletions

View File

@ -1,7 +1,7 @@
/* /*
* Implementation of the Microsoft Installer (msi.dll) * Implementation of the Microsoft Installer (msi.dll)
* *
* Copyright 2002 Mike McCormack for CodeWeavers * Copyright 2002,2003 Mike McCormack for CodeWeavers
* *
* 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
@ -25,6 +25,7 @@
#include "windef.h" #include "windef.h"
#include "winbase.h" #include "winbase.h"
#include "winreg.h" #include "winreg.h"
#include "winnls.h"
#include "shlwapi.h" #include "shlwapi.h"
#include "wine/debug.h" #include "wine/debug.h"
#include "msi.h" #include "msi.h"
@ -135,21 +136,26 @@ UINT WINAPI MsiOpenDatabaseA(
{ {
HRESULT r = ERROR_FUNCTION_FAILED; HRESULT r = ERROR_FUNCTION_FAILED;
LPWSTR szwDBPath = NULL, szwPersist = NULL; LPWSTR szwDBPath = NULL, szwPersist = NULL;
UINT len;
TRACE("%s %s %p\n", debugstr_a(szDBPath), debugstr_a(szPersist), phDB); TRACE("%s %s %p\n", debugstr_a(szDBPath), debugstr_a(szPersist), phDB);
if( szDBPath ) if( szDBPath )
{ {
szwDBPath = HEAP_strdupAtoW( GetProcessHeap(), 0, szDBPath ); len = MultiByteToWideChar( CP_ACP, 0, szDBPath, -1, NULL, 0 );
szwDBPath = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) );
if( !szwDBPath ) if( !szwDBPath )
goto end; goto end;
MultiByteToWideChar( CP_ACP, 0, szDBPath, -1, szwDBPath, len );
} }
if( szPersist ) if( szPersist )
{ {
szwPersist = HEAP_strdupAtoW( GetProcessHeap(), 0, szPersist ); len = MultiByteToWideChar( CP_ACP, 0, szPersist, -1, NULL, 0 );
szwPersist = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) );
if( !szwPersist ) if( !szwPersist )
goto end; goto end;
MultiByteToWideChar( CP_ACP, 0, szPersist, -1, szwPersist, len );
} }
r = MsiOpenDatabaseW( szwDBPath, szwPersist, phDB ); r = MsiOpenDatabaseW( szwDBPath, szwPersist, phDB );
@ -287,16 +293,20 @@ UINT WINAPI MsiInstallProductA(LPCSTR szPackagePath, LPCSTR szCommandLine)
if( szPackagePath ) if( szPackagePath )
{ {
szwPath = HEAP_strdupAtoW(GetProcessHeap(),0,szPackagePath); UINT len = MultiByteToWideChar( CP_ACP, 0, szPackagePath, -1, NULL, 0 );
if( szwPath == NULL ) szwPath = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) );
if( !szwPath )
goto end; goto end;
MultiByteToWideChar( CP_ACP, 0, szPackagePath, -1, szwPath, len );
} }
if( szCommandLine ) if( szCommandLine )
{ {
szwCommand = HEAP_strdupAtoW(GetProcessHeap(),0,szCommandLine); UINT len = MultiByteToWideChar( CP_ACP, 0, szCommandLine, -1, NULL, 0 );
if( szwCommand == NULL ) szwCommand = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) );
if( !szwCommand )
goto end; goto end;
MultiByteToWideChar( CP_ACP, 0, szCommandLine, -1, szwCommand, len );
} }
r = MsiInstallProductW( szwPath, szwCommand ); r = MsiInstallProductW( szwPath, szwCommand );
@ -478,13 +488,15 @@ UINT WINAPI MsiEnumFeaturesA(LPCSTR szProduct, DWORD index,
if( szProduct ) if( szProduct )
{ {
szwProduct = HEAP_strdupAtoW(GetProcessHeap(),0,szProduct); UINT len = MultiByteToWideChar( CP_ACP, 0, szProduct, -1, NULL, 0 );
if( !szwProduct ) szwProduct = HeapAlloc( GetProcessHeap(), 0, len * sizeof (WCHAR) );
if( szwProduct )
MultiByteToWideChar( CP_ACP, 0, szProduct, -1, szwProduct, len );
else
return ERROR_FUNCTION_FAILED; return ERROR_FUNCTION_FAILED;
} }
r = MsiEnumFeaturesW(szProduct?szwProduct:NULL, r = MsiEnumFeaturesW(szwProduct, index, szwFeature, szwParent);
index, szwFeature, szwParent);
if( r == ERROR_SUCCESS ) if( r == ERROR_SUCCESS )
{ {
WideCharToMultiByte(CP_ACP, 0, szwFeature, -1, WideCharToMultiByte(CP_ACP, 0, szwFeature, -1,
@ -591,8 +603,11 @@ UINT WINAPI MsiEnumClientsA(LPCSTR szComponent, DWORD index, LPSTR szProduct)
if( szComponent ) if( szComponent )
{ {
szwComponent = HEAP_strdupAtoW(GetProcessHeap(),0,szComponent); UINT len = MultiByteToWideChar( CP_ACP, 0, szComponent, -1, NULL, 0 );
if( !szwComponent ) szwComponent = HeapAlloc( GetProcessHeap(), 0, len * sizeof (WCHAR) );
if( szwComponent )
MultiByteToWideChar( CP_ACP, 0, szComponent, -1, szwComponent, len );
else
return ERROR_FUNCTION_FAILED; return ERROR_FUNCTION_FAILED;
} }

View File

@ -173,18 +173,4 @@ extern LPWSTR MSI_makestring( MSIDATABASE *db, UINT stringid);
UINT VIEW_find_column( MSIVIEW *view, LPWSTR name, UINT *n ); UINT VIEW_find_column( MSIVIEW *view, LPWSTR name, UINT *n );
/* FIXME! should get rid of that */
#include "winnls.h"
inline static LPWSTR HEAP_strdupAtoW( HANDLE heap, DWORD flags, LPCSTR str )
{
LPWSTR ret;
INT len;
if (!str) return NULL;
len = MultiByteToWideChar( CP_ACP, 0, str, -1, NULL, 0 );
ret = HeapAlloc( heap, flags, len * sizeof(WCHAR) );
if (ret) MultiByteToWideChar( CP_ACP, 0, str, -1, ret, len );
return ret;
}
#endif /* __WINE_MSI_PRIVATE__ */ #endif /* __WINE_MSI_PRIVATE__ */

View File

@ -97,15 +97,17 @@ UINT WINAPI MsiDatabaseOpenViewA(MSIHANDLE hdb,
LPCSTR szQuery, MSIHANDLE *phView) LPCSTR szQuery, MSIHANDLE *phView)
{ {
UINT r; UINT r;
LPCWSTR szwQuery; LPWSTR szwQuery;
TRACE("%ld %s %p\n", hdb, debugstr_a(szQuery), phView); TRACE("%ld %s %p\n", hdb, debugstr_a(szQuery), phView);
if( szQuery ) if( szQuery )
{ {
szwQuery = HEAP_strdupAtoW( GetProcessHeap(), 0, szQuery ); UINT len = MultiByteToWideChar( CP_ACP, 0, szQuery, -1, NULL, 0 );
szwQuery = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) );
if( !szwQuery ) if( !szwQuery )
return ERROR_FUNCTION_FAILED; return ERROR_FUNCTION_FAILED;
MultiByteToWideChar( CP_ACP, 0, szQuery, -1, szwQuery, len );
} }
else else
szwQuery = NULL; szwQuery = NULL;

View File

@ -25,6 +25,7 @@
#include "windef.h" #include "windef.h"
#include "winbase.h" #include "winbase.h"
#include "winreg.h" #include "winreg.h"
#include "winnls.h"
#include "shlwapi.h" #include "shlwapi.h"
#include "wine/debug.h" #include "wine/debug.h"
#include "msi.h" #include "msi.h"
@ -54,9 +55,11 @@ UINT WINAPI MsiGetSummaryInformationA(MSIHANDLE hDatabase,
if( szDatabase ) if( szDatabase )
{ {
szwDatabase = HEAP_strdupAtoW( GetProcessHeap(), 0, szDatabase ); UINT len = MultiByteToWideChar( CP_ACP, 0, szDatabase, -1, NULL, 0 );
szwDatabase = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) );
if( !szwDatabase ) if( !szwDatabase )
return ERROR_FUNCTION_FAILED; return ERROR_FUNCTION_FAILED;
MultiByteToWideChar( CP_ACP, 0, szDatabase, -1, szwDatabase, len );
} }
ret = MsiGetSummaryInformationW(hDatabase, szwDatabase, uiUpdateCount, phSummaryInfo); ret = MsiGetSummaryInformationW(hDatabase, szwDatabase, uiUpdateCount, phSummaryInfo);