mirror of
https://github.com/reactos/wine.git
synced 2024-11-25 12:49:45 +00:00
- Rename dupstrW to strdupW, and remove duplicate definition.
- Move definition of string manipulation functions to msipriv.h.
This commit is contained in:
parent
12bbaa7baf
commit
95dea4969a
@ -508,8 +508,8 @@ int track_tempfile(MSIPACKAGE *package, LPCWSTR name, LPCWSTR path)
|
||||
|
||||
memset(&package->files[index],0,sizeof(MSIFILE));
|
||||
|
||||
package->files[index].File = dupstrW(name);
|
||||
package->files[index].TargetPath = dupstrW(path);
|
||||
package->files[index].File = strdupW(name);
|
||||
package->files[index].TargetPath = strdupW(path);
|
||||
package->files[index].Temporary = TRUE;
|
||||
|
||||
TRACE("Tracking tempfile (%s)\n",debugstr_w(package->files[index].File));
|
||||
@ -677,7 +677,7 @@ static void ui_actiondata(MSIPACKAGE *package, LPCWSTR action, MSIRECORD * recor
|
||||
package->ActionFormat = load_dynamic_stringW(row,3);
|
||||
|
||||
HeapFree(GetProcessHeap(),0,package->LastAction);
|
||||
package->LastAction = dupstrW(action);
|
||||
package->LastAction = strdupW(action);
|
||||
|
||||
msiobj_release(&row->hdr);
|
||||
MSI_ViewClose(view);
|
||||
@ -875,8 +875,8 @@ UINT ACTION_DoTopLevelINSTALL(MSIPACKAGE *package, LPCWSTR szPackagePath,
|
||||
{
|
||||
LPWSTR p, check, path;
|
||||
|
||||
package->PackagePath = dupstrW(szPackagePath);
|
||||
path = dupstrW(szPackagePath);
|
||||
package->PackagePath = strdupW(szPackagePath);
|
||||
path = strdupW(szPackagePath);
|
||||
p = strrchrW(path,'\\');
|
||||
if (p)
|
||||
{
|
||||
@ -1921,7 +1921,7 @@ static INT load_folder(MSIPACKAGE *package, const WCHAR* dir)
|
||||
|
||||
memset(&package->folders[index],0,sizeof(MSIFOLDER));
|
||||
|
||||
package->folders[index].Directory = dupstrW(dir);
|
||||
package->folders[index].Directory = strdupW(dir);
|
||||
|
||||
rc = MSI_OpenQuery(package->db, &view, Query, dir);
|
||||
if (rc != ERROR_SUCCESS)
|
||||
@ -1980,13 +1980,13 @@ static INT load_folder(MSIPACKAGE *package, const WCHAR* dir)
|
||||
{
|
||||
TRACE(" TargetDefault = %s\n",debugstr_w(targetdir));
|
||||
HeapFree(GetProcessHeap(),0, package->folders[index].TargetDefault);
|
||||
package->folders[index].TargetDefault = dupstrW(targetdir);
|
||||
package->folders[index].TargetDefault = strdupW(targetdir);
|
||||
}
|
||||
|
||||
if (srcdir)
|
||||
package->folders[index].SourceDefault = dupstrW(srcdir);
|
||||
package->folders[index].SourceDefault = strdupW(srcdir);
|
||||
else if (targetdir)
|
||||
package->folders[index].SourceDefault = dupstrW(targetdir);
|
||||
package->folders[index].SourceDefault = strdupW(targetdir);
|
||||
HeapFree(GetProcessHeap(), 0, ptargetdir);
|
||||
|
||||
parent = load_dynamic_stringW(row,2);
|
||||
@ -2084,13 +2084,13 @@ LPWSTR resolve_folder(MSIPACKAGE *package, LPCWSTR name, BOOL source,
|
||||
|
||||
if (!source && package->folders[i].ResolvedTarget)
|
||||
{
|
||||
path = dupstrW(package->folders[i].ResolvedTarget);
|
||||
path = strdupW(package->folders[i].ResolvedTarget);
|
||||
TRACE(" already resolved to %s\n",debugstr_w(path));
|
||||
return path;
|
||||
}
|
||||
else if (source && package->folders[i].ResolvedSource)
|
||||
{
|
||||
path = dupstrW(package->folders[i].ResolvedSource);
|
||||
path = strdupW(package->folders[i].ResolvedSource);
|
||||
return path;
|
||||
}
|
||||
else if (!source && package->folders[i].Property)
|
||||
@ -2114,7 +2114,7 @@ LPWSTR resolve_folder(MSIPACKAGE *package, LPCWSTR name, BOOL source,
|
||||
{
|
||||
TRACE(" TargetDefault = %s\n",debugstr_w(package->folders[i].TargetDefault));
|
||||
path = build_directory_name(3, p, package->folders[i].TargetDefault, NULL);
|
||||
package->folders[i].ResolvedTarget = dupstrW(path);
|
||||
package->folders[i].ResolvedTarget = strdupW(path);
|
||||
TRACE(" resolved into %s\n",debugstr_w(path));
|
||||
if (set_prop)
|
||||
MSI_SetPropertyW(package,name,path);
|
||||
@ -2122,7 +2122,7 @@ LPWSTR resolve_folder(MSIPACKAGE *package, LPCWSTR name, BOOL source,
|
||||
else
|
||||
{
|
||||
path = build_directory_name(3, p, package->folders[i].SourceDefault, NULL);
|
||||
package->folders[i].ResolvedSource = dupstrW(path);
|
||||
package->folders[i].ResolvedSource = strdupW(path);
|
||||
}
|
||||
HeapFree(GetProcessHeap(),0,p);
|
||||
}
|
||||
@ -3119,7 +3119,7 @@ inline static UINT get_file_target(MSIPACKAGE *package, LPCWSTR file_key,
|
||||
{
|
||||
if (package->files[index].State >= 2)
|
||||
{
|
||||
*file_source = dupstrW(package->files[index].TargetPath);
|
||||
*file_source = strdupW(package->files[index].TargetPath);
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
else
|
||||
@ -3231,7 +3231,7 @@ static UINT ACTION_DuplicateFiles(MSIPACKAGE *package)
|
||||
if (MSI_RecordIsNull(row,5))
|
||||
{
|
||||
LPWSTR p;
|
||||
dest_path = dupstrW(file_source);
|
||||
dest_path = strdupW(file_source);
|
||||
p = strrchrW(dest_path,'\\');
|
||||
if (p)
|
||||
*p=0;
|
||||
@ -3759,7 +3759,7 @@ static LPWSTR resolve_keypath( MSIPACKAGE* package, INT
|
||||
|
||||
if (j>=0)
|
||||
{
|
||||
LPWSTR p = dupstrW(package->files[j].TargetPath);
|
||||
LPWSTR p = strdupW(package->files[j].TargetPath);
|
||||
return p;
|
||||
}
|
||||
}
|
||||
@ -4882,7 +4882,7 @@ static UINT ACTION_CreateShortcuts(MSIPACKAGE *package)
|
||||
{
|
||||
LPWSTR keypath;
|
||||
FIXME("poorly handled shortcut format, advertised shortcut\n");
|
||||
keypath = dupstrW(package->components[index].FullKeypath);
|
||||
keypath = strdupW(package->components[index].FullKeypath);
|
||||
IShellLinkW_SetPath(sl,keypath);
|
||||
HeapFree(GetProcessHeap(),0,keypath);
|
||||
}
|
||||
|
@ -116,39 +116,3 @@ int get_loaded_component(MSIPACKAGE* package, LPCWSTR Component );
|
||||
int get_loaded_feature(MSIPACKAGE* package, LPCWSTR Feature );
|
||||
int get_loaded_file(MSIPACKAGE* package, LPCWSTR file);
|
||||
int track_tempfile(MSIPACKAGE *package, LPCWSTR name, LPCWSTR path);
|
||||
|
||||
|
||||
|
||||
inline static char *strdupWtoA( const WCHAR *str )
|
||||
{
|
||||
char *ret = NULL;
|
||||
if (str)
|
||||
{
|
||||
DWORD len = WideCharToMultiByte( CP_ACP, 0, str, -1, NULL, 0, NULL, NULL
|
||||
);
|
||||
if ((ret = HeapAlloc( GetProcessHeap(), 0, len )))
|
||||
WideCharToMultiByte( CP_ACP, 0, str, -1, ret, len, NULL, NULL );
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline static WCHAR *strdupAtoW( const char *str )
|
||||
{
|
||||
WCHAR *ret = NULL;
|
||||
if (str)
|
||||
{
|
||||
DWORD len = MultiByteToWideChar( CP_ACP, 0, str, -1, NULL, 0 );
|
||||
if ((ret = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) )))
|
||||
MultiByteToWideChar( CP_ACP, 0, str, -1, ret, len );
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline static LPWSTR dupstrW(LPCWSTR src)
|
||||
{
|
||||
LPWSTR dest;
|
||||
if (!src) return NULL;
|
||||
dest = HeapAlloc(GetProcessHeap(), 0, (strlenW(src)+1)*sizeof(WCHAR));
|
||||
strcpyW(dest, src);
|
||||
return dest;
|
||||
}
|
||||
|
@ -145,7 +145,7 @@ UINT ACTION_CustomAction(MSIPACKAGE *package,LPCWSTR action, BOOL execute)
|
||||
else
|
||||
newbuf = HeapAlloc(GetProcessHeap(),0, sizeof(LPWSTR));
|
||||
|
||||
newbuf[count] = dupstrW(action);
|
||||
newbuf[count] = strdupW(action);
|
||||
package->CommitAction = newbuf;
|
||||
}
|
||||
else
|
||||
@ -160,7 +160,7 @@ UINT ACTION_CustomAction(MSIPACKAGE *package,LPCWSTR action, BOOL execute)
|
||||
else
|
||||
newbuf = HeapAlloc(GetProcessHeap(),0, sizeof(LPWSTR));
|
||||
|
||||
newbuf[count] = dupstrW(action);
|
||||
newbuf[count] = strdupW(action);
|
||||
package->DeferredAction = newbuf;
|
||||
}
|
||||
|
||||
@ -326,7 +326,7 @@ static void file_running_action(MSIPACKAGE* package, HANDLE Handle,
|
||||
|
||||
newbuf[count].handle = Handle;
|
||||
newbuf[count].process = process;
|
||||
newbuf[count].name = dupstrW(name);
|
||||
newbuf[count].name = strdupW(name);
|
||||
|
||||
package->RunningAction = newbuf;
|
||||
}
|
||||
@ -508,8 +508,8 @@ static UINT HANDLE_CustomType1(MSIPACKAGE *package, LPCWSTR source,
|
||||
info = HeapAlloc( GetProcessHeap(), 0, sizeof(*info) );
|
||||
msiobj_addref( &package->hdr );
|
||||
info->package = package;
|
||||
info->target = dupstrW(target);
|
||||
info->source = dupstrW(tmp_file);
|
||||
info->target = strdupW(target);
|
||||
info->source = strdupW(tmp_file);
|
||||
|
||||
ThreadHandle = CreateThread(NULL,0,DllThread,(LPVOID)info,0,&ThreadId);
|
||||
|
||||
|
@ -309,7 +309,7 @@ static UINT msi_dialog_checkbox_control( msi_dialog *dialog, MSIRECORD *rec )
|
||||
control->handler = msi_dialog_checkbox_handler;
|
||||
prop = MSI_RecordGetString( rec, 9 );
|
||||
if( prop )
|
||||
control->property = dupstrW( prop );
|
||||
control->property = strdupW( prop );
|
||||
msi_dialog_checkbox_sync_state( dialog, control );
|
||||
|
||||
return ERROR_SUCCESS;
|
||||
@ -364,7 +364,7 @@ static UINT msi_dialog_edit_control( msi_dialog *dialog, MSIRECORD *rec )
|
||||
control->handler = msi_dialog_edit_handler;
|
||||
prop = MSI_RecordGetString( rec, 9 );
|
||||
if( prop )
|
||||
control->property = dupstrW( prop );
|
||||
control->property = strdupW( prop );
|
||||
val = load_dynamic_property( dialog->package, control->property, NULL );
|
||||
SetWindowTextW( control->hwnd, val );
|
||||
HeapFree( GetProcessHeap(), 0, val );
|
||||
@ -433,7 +433,7 @@ static UINT msi_dialog_create_radiobutton( MSIRECORD *rec, LPVOID param )
|
||||
|
||||
prop = MSI_RecordGetString( rec, 1 );
|
||||
if( prop )
|
||||
control->property = dupstrW( prop );
|
||||
control->property = strdupW( prop );
|
||||
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
@ -467,7 +467,7 @@ static UINT msi_dialog_radiogroup_control( msi_dialog *dialog, MSIRECORD *rec )
|
||||
}
|
||||
|
||||
if( prop )
|
||||
control->property = dupstrW( prop );
|
||||
control->property = strdupW( prop );
|
||||
|
||||
/* query the Radio Button table for all control in this group */
|
||||
r = MSI_OpenQuery( package->db, &view, query, prop );
|
||||
|
@ -114,7 +114,7 @@ static LPWSTR deformat_file(MSIPACKAGE* package, LPCWSTR key, DWORD* sz)
|
||||
index = get_loaded_file(package,key);
|
||||
if (index >=0)
|
||||
{
|
||||
value = dupstrW(package->files[index].TargetPath);
|
||||
value = strdupW(package->files[index].TargetPath);
|
||||
*sz = (strlenW(value)) * sizeof(WCHAR);
|
||||
}
|
||||
|
||||
|
@ -29,6 +29,7 @@
|
||||
#include "msiquery.h"
|
||||
#include "objbase.h"
|
||||
#include "objidl.h"
|
||||
#include "wine/unicode.h"
|
||||
|
||||
#define MSI_DATASIZEMASK 0x00ff
|
||||
#define MSITYPE_VALID 0x0100
|
||||
@ -386,4 +387,38 @@ extern DWORD gUIFilter;
|
||||
extern LPVOID gUIContext;
|
||||
extern WCHAR gszLogFile[MAX_PATH];
|
||||
|
||||
inline static char *strdupWtoA( LPCWSTR str )
|
||||
{
|
||||
LPSTR ret = NULL;
|
||||
if (str)
|
||||
{
|
||||
DWORD len = WideCharToMultiByte( CP_ACP, 0, str, -1, NULL, 0, NULL, NULL
|
||||
);
|
||||
if ((ret = HeapAlloc( GetProcessHeap(), 0, len )))
|
||||
WideCharToMultiByte( CP_ACP, 0, str, -1, ret, len, NULL, NULL );
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline static LPWSTR strdupAtoW( LPCSTR str )
|
||||
{
|
||||
LPWSTR ret = NULL;
|
||||
if (str)
|
||||
{
|
||||
DWORD len = MultiByteToWideChar( CP_ACP, 0, str, -1, NULL, 0 );
|
||||
if ((ret = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) )))
|
||||
MultiByteToWideChar( CP_ACP, 0, str, -1, ret, len );
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline static LPWSTR strdupW( LPCWSTR src )
|
||||
{
|
||||
LPWSTR dest;
|
||||
if (!src) return NULL;
|
||||
dest = HeapAlloc(GetProcessHeap(), 0, (strlenW(src)+1)*sizeof(WCHAR));
|
||||
strcpyW(dest, src);
|
||||
return dest;
|
||||
}
|
||||
|
||||
#endif /* __WINE_MSI_PRIVATE__ */
|
||||
|
@ -834,15 +834,6 @@ err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static LPWSTR strdupW( LPCWSTR str )
|
||||
{
|
||||
UINT len = lstrlenW( str ) + 1;
|
||||
LPWSTR ret = HeapAlloc( GetProcessHeap(), 0, len*sizeof (WCHAR) );
|
||||
if( ret )
|
||||
lstrcpyW( ret, str );
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* information for default tables */
|
||||
static const WCHAR szTables[] = { '_','T','a','b','l','e','s',0 };
|
||||
static const WCHAR szTable[] = { 'T','a','b','l','e',0 };
|
||||
|
Loading…
Reference in New Issue
Block a user