msi: Build with msvcrt.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2019-06-13 08:42:35 +02:00
parent 5182813ae0
commit 7cd3c9f073
34 changed files with 846 additions and 884 deletions

View File

@ -4,6 +4,8 @@ IMPORTS = uuid urlmon wininet comctl32 shell32 shlwapi cabinet oleaut32 ole32
EXTRAIDLFLAGS = --prefix-server=s_
EXTRADLLFLAGS = -mno-cygwin
C_SRCS = \
action.c \
alter.c \

View File

@ -36,7 +36,6 @@
#include "mscoree.h"
#include "shlwapi.h"
#include "imagehlp.h"
#include "wine/unicode.h"
#include "winver.h"
#include "msipriv.h"
@ -310,9 +309,9 @@ done:
static void remove_quotes( WCHAR *str )
{
WCHAR *p = str;
int len = strlenW( str );
int len = lstrlenW( str );
while ((p = strchrW( p, '"' )))
while ((p = wcschr( p, '"' )))
{
memmove( p, p + 1, (len - (p - str)) * sizeof(WCHAR) );
p++;
@ -337,7 +336,7 @@ UINT msi_parse_command_line( MSIPACKAGE *package, LPCWSTR szCommandLine,
while (*ptr == ' ') ptr++;
if (!*ptr) break;
ptr2 = strchrW( ptr, '=' );
ptr2 = wcschr( ptr, '=' );
if (!ptr2) return ERROR_INVALID_COMMAND_LINE;
len = ptr2 - ptr;
@ -348,13 +347,13 @@ UINT msi_parse_command_line( MSIPACKAGE *package, LPCWSTR szCommandLine,
prop = msi_alloc( (len + 1) * sizeof(WCHAR) );
memcpy( prop, ptr, len * sizeof(WCHAR) );
prop[len] = 0;
if (!preserve_case) struprW( prop );
if (!preserve_case) wcsupr( prop );
ptr2++;
while (*ptr2 == ' ') ptr2++;
num_quotes = 0;
val = msi_alloc( (strlenW( ptr2 ) + 1) * sizeof(WCHAR) );
val = msi_alloc( (lstrlenW( ptr2 ) + 1) * sizeof(WCHAR) );
len = parse_prop( ptr2, val, &num_quotes );
if (num_quotes % 2)
{
@ -367,7 +366,7 @@ UINT msi_parse_command_line( MSIPACKAGE *package, LPCWSTR szCommandLine,
TRACE("Found commandline property %s = %s\n", debugstr_w(prop), debugstr_w(val));
r = msi_set_property( package->db, prop, val, -1 );
if (r == ERROR_SUCCESS && !strcmpW( prop, szSourceDir ))
if (r == ERROR_SUCCESS && !wcscmp( prop, szSourceDir ))
msi_reset_source_folders( package );
msi_free( val );
@ -381,7 +380,7 @@ UINT msi_parse_command_line( MSIPACKAGE *package, LPCWSTR szCommandLine,
const WCHAR *msi_get_command_line_option(const WCHAR *cmd, const WCHAR *option, UINT *len)
{
DWORD opt_len = strlenW(option);
DWORD opt_len = lstrlenW(option);
if (!cmd)
return NULL;
@ -393,10 +392,10 @@ const WCHAR *msi_get_command_line_option(const WCHAR *cmd, const WCHAR *option,
while (*cmd == ' ') cmd++;
if (!*cmd) break;
if(!strncmpiW(cmd, option, opt_len))
if(!wcsnicmp(cmd, option, opt_len))
found = TRUE;
cmd = strchrW( cmd, '=' );
cmd = wcschr( cmd, '=' );
if(!cmd) break;
cmd++;
while (*cmd == ' ') cmd++;
@ -422,7 +421,7 @@ WCHAR **msi_split_string( const WCHAR *str, WCHAR sep )
/* count the number of substrings */
for ( pc = str, count = 0; pc; count++ )
{
pc = strchrW( pc, sep );
pc = wcschr( pc, sep );
if (pc)
pc++;
}
@ -438,7 +437,7 @@ WCHAR **msi_split_string( const WCHAR *str, WCHAR sep )
lstrcpyW( p, str );
for( count = 0; (ret[count] = p); count++ )
{
p = strchrW( p, sep );
p = wcschr( p, sep );
if (p)
*p++ = 0;
}
@ -471,7 +470,7 @@ UINT msi_set_sourcedir_props(MSIPACKAGE *package, BOOL replace)
if (!(db = msi_dup_property( package->db, szOriginalDatabase )))
return ERROR_OUTOFMEMORY;
if (!(p = strrchrW( db, '\\' )) && !(p = strrchrW( db, '/' )))
if (!(p = wcsrchr( db, '\\' )) && !(p = wcsrchr( db, '/' )))
{
msi_free(db);
return ERROR_SUCCESS;
@ -680,7 +679,7 @@ MSICOMPONENT *msi_get_loaded_component( MSIPACKAGE *package, const WCHAR *Compon
LIST_FOR_EACH_ENTRY( comp, &package->components, MSICOMPONENT, entry )
{
if (!strcmpW( Component, comp->Component )) return comp;
if (!wcscmp( Component, comp->Component )) return comp;
}
return NULL;
}
@ -691,7 +690,7 @@ MSIFEATURE *msi_get_loaded_feature(MSIPACKAGE* package, const WCHAR *Feature )
LIST_FOR_EACH_ENTRY( feature, &package->features, MSIFEATURE, entry )
{
if (!strcmpW( Feature, feature->Feature )) return feature;
if (!wcscmp( Feature, feature->Feature )) return feature;
}
return NULL;
}
@ -702,7 +701,7 @@ MSIFILE *msi_get_loaded_file( MSIPACKAGE *package, const WCHAR *key )
LIST_FOR_EACH_ENTRY( file, &package->files, MSIFILE, entry )
{
if (!strcmpW( key, file->File )) return file;
if (!wcscmp( key, file->File )) return file;
}
return NULL;
}
@ -713,7 +712,7 @@ MSIFOLDER *msi_get_loaded_folder( MSIPACKAGE *package, const WCHAR *dir )
LIST_FOR_EACH_ENTRY( folder, &package->folders, MSIFOLDER, entry )
{
if (!strcmpW( dir, folder->Directory )) return folder;
if (!wcscmp( dir, folder->Directory )) return folder;
}
return NULL;
}
@ -1117,7 +1116,7 @@ static LPWSTR folder_split_path(LPWSTR p, WCHAR ch)
{
if (!p)
return p;
p = strchrW(p, ch);
p = wcschr(p, ch);
if (!p)
return p;
*p = 0;
@ -1429,9 +1428,9 @@ static UINT load_folder( MSIRECORD *row, LPVOID param )
src_long = folder_split_path( src_short, '|' );
/* check for no-op dirs */
if (tgt_short && !strcmpW( szDot, tgt_short ))
if (tgt_short && !wcscmp( szDot, tgt_short ))
tgt_short = szEmpty;
if (src_short && !strcmpW( szDot, src_short ))
if (src_short && !wcscmp( szDot, src_short ))
src_short = szEmpty;
if (!tgt_long)
@ -1648,8 +1647,8 @@ static BOOL process_state_property(MSIPACKAGE* package, int level,
{
LPWSTR override;
MSIFEATURE *feature;
BOOL remove = !strcmpW(property, szRemove);
BOOL reinstall = !strcmpW(property, szReinstall);
BOOL remove = !wcscmp(property, szRemove);
BOOL reinstall = !wcscmp(property, szReinstall);
override = msi_dup_property( package->db, property );
if (!override)
@ -1665,7 +1664,7 @@ static BOOL process_state_property(MSIPACKAGE* package, int level,
else if (remove)
state = (feature->Installed == INSTALLSTATE_ABSENT ? INSTALLSTATE_UNKNOWN : INSTALLSTATE_ABSENT);
if (!strcmpiW( override, szAll ))
if (!wcsicmp( override, szAll ))
{
feature->Action = state;
feature->ActionRequest = state;
@ -1673,14 +1672,14 @@ static BOOL process_state_property(MSIPACKAGE* package, int level,
else
{
LPWSTR ptr = override;
LPWSTR ptr2 = strchrW(override,',');
LPWSTR ptr2 = wcschr(override,',');
while (ptr)
{
int len = ptr2 - ptr;
if ((ptr2 && strlenW(feature->Feature) == len && !strncmpW(ptr, feature->Feature, len))
|| (!ptr2 && !strcmpW(ptr, feature->Feature)))
if ((ptr2 && lstrlenW(feature->Feature) == len && !wcsncmp(ptr, feature->Feature, len))
|| (!ptr2 && !wcscmp(ptr, feature->Feature)))
{
feature->Action = state;
feature->ActionRequest = state;
@ -1689,7 +1688,7 @@ static BOOL process_state_property(MSIPACKAGE* package, int level,
if (ptr2)
{
ptr=ptr2+1;
ptr2 = strchrW(ptr,',');
ptr2 = wcschr(ptr,',');
}
else
break;
@ -2054,7 +2053,7 @@ static WCHAR *create_temp_dir( MSIDATABASE *db )
if (!(db->tempfolder = strdupW( tmp ))) return NULL;
}
if ((ret = msi_alloc( (strlenW( db->tempfolder ) + 20) * sizeof(WCHAR) )))
if ((ret = msi_alloc( (lstrlenW( db->tempfolder ) + 20) * sizeof(WCHAR) )))
{
for (;;)
{
@ -2099,7 +2098,7 @@ WCHAR *msi_build_directory_name( DWORD count, ... )
for (i = 0; i < count; i++)
{
const WCHAR *str = va_arg( va, const WCHAR * );
if (str) sz += strlenW( str ) + 1;
if (str) sz += lstrlenW( str ) + 1;
}
va_end( va );
@ -2111,8 +2110,8 @@ WCHAR *msi_build_directory_name( DWORD count, ... )
{
const WCHAR *str = va_arg( va, const WCHAR * );
if (!str) continue;
strcatW( dir, str );
if ( i + 1 != count && dir[0] && dir[strlenW( dir ) - 1] != '\\') strcatW( dir, szBackSlash );
lstrcatW( dir, str );
if ( i + 1 != count && dir[0] && dir[lstrlenW( dir ) - 1] != '\\') lstrcatW( dir, szBackSlash );
}
va_end( va );
return dir;
@ -2203,7 +2202,7 @@ WCHAR *msi_normalize_path( const WCHAR *in )
{
const WCHAR *p = in;
WCHAR *q, *ret;
int n, len = strlenW( in ) + 2;
int n, len = lstrlenW( in ) + 2;
if (!(q = ret = msi_alloc( len * sizeof(WCHAR) ))) return NULL;
@ -2269,7 +2268,7 @@ void msi_resolve_target_folder( MSIPACKAGE *package, const WCHAR *name, BOOL loa
if (!(folder = msi_get_loaded_folder( package, name ))) return;
if (!strcmpW( folder->Directory, szTargetDir )) /* special resolving for target root dir */
if (!wcscmp( folder->Directory, szTargetDir )) /* special resolving for target root dir */
{
if (!(path = get_install_location( package )) &&
(!load_prop || !(path = msi_dup_property( package->db, szTargetDir ))))
@ -2279,7 +2278,7 @@ void msi_resolve_target_folder( MSIPACKAGE *package, const WCHAR *name, BOOL loa
}
else if (!load_prop || !(path = msi_dup_property( package->db, folder->Directory )))
{
if (folder->Parent && strcmpW( folder->Directory, folder->Parent ))
if (folder->Parent && wcscmp( folder->Directory, folder->Parent ))
{
parent = msi_get_loaded_folder( package, folder->Parent );
path = msi_build_directory_name( 3, parent->ResolvedTarget, folder->TargetDefault, NULL );
@ -2402,14 +2401,14 @@ static UINT ACTION_CostFinalize(MSIPACKAGE *package)
primary_folder[2] = 0;
if (GetDiskFreeSpaceExW( primary_folder, &free, NULL, NULL ))
{
sprintfW( buf, fmtW, free.QuadPart / 512 );
swprintf( buf, ARRAY_SIZE(buf), fmtW, free.QuadPart / 512 );
msi_set_property( package->db, szPrimaryVolumeSpaceAvailable, buf, -1 );
}
required = get_volume_space_required( package );
sprintfW( buf, fmtW, required / 512 );
swprintf( buf, ARRAY_SIZE(buf), fmtW, required / 512 );
msi_set_property( package->db, szPrimaryVolumeSpaceRequired, buf, -1 );
sprintfW( buf, fmtW, (free.QuadPart - required) / 512 );
swprintf( buf, ARRAY_SIZE(buf), fmtW, (free.QuadPart - required) / 512 );
msi_set_property( package->db, szPrimaryVolumeSpaceRemaining, buf, -1 );
msi_set_property( package->db, szPrimaryVolumePath, primary_folder, 2 );
}
@ -2450,10 +2449,10 @@ static BYTE *parse_value( MSIPACKAGE *package, const WCHAR *value, DWORD len, DW
/* binary value type */
ptr = deformated;
*type = REG_BINARY;
if (strlenW(ptr)%2)
*size = (strlenW(ptr)/2)+1;
if (lstrlenW(ptr)%2)
*size = (lstrlenW(ptr)/2)+1;
else
*size = strlenW(ptr)/2;
*size = lstrlenW(ptr)/2;
data = msi_alloc(*size);
@ -2462,7 +2461,7 @@ static BYTE *parse_value( MSIPACKAGE *package, const WCHAR *value, DWORD len, DW
byte[4] = 0;
count = 0;
/* if uneven pad with a zero in front */
if (strlenW(ptr)%2)
if (lstrlenW(ptr)%2)
{
byte[2]= '0';
byte[3]= *ptr;
@ -2528,7 +2527,7 @@ static BYTE *parse_value( MSIPACKAGE *package, const WCHAR *value, DWORD len, DW
}
}
data = (BYTE *)msi_strdupW( ptr, len );
if (len > strlenW( (const WCHAR *)data )) *type = REG_MULTI_SZ;
if (len > lstrlenW( (const WCHAR *)data )) *type = REG_MULTI_SZ;
*size = (len + 1) * sizeof(WCHAR);
}
return data;
@ -2594,7 +2593,7 @@ static HKEY open_key( const MSICOMPONENT *comp, HKEY root, const WCHAR *path, BO
if (!(subkey = strdupW( path ))) return NULL;
p = subkey;
if ((q = strchrW( p, '\\' ))) *q = 0;
if ((q = wcschr( p, '\\' ))) *q = 0;
if (create)
res = RegCreateKeyExW( root, subkey, 0, NULL, 0, access, NULL, &hkey, NULL );
else
@ -2630,7 +2629,7 @@ static WCHAR **split_multi_string_values( const WCHAR *str, DWORD len, DWORD *co
if (!str) return NULL;
while ((p - str) < len)
{
p += strlenW( p ) + 1;
p += lstrlenW( p ) + 1;
(*count)++;
}
if (!(ret = msi_alloc( *count * sizeof(WCHAR *) ))) return NULL;
@ -2643,7 +2642,7 @@ static WCHAR **split_multi_string_values( const WCHAR *str, DWORD len, DWORD *co
msi_free( ret );
return NULL;
}
p += strlenW( p ) + 1;
p += lstrlenW( p ) + 1;
i++;
}
return ret;
@ -2656,20 +2655,20 @@ static WCHAR *flatten_multi_string_values( WCHAR **left, DWORD left_count,
unsigned int i;
*size = sizeof(WCHAR);
for (i = 0; i < left_count; i++) *size += (strlenW( left[i] ) + 1) * sizeof(WCHAR);
for (i = 0; i < right_count; i++) *size += (strlenW( right[i] ) + 1) * sizeof(WCHAR);
for (i = 0; i < left_count; i++) *size += (lstrlenW( left[i] ) + 1) * sizeof(WCHAR);
for (i = 0; i < right_count; i++) *size += (lstrlenW( right[i] ) + 1) * sizeof(WCHAR);
if (!(ret = p = msi_alloc( *size ))) return NULL;
for (i = 0; i < left_count; i++)
{
strcpyW( p, left[i] );
p += strlenW( p ) + 1;
lstrcpyW( p, left[i] );
p += lstrlenW( p ) + 1;
}
for (i = 0; i < right_count; i++)
{
strcpyW( p, right[i] );
p += strlenW( p ) + 1;
lstrcpyW( p, right[i] );
p += lstrlenW( p ) + 1;
}
*p = 0;
return ret;
@ -2685,7 +2684,7 @@ static DWORD remove_duplicate_values( WCHAR **old, DWORD old_count,
{
for (j = 0; j < old_count; j++)
{
if (old[j] && !strcmpW( new[i], old[j] ))
if (old[j] && !wcscmp( new[i], old[j] ))
{
msi_free( old[j] );
for (k = j; k < old_count - 1; k++) { old[k] = old[k + 1]; }
@ -2828,9 +2827,9 @@ static UINT ITERATE_WriteRegistryValues(MSIRECORD *row, LPVOID param)
return ERROR_SUCCESS;
deformat_string(package, key , &deformated);
uikey = msi_alloc( (strlenW(deformated) + strlenW(szRoot) + 1) * sizeof(WCHAR) );
strcpyW(uikey,szRoot);
strcatW(uikey,deformated);
uikey = msi_alloc( (lstrlenW(deformated) + lstrlenW(szRoot) + 1) * sizeof(WCHAR) );
lstrcpyW(uikey,szRoot);
lstrcatW(uikey,deformated);
if (!(hkey = open_key( comp, root_key, deformated, TRUE, KEY_QUERY_VALUE | KEY_SET_VALUE )))
{
@ -2941,7 +2940,7 @@ static void delete_key( const MSICOMPONENT *comp, HKEY root, const WCHAR *path )
if (!(subkey = strdupW( path ))) return;
do
{
if ((p = strrchrW( subkey, '\\' )))
if ((p = wcsrchr( subkey, '\\' )))
{
*p = 0;
if (!p[1]) continue; /* trailing backslash */
@ -3043,10 +3042,10 @@ static UINT ITERATE_RemoveRegistryValuesOnUninstall( MSIRECORD *row, LPVOID para
return ERROR_SUCCESS;
deformat_string( package, key_str, &deformated_key );
size = strlenW( deformated_key ) + strlenW( root_key_str ) + 1;
size = lstrlenW( deformated_key ) + lstrlenW( root_key_str ) + 1;
ui_key_str = msi_alloc( size * sizeof(WCHAR) );
strcpyW( ui_key_str, root_key_str );
strcatW( ui_key_str, deformated_key );
lstrcpyW( ui_key_str, root_key_str );
lstrcatW( ui_key_str, deformated_key );
deformat_string( package, name, &deformated_name );
@ -3106,10 +3105,10 @@ static UINT ITERATE_RemoveRegistryValuesOnInstall( MSIRECORD *row, LPVOID param
return ERROR_SUCCESS;
deformat_string( package, key_str, &deformated_key );
size = strlenW( deformated_key ) + strlenW( root_key_str ) + 1;
size = lstrlenW( deformated_key ) + lstrlenW( root_key_str ) + 1;
ui_key_str = msi_alloc( size * sizeof(WCHAR) );
strcpyW( ui_key_str, root_key_str );
strcatW( ui_key_str, deformated_key );
lstrcpyW( ui_key_str, root_key_str );
lstrcatW( ui_key_str, deformated_key );
deformat_string( package, name, &deformated_name );
@ -3285,16 +3284,16 @@ static LPWSTR resolve_keypath( MSIPACKAGE* package, MSICOMPONENT *cmp )
deformat_string(package, key , &deformated);
deformat_string(package, name, &deformated_name);
len = strlenW(deformated) + 6;
len = lstrlenW(deformated) + 6;
if (deformated_name)
len+=strlenW(deformated_name);
len+=lstrlenW(deformated_name);
buffer = msi_alloc( len *sizeof(WCHAR));
if (deformated_name)
sprintfW(buffer,fmt2,root,deformated,deformated_name);
swprintf(buffer,len,fmt2,root,deformated,deformated_name);
else
sprintfW(buffer,fmt,root,deformated);
swprintf(buffer,len,fmt,root,deformated);
msi_free(deformated);
msi_free(deformated_name);
@ -3420,13 +3419,13 @@ static WCHAR *build_full_keypath( MSIPACKAGE *package, MSICOMPONENT *comp )
if (comp->assembly)
{
static const WCHAR prefixW[] = {'<','\\',0};
DWORD len = strlenW( prefixW ) + strlenW( comp->assembly->display_name );
DWORD len = lstrlenW( prefixW ) + lstrlenW( comp->assembly->display_name );
WCHAR *keypath = msi_alloc( (len + 1) * sizeof(WCHAR) );
if (keypath)
{
strcpyW( keypath, prefixW );
strcatW( keypath, comp->assembly->display_name );
lstrcpyW( keypath, prefixW );
lstrcatW( keypath, comp->assembly->display_name );
}
return keypath;
}
@ -3515,12 +3514,12 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package)
if (!(row = MSI_QueryGetRecord(package->db, query, file->Sequence)))
return ERROR_FUNCTION_FAILED;
sprintfW(source, fmt, MSI_RecordGetInteger(row, 1));
ptr2 = strrchrW(source, '\\') + 1;
swprintf(source, ARRAY_SIZE(source), fmt, MSI_RecordGetInteger(row, 1));
ptr2 = wcsrchr(source, '\\') + 1;
msiobj_release(&row->hdr);
lstrcpyW(base, package->PackagePath);
ptr = strrchrW(base, '\\');
ptr = wcsrchr(base, '\\');
*(ptr + 1) = '\0';
sourcepath = msi_resolve_file_source(package, file);
@ -3597,15 +3596,14 @@ static BOOL CALLBACK Typelib_EnumResNameProc( HMODULE hModule, LPCWSTR lpszType,
return TRUE;
}
sz = strlenW(tl_struct->source)+4;
sz *= sizeof(WCHAR);
sz = lstrlenW(tl_struct->source)+4;
if ((INT_PTR)lpszName == 1)
tl_struct->path = strdupW(tl_struct->source);
else
{
tl_struct->path = msi_alloc(sz);
sprintfW(tl_struct->path,fmt,tl_struct->source, lpszName);
tl_struct->path = msi_alloc(sz * sizeof(WCHAR));
swprintf(tl_struct->path,sz,fmt,tl_struct->source, lpszName);
}
TRACE("trying %s\n", debugstr_w(tl_struct->path));
@ -3835,10 +3833,10 @@ static WCHAR *get_link_file( MSIPACKAGE *package, MSIRECORD *row )
filename = msi_dup_record_field( row, 3 );
msi_reduce_to_long_filename( filename );
extension = strrchrW( filename, '.' );
if (!extension || strcmpiW( extension, szlnk ))
extension = wcsrchr( filename, '.' );
if (!extension || wcsicmp( extension, szlnk ))
{
int len = strlenW( filename );
int len = lstrlenW( filename );
filename = msi_realloc( filename, len * sizeof(WCHAR) + sizeof(szlnk) );
memcpy( filename + len, szlnk, sizeof(szlnk) );
}
@ -3910,7 +3908,7 @@ static UINT ITERATE_CreateShortcuts(MSIRECORD *row, LPVOID param)
}
target = MSI_RecordGetString(row, 5);
if (strchrW(target, '['))
if (wcschr(target, '['))
{
deformat_string( package, target, &path );
TRACE("target path is %s\n", debugstr_w(path));
@ -4141,7 +4139,7 @@ static UINT msi_publish_sourcelist(MSIPACKAGE *package, HKEY hkey)
RegCloseKey(source);
buffer = strrchrW(package->PackagePath, '\\') + 1;
buffer = wcsrchr(package->PackagePath, '\\') + 1;
r = MsiSourceListSetInfoW(package->ProductCode, NULL,
package->Context, MSICODE_PRODUCT,
INSTALLPROPERTY_PACKAGENAMEW, buffer);
@ -4162,7 +4160,7 @@ static UINT msi_publish_sourcelist(MSIPACKAGE *package, HKEY hkey)
LIST_FOR_EACH_ENTRY(info, &package->sourcelist_info, MSISOURCELISTINFO, entry)
{
if (!strcmpW( info->property, INSTALLPROPERTY_LASTUSEDSOURCEW ))
if (!wcscmp( info->property, INSTALLPROPERTY_LASTUSEDSOURCEW ))
msi_set_last_used_source(package->ProductCode, NULL, info->context,
info->options, info->value);
else
@ -4228,7 +4226,7 @@ static UINT msi_publish_product_properties(MSIPACKAGE *package, HKEY hkey)
msi_reg_set_val_str(hkey, szClients, szColon);
if (!(guids = msi_get_package_code(package->db))) return ERROR_OUTOFMEMORY;
if ((ptr = strchrW(guids, ';'))) *ptr = 0;
if ((ptr = wcschr(guids, ';'))) *ptr = 0;
squash_guid(guids, packcode);
msi_free( guids);
msi_reg_set_val_str(hkey, INSTALLPROPERTY_PACKAGECODEW, packcode);
@ -4321,7 +4319,7 @@ static UINT msi_publish_patches( MSIPACKAGE *package )
LIST_FOR_EACH_ENTRY( patch, &package->patches, MSIPATCHINFO, entry )
{
squash_guid( patch->patchcode, patch_squashed );
len += strlenW( patch_squashed ) + 1;
len += lstrlenW( patch_squashed ) + 1;
}
p = all_patches = msi_alloc( (len + 1) * sizeof(WCHAR) );
@ -4333,11 +4331,11 @@ static UINT msi_publish_patches( MSIPACKAGE *package )
HKEY patch_key;
squash_guid( patch->patchcode, p );
p += strlenW( p ) + 1;
p += lstrlenW( p ) + 1;
res = RegSetValueExW( patches_key, patch_squashed, 0, REG_SZ,
(const BYTE *)patch->transforms,
(strlenW(patch->transforms) + 1) * sizeof(WCHAR) );
(lstrlenW(patch->transforms) + 1) * sizeof(WCHAR) );
if (res != ERROR_SUCCESS)
goto done;
@ -4346,7 +4344,7 @@ static UINT msi_publish_patches( MSIPACKAGE *package )
goto done;
res = RegSetValueExW( patch_key, szLocalPackage, 0, REG_SZ, (const BYTE *)patch->localfile,
(strlenW( patch->localfile ) + 1) * sizeof(WCHAR) );
(lstrlenW( patch->localfile ) + 1) * sizeof(WCHAR) );
RegCloseKey( patch_key );
if (res != ERROR_SUCCESS)
goto done;
@ -4430,7 +4428,7 @@ static UINT ACTION_PublishProduct(MSIPACKAGE *package)
squash_guid(guid, packed);
msi_free(guid);
if (!strcmpW(packed, package_code))
if (!wcscmp(packed, package_code))
{
TRACE("re-publishing product - new package\n");
republish = TRUE;
@ -4492,7 +4490,7 @@ static WCHAR *get_ini_file_name( MSIPACKAGE *package, MSIRECORD *row )
const WCHAR *dirprop;
filename = msi_dup_record_field( row, 2 );
if (filename && (ptr = strchrW( filename, '|' )))
if (filename && (ptr = wcschr( filename, '|' )))
ptr++;
else
ptr = filename;
@ -4780,10 +4778,10 @@ static void register_dll( const WCHAR *dll, BOOL unregister )
STARTUPINFOW si;
WCHAR *cmd;
if (!(cmd = msi_alloc( strlenW(dll) * sizeof(WCHAR) + sizeof(unregW) ))) return;
if (!(cmd = msi_alloc( lstrlenW(dll) * sizeof(WCHAR) + sizeof(unregW) ))) return;
if (unregister) sprintfW( cmd, unregW, dll );
else sprintfW( cmd, regW, dll );
if (unregister) swprintf( cmd, lstrlenW(dll) + ARRAY_SIZE(unregW), unregW, dll );
else swprintf( cmd, lstrlenW(dll) + ARRAY_SIZE(unregW), regW, dll );
memset( &si, 0, sizeof(STARTUPINFOW) );
if (CreateProcessW( NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ))
@ -4947,7 +4945,7 @@ static UINT ACTION_PublishFeatures(MSIPACKAGE *package)
size += 21;
}
if (feature->Feature_Parent)
size += strlenW( feature->Feature_Parent )+2;
size += lstrlenW( feature->Feature_Parent )+2;
data = msi_alloc(size * sizeof(WCHAR));
@ -4964,15 +4962,15 @@ static UINT ACTION_PublishFeatures(MSIPACKAGE *package)
CLSIDFromString(component->ComponentId, &clsid);
encode_base85_guid(&clsid,buf);
TRACE("to %s\n",debugstr_w(buf));
strcatW(data,buf);
lstrcatW(data,buf);
}
}
if (feature->Feature_Parent)
{
static const WCHAR sep[] = {'\2',0};
strcatW(data,sep);
strcatW(data,feature->Feature_Parent);
lstrcatW(data,sep);
lstrcatW(data,feature->Feature_Parent);
}
msi_reg_set_val_str( userdata, feature->Feature, data );
@ -4980,7 +4978,7 @@ static UINT ACTION_PublishFeatures(MSIPACKAGE *package)
size = 0;
if (feature->Feature_Parent)
size = strlenW(feature->Feature_Parent)*sizeof(WCHAR);
size = lstrlenW(feature->Feature_Parent)*sizeof(WCHAR);
if (!absent)
{
size += sizeof(WCHAR);
@ -4994,7 +4992,7 @@ static UINT ACTION_PublishFeatures(MSIPACKAGE *package)
data[0] = 0x6;
data[1] = 0;
if (feature->Feature_Parent)
strcpyW( &data[1], feature->Feature_Parent );
lstrcpyW( &data[1], feature->Feature_Parent );
RegSetValueExW(hkey,feature->Feature,0,REG_SZ,
(LPBYTE)data,size);
msi_free(data);
@ -5209,7 +5207,7 @@ static UINT msi_publish_install_properties(MSIPACKAGE *package, HKEY hkey)
msi_reg_set_val_dword(hkey, szEstimatedSize, 0);
GetLocalTime(&systime);
sprintfW(date, date_fmt, systime.wYear, systime.wMonth, systime.wDay);
swprintf(date, ARRAY_SIZE(date), date_fmt, systime.wYear, systime.wMonth, systime.wDay);
msi_reg_set_val_str(hkey, INSTALLPROPERTY_INSTALLDATEW, date);
langid = msi_get_property_int(package->db, szProductLanguage, 0);
@ -5302,7 +5300,7 @@ static UINT ITERATE_UnpublishIcon( MSIRECORD *row, LPVOID param )
{
TRACE("removing icon file %s\n", debugstr_w(icon_path));
msi_delete_file( package, icon_path );
if ((p = strrchrW( icon_path, '\\' )))
if ((p = wcsrchr( icon_path, '\\' )))
{
*p = 0;
msi_remove_directory( package, icon_path );
@ -5386,7 +5384,7 @@ static UINT ACTION_UnpublishProduct(MSIPACKAGE *package)
LIST_FOR_EACH_ENTRY(patch, &package->patches, MSIPATCHINFO, entry)
{
MSIREG_DeleteUserDataPatchKey(patch->patchcode, package->Context);
if (!strcmpW( package->ProductCode, patch->products ))
if (!wcscmp( package->ProductCode, patch->products ))
{
TRACE("removing local patch package %s\n", debugstr_w(patch->localfile));
patch->delete_on_close = TRUE;
@ -5465,7 +5463,7 @@ UINT ACTION_ForceReboot(MSIPACKAGE *package)
GetSystemDirectoryW(sysdir, ARRAY_SIZE(sysdir));
RegCreateKeyW(HKEY_LOCAL_MACHINE,RunOnce,&hkey);
snprintfW(buffer, ARRAY_SIZE(buffer), msiexec_fmt, sysdir, squashed_pc);
swprintf(buffer, ARRAY_SIZE(buffer), msiexec_fmt, sysdir, squashed_pc);
msi_reg_set_val_str( hkey, squashed_pc, buffer );
RegCloseKey(hkey);
@ -5473,7 +5471,7 @@ UINT ACTION_ForceReboot(MSIPACKAGE *package)
TRACE("Reboot command %s\n",debugstr_w(buffer));
RegCreateKeyW(HKEY_LOCAL_MACHINE,InstallRunOnce,&hkey);
sprintfW( buffer, install_fmt, package->ProductCode, squashed_pc );
swprintf( buffer, ARRAY_SIZE(buffer), install_fmt, package->ProductCode, squashed_pc );
msi_reg_set_val_str( hkey, squashed_pc, buffer );
RegCloseKey(hkey);
@ -5660,10 +5658,10 @@ static UINT ACTION_ExecuteAction(MSIPACKAGE *package)
package->LastActionResult = MSI_NULL_INTEGER;
action = msi_dup_property(package->db, szEXECUTEACTION);
if (!action) action = msi_strdupW(szINSTALL, strlenW(szINSTALL));
if (!action) action = msi_strdupW(szINSTALL, lstrlenW(szINSTALL));
/* Perform the action. Top-level actions trigger a sequence. */
if (!strcmpW(action, szINSTALL))
if (!wcscmp(action, szINSTALL))
{
/* Send ACTIONSTART/INFO and INSTALLSTART. */
ui_actionstart(package, szINSTALL, NULL, NULL);
@ -5765,9 +5763,9 @@ WCHAR *msi_create_component_advertise_string( MSIPACKAGE *package, MSICOMPONENT
TRACE("product=%s feature=%s component=%s\n", debugstr_w(productid_85), debugstr_w(feature),
debugstr_w(component_85));
sz = 20 + strlenW( feature ) + 20 + 3;
sz = 20 + lstrlenW( feature ) + 20 + 3;
ret = msi_alloc_zero( sz * sizeof(WCHAR) );
if (ret) sprintfW( ret, fmt, productid_85, feature, component ? '>' : '<', component_85 );
if (ret) swprintf( ret, sz, fmt, productid_85, feature, component ? '>' : '<', component_85 );
return ret;
}
@ -5814,21 +5812,21 @@ static UINT ITERATE_PublishComponent(MSIRECORD *rec, LPVOID param)
text = MSI_RecordGetString( rec, 4 );
if (text)
{
p = msi_alloc( (strlenW( advertise ) + strlenW( text ) + 1) * sizeof(WCHAR) );
strcpyW( p, advertise );
strcatW( p, text );
p = msi_alloc( (lstrlenW( advertise ) + lstrlenW( text ) + 1) * sizeof(WCHAR) );
lstrcpyW( p, advertise );
lstrcatW( p, text );
msi_free( advertise );
advertise = p;
}
existing = msi_reg_get_val_str( hkey, qualifier );
sz = strlenW( advertise ) + 1;
sz = lstrlenW( advertise ) + 1;
if (existing)
{
for (p = existing; *p; p += len)
{
len = strlenW( p ) + 1;
if (strcmpW( advertise, p )) sz += len;
len = lstrlenW( p ) + 1;
if (wcscmp( advertise, p )) sz += len;
}
}
if (!(output = msi_alloc( (sz + 1) * sizeof(WCHAR) )))
@ -5841,16 +5839,16 @@ static UINT ITERATE_PublishComponent(MSIRECORD *rec, LPVOID param)
{
for (p = existing; *p; p += len)
{
len = strlenW( p ) + 1;
if (strcmpW( advertise, p ))
len = lstrlenW( p ) + 1;
if (wcscmp( advertise, p ))
{
memcpy( q, p, len * sizeof(WCHAR) );
q += len;
}
}
}
strcpyW( q, advertise );
q[strlenW( q ) + 1] = 0;
lstrcpyW( q, advertise );
q[lstrlenW( q ) + 1] = 0;
msi_reg_set_val_multi_str( hkey, qualifier, output );
@ -5932,8 +5930,8 @@ static UINT ITERATE_UnpublishComponent( MSIRECORD *rec, LPVOID param )
qualifier = MSI_RecordGetString( rec, 2 );
squash_guid( compgroupid, squashed );
strcpyW( keypath, szInstallerComponents );
strcatW( keypath, squashed );
lstrcpyW( keypath, szInstallerComponents );
lstrcatW( keypath, squashed );
res = RegDeleteKeyW( HKEY_CURRENT_USER, keypath );
if (res != ERROR_SUCCESS)
@ -6054,16 +6052,16 @@ static UINT ITERATE_InstallService(MSIRECORD *rec, LPVOID param)
if (!args || !args[0]) image_path = file->TargetPath;
else
{
int len = strlenW(file->TargetPath) + strlenW(args) + 2;
int len = lstrlenW(file->TargetPath) + lstrlenW(args) + 2;
if (!(image_path = msi_alloc(len * sizeof(WCHAR))))
{
ret = ERROR_OUTOFMEMORY;
goto done;
}
strcpyW(image_path, file->TargetPath);
strcatW(image_path, szSpace);
strcatW(image_path, args);
lstrcpyW(image_path, file->TargetPath);
lstrcatW(image_path, szSpace);
lstrcatW(image_path, args);
}
service = CreateServiceW(hscm, name, disp, GENERIC_ALL, serv_type,
start_type, err_control, image_path, load_order,
@ -6146,7 +6144,7 @@ static LPCWSTR *msi_service_args_to_vector(LPWSTR args, DWORD *numargs)
(*numargs)++;
vector[*numargs - 1] = p;
if ((q = strstrW(p, separator)))
if ((q = wcsstr(p, separator)))
{
*q = '\0';
@ -6604,12 +6602,12 @@ static UINT ITERATE_InstallODBCDriver( MSIRECORD *rec, LPVOID param )
lstrcpyW(ptr, desc);
ptr += lstrlenW(ptr) + 1;
len = sprintfW(ptr, driver_fmt, driver_file->FileName);
len = swprintf(ptr, len - (ptr - driver), driver_fmt, driver_file->FileName);
ptr += len + 1;
if (setup_file)
{
len = sprintfW(ptr, setup_fmt, setup_file->FileName);
len = swprintf(ptr, len - (ptr - driver), setup_fmt, setup_file->FileName);
ptr += len + 1;
}
@ -6623,7 +6621,7 @@ static UINT ITERATE_InstallODBCDriver( MSIRECORD *rec, LPVOID param )
driver_file->TargetPath = msi_build_directory_name( 2, dir, driver_file->FileName );
}
driver_path = strdupW(driver_file->TargetPath);
ptr = strrchrW(driver_path, '\\');
ptr = wcsrchr(driver_path, '\\');
if (ptr) *ptr = '\0';
if (!SQLInstallDriverExW(driver, driver_path, outpath, MAX_PATH,
@ -6700,18 +6698,18 @@ static UINT ITERATE_InstallODBCTranslator( MSIRECORD *rec, LPVOID param )
lstrcpyW(ptr, desc);
ptr += lstrlenW(ptr) + 1;
len = sprintfW(ptr, translator_fmt, translator_file->FileName);
len = swprintf(ptr, len - (ptr - translator), translator_fmt, translator_file->FileName);
ptr += len + 1;
if (setup_file)
{
len = sprintfW(ptr, setup_fmt, setup_file->FileName);
len = swprintf(ptr, len - (ptr - translator), setup_fmt, setup_file->FileName);
ptr += len + 1;
}
*ptr = '\0';
translator_path = strdupW(translator_file->TargetPath);
ptr = strrchrW(translator_path, '\\');
ptr = wcsrchr(translator_path, '\\');
if (ptr) *ptr = '\0';
if (!SQLInstallTranslatorExW(translator, translator_path, outpath, MAX_PATH,
@ -6773,7 +6771,7 @@ static UINT ITERATE_InstallODBCDataSource( MSIRECORD *rec, LPVOID param )
if (!attrs)
return ERROR_OUTOFMEMORY;
len = sprintfW(attrs, attrs_fmt, desc);
len = swprintf(attrs, len, attrs_fmt, desc);
attrs[len + 1] = 0;
if (!SQLConfigDataSourceW(NULL, request, driver, attrs))
@ -6949,14 +6947,14 @@ static UINT ITERATE_RemoveODBCDataSource( MSIRECORD *rec, LPVOID param )
if (registration == msidbODBCDataSourceRegistrationPerMachine) request = ODBC_REMOVE_SYS_DSN;
else if (registration == msidbODBCDataSourceRegistrationPerUser) request = ODBC_REMOVE_DSN;
len = strlenW( attrs_fmt ) + strlenW( desc ) + 2; /* \0\0 */
len = lstrlenW( attrs_fmt ) + lstrlenW( desc ) + 2; /* \0\0 */
attrs = msi_alloc( len * sizeof(WCHAR) );
if (!attrs)
return ERROR_OUTOFMEMORY;
FIXME("Use ODBCSourceAttribute table\n");
len = sprintfW( attrs, attrs_fmt, desc );
len = swprintf( attrs, len, attrs_fmt, desc );
attrs[len + 1] = 0;
if (!SQLConfigDataSourceW( NULL, request, driver, attrs ))
@ -7067,7 +7065,7 @@ static UINT env_parse_flags( LPCWSTR *name, LPCWSTR *value, DWORD *flags )
if (*value)
{
LPCWSTR ptr = *value;
if (!strncmpW(ptr, prefix, prefix_len))
if (!wcsncmp(ptr, prefix, prefix_len))
{
if (ptr[prefix_len] == szSemiColon[0])
{
@ -7082,7 +7080,7 @@ static UINT env_parse_flags( LPCWSTR *name, LPCWSTR *value, DWORD *flags )
else if (lstrlenW(*value) >= prefix_len)
{
ptr += lstrlenW(ptr) - prefix_len;
if (!strcmpW( ptr, prefix ))
if (!wcscmp( ptr, prefix ))
{
if ((ptr-1) > *value && *(ptr-1) == szSemiColon[0])
{
@ -7189,15 +7187,15 @@ static UINT ITERATE_WriteEnvironmentString( MSIRECORD *rec, LPVOID param )
{
if (flags & ENV_MOD_PREFIX)
{
p = strrchrW( value, ';' );
p = wcsrchr( value, ';' );
len_value = p - value;
}
else if (flags & ENV_MOD_APPEND)
{
value = strchrW( value, ';' ) + 1;
len_value = strlenW( value );
value = wcschr( value, ';' ) + 1;
len_value = lstrlenW( value );
}
else len_value = strlenW( value );
else len_value = lstrlenW( value );
}
res = open_env_key( flags, &env );
@ -7254,7 +7252,7 @@ static UINT ITERATE_WriteEnvironmentString( MSIRECORD *rec, LPVOID param )
if (res != ERROR_SUCCESS)
goto done;
if (flags & ENV_ACT_REMOVEMATCH && (!value || !strcmpW( data, value )))
if (flags & ENV_ACT_REMOVEMATCH && (!value || !wcscmp( data, value )))
{
action = 0x4;
res = RegDeleteValueW(env, name);
@ -7283,7 +7281,7 @@ static UINT ITERATE_WriteEnvironmentString( MSIRECORD *rec, LPVOID param )
goto done;
}
size = (len_value + 1 + strlenW( data ) + 1) * sizeof(WCHAR);
size = (len_value + 1 + lstrlenW( data ) + 1) * sizeof(WCHAR);
if (!(p = newval = msi_alloc( size )))
{
res = ERROR_OUTOFMEMORY;
@ -7298,11 +7296,11 @@ static UINT ITERATE_WriteEnvironmentString( MSIRECORD *rec, LPVOID param )
action |= 0x80000000;
}
strcpyW( p, data );
lstrcpyW( p, data );
if (flags & ENV_MOD_APPEND)
{
p += strlenW( data );
p += lstrlenW( data );
*p++ = ';';
memcpy( p, value, (len_value + 1) * sizeof(WCHAR) );
action |= 0x40000000;
@ -7396,15 +7394,15 @@ static UINT ITERATE_RemoveEnvironmentString( MSIRECORD *rec, LPVOID param )
{
if (flags & ENV_MOD_PREFIX)
{
p = strchrW( value, ';' );
p = wcschr( value, ';' );
len_value = p - value;
}
else if (flags & ENV_MOD_APPEND)
{
value = strchrW( value, ';' ) + 1;
len_value = strlenW( value );
value = wcschr( value, ';' ) + 1;
len_value = lstrlenW( value );
}
else len_value = strlenW( value );
else len_value = lstrlenW( value );
}
r = open_env_key( flags, &env );
@ -7455,7 +7453,7 @@ static UINT ITERATE_RemoveEnvironmentString( MSIRECORD *rec, LPVOID param )
else
{
TRACE("setting %s to %s\n", debugstr_w(name), debugstr_w(new_value));
size = (strlenW( new_value ) + 1) * sizeof(WCHAR);
size = (lstrlenW( new_value ) + 1) * sizeof(WCHAR);
res = RegSetValueExW( env, name, 0, type, (BYTE *)new_value, size );
if (res != ERROR_SUCCESS)
WARN("failed to set %s to %s (%d)\n", debugstr_w(name), debugstr_w(new_value), res);
@ -7614,9 +7612,9 @@ static UINT ITERATE_RemoveExistingProducts( MSIRECORD *rec, LPVOID param )
deformat_string( package, MSI_RecordGetString( rec, 6 ), &features );
len += strlenW( product );
len += lstrlenW( product );
if (features)
len += strlenW( features );
len += lstrlenW( features );
else
len += ARRAY_SIZE( szAll );
@ -7626,7 +7624,7 @@ static UINT ITERATE_RemoveExistingProducts( MSIRECORD *rec, LPVOID param )
msi_free( features );
return ERROR_OUTOFMEMORY;
}
sprintfW( cmd, fmtW, product, features ? features : szAll );
swprintf( cmd, len, fmtW, product, features ? features : szAll );
msi_free( product );
msi_free( features );
@ -7944,7 +7942,7 @@ static UINT ACTION_HandleStandardAction(MSIPACKAGE *package, LPCWSTR action)
i = 0;
while (StandardActions[i].action != NULL)
{
if (!strcmpW( StandardActions[i].action, action ))
if (!wcscmp( StandardActions[i].action, action ))
{
WCHAR description[100] = {0}, template[100] = {0};
@ -8069,7 +8067,7 @@ UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR szPackagePath,
LPCWSTR file;
dir = strdupW(szPackagePath);
p = strrchrW(dir, '\\');
p = wcsrchr(dir, '\\');
if (p)
{
*(++p) = 0;
@ -8117,7 +8115,7 @@ UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR szPackagePath,
msi_set_context( package );
productcode = msi_dup_property( package->db, szProductCode );
if (strcmpiW( productcode, package->ProductCode ))
if (wcsicmp( productcode, package->ProductCode ))
{
TRACE( "product code changed %s -> %s\n", debugstr_w(package->ProductCode), debugstr_w(productcode) );
msi_free( package->ProductCode );

View File

@ -29,7 +29,6 @@
#include "msidefs.h"
#include "winver.h"
#include "shlwapi.h"
#include "wine/unicode.h"
#include "wine/debug.h"
#include "msipriv.h"
@ -55,20 +54,20 @@ void msi_parse_version_string(LPCWSTR verStr, PDWORD ms, PDWORD ls)
const WCHAR *ptr;
int x1 = 0, x2 = 0, x3 = 0, x4 = 0;
x1 = atoiW(verStr);
ptr = strchrW(verStr, '.');
x1 = wcstol(verStr, NULL, 10);
ptr = wcschr(verStr, '.');
if (ptr)
{
x2 = atoiW(ptr + 1);
ptr = strchrW(ptr + 1, '.');
x2 = wcstol(ptr + 1, NULL, 10);
ptr = wcschr(ptr + 1, '.');
}
if (ptr)
{
x3 = atoiW(ptr + 1);
ptr = strchrW(ptr + 1, '.');
x3 = wcstol(ptr + 1, NULL, 10);
ptr = wcschr(ptr + 1, '.');
}
if (ptr)
x4 = atoiW(ptr + 1);
x4 = wcstol(ptr + 1, NULL, 10);
/* FIXME: byte-order dependent? */
*ms = x1 << 16 | x2;
if (ls) *ls = x3 << 16 | x4;
@ -106,10 +105,10 @@ static UINT get_signature( MSIPACKAGE *package, MSISIGNATURE *sig, const WCHAR *
/* get properties */
sig->File = msi_dup_record_field(row,2);
if ((p = strchrW(sig->File, '|')))
if ((p = wcschr(sig->File, '|')))
{
p++;
memmove(sig->File, p, (strlenW(p) + 1) * sizeof(WCHAR));
memmove(sig->File, p, (lstrlenW(p) + 1) * sizeof(WCHAR));
}
minVersion = msi_dup_record_field(row,3);
@ -287,7 +286,7 @@ static UINT search_components( MSIPACKAGE *package, WCHAR **appValue, MSISIGNATU
{
if (type == msidbLocatorTypeFileName)
{
ptr = strrchrW(path, '\\');
ptr = wcsrchr(path, '\\');
*(ptr + 1) = '\0';
}
else
@ -327,12 +326,12 @@ static void convert_reg_value( DWORD regType, const BYTE *value, DWORD sz, WCHAR
/* escape leading pound with another */
*appValue = msi_alloc(sz + sizeof(WCHAR));
(*appValue)[0] = '#';
strcpyW(*appValue + 1, (LPCWSTR)value);
lstrcpyW(*appValue + 1, (LPCWSTR)value);
}
else
{
*appValue = msi_alloc(sz);
strcpyW(*appValue, (LPCWSTR)value);
lstrcpyW(*appValue, (LPCWSTR)value);
}
break;
case REG_DWORD:
@ -340,7 +339,7 @@ static void convert_reg_value( DWORD regType, const BYTE *value, DWORD sz, WCHAR
* char if needed
*/
*appValue = msi_alloc(10 * sizeof(WCHAR));
sprintfW(*appValue, dwordFmt, *(const DWORD *)value);
swprintf(*appValue, 10, dwordFmt, *(const DWORD *)value);
break;
case REG_EXPAND_SZ:
sz = ExpandEnvironmentStringsW((LPCWSTR)value, NULL, 0);
@ -353,7 +352,7 @@ static void convert_reg_value( DWORD regType, const BYTE *value, DWORD sz, WCHAR
lstrcpyW(*appValue, binPre);
ptr = *appValue + lstrlenW(binPre);
for (i = 0; i < sz; i++, ptr += 2)
sprintfW(ptr, binFmt, value[i]);
swprintf(ptr, 3, binFmt, value[i]);
break;
default:
WARN("unimplemented for values of type %d\n", regType);
@ -463,7 +462,7 @@ static UINT search_reg( MSIPACKAGE *package, WCHAR **appValue, MSISIGNATURE *sig
}
if ((regType == REG_SZ || regType == REG_EXPAND_SZ) &&
(ptr = strchrW((LPWSTR)value, '"')) && (end = strchrW(++ptr, '"')))
(ptr = wcschr((LPWSTR)value, '"')) && (end = wcschr(++ptr, '"')))
*end = '\0';
else
ptr = (LPWSTR)value;
@ -501,7 +500,7 @@ static LPWSTR get_ini_field(LPWSTR buf, int field)
return strdupW(buf);
beg = buf;
while ((end = strchrW(beg, ',')) && i < field)
while ((end = wcschr(beg, ',')) && i < field)
{
beg = end + 1;
while (*beg == ' ')
@ -510,7 +509,7 @@ static LPWSTR get_ini_field(LPWSTR buf, int field)
i++;
}
end = strchrW(beg, ',');
end = wcschr(beg, ',');
if (!end)
end = beg + lstrlenW(beg);
@ -600,13 +599,13 @@ static void expand_any_path( MSIPACKAGE *package, WCHAR *src, WCHAR *dst, size_t
dst[0] = '\0';
/* Ignore the short portion of the path */
if ((ptr = strchrW(src, '|')))
if ((ptr = wcschr(src, '|')))
ptr++;
else
ptr = src;
deformat_string(package, ptr, &deformatted);
if (!deformatted || strlenW(deformatted) > len - 1)
if (!deformatted || lstrlenW(deformatted) > len - 1)
{
msi_free(deformatted);
return;
@ -624,7 +623,7 @@ static LANGID *parse_languages( const WCHAR *languages, DWORD *num_ids )
LANGID *ret;
if (!str) return NULL;
for (p = q = str; (q = strchrW( q, ',' )); q++) count++;
for (p = q = str; (q = wcschr( q, ',' )); q++) count++;
if (!(ret = msi_alloc( count * sizeof(LANGID) )))
{
@ -634,9 +633,9 @@ static LANGID *parse_languages( const WCHAR *languages, DWORD *num_ids )
i = 0;
while (*p)
{
q = strchrW( p, ',' );
q = wcschr( p, ',' );
if (q) *q = 0;
ret[i] = atoiW( p );
ret[i] = wcstol( p, NULL, 10 );
if (!q) break;
p = q + 1;
i++;
@ -808,7 +807,7 @@ static UINT recurse_search_directory( MSIPACKAGE *package, WCHAR **appValue, MSI
* here. Add two because we might need to add a backslash if the dir name
* isn't backslash-terminated.
*/
len = dirLen + max(fileLen, strlenW(starDotStarW)) + 2;
len = dirLen + max(fileLen, lstrlenW(starDotStarW)) + 2;
buf = msi_alloc(len * sizeof(WCHAR));
if (!buf)
return ERROR_OUTOFMEMORY;
@ -844,8 +843,8 @@ static UINT recurse_search_directory( MSIPACKAGE *package, WCHAR **appValue, MSI
if (hFind != INVALID_HANDLE_VALUE)
{
if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY &&
strcmpW( findData.cFileName, szDot ) &&
strcmpW( findData.cFileName, szDotDot ))
wcscmp( findData.cFileName, szDot ) &&
wcscmp( findData.cFileName, szDotDot ))
{
lstrcpyW(subpath, dir);
PathAppendW(subpath, findData.cFileName);
@ -854,8 +853,8 @@ static UINT recurse_search_directory( MSIPACKAGE *package, WCHAR **appValue, MSI
while (rc == ERROR_SUCCESS && !*appValue && msi_find_next_file( package, hFind, &findData ))
{
if (!strcmpW( findData.cFileName, szDot ) ||
!strcmpW( findData.cFileName, szDotDot ))
if (!wcscmp( findData.cFileName, szDot ) ||
!wcscmp( findData.cFileName, szDotDot ))
continue;
lstrcpyW(subpath, dir);
@ -889,7 +888,7 @@ static UINT check_directory( MSIPACKAGE *package, const WCHAR *dir, WCHAR **appV
static BOOL is_full_path( const WCHAR *path )
{
WCHAR first = toupperW(path[0]);
WCHAR first = towupper(path[0]);
BOOL ret;
if (first >= 'A' && first <= 'Z' && path[1] == ':')
@ -1019,7 +1018,7 @@ static UINT search_dr( MSIPACKAGE *package, WCHAR **appValue, MSISIGNATURE *sig
if (sz)
expand_any_path( package, path, expanded, MAX_PATH );
else
strcpyW(expanded, path);
lstrcpyW(expanded, path);
if (parent)
{
@ -1031,10 +1030,10 @@ static UINT search_dr( MSIPACKAGE *package, WCHAR **appValue, MSISIGNATURE *sig
PathAddBackslashW(parent);
}
strcpyW(path, parent);
strcatW(path, expanded);
lstrcpyW(path, parent);
lstrcatW(path, expanded);
}
else if (sz) strcpyW(path, expanded);
else if (sz) lstrcpyW(path, expanded);
PathAddBackslashW(path);
@ -1088,7 +1087,7 @@ static UINT ITERATE_AppSearch(MSIRECORD *row, LPVOID param)
if (value)
{
r = msi_set_property( package->db, propName, value, -1 );
if (r == ERROR_SUCCESS && !strcmpW( propName, szSourceDir ))
if (r == ERROR_SUCCESS && !wcscmp( propName, szSourceDir ))
msi_reset_source_folders( package );
msi_free(value);

View File

@ -26,7 +26,6 @@
#include "winbase.h"
#include "winreg.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "msipriv.h"
WINE_DEFAULT_DEBUG_CHANNEL(msi);
@ -43,7 +42,7 @@ static BOOL load_fusion_dlls( MSIPACKAGE *package )
WCHAR path[MAX_PATH];
DWORD len = GetSystemDirectoryW( path, MAX_PATH );
strcpyW( path + len, szMscoree );
lstrcpyW( path + len, szMscoree );
if (package->hmscoree || !(package->hmscoree = LoadLibraryW( path ))) return TRUE;
if (!(pLoadLibraryShim = (void *)GetProcAddress( package->hmscoree, "LoadLibraryShim" )))
{
@ -176,13 +175,13 @@ static UINT get_assembly_name_attribute( MSIRECORD *rec, LPVOID param )
struct assembly_name *name = param;
const WCHAR *attr = MSI_RecordGetString( rec, 2 );
const WCHAR *value = MSI_RecordGetString( rec, 3 );
int len = strlenW( fmtW ) + strlenW( attr ) + strlenW( value );
int len = lstrlenW( fmtW ) + lstrlenW( attr ) + lstrlenW( value );
if (!(name->attrs[name->index] = msi_alloc( len * sizeof(WCHAR) )))
return ERROR_OUTOFMEMORY;
if (!strcmpiW( attr, nameW )) strcpyW( name->attrs[name->index++], value );
else sprintfW( name->attrs[name->index++], fmtW, attr, value );
if (!wcsicmp( attr, nameW )) lstrcpyW( name->attrs[name->index++], value );
else swprintf( name->attrs[name->index++], len, fmtW, attr, value );
return ERROR_SUCCESS;
}
@ -216,7 +215,7 @@ static WCHAR *get_assembly_display_name( MSIDATABASE *db, const WCHAR *comp, MSI
MSI_IterateRecords( view, NULL, get_assembly_name_attribute, &name );
len = 0;
for (i = 0; i < name.count; i++) len += strlenW( name.attrs[i] ) + 1;
for (i = 0; i < name.count; i++) len += lstrlenW( name.attrs[i] ) + 1;
display_name = msi_alloc( (len + 1) * sizeof(WCHAR) );
if (display_name)
@ -224,8 +223,8 @@ static WCHAR *get_assembly_display_name( MSIDATABASE *db, const WCHAR *comp, MSI
display_name[0] = 0;
for (i = 0; i < name.count; i++)
{
strcatW( display_name, name.attrs[i] );
if (i < name.count - 1) strcatW( display_name, commaW );
lstrcatW( display_name, name.attrs[i] );
if (i < name.count - 1) lstrcatW( display_name, commaW );
}
}
@ -427,7 +426,7 @@ static enum clr_version get_clr_version( MSIPACKAGE *package, const WCHAR *filen
{
UINT i;
for (i = 0; i < CLR_VERSION_MAX; i++)
if (!strcmpW( strW, clr_version[i] )) version = i;
if (!wcscmp( strW, clr_version[i] )) version = i;
}
msi_free( strW );
}
@ -526,7 +525,7 @@ static WCHAR *build_local_assembly_path( const WCHAR *filename )
UINT i;
WCHAR *ret;
if (!(ret = msi_alloc( (strlenW( filename ) + 1) * sizeof(WCHAR) )))
if (!(ret = msi_alloc( (lstrlenW( filename ) + 1) * sizeof(WCHAR) )))
return NULL;
for (i = 0; filename[i]; i++)

View File

@ -32,7 +32,6 @@
#include "oleauto.h"
#include "shlwapi.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "msiserver.h"
#include "msiserver_dispids.h"
@ -1976,7 +1975,7 @@ static HRESULT InstallerImpl_Version(WORD wFlags,
if (FAILED(hr))
return hr;
sprintfW(version, format, verinfo.dwMajorVersion, verinfo.dwMinorVersion,
swprintf(version, ARRAY_SIZE(version), format, verinfo.dwMajorVersion, verinfo.dwMinorVersion,
verinfo.dwBuildNumber, verinfo.dwPlatformID);
V_VT(pVarResult) = VT_BSTR;

View File

@ -39,7 +39,6 @@
#include "wine/debug.h"
#include "msipriv.h"
#include "winuser.h"
#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(msi);
@ -87,7 +86,7 @@ static MSIAPPID *load_given_appid( MSIPACKAGE *package, LPCWSTR name )
/* check for appids already loaded */
LIST_FOR_EACH_ENTRY( appid, &package->appids, MSIAPPID, entry )
{
if (!strcmpiW( appid->AppID, name ))
if (!wcsicmp( appid->AppID, name ))
{
TRACE("found appid %s %p\n", debugstr_w(name), appid);
return appid;
@ -143,9 +142,9 @@ static MSIPROGID *load_progid( MSIPACKAGE* package, MSIRECORD *row )
FilePath = msi_build_icon_path(package, FileName);
progid->IconPath = msi_alloc( (strlenW(FilePath)+10)* sizeof(WCHAR) );
progid->IconPath = msi_alloc( (lstrlenW(FilePath)+10)* sizeof(WCHAR) );
sprintfW(progid->IconPath,fmt,FilePath,icon_index);
swprintf(progid->IconPath,lstrlenW(FilePath)+10,fmt,FilePath,icon_index);
msi_free(FilePath);
}
@ -191,7 +190,7 @@ static MSIPROGID *load_given_progid(MSIPACKAGE *package, LPCWSTR name)
/* check for progids already loaded */
LIST_FOR_EACH_ENTRY( progid, &package->progids, MSIPROGID, entry )
{
if (!strcmpiW( progid->ProgID, name ))
if (!wcsicmp( progid->ProgID, name ))
{
TRACE("found progid %s (%p)\n",debugstr_w(name), progid );
return progid;
@ -248,9 +247,9 @@ static MSICLASS *load_class( MSIPACKAGE* package, MSIRECORD *row )
FilePath = msi_build_icon_path(package, FileName);
cls->IconPath = msi_alloc( (strlenW(FilePath)+5)* sizeof(WCHAR) );
cls->IconPath = msi_alloc( (lstrlenW(FilePath)+5)* sizeof(WCHAR) );
sprintfW(cls->IconPath,fmt,FilePath,icon_index);
swprintf(cls->IconPath,lstrlenW(FilePath)+5,fmt,FilePath,icon_index);
msi_free(FilePath);
}
@ -321,7 +320,7 @@ static MSICLASS *load_given_class(MSIPACKAGE *package, LPCWSTR classid)
/* check for classes already loaded */
LIST_FOR_EACH_ENTRY( cls, &package->classes, MSICLASS, entry )
{
if (!strcmpiW( cls->clsid, classid ))
if (!wcsicmp( cls->clsid, classid ))
{
TRACE("found class %s (%p)\n",debugstr_w(classid), cls);
return cls;
@ -380,7 +379,7 @@ static MSIMIME *load_given_mime( MSIPACKAGE *package, LPCWSTR mime )
/* check for mime already loaded */
LIST_FOR_EACH_ENTRY( mt, &package->mimes, MSIMIME, entry )
{
if (!strcmpiW( mt->ContentType, mime ))
if (!wcsicmp( mt->ContentType, mime ))
{
TRACE("found mime %s (%p)\n",debugstr_w(mime), mt);
return mt;
@ -451,7 +450,7 @@ static MSIEXTENSION *load_given_extension( MSIPACKAGE *package, LPCWSTR name )
/* check for extensions already loaded */
LIST_FOR_EACH_ENTRY( ext, &package->extensions, MSIEXTENSION, entry )
{
if (!strcmpiW( ext->Extension, name ))
if (!wcsicmp( ext->Extension, name ))
{
TRACE("extension %s already loaded %p\n", debugstr_w(name), ext);
return ext;
@ -521,9 +520,9 @@ static UINT iterate_all_classes(MSIRECORD *rec, LPVOID param)
LIST_FOR_EACH_ENTRY( cls, &package->classes, MSICLASS, entry )
{
if (strcmpiW( clsid, cls->clsid ))
if (wcsicmp( clsid, cls->clsid ))
continue;
if (strcmpW( context, cls->Context ))
if (wcscmp( context, cls->Context ))
continue;
if (comp == cls->Component)
{
@ -569,7 +568,7 @@ static UINT iterate_all_extensions(MSIRECORD *rec, LPVOID param)
LIST_FOR_EACH_ENTRY( ext, &package->extensions, MSIEXTENSION, entry )
{
if (strcmpiW(extension, ext->Extension))
if (wcsicmp(extension, ext->Extension))
continue;
if (comp == ext->Component)
{
@ -884,11 +883,12 @@ UINT ACTION_RegisterClassInfo(MSIPACKAGE *package)
ptr = cls->FileTypeMask;
while (ptr && *ptr)
{
ptr2 = strchrW(ptr,';');
ptr2 = wcschr(ptr,';');
if (ptr2)
*ptr2 = 0;
keyname = msi_alloc( (strlenW(szFileType_fmt) + strlenW(cls->clsid) + 4) * sizeof(WCHAR));
sprintfW( keyname, szFileType_fmt, cls->clsid, index );
keyname = msi_alloc( (lstrlenW(szFileType_fmt) + lstrlenW(cls->clsid) + 4) * sizeof(WCHAR));
swprintf( keyname, lstrlenW(szFileType_fmt) + lstrlenW(cls->clsid) + 4,
szFileType_fmt, cls->clsid, index );
msi_reg_set_subkey_val( HKEY_CLASSES_ROOT, keyname, NULL, ptr );
msi_free(keyname);
@ -984,11 +984,11 @@ UINT ACTION_UnregisterClassInfo( MSIPACKAGE *package )
}
if (cls->FileTypeMask)
{
filetype = msi_alloc( (strlenW( szFileType ) + strlenW( cls->clsid ) + 1) * sizeof(WCHAR) );
filetype = msi_alloc( (lstrlenW( szFileType ) + lstrlenW( cls->clsid ) + 1) * sizeof(WCHAR) );
if (filetype)
{
strcpyW( filetype, szFileType );
strcatW( filetype, cls->clsid );
lstrcpyW( filetype, szFileType );
lstrcatW( filetype, cls->clsid );
res = RegDeleteTreeW( HKEY_CLASSES_ROOT, filetype );
msi_free( filetype );
@ -1198,35 +1198,35 @@ static UINT register_verb(MSIPACKAGE *package, LPCWSTR progid,
TRACE("Making Key %s\n",debugstr_w(keyname));
RegCreateKeyW(HKEY_CLASSES_ROOT, keyname, &key);
size = strlenW(component->FullKeypath);
size = lstrlenW(component->FullKeypath);
if (verb->Argument)
size += strlenW(verb->Argument);
size += lstrlenW(verb->Argument);
size += 4;
command = msi_alloc(size * sizeof (WCHAR));
if (verb->Argument)
sprintfW(command, fmt, component->FullKeypath, verb->Argument);
swprintf(command, size, fmt, component->FullKeypath, verb->Argument);
else
sprintfW(command, fmt2, component->FullKeypath);
swprintf(command, size, fmt2, component->FullKeypath);
msi_reg_set_val_str( key, NULL, command );
msi_free(command);
advertise = msi_create_component_advertise_string(package, component,
extension->Feature->Feature);
size = strlenW(advertise);
size = lstrlenW(advertise);
if (verb->Argument)
size += strlenW(verb->Argument);
size += lstrlenW(verb->Argument);
size += 4;
command = msi_alloc_zero(size * sizeof (WCHAR));
strcpyW(command,advertise);
lstrcpyW(command,advertise);
if (verb->Argument)
{
strcatW(command,szSpace);
strcatW(command,verb->Argument);
lstrcatW(command,szSpace);
lstrcatW(command,verb->Argument);
}
msi_reg_set_val_multi_str( key, szCommand, command );
@ -1312,11 +1312,11 @@ UINT ACTION_RegisterExtensionInfo(MSIPACKAGE *package)
ext->action = INSTALLSTATE_LOCAL;
extension = msi_alloc( (strlenW( ext->Extension ) + 2) * sizeof(WCHAR) );
extension = msi_alloc( (lstrlenW( ext->Extension ) + 2) * sizeof(WCHAR) );
if (extension)
{
extension[0] = '.';
strcpyW( extension + 1, ext->Extension );
lstrcpyW( extension + 1, ext->Extension );
res = RegCreateKeyW( HKEY_CLASSES_ROOT, extension, &hkey );
msi_free( extension );
if (res != ERROR_SUCCESS)
@ -1343,10 +1343,10 @@ UINT ACTION_RegisterExtensionInfo(MSIPACKAGE *package)
msi_reg_set_val_str( hkey, NULL, progid );
newkey = msi_alloc( (strlenW(progid)+strlenW(szSN)+1) * sizeof(WCHAR));
newkey = msi_alloc( (lstrlenW(progid)+lstrlenW(szSN)+1) * sizeof(WCHAR));
strcpyW(newkey,progid);
strcatW(newkey,szSN);
lstrcpyW(newkey,progid);
lstrcatW(newkey,szSN);
RegCreateKeyW(hkey,newkey,&hkey2);
RegCloseKey(hkey2);
@ -1413,11 +1413,11 @@ UINT ACTION_UnregisterExtensionInfo( MSIPACKAGE *package )
ext->action = INSTALLSTATE_ABSENT;
extension = msi_alloc( (strlenW( ext->Extension ) + 2) * sizeof(WCHAR) );
extension = msi_alloc( (lstrlenW( ext->Extension ) + 2) * sizeof(WCHAR) );
if (extension)
{
extension[0] = '.';
strcpyW( extension + 1, ext->Extension );
lstrcpyW( extension + 1, ext->Extension );
res = RegDeleteTreeW( HKEY_CLASSES_ROOT, extension );
msi_free( extension );
if (res != ERROR_SUCCESS)
@ -1435,11 +1435,11 @@ UINT ACTION_UnregisterExtensionInfo( MSIPACKAGE *package )
else
progid = ext->ProgIDText;
progid_shell = msi_alloc( (strlenW( progid ) + strlenW( shellW ) + 1) * sizeof(WCHAR) );
progid_shell = msi_alloc( (lstrlenW( progid ) + lstrlenW( shellW ) + 1) * sizeof(WCHAR) );
if (progid_shell)
{
strcpyW( progid_shell, progid );
strcatW( progid_shell, shellW );
lstrcpyW( progid_shell, progid );
lstrcatW( progid_shell, shellW );
res = RegDeleteTreeW( HKEY_CLASSES_ROOT, progid_shell );
msi_free( progid_shell );
if (res != ERROR_SUCCESS)
@ -1487,16 +1487,16 @@ UINT ACTION_RegisterMIMEInfo(MSIPACKAGE *package)
TRACE("Registering MIME type %s\n", debugstr_w(mt->ContentType));
if (mt->Extension) extension = msi_alloc( (strlenW( mt->Extension->Extension ) + 2) * sizeof(WCHAR) );
key = msi_alloc( (strlenW( mt->ContentType ) + strlenW( szMIMEDatabase ) + 1) * sizeof(WCHAR) );
if (mt->Extension) extension = msi_alloc( (lstrlenW( mt->Extension->Extension ) + 2) * sizeof(WCHAR) );
key = msi_alloc( (lstrlenW( mt->ContentType ) + lstrlenW( szMIMEDatabase ) + 1) * sizeof(WCHAR) );
if (extension && key)
{
extension[0] = '.';
strcpyW( extension + 1, mt->Extension->Extension );
lstrcpyW( extension + 1, mt->Extension->Extension );
strcpyW( key, szMIMEDatabase );
strcatW( key, mt->ContentType );
lstrcpyW( key, szMIMEDatabase );
lstrcatW( key, mt->ContentType );
msi_reg_set_subkey_val( HKEY_CLASSES_ROOT, key, szExtension, extension );
if (mt->clsid)
@ -1541,11 +1541,11 @@ UINT ACTION_UnregisterMIMEInfo( MSIPACKAGE *package )
TRACE("Unregistering MIME type %s\n", debugstr_w(mime->ContentType));
mime_key = msi_alloc( (strlenW( szMIMEDatabase ) + strlenW( mime->ContentType ) + 1) * sizeof(WCHAR) );
mime_key = msi_alloc( (lstrlenW( szMIMEDatabase ) + lstrlenW( mime->ContentType ) + 1) * sizeof(WCHAR) );
if (mime_key)
{
strcpyW( mime_key, szMIMEDatabase );
strcatW( mime_key, mime->ContentType );
lstrcpyW( mime_key, szMIMEDatabase );
lstrcatW( mime_key, mime->ContentType );
res = RegDeleteKeyW( HKEY_CLASSES_ROOT, mime_key );
if (res != ERROR_SUCCESS)
WARN("Failed to delete MIME key %d\n", res);

View File

@ -22,8 +22,6 @@
#define COBJMACROS
#include "config.h"
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
@ -40,7 +38,6 @@
#include "winemsi.h"
#include "wine/debug.h"
#include "wine/exception.h"
#include "wine/unicode.h"
#include "wine/list.h"
WINE_DEFAULT_DEBUG_CHANNEL(msi);
@ -314,7 +311,7 @@ value:
if( !szNum )
YYABORT;
$$.type = VALUE_INTEGER;
$$.u.integer = atoiW( szNum );
$$.u.integer = wcstol( szNum, NULL, 10 );
cond_free( szNum );
}
| COND_DOLLARS identifier
@ -417,7 +414,7 @@ static WCHAR *strstriW( const WCHAR *str, const WCHAR *sub )
LPWSTR strlower, sublower, r;
strlower = CharLowerW( strdupW( str ) );
sublower = CharLowerW( strdupW( sub ) );
r = strstrW( strlower, sublower );
r = wcsstr( strlower, sublower );
if (r)
r = (LPWSTR)str + (r - strlower);
msi_free( strlower );
@ -433,7 +430,7 @@ static BOOL str_is_number( LPCWSTR str )
return FALSE;
for (i = 0; i < lstrlenW( str ); i++)
if (!isdigitW(str[i]))
if (!iswdigit(str[i]))
return FALSE;
return TRUE;
@ -452,44 +449,44 @@ static INT compare_substring( LPCWSTR a, INT operator, LPCWSTR b )
return 1;
/* if both strings contain only numbers, use integer comparison */
lhs = atoiW(a);
rhs = atoiW(b);
lhs = wcstol(a, NULL, 10);
rhs = wcstol(b, NULL, 10);
if (str_is_number(a) && str_is_number(b))
return compare_int( lhs, operator, rhs );
switch (operator)
{
case COND_SS:
return strstrW( a, b ) != 0;
return wcsstr( a, b ) != 0;
case COND_ISS:
return strstriW( a, b ) != 0;
case COND_LHS:
{
int l = strlenW( a );
int r = strlenW( b );
int l = lstrlenW( a );
int r = lstrlenW( b );
if (r > l) return 0;
return !strncmpW( a, b, r );
return !wcsncmp( a, b, r );
}
case COND_RHS:
{
int l = strlenW( a );
int r = strlenW( b );
int l = lstrlenW( a );
int r = lstrlenW( b );
if (r > l) return 0;
return !strncmpW( a + (l - r), b, r );
return !wcsncmp( a + (l - r), b, r );
}
case COND_ILHS:
{
int l = strlenW( a );
int r = strlenW( b );
int l = lstrlenW( a );
int r = lstrlenW( b );
if (r > l) return 0;
return !strncmpiW( a, b, r );
return !wcsnicmp( a, b, r );
}
case COND_IRHS:
{
int l = strlenW( a );
int r = strlenW( b );
int l = lstrlenW( a );
int r = lstrlenW( b );
if (r > l) return 0;
return !strncmpiW( a + (l - r), b, r );
return !wcsnicmp( a + (l - r), b, r );
}
default:
ERR("invalid substring operator\n");
@ -508,35 +505,35 @@ static INT compare_string( LPCWSTR a, INT operator, LPCWSTR b, BOOL convert )
if (!b) b = szEmpty;
if (convert && str_is_number(a) && str_is_number(b))
return compare_int( atoiW(a), operator, atoiW(b) );
return compare_int( wcstol(a, NULL, 10), operator, wcstol(b, NULL, 10) );
/* a or b may be NULL */
switch (operator)
{
case COND_LT:
return strcmpW( a, b ) < 0;
return wcscmp( a, b ) < 0;
case COND_GT:
return strcmpW( a, b ) > 0;
return wcscmp( a, b ) > 0;
case COND_EQ:
return strcmpW( a, b ) == 0;
return wcscmp( a, b ) == 0;
case COND_NE:
return strcmpW( a, b ) != 0;
return wcscmp( a, b ) != 0;
case COND_GE:
return strcmpW( a, b ) >= 0;
return wcscmp( a, b ) >= 0;
case COND_LE:
return strcmpW( a, b ) <= 0;
return wcscmp( a, b ) <= 0;
case COND_ILT:
return strcmpiW( a, b ) < 0;
return wcsicmp( a, b ) < 0;
case COND_IGT:
return strcmpiW( a, b ) > 0;
return wcsicmp( a, b ) > 0;
case COND_IEQ:
return strcmpiW( a, b ) == 0;
return wcsicmp( a, b ) == 0;
case COND_INE:
return strcmpiW( a, b ) != 0;
return wcsicmp( a, b ) != 0;
case COND_IGE:
return strcmpiW( a, b ) >= 0;
return wcsicmp( a, b ) >= 0;
case COND_ILE:
return strcmpiW( a, b ) <= 0;
return wcsicmp( a, b ) <= 0;
default:
ERR("invalid string operator\n");
return 0;
@ -619,7 +616,7 @@ static int COND_GetOperator( COND_input *cond )
while ( 1 )
{
len = lstrlenW( table[i].str );
if ( !len || 0 == strncmpW( table[i].str, p, len ) )
if ( !len || 0 == wcsncmp( table[i].str, p, len ) )
break;
i++;
}
@ -668,7 +665,7 @@ static int COND_GetOne( struct cond_str *str, COND_input *cond )
if (ch == '"' )
{
LPCWSTR p = strchrW( str->data + 1, '"' );
LPCWSTR p = wcschr( str->data + 1, '"' );
if (!p) return COND_ERROR;
len = p - str->data + 1;
rc = COND_LITER;
@ -688,18 +685,18 @@ static int COND_GetOne( struct cond_str *str, COND_input *cond )
if ( len == 3 )
{
if ( !strncmpiW( str->data, szNot, len ) )
if ( !wcsnicmp( str->data, szNot, len ) )
rc = COND_NOT;
else if( !strncmpiW( str->data, szAnd, len ) )
else if( !wcsnicmp( str->data, szAnd, len ) )
rc = COND_AND;
else if( !strncmpiW( str->data, szXor, len ) )
else if( !wcsnicmp( str->data, szXor, len ) )
rc = COND_XOR;
else if( !strncmpiW( str->data, szEqv, len ) )
else if( !wcsnicmp( str->data, szEqv, len ) )
rc = COND_EQV;
else if( !strncmpiW( str->data, szImp, len ) )
else if( !wcsnicmp( str->data, szImp, len ) )
rc = COND_IMP;
}
else if( (len == 2) && !strncmpiW( str->data, szOr, len ) )
else if( (len == 2) && !wcsnicmp( str->data, szOr, len ) )
rc = COND_OR;
}
else if( COND_IsNumber( ch ) )

View File

@ -24,7 +24,6 @@
#include "winbase.h"
#include "winerror.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "msi.h"
#include "msiquery.h"
#include "objbase.h"
@ -152,7 +151,7 @@ static UINT check_columns( const column_info *col_info )
/* check for two columns with the same name */
for( c1 = col_info; c1; c1 = c1->next )
for( c2 = c1->next; c2; c2 = c2->next )
if (!strcmpW( c1->column, c2->column ))
if (!wcscmp( c1->column, c2->column ))
return ERROR_BAD_QUERY_SYNTAX;
return ERROR_SUCCESS;

View File

@ -18,9 +18,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include "wine/port.h"
#define COBJMACROS
#include <stdarg.h>
@ -38,7 +35,6 @@
#include "wine/asm.h"
#include "wine/heap.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "wine/exception.h"
WINE_DEFAULT_DEBUG_CHANNEL(msi);
@ -129,7 +125,7 @@ BOOL msi_action_is_unique( const MSIPACKAGE *package, const WCHAR *action )
for (i = 0; i < package->unique_actions_count; i++)
{
if (!strcmpW( package->unique_actions[i], action )) return TRUE;
if (!wcscmp( package->unique_actions[i], action )) return TRUE;
}
return FALSE;
}
@ -191,7 +187,7 @@ static LPWSTR msi_get_deferred_action(LPCWSTR action, LPCWSTR actiondata,
lstrlenW(format) - 7;
deferred = msi_alloc(len * sizeof(WCHAR));
sprintfW(deferred, format, actiondata, usersid, prodcode, action);
swprintf(deferred, len, format, actiondata, usersid, prodcode, action);
return deferred;
}
@ -200,15 +196,15 @@ static void set_deferred_action_props( MSIPACKAGE *package, const WCHAR *deferre
static const WCHAR sep[] = {'<','=','>',0};
const WCHAR *end, *beg = deferred_data + 1;
end = strstrW(beg, sep);
end = wcsstr(beg, sep);
msi_set_property( package->db, szCustomActionData, beg, end - beg );
beg = end + 3;
end = strstrW(beg, sep);
end = wcsstr(beg, sep);
msi_set_property( package->db, szUserSID, beg, end - beg );
beg = end + 3;
end = strchrW(beg, ']');
end = wcschr(beg, ']');
msi_set_property( package->db, szProductCode, beg, end - beg );
}
@ -229,7 +225,7 @@ WCHAR *msi_create_temp_file( MSIDATABASE *db )
if (!(db->tempfolder = strdupW( tmp ))) return NULL;
}
if ((ret = msi_alloc( (strlenW( db->tempfolder ) + 20) * sizeof(WCHAR) )))
if ((ret = msi_alloc( (lstrlenW( db->tempfolder ) + 20) * sizeof(WCHAR) )))
{
if (!GetTempFileNameW( db->tempfolder, szMsi, 0, ret ))
{
@ -299,7 +295,7 @@ static MSIBINARY *get_temp_binary(MSIPACKAGE *package, LPCWSTR source)
LIST_FOR_EACH_ENTRY( binary, &package->binaries, MSIBINARY, entry )
{
if (!strcmpW( binary->source, source ))
if (!wcscmp( binary->source, source ))
return binary;
}
@ -522,7 +518,7 @@ UINT CDECL __wine_msi_call_dll_function(DWORD client_pid, const GUID *guid)
{
WCHAR endpoint[12];
sprintfW(endpoint, endpoint_fmtW, client_pid);
swprintf(endpoint, ARRAY_SIZE(endpoint), endpoint_fmtW, client_pid);
status = RpcStringBindingComposeW(NULL, ncalrpcW, NULL, endpoint, NULL, &binding_str);
if (status != RPC_S_OK)
{
@ -607,7 +603,8 @@ static DWORD custom_start_server(MSIPACKAGE *package, DWORD arch)
(arch == SCS_64BIT_BINARY && package->custom_server_64_process))
return ERROR_SUCCESS;
sprintfW(buffer, pipe_name, GetCurrentProcessId(), arch == SCS_32BIT_BINARY ? 32 : 64);
swprintf(buffer, ARRAY_SIZE(buffer), pipe_name,
GetCurrentProcessId(), arch == SCS_32BIT_BINARY ? 32 : 64);
pipe = CreateNamedPipeW(buffer, PIPE_ACCESS_DUPLEX, 0, 1, sizeof(DWORD64),
sizeof(GUID), 0, NULL);
if (pipe == INVALID_HANDLE_VALUE)
@ -620,8 +617,8 @@ static DWORD custom_start_server(MSIPACKAGE *package, DWORD arch)
GetSystemWow64DirectoryW(path, MAX_PATH - ARRAY_SIZE(msiexecW));
else
GetSystemDirectoryW(path, MAX_PATH - ARRAY_SIZE(msiexecW));
strcatW(path, msiexecW);
sprintfW(cmdline, argsW, path, GetCurrentProcessId());
lstrcatW(path, msiexecW);
swprintf(cmdline, ARRAY_SIZE(cmdline), argsW, path, GetCurrentProcessId());
if (wow64 && arch == SCS_64BIT_BINARY)
{
@ -746,7 +743,7 @@ static msi_custom_action_info *do_msidbCustomActionTypeDll(
{
WCHAR endpoint[12];
sprintfW(endpoint, endpoint_fmtW, GetCurrentProcessId());
swprintf(endpoint, ARRAY_SIZE(endpoint), endpoint_fmtW, GetCurrentProcessId());
status = RpcServerUseProtseqEpW(ncalrpcW, RPC_C_PROTSEQ_MAX_REQS_DEFAULT,
endpoint, NULL);
if (status != RPC_S_OK)
@ -825,14 +822,14 @@ static HANDLE execute_command( const WCHAR *app, WCHAR *arg, const WCHAR *dir )
return INVALID_HANDLE_VALUE;
}
if (arg) len_arg = strlenW( arg );
if (arg) len_arg = lstrlenW( arg );
if (!(cmd = msi_alloc( (len_exe + len_arg + 4) * sizeof(WCHAR) )))
{
msi_free( exe );
return INVALID_HANDLE_VALUE;
}
p = cmd;
if (strchrW( exe, ' ' ))
if (wcschr( exe, ' ' ))
{
*p++ = '\"';
memcpy( p, exe, len_exe * sizeof(WCHAR) );
@ -842,7 +839,7 @@ static HANDLE execute_command( const WCHAR *app, WCHAR *arg, const WCHAR *dir )
}
else
{
strcpyW( p, exe );
lstrcpyW( p, exe );
p += len_exe;
}
if (arg)
@ -962,15 +959,15 @@ static UINT HANDLE_CustomType23( MSIPACKAGE *package, const WCHAR *source, const
HANDLE handle;
if (!(dir = msi_dup_property( package->db, szOriginalDatabase ))) return ERROR_OUTOFMEMORY;
if (!(p = strrchrW( dir, '\\' )) && !(p = strrchrW( dir, '/' )))
if (!(p = wcsrchr( dir, '\\' )) && !(p = wcsrchr( dir, '/' )))
{
msi_free( dir );
return ERROR_FUNCTION_FAILED;
}
*p = 0;
len_dir = p - dir;
len_src = strlenW( source );
len_tgt = strlenW( target );
len_src = lstrlenW( source );
len_tgt = lstrlenW( target );
if (!(arg = msi_alloc( (len + len_dir + len_src + len_tgt + 5) * sizeof(WCHAR) )))
{
msi_free( dir );
@ -985,7 +982,7 @@ static UINT HANDLE_CustomType23( MSIPACKAGE *package, const WCHAR *source, const
len += len_src;
arg[len++] = '"';
arg[len++] = ' ';
strcpyW( arg + len, target );
lstrcpyW( arg + len, target );
TRACE("installing %s concurrently\n", debugstr_w(source));
@ -1318,7 +1315,7 @@ UINT ACTION_CustomAction(MSIPACKAGE *package, const WCHAR *action)
int len;
/* deferred action: [properties]Action */
if ((ptr = strrchrW(action, ']')))
if ((ptr = wcsrchr(action, ']')))
{
deferred_data = action;
action = ptr + 1;
@ -1417,7 +1414,7 @@ UINT ACTION_CustomAction(MSIPACKAGE *package, const WCHAR *action)
len = deformat_string( package, target, &deformated );
rc = msi_set_property( package->db, source, deformated, len );
if (rc == ERROR_SUCCESS && !strcmpW( source, szSourceDir ))
if (rc == ERROR_SUCCESS && !wcscmp( source, szSourceDir ))
msi_reset_source_folders( package );
msi_free(deformated);
break;

View File

@ -28,7 +28,6 @@
#include "winreg.h"
#include "winnls.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "msi.h"
#include "msiquery.h"
#include "msipriv.h"
@ -251,7 +250,7 @@ UINT MSI_OpenDatabaseW(LPCWSTR szDBPath, LPCWSTR szPersist, MSIDATABASE **pdb)
goto end;
}
if (!strchrW( save_path, '\\' ))
if (!wcschr( save_path, '\\' ))
{
GetCurrentDirectoryW( MAX_PATH, path );
lstrcatW( path, szBackSlash );
@ -456,7 +455,7 @@ static LPWSTR msi_build_createsql_prelude(LPWSTR table)
if (!prelude)
return NULL;
sprintfW(prelude, create_fmt, table);
swprintf(prelude, size, create_fmt, table);
return prelude;
}
@ -492,7 +491,7 @@ static LPWSTR msi_build_createsql_columns(LPWSTR *columns_data, LPWSTR *types, D
comma[0] = ',';
ptr = &types[i][1];
len = atolW(ptr);
len = wcstol(ptr, NULL, 10);
extra[0] = '\0';
switch (types[i][0])
@ -503,14 +502,14 @@ static LPWSTR msi_build_createsql_columns(LPWSTR *columns_data, LPWSTR *types, D
case 'L':
lstrcatW(extra, localizable);
type = type_char;
sprintfW(size, size_fmt, ptr);
swprintf(size, ARRAY_SIZE(size), size_fmt, ptr);
break;
case 's':
lstrcpyW(extra, type_notnull);
/* fall through */
case 'S':
type = type_char;
sprintfW(size, size_fmt, ptr);
swprintf(size, ARRAY_SIZE(size), size_fmt, ptr);
break;
case 'i':
lstrcpyW(extra, type_notnull);
@ -539,7 +538,7 @@ static LPWSTR msi_build_createsql_columns(LPWSTR *columns_data, LPWSTR *types, D
return NULL;
}
sprintfW(expanded, column_fmt, columns_data[i], type, size, extra, comma);
swprintf(expanded, ARRAY_SIZE(expanded), column_fmt, columns_data[i], type, size, extra, comma);
sql_size += lstrlenW(expanded);
p = msi_realloc(columns, sql_size * sizeof(WCHAR));
@ -573,7 +572,7 @@ static LPWSTR msi_build_createsql_postlude(LPWSTR *primary_keys, DWORD num_keys)
for (i = 0, ptr = keys; i < num_keys; i++)
{
ptr += sprintfW(ptr, key_fmt, primary_keys[i]);
ptr += swprintf(ptr, size - (ptr - keys), key_fmt, primary_keys[i]);
}
/* remove final ', ' */
@ -584,7 +583,7 @@ static LPWSTR msi_build_createsql_postlude(LPWSTR *primary_keys, DWORD num_keys)
if (!postlude)
goto done;
sprintfW(postlude, postlude_fmt, keys);
swprintf(postlude, size, postlude_fmt, keys);
done:
msi_free(keys);
@ -644,7 +643,7 @@ static LPWSTR msi_import_stream_filename(LPCWSTR path, LPCWSTR name)
lstrcpyW( fullname, path );
/* chop off extension from path */
ptr = strrchrW(fullname, '.');
ptr = wcsrchr(fullname, '.');
if (!ptr)
{
msi_free (fullname);
@ -673,7 +672,7 @@ static UINT construct_record(DWORD num_columns, LPWSTR *types,
break;
case 'I': case 'i':
if (*data[i])
MSI_RecordSetInteger(*rec, i + 1, atoiW(data[i]));
MSI_RecordSetInteger(*rec, i + 1, wcstol(data[i], NULL, 10));
break;
case 'V': case 'v':
if (*data[i])
@ -790,9 +789,9 @@ static UINT MSI_DatabaseImport(MSIDATABASE *db, LPCWSTR folder, LPCWSTR file)
msi_parse_line( &ptr, &labels, &num_labels, &len );
if (num_columns == 1 && !columns[0][0] && num_labels == 1 && !labels[0][0] &&
num_types == 2 && !strcmpW( types[1], forcecodepage ))
num_types == 2 && !wcscmp( types[1], forcecodepage ))
{
r = msi_set_string_table_codepage( db->strings, atoiW( types[0] ) );
r = msi_set_string_table_codepage( db->strings, wcstol( types[0], NULL, 10 ) );
goto done;
}
@ -824,7 +823,7 @@ static UINT MSI_DatabaseImport(MSIDATABASE *db, LPCWSTR folder, LPCWSTR file)
records = temp_records;
}
if (!strcmpW(labels[0], suminfo))
if (!wcscmp(labels[0], suminfo))
{
r = msi_add_suminfo( db, records, num_records, num_columns );
if (r != ERROR_SUCCESS)
@ -966,11 +965,11 @@ static UINT msi_export_stream( const WCHAR *folder, const WCHAR *table, MSIRECOR
if (r != ERROR_SUCCESS)
return r;
len = (sz + strlenW( folder ) + strlenW( table ) + ARRAY_SIZE( fmt ) + 1) * sizeof(WCHAR);
if (!(path = msi_alloc( len )))
len = sz + lstrlenW( folder ) + lstrlenW( table ) + ARRAY_SIZE( fmt ) + 1;
if (!(path = msi_alloc( len * sizeof(WCHAR) )))
return ERROR_OUTOFMEMORY;
len = sprintfW( path, fmt, folder, table );
len = swprintf( path, len, fmt, folder, table );
if (!CreateDirectoryW( path, NULL ) && GetLastError() != ERROR_ALREADY_EXISTS)
{
msi_free( path );
@ -978,7 +977,7 @@ static UINT msi_export_stream( const WCHAR *folder, const WCHAR *table, MSIRECOR
}
path[len++] = '\\';
strcpyW( path + len, stream );
lstrcpyW( path + len, stream );
file = CreateFileW( path, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
msi_free( path );
@ -1108,14 +1107,14 @@ static UINT MSI_DatabaseExport( MSIDATABASE *db, LPCWSTR table, LPCWSTR folder,
if (handle == INVALID_HANDLE_VALUE)
return ERROR_FUNCTION_FAILED;
if (!strcmpW( table, forcecodepage ))
if (!wcscmp( table, forcecodepage ))
{
UINT codepage = msi_get_string_table_codepage( db->strings );
r = msi_export_forcecodepage( handle, codepage );
goto done;
}
if (!strcmpW( table, summaryinformation ))
if (!wcscmp( table, summaryinformation ))
{
r = msi_export_summaryinformation( db, handle );
goto done;
@ -1288,7 +1287,7 @@ static BOOL merge_type_match(LPCWSTR type1, LPCWSTR type2)
((type2[0] == 'L') || (type2[0] == 'S')))
return TRUE;
return !strcmpW( type1, type2 );
return !wcscmp( type1, type2 );
}
static UINT merge_verify_colnames(MSIQUERY *dbview, MSIQUERY *mergeview)
@ -1313,7 +1312,7 @@ static UINT merge_verify_colnames(MSIQUERY *dbview, MSIQUERY *mergeview)
if (!MSI_RecordGetString(mergerec, i))
break;
if (strcmpW( MSI_RecordGetString( dbrec, i ), MSI_RecordGetString( mergerec, i ) ))
if (wcscmp( MSI_RecordGetString( dbrec, i ), MSI_RecordGetString( mergerec, i ) ))
{
r = ERROR_DATATYPE_MISMATCH;
goto done;
@ -1379,7 +1378,7 @@ static UINT merge_verify_primary_keys(MSIDATABASE *db, MSIDATABASE *mergedb,
for (i = 1; i <= count; i++)
{
if (strcmpW( MSI_RecordGetString( dbrec, i ), MSI_RecordGetString( mergerec, i ) ))
if (wcscmp( MSI_RecordGetString( dbrec, i ), MSI_RecordGetString( mergerec, i ) ))
{
r = ERROR_DATATYPE_MISMATCH;
goto done;
@ -1407,7 +1406,7 @@ static LPWSTR get_key_value(MSIQUERY *view, LPCWSTR key, MSIRECORD *rec)
do
{
str = msi_dup_record_field(colnames, ++i);
cmp = strcmpW( key, str );
cmp = wcscmp( key, str );
msi_free(str);
} while (cmp);
@ -1497,7 +1496,7 @@ static LPWSTR create_diff_row_query(MSIDATABASE *merge, MSIQUERY *view,
goto done;
}
sprintfW(clause + oldsize - 1, setptr, key, val);
swprintf(clause + oldsize - 1, size - (oldsize - 1), setptr, key, val);
msi_free(val);
}
@ -1506,7 +1505,7 @@ static LPWSTR create_diff_row_query(MSIDATABASE *merge, MSIQUERY *view,
if (!query)
goto done;
sprintfW(query, fmt, table, clause);
swprintf(query, size, fmt, table, clause);
done:
msi_free(clause);

View File

@ -40,7 +40,6 @@
#include "shellapi.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "msipriv.h"
#include "msiserver.h"
@ -204,7 +203,7 @@ static msi_control *msi_dialog_find_control( msi_dialog *dialog, LPCWSTR name )
if( !dialog->hwnd )
return NULL;
LIST_FOR_EACH_ENTRY( control, &dialog->controls, msi_control, entry )
if( !strcmpW( control->name, name ) ) /* FIXME: case sensitive? */
if( !wcscmp( control->name, name ) ) /* FIXME: case sensitive? */
return control;
return NULL;
}
@ -218,7 +217,7 @@ static msi_control *msi_dialog_find_control_by_type( msi_dialog *dialog, LPCWSTR
if( !dialog->hwnd )
return NULL;
LIST_FOR_EACH_ENTRY( control, &dialog->controls, msi_control, entry )
if( !strcmpW( control->type, type ) ) /* FIXME: case sensitive? */
if( !wcscmp( control->type, type ) ) /* FIXME: case sensitive? */
return control;
return NULL;
}
@ -278,7 +277,7 @@ static LPWSTR msi_dialog_get_style( LPCWSTR p, LPCWSTR *rest )
if( !p )
return NULL;
while ((first = strchrW( p, '{' )) && (q = strchrW( first + 1, '}' )))
while ((first = wcschr( p, '{' )) && (q = wcschr( first + 1, '}' )))
{
p = first + 1;
if( *p != '\\' && *p != '&' )
@ -315,8 +314,8 @@ static UINT msi_dialog_add_font( MSIRECORD *rec, LPVOID param )
/* create a font and add it to the list */
name = MSI_RecordGetString( rec, 1 );
font = msi_alloc( FIELD_OFFSET( msi_font, name[strlenW( name ) + 1] ));
strcpyW( font->name, name );
font = msi_alloc( FIELD_OFFSET( msi_font, name[lstrlenW( name ) + 1] ));
lstrcpyW( font->name, name );
list_add_head( &dialog->fonts, &font->entry );
font->color = MSI_RecordGetInteger( rec, 4 );
@ -355,7 +354,7 @@ static msi_font *msi_dialog_find_font( msi_dialog *dialog, LPCWSTR name )
msi_font *font = NULL;
LIST_FOR_EACH_ENTRY( font, &dialog->fonts, msi_font, entry )
if( !strcmpW( font->name, name ) ) /* FIXME: case sensitive? */
if( !wcscmp( font->name, name ) ) /* FIXME: case sensitive? */
break;
return font;
@ -420,11 +419,11 @@ static msi_control *dialog_create_window( msi_dialog *dialog, MSIRECORD *rec, DW
style |= WS_CHILD;
control = msi_alloc( FIELD_OFFSET( msi_control, name[strlenW( name ) + 1] ));
control = msi_alloc( FIELD_OFFSET( msi_control, name[lstrlenW( name ) + 1] ));
if (!control)
return NULL;
strcpyW( control->name, name );
lstrcpyW( control->name, name );
list_add_tail( &dialog->controls, &control->entry );
control->handler = NULL;
control->update = NULL;
@ -557,7 +556,7 @@ static void msi_dialog_update_controls( msi_dialog *dialog, LPCWSTR property )
LIST_FOR_EACH_ENTRY( control, &dialog->controls, msi_control, entry )
{
if ( control->property && !strcmpW( control->property, property ) && control->update )
if ( control->property && !wcscmp( control->property, property ) && control->update )
control->update( dialog, control );
}
}
@ -576,7 +575,7 @@ static void msi_dialog_update_all_controls( msi_dialog *dialog )
static void msi_dialog_set_property( MSIPACKAGE *package, LPCWSTR property, LPCWSTR value )
{
UINT r = msi_set_property( package->db, property, value, -1 );
if (r == ERROR_SUCCESS && !strcmpW( property, szSourceDir ))
if (r == ERROR_SUCCESS && !wcscmp( property, szSourceDir ))
msi_reset_source_folders( package );
}
@ -614,7 +613,7 @@ static void dialog_handle_event( msi_dialog *dialog, const WCHAR *control,
ctrl = msi_dialog_find_control( dialog, control );
if (!ctrl)
return;
if( !strcmpW( attribute, szText ) )
if( !wcscmp( attribute, szText ) )
{
const WCHAR *font_text, *text = NULL;
WCHAR *font, *text_fmt = NULL;
@ -631,7 +630,7 @@ static void dialog_handle_event( msi_dialog *dialog, const WCHAR *control,
msi_free( text_fmt );
msi_dialog_check_messages( NULL );
}
else if( !strcmpW( attribute, szProgress ) )
else if( !wcscmp( attribute, szProgress ) )
{
DWORD func, val1, val2, units;
@ -686,12 +685,12 @@ static void dialog_handle_event( msi_dialog *dialog, const WCHAR *control,
break;
}
}
else if ( !strcmpW( attribute, szProperty ) )
else if ( !wcscmp( attribute, szProperty ) )
{
MSIFEATURE *feature = msi_seltree_get_selected_feature( ctrl );
if (feature) msi_dialog_set_property( dialog->package, ctrl->property, feature->Directory );
}
else if ( !strcmpW( attribute, szSelectionPath ) )
else if ( !wcscmp( attribute, szSelectionPath ) )
{
BOOL indirect = ctrl->attributes & msidbControlAttributesIndirect;
LPWSTR path = msi_dialog_dup_property( dialog, ctrl->property, indirect );
@ -716,9 +715,9 @@ static void event_subscribe( msi_dialog *dialog, const WCHAR *event, const WCHAR
LIST_FOR_EACH_ENTRY( sub, &dialog->package->subscriptions, struct subscriber, entry )
{
if (sub->dialog == dialog &&
!strcmpiW( sub->event, event ) &&
!strcmpiW( sub->control, control ) &&
!strcmpiW( sub->attribute, attribute ))
!wcsicmp( sub->event, event ) &&
!wcsicmp( sub->control, control ) &&
!wcsicmp( sub->attribute, attribute ))
{
TRACE("already subscribed\n");
return;
@ -780,7 +779,7 @@ static msi_control *msi_dialog_add_control( msi_dialog *dialog,
name = MSI_RecordGetString( rec, 2 );
control_type = MSI_RecordGetString( rec, 3 );
attributes = MSI_RecordGetInteger( rec, 8 );
if (strcmpW( control_type, szScrollableText )) text = MSI_RecordGetString( rec, 10 );
if (wcscmp( control_type, szScrollableText )) text = MSI_RecordGetString( rec, 10 );
TRACE("%s, %s, %08x, %s, %08x\n", debugstr_w(szCls), debugstr_w(name),
attributes, debugstr_w(text), style);
@ -920,14 +919,14 @@ static UINT msi_dialog_set_property_event( msi_dialog *dialog, LPCWSTR event, LP
LPWSTR p, prop, arg_fmt = NULL;
UINT len;
len = strlenW( event );
len = lstrlenW( event );
prop = msi_alloc( len * sizeof(WCHAR) );
strcpyW( prop, &event[1] );
p = strchrW( prop, ']' );
lstrcpyW( prop, &event[1] );
p = wcschr( prop, ']' );
if (p && (p[1] == 0 || p[1] == ' '))
{
*p = 0;
if (strcmpW( szNullArg, arg ))
if (wcscmp( szNullArg, arg ))
deformat_string( dialog->package, arg, &arg_fmt );
msi_dialog_set_property( dialog->package, prop, arg_fmt );
msi_dialog_update_controls( dialog, prop );
@ -1180,11 +1179,11 @@ static UINT msi_dialog_line_control( msi_dialog *dialog, MSIRECORD *rec )
dialog_map_events( dialog, name );
control = msi_alloc( FIELD_OFFSET(msi_control, name[strlenW( name ) + 1] ));
control = msi_alloc( FIELD_OFFSET(msi_control, name[lstrlenW( name ) + 1] ));
if (!control)
return ERROR_OUTOFMEMORY;
strcpyW( control->name, name );
lstrcpyW( control->name, name );
list_add_head( &dialog->controls, &control->entry );
control->handler = NULL;
control->property = NULL;
@ -1572,15 +1571,15 @@ static UINT msi_dialog_set_control_condition( MSIRECORD *rec, LPVOID param )
TRACE("%s control %s\n", debugstr_w(action), debugstr_w(name));
/* FIXME: case sensitive? */
if (!strcmpW( action, szHide ))
if (!wcscmp( action, szHide ))
ShowWindow(control->hwnd, SW_HIDE);
else if (!strcmpW( action, szShow ))
else if (!wcscmp( action, szShow ))
ShowWindow(control->hwnd, SW_SHOW);
else if (!strcmpW( action, szDisable ))
else if (!wcscmp( action, szDisable ))
EnableWindow(control->hwnd, FALSE);
else if (!strcmpW( action, szEnable ))
else if (!wcscmp( action, szEnable ))
EnableWindow(control->hwnd, TRUE);
else if (!strcmpW( action, szDefault ))
else if (!wcscmp( action, szDefault ))
SetFocus(control->hwnd);
else
FIXME("Unhandled action %s\n", debugstr_w(action));
@ -1653,7 +1652,7 @@ static void msi_dialog_combobox_update( msi_dialog *dialog, msi_control *control
for (j = 0; j < info->num_items; j++)
{
tmp = (LPWSTR) SendMessageW( control->hwnd, CB_GETITEMDATA, j, 0 );
if (!strcmpW( value, tmp ))
if (!wcscmp( value, tmp ))
break;
}
@ -1754,15 +1753,15 @@ static UINT msi_dialog_edit_control( msi_dialog *dialog, MSIRECORD *rec )
text = MSI_RecordGetString( rec, 10 );
if ( text )
{
begin = strchrW( text, '{' );
end = strchrW( text, '}' );
begin = wcschr( text, '{' );
end = wcschr( text, '}' );
if ( begin && end && end > begin &&
begin[0] >= '0' && begin[0] <= '9' &&
end - begin < MAX_NUM_DIGITS)
{
lstrcpynW( num, begin + 1, end - begin );
limit = atolW( num );
limit = wcstol( num, NULL, 10 );
SendMessageW( control->hwnd, EM_SETLIMITTEXT, limit, 0 );
}
@ -1927,7 +1926,7 @@ msi_maskedit_set_text( struct msi_maskedit_info *info, LPCWSTR text )
p = text;
for( i = 0; i < info->num_groups; i++ )
{
if( info->group[i].len < strlenW( p ) )
if( info->group[i].len < lstrlenW( p ) )
{
LPWSTR chunk = strdupW( p );
chunk[ info->group[i].len ] = 0;
@ -1958,7 +1957,7 @@ static struct msi_maskedit_info * msi_dialog_parse_groups( LPCWSTR mask )
if( !info )
return info;
p = strchrW(mask, '<');
p = wcschr(mask, '<');
if( p )
p++;
else
@ -2305,7 +2304,7 @@ static UINT msi_dialog_create_radiobutton( MSIRECORD *rec, LPVOID param )
return ERROR_FUNCTION_FAILED;
control->handler = msi_dialog_radiogroup_handler;
if (group->propval && !strcmpW( control->name, group->propval ))
if (group->propval && !wcscmp( control->name, group->propval ))
SendMessageW(control->hwnd, BM_SETCHECK, BST_CHECKED, 0);
prop = MSI_RecordGetString( rec, 1 );
@ -2570,7 +2569,7 @@ msi_seltree_add_child_features( MSIPACKAGE *package, HWND hwnd,
LIST_FOR_EACH_ENTRY( feature, &package->features, MSIFEATURE, entry )
{
if ( parent && feature->Feature_Parent && strcmpW( parent, feature->Feature_Parent ))
if ( parent && feature->Feature_Parent && wcscmp( parent, feature->Feature_Parent ))
continue;
else if ( parent && !feature->Feature_Parent )
continue;
@ -2994,7 +2993,7 @@ static void msi_dialog_update_directory_list( msi_dialog *dialog, msi_control *c
if ( wfd.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY )
continue;
if ( !strcmpW( wfd.cFileName, szDot ) || !strcmpW( wfd.cFileName, szDotDot ) )
if ( !wcscmp( wfd.cFileName, szDot ) || !wcscmp( wfd.cFileName, szDotDot ) )
continue;
item.mask = LVIF_TEXT;
@ -3045,10 +3044,10 @@ static WCHAR *get_unique_folder_name( const WCHAR *root, int *ret_len )
int len, count = 2;
len = LoadStringW( msi_hInstance, IDS_NEWFOLDER, newfolder, ARRAY_SIZE(newfolder) );
len += strlenW(root) + 1;
len += lstrlenW(root) + 1;
if (!(path = msi_alloc( (len + 4) * sizeof(WCHAR) ))) return NULL;
strcpyW( path, root );
strcatW( path, newfolder );
lstrcpyW( path, root );
lstrcatW( path, newfolder );
for (;;)
{
@ -3058,11 +3057,11 @@ static WCHAR *get_unique_folder_name( const WCHAR *root, int *ret_len )
msi_free( path );
return NULL;
}
len = sprintfW( path, fmtW, root, newfolder, count++ ) + 1;
swprintf( path, len + 4, fmtW, root, newfolder, count++ );
}
ptr = strrchrW( path, '\\' ) + 1;
*ret_len = len - (ptr - path);
ptr = wcsrchr( path, '\\' ) + 1;
*ret_len = lstrlenW(ptr);
memmove( path, ptr, *ret_len * sizeof(WCHAR) );
return path;
}
@ -3133,7 +3132,7 @@ static UINT msi_dialog_dirlist_handler( msi_dialog *dialog, msi_control *control
prop = msi_dialog_dup_property( dialog, control->property, indirect );
path = msi_dialog_dup_property( dialog, prop, TRUE );
if (!(new_path = msi_alloc( (strlenW(path) + strlenW(text) + 2) * sizeof(WCHAR) )))
if (!(new_path = msi_alloc( (lstrlenW(path) + lstrlenW(text) + 2) * sizeof(WCHAR) )))
{
msi_free( prop );
msi_free( path );
@ -3191,7 +3190,7 @@ static BOOL str_is_number( LPCWSTR str )
int i;
for (i = 0; i < lstrlenW( str ); i++)
if (!isdigitW(str[i]))
if (!iswdigit(str[i]))
return FALSE;
return TRUE;
@ -3218,9 +3217,9 @@ static void msi_dialog_vcl_add_columns( msi_dialog *dialog, msi_control *control
if (!text) return;
while ((begin = strchrW( begin, '{' )) && count < 5)
while ((begin = wcschr( begin, '{' )) && count < 5)
{
if (!(end = strchrW( begin, '}' )))
if (!(end = wcschr( begin, '}' )))
return;
num = msi_alloc( (end-begin+1)*sizeof(WCHAR) );
@ -3231,7 +3230,7 @@ static void msi_dialog_vcl_add_columns( msi_dialog *dialog, msi_control *control
begin += end - begin + 1;
/* empty braces or '0' hides the column */
if ( !num[0] || !strcmpW( num, szZero ) )
if ( !num[0] || !wcscmp( num, szZero ) )
{
count++;
msi_free( num );
@ -3241,14 +3240,14 @@ static void msi_dialog_vcl_add_columns( msi_dialog *dialog, msi_control *control
/* the width must be a positive number
* if a width is invalid, all remaining columns are hidden
*/
if ( !strncmpW( num, negative, 1 ) || !str_is_number( num ) ) {
if ( !wcsncmp( num, negative, 1 ) || !str_is_number( num ) ) {
msi_free( num );
return;
}
ZeroMemory( &lvc, sizeof(lvc) );
lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
lvc.cx = atolW( num );
lvc.cx = wcstol( num, NULL, 10 );
lvc.pszText = msi_dialog_get_uitext( dialog, column_keys[count] );
SendMessageW( control->hwnd, LVM_INSERTCOLUMNW, count++, (LPARAM)&lvc );
@ -3467,16 +3466,16 @@ static UINT msi_dialog_hyperlink_handler( msi_dialog *dialog, msi_control *contr
p = item.szUrl;
while (*p && *p != '<') p++;
if (!*p++) return ERROR_SUCCESS;
if (toupperW( *p++ ) != 'A' || !isspaceW( *p++ )) return ERROR_SUCCESS;
while (*p && isspaceW( *p )) p++;
if (towupper( *p++ ) != 'A' || !iswspace( *p++ )) return ERROR_SUCCESS;
while (*p && iswspace( *p )) p++;
len = strlenW( p );
if (len > len_href && !strncmpiW( p, hrefW, len_href ))
len = lstrlenW( p );
if (len > len_href && !wcsnicmp( p, hrefW, len_href ))
{
p += len_href;
while (*p && isspaceW( *p )) p++;
while (*p && iswspace( *p )) p++;
if (!*p || *p++ != '=') return ERROR_SUCCESS;
while (*p && isspaceW( *p )) p++;
while (*p && iswspace( *p )) p++;
if (*p == '\"' || *p == '\'') quote = *p++;
q = p;
@ -3487,7 +3486,7 @@ static UINT msi_dialog_hyperlink_handler( msi_dialog *dialog, msi_control *contr
}
else
{
while (*q && *q != '>' && !isspaceW( *q )) q++;
while (*q && *q != '>' && !iswspace( *q )) q++;
if (!*q) return ERROR_SUCCESS;
}
item.szUrl[q - item.szUrl] = 0;
@ -3501,7 +3500,7 @@ static UINT msi_dialog_hyperlink( msi_dialog *dialog, MSIRECORD *rec )
msi_control *control;
DWORD style = WS_CHILD | WS_TABSTOP | WS_GROUP;
const WCHAR *text = MSI_RecordGetString( rec, 10 );
int len = strlenW( text );
int len = lstrlenW( text );
LITEM item;
control = msi_dialog_add_control( dialog, rec, WC_LINK, style );
@ -3515,7 +3514,7 @@ static UINT msi_dialog_hyperlink( msi_dialog *dialog, MSIRECORD *rec )
item.iLink = 0;
item.state = LIS_ENABLED;
item.stateMask = LIS_ENABLED;
if (len < L_MAX_URL_LENGTH) strcpyW( item.szUrl, text );
if (len < L_MAX_URL_LENGTH) lstrcpyW( item.szUrl, text );
else item.szUrl[0] = 0;
SendMessageW( control->hwnd, LM_SETITEM, 0, (LPARAM)&item );
@ -3557,7 +3556,7 @@ static UINT msi_dialog_create_controls( MSIRECORD *rec, LPVOID param )
/* find and call the function that can create this type of control */
control_type = MSI_RecordGetString( rec, 3 );
for( i = 0; i < ARRAY_SIZE( msi_dialog_handler ); i++ )
if (!strcmpiW( msi_dialog_handler[i].control_type, control_type ))
if (!wcsicmp( msi_dialog_handler[i].control_type, control_type ))
break;
if( i != ARRAY_SIZE( msi_dialog_handler ))
msi_dialog_handler[i].func( dialog, rec );
@ -3615,7 +3614,7 @@ static INT msi_dialog_get_sans_serif_height( HWND hwnd )
{
memset( &lf, 0, sizeof lf );
lf.lfHeight = MulDiv(12, GetDeviceCaps(hdc, LOGPIXELSY), 72);
strcpyW( lf.lfFaceName, szSansSerif );
lstrcpyW( lf.lfFaceName, szSansSerif );
hFont = CreateFontIndirectW(&lf);
if (hFont)
{
@ -4010,10 +4009,10 @@ static msi_dialog *dialog_create( MSIPACKAGE *package, const WCHAR *name, msi_di
if (!hMsiHiddenWindow) dialog_register_class();
/* allocate the structure for the dialog to use */
dialog = msi_alloc_zero( FIELD_OFFSET( msi_dialog, name[strlenW( name ) + 1] ));
dialog = msi_alloc_zero( FIELD_OFFSET( msi_dialog, name[lstrlenW( name ) + 1] ));
if( !dialog )
return NULL;
strcpyW( dialog->name, name );
lstrcpyW( dialog->name, name );
dialog->parent = parent;
dialog->package = package;
dialog->event_handler = event_handler;
@ -4112,7 +4111,7 @@ static void event_cleanup_subscriptions( MSIPACKAGE *package, const WCHAR *dialo
{
struct subscriber *sub = LIST_ENTRY( item, struct subscriber, entry );
if (strcmpW( sub->dialog->name, dialog )) continue;
if (wcscmp( sub->dialog->name, dialog )) continue;
list_remove( &sub->entry );
free_subscriber( sub );
}
@ -4356,13 +4355,13 @@ static UINT event_end_dialog( msi_dialog *dialog, const WCHAR *argument )
static const WCHAR ignoreW[] = {'I','g','n','o','r','e',0};
static const WCHAR returnW[] = {'R','e','t','u','r','n',0};
if (!strcmpW( argument, exitW ))
if (!wcscmp( argument, exitW ))
dialog->retval = IDCANCEL;
else if (!strcmpW( argument, retryW ))
else if (!wcscmp( argument, retryW ))
dialog->retval = IDRETRY;
else if (!strcmpW( argument, ignoreW ))
else if (!wcscmp( argument, ignoreW ))
dialog->retval = IDOK;
else if (!strcmpW( argument, returnW ))
else if (!wcscmp( argument, returnW ))
dialog->retval = 0;
else
{
@ -4444,7 +4443,7 @@ static UINT event_add_local( msi_dialog *dialog, const WCHAR *argument )
LIST_FOR_EACH_ENTRY( feature, &dialog->package->features, MSIFEATURE, entry )
{
if (!strcmpW( argument, feature->Feature ) || !strcmpW( argument, szAll ))
if (!wcscmp( argument, feature->Feature ) || !wcscmp( argument, szAll ))
{
if (feature->ActionRequest != INSTALLSTATE_LOCAL)
msi_set_property( dialog->package->db, szPreselected, szOne, -1 );
@ -4460,7 +4459,7 @@ static UINT event_remove( msi_dialog *dialog, const WCHAR *argument )
LIST_FOR_EACH_ENTRY( feature, &dialog->package->features, MSIFEATURE, entry )
{
if (!strcmpW( argument, feature->Feature ) || !strcmpW( argument, szAll ))
if (!wcscmp( argument, feature->Feature ) || !wcscmp( argument, szAll ))
{
if (feature->ActionRequest != INSTALLSTATE_ABSENT)
msi_set_property( dialog->package->db, szPreselected, szOne, -1 );
@ -4476,7 +4475,7 @@ static UINT event_add_source( msi_dialog *dialog, const WCHAR *argument )
LIST_FOR_EACH_ENTRY( feature, &dialog->package->features, MSIFEATURE, entry )
{
if (!strcmpW( argument, feature->Feature ) || !strcmpW( argument, szAll ))
if (!wcscmp( argument, feature->Feature ) || !wcscmp( argument, szAll ))
{
if (feature->ActionRequest != INSTALLSTATE_SOURCE)
msi_set_property( dialog->package->db, szPreselected, szOne, -1 );
@ -4494,7 +4493,7 @@ void msi_event_fire( MSIPACKAGE *package, const WCHAR *event, MSIRECORD *rec )
LIST_FOR_EACH_ENTRY( sub, &package->subscriptions, struct subscriber, entry )
{
if (strcmpiW( sub->event, event )) continue;
if (wcsicmp( sub->event, event )) continue;
dialog_handle_event( sub->dialog, sub->control, sub->attribute, rec );
}
}
@ -4578,7 +4577,7 @@ INT ACTION_DialogBox( MSIPACKAGE *package, const WCHAR *dialog )
static UINT event_set_install_level( msi_dialog *dialog, const WCHAR *argument )
{
int level = atolW( argument );
int level = wcstol( argument, NULL, 10 );
TRACE("setting install level to %d\n", level);
return MSI_SetInstallLevel( dialog->package, level );
@ -4659,7 +4658,7 @@ static UINT dialog_event_handler( msi_dialog *dialog, const WCHAR *event, const
for (i = 0; control_events[i].event; i++)
{
if (!strcmpW( control_events[i].event, event ))
if (!wcscmp( control_events[i].event, event ))
return control_events[i].handler( dialog, argument );
}
FIXME("unhandled event %s arg(%s)\n", debugstr_w(event), debugstr_w(argument));

View File

@ -45,7 +45,6 @@
#include "shlwapi.h"
#include "patchapi.h"
#include "wine/debug.h"
#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(msi);
@ -206,10 +205,10 @@ BOOL msi_create_full_path( MSIPACKAGE *package, const WCHAR *path )
WCHAR *new_path;
int len;
if (!(new_path = msi_alloc( (strlenW( path ) + 1) * sizeof(WCHAR) ))) return FALSE;
strcpyW( new_path, path );
if (!(new_path = msi_alloc( (lstrlenW( path ) + 1) * sizeof(WCHAR) ))) return FALSE;
lstrcpyW( new_path, path );
while ((len = strlenW( new_path )) && new_path[len - 1] == '\\')
while ((len = lstrlenW( new_path )) && new_path[len - 1] == '\\')
new_path[len - 1] = 0;
while (!msi_create_directory( package, new_path ))
@ -222,7 +221,7 @@ BOOL msi_create_full_path( MSIPACKAGE *package, const WCHAR *path )
ret = FALSE;
break;
}
if (!(slash = strrchrW( new_path, '\\' )))
if (!(slash = wcsrchr( new_path, '\\' )))
{
ret = FALSE;
break;
@ -436,8 +435,8 @@ static UINT copy_install_file(MSIPACKAGE *package, MSIFILE *file, LPWSTR source)
TRACE("file in use, scheduling rename operation\n");
if (!(pathW = strdupW( file->TargetPath ))) return ERROR_OUTOFMEMORY;
if ((p = strrchrW(pathW, '\\'))) *p = 0;
len = strlenW( pathW ) + 16;
if ((p = wcsrchr(pathW, '\\'))) *p = 0;
len = lstrlenW( pathW ) + 16;
if (!(tmpfileW = msi_alloc(len * sizeof(WCHAR))))
{
msi_free( pathW );
@ -490,7 +489,7 @@ static MSIFILE *find_file( MSIPACKAGE *package, UINT disk_id, const WCHAR *filen
{
if (file->disk_id == disk_id &&
file->state != msifs_installed &&
!strcmpiW( filename, file->File )) return file;
!wcsicmp( filename, file->File )) return file;
}
return NULL;
}
@ -670,7 +669,7 @@ static MSIFILEPATCH *find_filepatch( MSIPACKAGE *package, UINT disk_id, const WC
LIST_FOR_EACH_ENTRY( patch, &package->filepatches, MSIFILEPATCH, entry )
{
if (!patch->extracted && patch->disk_id == disk_id && !strcmpW( key, patch->File->File ))
if (!patch->extracted && patch->disk_id == disk_id && !wcscmp( key, patch->File->File ))
return patch;
}
return NULL;
@ -923,7 +922,7 @@ static WCHAR *wildcard_to_file( const WCHAR *wildcard, const WCHAR *filename )
WCHAR *path;
DWORD dirlen, pathlen;
ptr = strrchrW(wildcard, '\\');
ptr = wcsrchr(wildcard, '\\');
dirlen = ptr - wildcard + 1;
pathlen = dirlen + lstrlenW(filename) + 1;
@ -964,8 +963,8 @@ static BOOL add_wildcard( FILE_LIST *files, const WCHAR *source, WCHAR *dest )
return FALSE;
new->source = strdupW(source);
ptr = strrchrW(dest, '\\') + 1;
filename = strrchrW(new->source, '\\') + 1;
ptr = wcsrchr(dest, '\\') + 1;
filename = wcsrchr(new->source, '\\') + 1;
new->sourcename = filename;
@ -993,7 +992,7 @@ static BOOL add_wildcard( FILE_LIST *files, const WCHAR *source, WCHAR *dest )
LIST_FOR_EACH_ENTRY(file, &files->entry, FILE_LIST, entry)
{
if (strcmpW( source, file->source ) < 0)
if (wcscmp( source, file->source ) < 0)
{
list_add_before(&file->entry, &new->entry);
return TRUE;
@ -1039,7 +1038,7 @@ static BOOL move_files_wildcard( MSIPACKAGE *package, const WCHAR *source, WCHAR
/* only the first wildcard match gets renamed to dest */
file = LIST_ENTRY(list_head(&files.entry), FILE_LIST, entry);
size = (strrchrW(file->dest, '\\') - file->dest) + lstrlenW(file->destname) + 2;
size = (wcsrchr(file->dest, '\\') - file->dest) + lstrlenW(file->destname) + 2;
file->dest = msi_realloc(file->dest, size * sizeof(WCHAR));
if (!file->dest)
{
@ -1048,11 +1047,11 @@ static BOOL move_files_wildcard( MSIPACKAGE *package, const WCHAR *source, WCHAR
}
/* file->dest may be shorter after the reallocation, so add a NULL
* terminator. This is needed for the call to strrchrW, as there will no
* terminator. This is needed for the call to wcsrchr, as there will no
* longer be a NULL terminator within the bounds of the allocation in this case.
*/
file->dest[size - 1] = '\0';
lstrcpyW(strrchrW(file->dest, '\\') + 1, file->destname);
lstrcpyW(wcsrchr(file->dest, '\\') + 1, file->destname);
while (!list_empty(&files.entry))
{
@ -1074,8 +1073,8 @@ done:
void msi_reduce_to_long_filename( WCHAR *filename )
{
WCHAR *p = strchrW( filename, '|' );
if (p) memmove( filename, p + 1, (strlenW( p + 1 ) + 1) * sizeof(WCHAR) );
WCHAR *p = wcschr( filename, '|' );
if (p) memmove( filename, p + 1, (lstrlenW( p + 1 ) + 1) * sizeof(WCHAR) );
}
static UINT ITERATE_MoveFiles( MSIRECORD *rec, LPVOID param )
@ -1134,7 +1133,7 @@ static UINT ITERATE_MoveFiles( MSIRECORD *rec, LPVOID param )
lstrcatW(source, sourcename);
}
wildcards = strchrW(source, '*') || strchrW(source, '?');
wildcards = wcschr(source, '*') || wcschr(source, '?');
if (MSI_RecordIsNull(rec, 4))
{
@ -1143,7 +1142,7 @@ static UINT ITERATE_MoveFiles( MSIRECORD *rec, LPVOID param )
WCHAR *p;
if (sourcename)
destname = strdupW(sourcename);
else if ((p = strrchrW(sourcedir, '\\')))
else if ((p = wcsrchr(sourcedir, '\\')))
destname = strdupW(p + 1);
else
destname = strdupW(sourcedir);
@ -1231,9 +1230,9 @@ static WCHAR *get_duplicate_filename( MSIPACKAGE *package, MSIRECORD *row, const
if (MSI_RecordIsNull( row, 4 ))
{
len = strlenW( src ) + 1;
len = lstrlenW( src ) + 1;
if (!(dst_name = msi_alloc( len * sizeof(WCHAR)))) return NULL;
strcpyW( dst_name, strrchrW( src, '\\' ) + 1 );
lstrcpyW( dst_name, wcsrchr( src, '\\' ) + 1 );
}
else
{
@ -1247,7 +1246,7 @@ static WCHAR *get_duplicate_filename( MSIPACKAGE *package, MSIRECORD *row, const
{
WCHAR *p;
dst_path = strdupW( src );
p = strrchrW( dst_path, '\\' );
p = wcsrchr( dst_path, '\\' );
if (p) *p = 0;
}
else

View File

@ -25,7 +25,6 @@
#include "winreg.h"
#include "wine/debug.h"
#include "msipriv.h"
#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(msi);
@ -190,9 +189,9 @@ static WCHAR *font_name_from_file( MSIPACKAGE *package, const WCHAR *filename )
msi_free( name );
return NULL;
}
ret = msi_alloc( (strlenW( name ) + strlenW( truetypeW ) + 1 ) * sizeof(WCHAR) );
strcpyW( ret, name );
strcatW( ret, truetypeW );
ret = msi_alloc( (lstrlenW( name ) + lstrlenW( truetypeW ) + 1 ) * sizeof(WCHAR) );
lstrcpyW( ret, name );
lstrcatW( ret, truetypeW );
msi_free( name );
}
return ret;
@ -206,20 +205,20 @@ WCHAR *msi_get_font_file_version( MSIPACKAGE *package, const WCHAR *filename )
if ((version = load_ttf_name_id( package, filename, NAME_ID_VERSION )))
{
int len, major = 0, minor = 0;
if ((p = strchrW( version, ';' ))) *p = 0;
if ((p = wcschr( version, ';' ))) *p = 0;
p = version;
while (*p && !isdigitW( *p )) p++;
if ((q = strchrW( p, '.' )))
while (*p && !iswdigit( *p )) p++;
if ((q = wcschr( p, '.' )))
{
major = atoiW( p );
major = wcstol( p, NULL, 10 );
p = ++q;
while (*q && isdigitW( *q )) q++;
if (!*q || *q == ' ') minor = atoiW( p );
while (*q && iswdigit( *q )) q++;
if (!*q || *q == ' ') minor = wcstol( p, NULL, 10 );
else major = 0;
}
len = strlenW( fmtW ) + 20;
len = lstrlenW( fmtW ) + 20;
ret = msi_alloc( len * sizeof(WCHAR) );
sprintfW( ret, fmtW, major, minor );
swprintf( ret, len, fmtW, major, minor );
msi_free( version );
}
return ret;
@ -277,7 +276,7 @@ static UINT ITERATE_RegisterFonts(MSIRECORD *row, LPVOID param)
/* the UI chunk */
uirow = MSI_CreateRecord( 1 );
uipath = strdupW( file->TargetPath );
p = strrchrW(uipath,'\\');
p = wcsrchr(uipath,'\\');
if (p) p++;
else p = uipath;
MSI_RecordSetStringW( uirow, 1, p );
@ -360,7 +359,7 @@ static UINT ITERATE_UnregisterFonts( MSIRECORD *row, LPVOID param )
/* the UI chunk */
uirow = MSI_CreateRecord( 1 );
uipath = strdupW( file->TargetPath );
p = strrchrW( uipath,'\\' );
p = wcsrchr( uipath,'\\' );
if (p) p++;
else p = uipath;
MSI_RecordSetStringW( uirow, 1, p );

View File

@ -36,7 +36,6 @@
#include "msipriv.h"
#include "winemsi.h"
#include "wine/exception.h"
#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(msi);
@ -163,7 +162,7 @@ static WCHAR *deformat_index( FORMAT *format, FORMSTR *str, int *ret_len )
if (!(val = msi_alloc( (str->len + 1) * sizeof(WCHAR) ))) return NULL;
lstrcpynW(val, get_formstr_data(format, str), str->len + 1);
field = atoiW( val );
field = wcstol( val, NULL, 10 );
msi_free( val );
if (MSI_RecordIsNull( format->record, field ) ||
@ -222,7 +221,7 @@ static WCHAR *deformat_component( FORMAT *format, FORMSTR *str, int *ret_len )
else
ret = strdupW( msi_get_target_folder( format->package, comp->Directory ) );
if (ret) *ret_len = strlenW( ret );
if (ret) *ret_len = lstrlenW( ret );
else *ret_len = 0;
msi_free( key );
return ret;
@ -240,12 +239,12 @@ static WCHAR *deformat_file( FORMAT *format, FORMSTR *str, BOOL shortname, int *
if (!(file = msi_get_loaded_file( format->package, key ))) goto done;
if (!shortname)
{
if ((ret = strdupW( file->TargetPath ))) len = strlenW( ret );
if ((ret = strdupW( file->TargetPath ))) len = lstrlenW( ret );
goto done;
}
if (!(len = GetShortPathNameW(file->TargetPath, NULL, 0)))
{
if ((ret = strdupW( file->TargetPath ))) len = strlenW( ret );
if ((ret = strdupW( file->TargetPath ))) len = lstrlenW( ret );
goto done;
}
len++;
@ -352,14 +351,14 @@ static WCHAR *build_default_format( const MSIRECORD *record )
for (i = 1; i <= count; i++)
{
size += sprintfW( buf, fmt, i, i );
size += swprintf( buf, ARRAY_SIZE(buf), fmt, i, i );
if (!(tmp = msi_realloc( ret, size * sizeof(*ret) )))
{
msi_free( ret );
return NULL;
}
ret = tmp;
strcatW( ret, buf );
lstrcatW( ret, buf );
}
return ret;
}

View File

@ -24,7 +24,6 @@
#include "winbase.h"
#include "winerror.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "msi.h"
#include "msiquery.h"
#include "objbase.h"
@ -117,7 +116,7 @@ static BOOL msi_columns_in_order(MSIINSERTVIEW *iv, UINT col_count)
iv->sv->ops->get_column_info(iv->sv, i, &a, NULL, NULL, NULL);
iv->table->ops->get_column_info(iv->table, i, &b, NULL, NULL, NULL);
if (strcmpW( a, b )) return FALSE;
if (wcscmp( a, b )) return FALSE;
}
return TRUE;
}
@ -161,7 +160,7 @@ static UINT msi_arrange_record(MSIINSERTVIEW *iv, MSIRECORD **values)
if (r != ERROR_SUCCESS)
goto err;
if (!strcmpW( a, b ))
if (!wcscmp( a, b ))
{
MSI_RecordCopyField(*values, colidx, padded, i);
break;

View File

@ -37,7 +37,6 @@
#include "wine/heap.h"
#include "wine/debug.h"
#include "wine/exception.h"
#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(msi);
@ -166,7 +165,7 @@ UINT msi_strcpy_to_awstring( const WCHAR *str, int len, awstring *awbuf, DWORD *
if (!sz)
return ERROR_SUCCESS;
if (len < 0) len = strlenW( str );
if (len < 0) len = lstrlenW( str );
if (awbuf->unicode && awbuf->str.w)
{
@ -197,7 +196,7 @@ UINT msi_strncpyWtoA(const WCHAR *str, int lenW, char *buf, DWORD *sz, BOOL remo
if (!sz)
return buf ? ERROR_INVALID_PARAMETER : ERROR_SUCCESS;
if (lenW < 0) lenW = strlenW(str);
if (lenW < 0) lenW = lstrlenW(str);
lenA = WideCharToMultiByte(CP_ACP, 0, str, lenW + 1, NULL, 0, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, str, lenW + 1, buf, *sz, NULL, NULL);
lenA--;
@ -219,7 +218,7 @@ UINT msi_strncpyW(const WCHAR *str, int len, WCHAR *buf, DWORD *sz)
if (!sz)
return buf ? ERROR_INVALID_PARAMETER : ERROR_SUCCESS;
if (len < 0) len = strlenW(str);
if (len < 0) len = lstrlenW(str);
if (buf)
memcpy(buf, str, min(len + 1, *sz) * sizeof(WCHAR));
if (buf && len >= *sz)
@ -239,7 +238,7 @@ const WCHAR *msi_get_target_folder( MSIPACKAGE *package, const WCHAR *name )
if (!folder->ResolvedTarget)
{
MSIFOLDER *parent = folder;
while (parent->Parent && strcmpW( parent->Parent, parent->Directory ))
while (parent->Parent && wcscmp( parent->Parent, parent->Directory ))
{
parent = msi_get_loaded_folder( package, parent->Parent );
}
@ -370,11 +369,11 @@ WCHAR *msi_resolve_source_folder( MSIPACKAGE *package, const WCHAR *name, MSIFOL
TRACE("working to resolve %s\n", debugstr_w(name));
if (!strcmpW( name, szSourceDir )) name = szTargetDir;
if (!wcscmp( name, szSourceDir )) name = szTargetDir;
if (!(f = msi_get_loaded_folder( package, name ))) return NULL;
/* special resolving for root dir */
if (!strcmpW( name, szTargetDir ) && !f->ResolvedSource)
if (!wcscmp( name, szTargetDir ) && !f->ResolvedSource)
{
f->ResolvedSource = get_source_root( package );
}
@ -548,7 +547,7 @@ static void set_target_path( MSIPACKAGE *package, MSIFOLDER *folder, const WCHAR
WCHAR *target_path;
if (!(target_path = msi_normalize_path( path ))) return;
if (strcmpW( target_path, folder->ResolvedTarget ))
if (wcscmp( target_path, folder->ResolvedTarget ))
{
msi_free( folder->ResolvedTarget );
folder->ResolvedTarget = target_path;
@ -936,7 +935,7 @@ UINT MSI_SetFeatureStateW( MSIPACKAGE *package, LPCWSTR szFeature, INSTALLSTATE
/* update all the features that are children of this feature */
LIST_FOR_EACH_ENTRY( child, &package->features, MSIFEATURE, entry )
{
if (child->Feature_Parent && !strcmpW( szFeature, child->Feature_Parent ))
if (child->Feature_Parent && !wcscmp( szFeature, child->Feature_Parent ))
MSI_SetFeatureStateW(package, child->Feature, iState);
}
@ -1031,7 +1030,7 @@ UINT WINAPI MsiSetFeatureAttributesW( MSIHANDLE handle, LPCWSTR name, DWORD attr
return ERROR_INVALID_HANDLE;
costing = msi_dup_property( package->db, szCostingComplete );
if (!costing || !strcmpW( costing, szOne ))
if (!costing || !wcscmp( costing, szOne ))
{
msi_free( costing );
msiobj_release( &package->hdr );
@ -1318,7 +1317,7 @@ static UINT MSI_GetFeatureInfo( MSIPACKAGE *package, LPCWSTR name, LPDWORD attrs
if (attrs) *attrs = map_feature_attributes( feature->Attributes );
if (title_len)
{
if (feature->Title) len = strlenW( feature->Title );
if (feature->Title) len = lstrlenW( feature->Title );
else len = 0;
if (*title_len <= len)
{
@ -1327,14 +1326,14 @@ static UINT MSI_GetFeatureInfo( MSIPACKAGE *package, LPCWSTR name, LPDWORD attrs
}
else if (title)
{
if (feature->Title) strcpyW( title, feature->Title );
if (feature->Title) lstrcpyW( title, feature->Title );
else *title = 0;
*title_len = len;
}
}
if (help_len)
{
if (feature->Description) len = strlenW( feature->Description );
if (feature->Description) len = lstrlenW( feature->Description );
else len = 0;
if (*help_len <= len)
{
@ -1343,7 +1342,7 @@ static UINT MSI_GetFeatureInfo( MSIPACKAGE *package, LPCWSTR name, LPDWORD attrs
}
else if (help)
{
if (feature->Description) strcpyW( help, feature->Description );
if (feature->Description) lstrcpyW( help, feature->Description );
else *help = 0;
*help_len = len;
}
@ -1588,7 +1587,7 @@ UINT MSI_SetInstallLevel( MSIPACKAGE *package, int iInstallLevel )
if (iInstallLevel < 1)
return MSI_SetFeatureStates( package );
len = sprintfW( level, fmt, iInstallLevel );
len = swprintf( level, ARRAY_SIZE(level), fmt, iInstallLevel );
r = msi_set_property( package->db, szInstallLevel, level, len );
if ( r == ERROR_SUCCESS )
r = MSI_SetFeatureStates( package );

View File

@ -31,7 +31,6 @@
#include "winreg.h"
#include "shlwapi.h"
#include "objidl.h"
#include "wine/unicode.h"
#include "resource.h"
WINE_DEFAULT_DEBUG_CHANNEL(msi);
@ -59,7 +58,7 @@ static BOOL source_matches_volume(MSIMEDIAINFO *mi, LPCWSTR source_root)
const WCHAR *p;
int len, len2;
strcpyW(root, source_root);
lstrcpyW(root, source_root);
PathStripToRootW(root);
PathAddBackslashW(root);
@ -69,12 +68,12 @@ static BOOL source_matches_volume(MSIMEDIAINFO *mi, LPCWSTR source_root)
return FALSE;
}
len = strlenW( volume_name );
len2 = strlenW( mi->volume_label );
len = lstrlenW( volume_name );
len2 = lstrlenW( mi->volume_label );
if (len2 > len) return FALSE;
p = volume_name + len - len2;
return !strcmpiW( mi->volume_label, p );
return !wcsicmp( mi->volume_label, p );
}
static UINT msi_change_media(MSIPACKAGE *package, MSIMEDIAINFO *mi)
@ -309,10 +308,10 @@ static WCHAR *get_cabinet_filename(MSIMEDIAINFO *mi)
int len;
WCHAR *ret;
len = strlenW(mi->sourcedir) + strlenW(mi->cabinet) + 1;
len = lstrlenW(mi->sourcedir) + lstrlenW(mi->cabinet) + 1;
if (!(ret = msi_alloc(len * sizeof(WCHAR)))) return NULL;
strcpyW(ret, mi->sourcedir);
strcatW(ret, mi->cabinet);
lstrcpyW(ret, mi->sourcedir);
lstrcatW(ret, mi->cabinet);
return ret;
}
@ -342,7 +341,7 @@ static INT_PTR cabinet_next_cabinet(FDINOTIFICATIONTYPE fdint,
goto done;
}
if (strcmpiW( mi->cabinet, cab ))
if (wcsicmp( mi->cabinet, cab ))
{
char *next_cab;
ULONG length;
@ -467,8 +466,8 @@ static INT_PTR cabinet_copy_file(FDINOTIFICATIONTYPE fdint,
TRACE("file in use, scheduling rename operation\n");
if (!(tmppathW = strdupW( path ))) return ERROR_OUTOFMEMORY;
if ((p = strrchrW(tmppathW, '\\'))) *p = 0;
len = strlenW( tmppathW ) + 16;
if ((p = wcsrchr(tmppathW, '\\'))) *p = 0;
len = lstrlenW( tmppathW ) + 16;
if (!(tmpfileW = msi_alloc(len * sizeof(WCHAR))))
{
msi_free( tmppathW );
@ -671,7 +670,7 @@ static UINT get_drive_type(const WCHAR *path)
{
WCHAR root[MAX_PATH + 1];
strcpyW(root, path);
lstrcpyW(root, path);
PathStripToRootW(root);
PathAddBackslashW(root);
@ -681,7 +680,7 @@ static UINT get_drive_type(const WCHAR *path)
static WCHAR *get_base_url( MSIDATABASE *db )
{
WCHAR *p, *ret = NULL, *orig_db = msi_dup_property( db, szOriginalDatabase );
if (UrlIsW( orig_db, URLIS_URL ) && (ret = strdupW( orig_db )) && (p = strrchrW( ret, '/'))) p[1] = 0;
if (UrlIsW( orig_db, URLIS_URL ) && (ret = strdupW( orig_db )) && (p = wcsrchr( ret, '/'))) p[1] = 0;
msi_free( orig_db );
return ret;
}
@ -793,7 +792,7 @@ static UINT find_published_source(MSIPACKAGE *package, MSIMEDIAINFO *mi)
MSISOURCETYPE_NETWORK, index++,
volume, &volumesz) == ERROR_SUCCESS)
{
if (check_all || !strncmpiW(source, volume, strlenW(source)))
if (check_all || !wcsnicmp(source, volume, lstrlenW(source)))
{
lstrcpyW(cabinet_file, volume);
PathAddBackslashW(cabinet_file);
@ -832,11 +831,11 @@ static UINT find_published_source(MSIPACKAGE *package, MSIMEDIAINFO *mi)
mi->disk_id = id;
msi_free( mi->volume_label );
if (!(mi->volume_label = msi_alloc( ++volumesz * sizeof(WCHAR) ))) return ERROR_OUTOFMEMORY;
strcpyW( mi->volume_label, volume );
lstrcpyW( mi->volume_label, volume );
msi_free( mi->disk_prompt );
if (!(mi->disk_prompt = msi_alloc( ++promptsz * sizeof(WCHAR) ))) return ERROR_OUTOFMEMORY;
strcpyW( mi->disk_prompt, prompt );
lstrcpyW( mi->disk_prompt, prompt );
if (source_matches_volume(mi, source))
{
@ -875,20 +874,20 @@ UINT ready_media( MSIPACKAGE *package, BOOL compressed, MSIMEDIAINFO *mi )
WCHAR temppath[MAX_PATH], *p, *url;
msi_free( cabinet_file );
if (!(url = msi_alloc( (strlenW( base_url ) + strlenW( mi->cabinet ) + 1) * sizeof(WCHAR) )))
if (!(url = msi_alloc( (lstrlenW( base_url ) + lstrlenW( mi->cabinet ) + 1) * sizeof(WCHAR) )))
{
return ERROR_OUTOFMEMORY;
}
strcpyW( url, base_url );
strcatW( url, mi->cabinet );
lstrcpyW( url, base_url );
lstrcatW( url, mi->cabinet );
if ((rc = msi_download_file( url, temppath )) != ERROR_SUCCESS)
{
ERR("failed to download %s (%u)\n", debugstr_w(url), rc);
msi_free( url );
return rc;
}
if ((p = strrchrW( temppath, '\\' ))) *p = 0;
strcpyW( mi->sourcedir, temppath );
if ((p = wcsrchr( temppath, '\\' ))) *p = 0;
lstrcpyW( mi->sourcedir, temppath );
PathAddBackslashW( mi->sourcedir );
msi_free( mi->cabinet );
mi->cabinet = strdupW( p + 1 );
@ -901,7 +900,7 @@ UINT ready_media( MSIPACKAGE *package, BOOL compressed, MSIMEDIAINFO *mi )
if (mi->volume_label)
{
/* assume first volume is in the drive */
if (mi->last_volume && strcmpiW( mi->last_volume, mi->volume_label ))
if (mi->last_volume && wcsicmp( mi->last_volume, mi->volume_label ))
{
WCHAR *source = msi_dup_property( package->db, szSourceDir );
BOOL match = source_matches_volume( mi, source );
@ -951,12 +950,12 @@ UINT msi_add_cabinet_stream( MSIPACKAGE *package, UINT disk_id, IStorage *storag
}
}
if (!(cab = msi_alloc( sizeof(*cab) ))) return ERROR_OUTOFMEMORY;
if (!(cab->stream = msi_alloc( (strlenW( name ) + 1) * sizeof(WCHAR ) )))
if (!(cab->stream = msi_alloc( (lstrlenW( name ) + 1) * sizeof(WCHAR ) )))
{
msi_free( cab );
return ERROR_OUTOFMEMORY;
}
strcpyW( cab->stream, name );
lstrcpyW( cab->stream, name );
cab->disk_id = disk_id;
cab->storage = storage;
IStorage_AddRef( storage );

View File

@ -48,7 +48,6 @@
#include "wine/debug.h"
#include "wine/exception.h"
#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(msi);
@ -387,14 +386,14 @@ static UINT MSI_ApplyPatchW(LPCWSTR szPatchPackage, LPCWSTR szProductCode, LPCWS
if (!szCommandLine)
cmd_ptr = empty;
size = strlenW(cmd_ptr) + strlenW(fmt) + strlenW(szPatchPackage) + 1;
size = lstrlenW(cmd_ptr) + lstrlenW(fmt) + lstrlenW(szPatchPackage) + 1;
cmd = msi_alloc(size * sizeof(WCHAR));
if (!cmd)
{
msi_free(codes);
return ERROR_OUTOFMEMORY;
}
sprintfW(cmd, fmt, cmd_ptr, szPatchPackage);
swprintf(cmd, size, fmt, cmd_ptr, szPatchPackage);
if (szProductCode)
r = MsiConfigureProductExW(szProductCode, INSTALLLEVEL_DEFAULT, INSTALLSTATE_DEFAULT, cmd);
@ -632,7 +631,7 @@ static UINT MSI_ApplicablePatchXML( MSIPACKAGE *package, IXMLDOMDocument *desc )
IXMLDOMNode_Release( node );
if (hr == S_OK)
{
if (!strcmpW( s, product_code )) r = ERROR_SUCCESS;
if (!wcscmp( s, product_code )) r = ERROR_SUCCESS;
SysFreeString( s );
}
}
@ -809,7 +808,7 @@ static UINT open_package( const WCHAR *product, const WCHAR *usersid,
if ((localpath = msi_reg_get_val_str( props, szLocalPackage )))
{
strcpyW( sourcepath, localpath );
lstrcpyW( sourcepath, localpath );
msi_free( localpath );
}
RegCloseKey( props );
@ -821,7 +820,7 @@ static UINT open_package( const WCHAR *product, const WCHAR *usersid,
sz = sizeof(filename);
MsiSourceListGetInfoW( product, usersid, context, MSICODE_PRODUCT,
INSTALLPROPERTY_PACKAGENAMEW, filename, &sz );
strcatW( sourcepath, filename );
lstrcatW( sourcepath, filename );
}
if (GetFileAttributesW( sourcepath ) == INVALID_FILE_ATTRIBUTES)
return ERROR_INSTALL_SOURCE_ABSENT;
@ -929,7 +928,7 @@ UINT WINAPI MsiConfigureProductExW(LPCWSTR szProduct, int iInstallLevel,
MsiSourceListGetInfoW(szProduct, NULL, context, MSICODE_PRODUCT,
INSTALLPROPERTY_PACKAGENAMEW, filename, &sz);
strcatW(sourcepath, filename);
lstrcatW(sourcepath, filename);
r = MSI_InstallPackage( package, sourcepath, commandline );
@ -1106,7 +1105,7 @@ static WCHAR *reg_get_value( HKEY hkey, const WCHAR *name, DWORD *type )
DWORD val;
if (!msi_reg_get_val_dword( hkey, name, &val )) return NULL;
sprintfW( temp, fmt, val );
swprintf( temp, ARRAY_SIZE(temp), fmt, val );
return strdupW( temp );
}
@ -1152,22 +1151,22 @@ static UINT MSI_GetProductInfo(LPCWSTR szProduct, LPCWSTR szAttribute,
context = MSIINSTALLCONTEXT_MACHINE;
}
if (!strcmpW( szAttribute, INSTALLPROPERTY_HELPLINKW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_HELPTELEPHONEW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_INSTALLDATEW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_INSTALLEDPRODUCTNAMEW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_INSTALLLOCATIONW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_INSTALLSOURCEW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_LOCALPACKAGEW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_PUBLISHERW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_URLINFOABOUTW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_URLUPDATEINFOW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_VERSIONMINORW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_VERSIONMAJORW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_VERSIONSTRINGW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_PRODUCTIDW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_REGCOMPANYW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_REGOWNERW ))
if (!wcscmp( szAttribute, INSTALLPROPERTY_HELPLINKW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_HELPTELEPHONEW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_INSTALLDATEW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_INSTALLEDPRODUCTNAMEW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_INSTALLLOCATIONW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_INSTALLSOURCEW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_LOCALPACKAGEW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_PUBLISHERW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_URLINFOABOUTW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_URLUPDATEINFOW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_VERSIONMINORW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_VERSIONMAJORW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_VERSIONSTRINGW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_PRODUCTIDW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_REGCOMPANYW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_REGOWNERW ))
{
if (!prodkey)
{
@ -1180,9 +1179,9 @@ static UINT MSI_GetProductInfo(LPCWSTR szProduct, LPCWSTR szAttribute,
goto done;
}
if (!strcmpW( szAttribute, INSTALLPROPERTY_INSTALLEDPRODUCTNAMEW ))
if (!wcscmp( szAttribute, INSTALLPROPERTY_INSTALLEDPRODUCTNAMEW ))
szAttribute = display_name;
else if (!strcmpW( szAttribute, INSTALLPROPERTY_VERSIONSTRINGW ))
else if (!wcscmp( szAttribute, INSTALLPROPERTY_VERSIONSTRINGW ))
szAttribute = display_version;
val = reg_get_value(userdata, szAttribute, &type);
@ -1190,16 +1189,16 @@ static UINT MSI_GetProductInfo(LPCWSTR szProduct, LPCWSTR szAttribute,
val = empty;
RegCloseKey(userdata);
}
else if (!strcmpW( szAttribute, INSTALLPROPERTY_INSTANCETYPEW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_TRANSFORMSW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_LANGUAGEW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_PRODUCTNAMEW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_ASSIGNMENTTYPEW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_PACKAGECODEW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_VERSIONW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_PRODUCTICONW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_PACKAGENAMEW ) ||
!strcmpW( szAttribute, INSTALLPROPERTY_AUTHORIZED_LUA_APPW ))
else if (!wcscmp( szAttribute, INSTALLPROPERTY_INSTANCETYPEW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_TRANSFORMSW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_LANGUAGEW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_PRODUCTNAMEW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_ASSIGNMENTTYPEW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_PACKAGECODEW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_VERSIONW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_PRODUCTICONW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_PACKAGENAMEW ) ||
!wcscmp( szAttribute, INSTALLPROPERTY_AUTHORIZED_LUA_APPW ))
{
if (!prodkey)
{
@ -1207,10 +1206,10 @@ static UINT MSI_GetProductInfo(LPCWSTR szProduct, LPCWSTR szAttribute,
goto done;
}
if (!strcmpW( szAttribute, INSTALLPROPERTY_ASSIGNMENTTYPEW ))
if (!wcscmp( szAttribute, INSTALLPROPERTY_ASSIGNMENTTYPEW ))
szAttribute = assignment;
if (!strcmpW( szAttribute, INSTALLPROPERTY_PACKAGENAMEW ))
if (!wcscmp( szAttribute, INSTALLPROPERTY_PACKAGENAMEW ))
{
res = RegOpenKeyW(prodkey, sourcelist, &source);
if (res != ERROR_SUCCESS)
@ -1233,7 +1232,7 @@ static UINT MSI_GetProductInfo(LPCWSTR szProduct, LPCWSTR szAttribute,
}
if (val != empty && type != REG_DWORD &&
!strcmpW( szAttribute, INSTALLPROPERTY_PACKAGECODEW ))
!wcscmp( szAttribute, INSTALLPROPERTY_PACKAGECODEW ))
{
if (lstrlenW( val ) != SQUASHED_GUID_SIZE - 1)
badconfig = TRUE;
@ -1254,7 +1253,7 @@ static UINT MSI_GetProductInfo(LPCWSTR szProduct, LPCWSTR szAttribute,
if (pcchValueBuf)
{
int len = strlenW( val );
int len = lstrlenW( val );
/* If szBuffer (szValue->str) is NULL, there's no need to copy the value
* out. Also, *pcchValueBuf may be uninitialized in this case, so we
@ -1405,7 +1404,7 @@ static UINT msi_copy_outval(LPWSTR val, LPWSTR out, LPDWORD size)
if (out)
{
if (strlenW(val) >= *size)
if (lstrlenW(val) >= *size)
{
r = ERROR_MORE_DATA;
if (*size > 0)
@ -1491,23 +1490,23 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid,
goto done;
}
if (!strcmpW( szProperty, INSTALLPROPERTY_HELPLINKW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_HELPTELEPHONEW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_INSTALLDATEW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_INSTALLEDPRODUCTNAMEW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_INSTALLLOCATIONW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_INSTALLSOURCEW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_LOCALPACKAGEW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_PUBLISHERW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_URLINFOABOUTW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_URLUPDATEINFOW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_VERSIONMINORW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_VERSIONMAJORW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_VERSIONSTRINGW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_PRODUCTIDW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_REGCOMPANYW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_REGOWNERW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_INSTANCETYPEW ))
if (!wcscmp( szProperty, INSTALLPROPERTY_HELPLINKW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_HELPTELEPHONEW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_INSTALLDATEW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_INSTALLEDPRODUCTNAMEW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_INSTALLLOCATIONW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_INSTALLSOURCEW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_LOCALPACKAGEW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_PUBLISHERW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_URLINFOABOUTW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_URLUPDATEINFOW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_VERSIONMINORW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_VERSIONMAJORW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_VERSIONSTRINGW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_PRODUCTIDW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_REGCOMPANYW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_REGOWNERW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_INSTANCETYPEW ))
{
val = reg_get_value(props, package, &type);
if (!val)
@ -1520,9 +1519,9 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid,
msi_free(val);
if (!strcmpW( szProperty, INSTALLPROPERTY_INSTALLEDPRODUCTNAMEW ))
if (!wcscmp( szProperty, INSTALLPROPERTY_INSTALLEDPRODUCTNAMEW ))
szProperty = displayname;
else if (!strcmpW( szProperty, INSTALLPROPERTY_VERSIONSTRINGW ))
else if (!wcscmp( szProperty, INSTALLPROPERTY_VERSIONSTRINGW ))
szProperty = displayversion;
val = reg_get_value(props, szProperty, &type);
@ -1531,14 +1530,14 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid,
r = msi_copy_outval(val, szValue, pcchValue);
}
else if (!strcmpW( szProperty, INSTALLPROPERTY_TRANSFORMSW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_LANGUAGEW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_PRODUCTNAMEW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_PACKAGECODEW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_VERSIONW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_PRODUCTICONW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_PACKAGENAMEW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_AUTHORIZED_LUA_APPW ))
else if (!wcscmp( szProperty, INSTALLPROPERTY_TRANSFORMSW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_LANGUAGEW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_PRODUCTNAMEW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_PACKAGECODEW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_VERSIONW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_PRODUCTICONW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_PACKAGENAMEW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_AUTHORIZED_LUA_APPW ))
{
if (!prod && !classes)
goto done;
@ -1556,7 +1555,7 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid,
r = msi_copy_outval(val, szValue, pcchValue);
}
else if (!strcmpW( szProperty, INSTALLPROPERTY_PRODUCTSTATEW ))
else if (!wcscmp( szProperty, INSTALLPROPERTY_PRODUCTSTATEW ))
{
if (dwContext == MSIINSTALLCONTEXT_MACHINE)
{
@ -1590,7 +1589,7 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid,
r = msi_copy_outval(val, szValue, pcchValue);
}
else if (!strcmpW( szProperty, INSTALLPROPERTY_ASSIGNMENTTYPEW ))
else if (!wcscmp( szProperty, INSTALLPROPERTY_ASSIGNMENTTYPEW ))
{
if (!prod && !classes)
goto done;
@ -1734,7 +1733,7 @@ UINT WINAPI MsiGetPatchInfoExW(LPCWSTR szPatchCode, LPCWSTR szProductCode,
if (dwContext == MSIINSTALLCONTEXT_MACHINE && szUserSid)
return ERROR_INVALID_PARAMETER;
if (szUserSid && !strcmpW( szUserSid, szLocalSid ))
if (szUserSid && !wcscmp( szUserSid, szLocalSid ))
return ERROR_INVALID_PARAMETER;
if (MSIREG_OpenUserDataProductKey(szProductCode, dwContext, NULL,
@ -1755,7 +1754,7 @@ UINT WINAPI MsiGetPatchInfoExW(LPCWSTR szPatchCode, LPCWSTR szProductCode,
if (res != ERROR_SUCCESS)
goto done;
if (!strcmpW( szProperty, INSTALLPROPERTY_TRANSFORMSW ))
if (!wcscmp( szProperty, INSTALLPROPERTY_TRANSFORMSW ))
{
if (MSIREG_OpenProductKey(szProductCode, NULL, dwContext,
&prod, FALSE) != ERROR_SUCCESS)
@ -1774,21 +1773,21 @@ UINT WINAPI MsiGetPatchInfoExW(LPCWSTR szPatchCode, LPCWSTR szProductCode,
&udpatch, FALSE) != ERROR_SUCCESS)
goto done;
if (!strcmpW( szProperty, INSTALLPROPERTY_LOCALPACKAGEW ))
if (!wcscmp( szProperty, INSTALLPROPERTY_LOCALPACKAGEW ))
{
if (dwContext == MSIINSTALLCONTEXT_USERMANAGED)
szProperty = szManagedPackage;
datakey = udpatch;
}
else if (!strcmpW( szProperty, INSTALLPROPERTY_INSTALLDATEW ))
else if (!wcscmp( szProperty, INSTALLPROPERTY_INSTALLDATEW ))
{
datakey = patch;
szProperty = szInstalled;
}
else if (!strcmpW( szProperty, INSTALLPROPERTY_UNINSTALLABLEW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_PATCHSTATEW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_DISPLAYNAMEW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_MOREINFOURLW ))
else if (!wcscmp( szProperty, INSTALLPROPERTY_UNINSTALLABLEW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_PATCHSTATEW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_DISPLAYNAMEW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_MOREINFOURLW ))
{
datakey = patch;
}
@ -1894,7 +1893,7 @@ UINT WINAPI MsiGetPatchInfoW( LPCWSTR patch, LPCWSTR attr, LPWSTR buffer, LPDWOR
if (!patch || !attr)
return ERROR_INVALID_PARAMETER;
if (strcmpW( INSTALLPROPERTY_LOCALPACKAGEW, attr ))
if (wcscmp( INSTALLPROPERTY_LOCALPACKAGEW, attr ))
return ERROR_UNKNOWN_PROPERTY;
index = 0;
@ -2832,7 +2831,7 @@ static BOOL open_userdata_comp_key( const WCHAR *comp, const WCHAR *usersid, MSI
}
if (ctx & (MSIINSTALLCONTEXT_USERMANAGED|MSIINSTALLCONTEXT_USERUNMANAGED))
{
if (usersid && !strcmpiW( usersid, szAllSid ))
if (usersid && !wcsicmp( usersid, szAllSid ))
{
FIXME( "only looking at the current user\n" );
usersid = NULL;
@ -3039,7 +3038,7 @@ static UINT query_feature_state( const WCHAR *product, const WCHAR *squashed, co
}
path = msi_reg_get_val_str( hkey, squashed );
if (!path) missing = TRUE;
else if (strlenW( path ) > 2 &&
else if (lstrlenW( path ) > 2 &&
path[0] >= '0' && path[0] <= '9' &&
path[1] >= '0' && path[1] <= '9')
{
@ -3245,11 +3244,11 @@ static UINT get_file_version( const WCHAR *path, WCHAR *verbuf, DWORD *verlen,
{
if (VerQueryValueW( version, szVersionResource, (LPVOID *)&ffi, &len ) && len > 0)
{
sprintfW( tmp, szVersionFormat,
swprintf( tmp, ARRAY_SIZE(tmp), szVersionFormat,
HIWORD(ffi->dwFileVersionMS), LOWORD(ffi->dwFileVersionMS),
HIWORD(ffi->dwFileVersionLS), LOWORD(ffi->dwFileVersionLS) );
if (verbuf) lstrcpynW( verbuf, tmp, *verlen );
len = strlenW( tmp );
len = lstrlenW( tmp );
if (*verlen > len) ret = ERROR_SUCCESS;
*verlen = len;
}
@ -3263,9 +3262,9 @@ static UINT get_file_version( const WCHAR *path, WCHAR *verbuf, DWORD *verlen,
{
if (VerQueryValueW( version, szLangResource, (LPVOID *)&lang, &len ) && len > 0)
{
sprintfW( tmp, szLangFormat, *lang );
swprintf( tmp, ARRAY_SIZE(tmp), szLangFormat, *lang );
if (langbuf) lstrcpynW( langbuf, tmp, *langlen );
len = strlenW( tmp );
len = lstrlenW( tmp );
if (*langlen > len) ret = ERROR_SUCCESS;
*langlen = len;
}
@ -3300,11 +3299,11 @@ UINT WINAPI MsiGetFileVersionW( LPCWSTR path, LPWSTR verbuf, LPDWORD verlen,
int len;
WCHAR *version = msi_get_font_file_version( NULL, path );
if (!version) return ERROR_FILE_INVALID;
len = strlenW( version );
len = lstrlenW( version );
if (len >= *verlen) ret = ERROR_MORE_DATA;
else if (verbuf)
{
strcpyW( verbuf, version );
lstrcpyW( verbuf, version );
ret = ERROR_SUCCESS;
}
*verlen = len;
@ -3486,7 +3485,7 @@ static UINT MSI_ProvideQualifiedComponentEx(LPCWSTR szComponent,
RegCloseKey( hkey );
if (!components) return ERROR_FILE_NOT_FOUND;
if (strlenW( components ) < BASE85_SIZE || !decode_base85_guid( components, &guid ))
if (lstrlenW( components ) < BASE85_SIZE || !decode_base85_guid( components, &guid ))
{
msi_free( components );
return ERROR_FILE_NOT_FOUND;
@ -4049,7 +4048,7 @@ UINT WINAPI MsiReinstallFeatureW( LPCWSTR szProduct, LPCWSTR szFeature, DWORD dw
sz = sizeof(filename);
MsiSourceListGetInfoW( szProduct, NULL, context, MSICODE_PRODUCT,
INSTALLPROPERTY_PACKAGENAMEW, filename, &sz );
strcatW( sourcepath, filename );
lstrcatW( sourcepath, filename );
if (dwReinstallMode & REINSTALLMODE_PACKAGE)
r = MSI_OpenPackageW( sourcepath, 0, &package );
@ -4059,14 +4058,14 @@ UINT WINAPI MsiReinstallFeatureW( LPCWSTR szProduct, LPCWSTR szFeature, DWORD dw
if (r != ERROR_SUCCESS)
return r;
sz = (strlenW( fmtW ) + strlenW( szReinstallMode ) + strlenW( reinstallmode )) * sizeof(WCHAR);
sz += (strlenW( szReinstall ) + strlenW( szFeature )) * sizeof(WCHAR);
sz = (lstrlenW( fmtW ) + lstrlenW( szReinstallMode ) + lstrlenW( reinstallmode )) * sizeof(WCHAR);
sz += (lstrlenW( szReinstall ) + lstrlenW( szFeature )) * sizeof(WCHAR);
if (!(cmdline = msi_alloc( sz )))
{
msiobj_release( &package->hdr );
return ERROR_OUTOFMEMORY;
}
sprintfW( cmdline, fmtW, szReinstallMode, reinstallmode, szReinstall, szFeature );
swprintf( cmdline, sz / sizeof(WCHAR), fmtW, szReinstallMode, reinstallmode, szReinstall, szFeature );
r = MSI_InstallPackage( package, sourcepath, cmdline );
msiobj_release( &package->hdr );

View File

@ -852,10 +852,10 @@ extern BOOL decode_streamname(LPCWSTR in, LPWSTR out) DECLSPEC_HIDDEN;
extern UINT msi_get_stream( MSIDATABASE *, const WCHAR *, IStream ** ) DECLSPEC_HIDDEN;
extern UINT MSI_OpenDatabaseW( LPCWSTR, LPCWSTR, MSIDATABASE ** ) DECLSPEC_HIDDEN;
extern UINT MSI_DatabaseOpenViewW(MSIDATABASE *, LPCWSTR, MSIQUERY ** ) DECLSPEC_HIDDEN;
extern UINT MSI_OpenQuery( MSIDATABASE *, MSIQUERY **, LPCWSTR, ... ) DECLSPEC_HIDDEN;
extern UINT WINAPIV MSI_OpenQuery( MSIDATABASE *, MSIQUERY **, LPCWSTR, ... ) DECLSPEC_HIDDEN;
typedef UINT (*record_func)( MSIRECORD *, LPVOID );
extern UINT MSI_IterateRecords( MSIQUERY *, LPDWORD, record_func, LPVOID ) DECLSPEC_HIDDEN;
extern MSIRECORD *MSI_QueryGetRecord( MSIDATABASE *db, LPCWSTR query, ... ) DECLSPEC_HIDDEN;
extern MSIRECORD * WINAPIV MSI_QueryGetRecord( MSIDATABASE *db, LPCWSTR query, ... ) DECLSPEC_HIDDEN;
extern UINT MSI_DatabaseGetPrimaryKeys( MSIDATABASE *, LPCWSTR, MSIRECORD ** ) DECLSPEC_HIDDEN;
/* view internals */

View File

@ -27,7 +27,6 @@
#include "winerror.h"
#include "wine/debug.h"
#include "wine/exception.h"
#include "wine/unicode.h"
#include "msi.h"
#include "msiquery.h"
#include "objbase.h"
@ -74,9 +73,9 @@ UINT VIEW_find_column( MSIVIEW *table, LPCWSTR name, LPCWSTR table_name, UINT *n
NULL, &haystack_table_name );
if( r != ERROR_SUCCESS )
return r;
x = strcmpW( name, col_name );
x = wcscmp( name, col_name );
if( table_name )
x |= strcmpW( table_name, haystack_table_name );
x |= wcscmp( table_name, haystack_table_name );
if( !x )
{
*n = i;
@ -138,7 +137,7 @@ UINT MSI_DatabaseOpenViewW(MSIDATABASE *db,
return r;
}
UINT MSI_OpenQuery( MSIDATABASE *db, MSIQUERY **view, LPCWSTR fmt, ... )
UINT WINAPIV MSI_OpenQuery( MSIDATABASE *db, MSIQUERY **view, LPCWSTR fmt, ... )
{
UINT r;
int size = 100, res;
@ -147,11 +146,11 @@ UINT MSI_OpenQuery( MSIDATABASE *db, MSIQUERY **view, LPCWSTR fmt, ... )
/* construct the string */
for (;;)
{
va_list va;
__ms_va_list va;
query = msi_alloc( size*sizeof(WCHAR) );
va_start(va, fmt);
res = vsnprintfW(query, size, fmt, va);
va_end(va);
__ms_va_start(va, fmt);
res = vswprintf(query, size, fmt, va);
__ms_va_end(va);
if (res == -1) size *= 2;
else if (res >= size) size = res + 1;
else break;
@ -201,7 +200,7 @@ UINT MSI_IterateRecords( MSIQUERY *view, LPDWORD count,
}
/* return a single record from a query */
MSIRECORD *MSI_QueryGetRecord( MSIDATABASE *db, LPCWSTR fmt, ... )
MSIRECORD * WINAPIV MSI_QueryGetRecord( MSIDATABASE *db, LPCWSTR fmt, ... )
{
MSIRECORD *rec = NULL;
MSIQUERY *view = NULL;
@ -212,11 +211,11 @@ MSIRECORD *MSI_QueryGetRecord( MSIDATABASE *db, LPCWSTR fmt, ... )
/* construct the string */
for (;;)
{
va_list va;
__ms_va_list va;
query = msi_alloc( size*sizeof(WCHAR) );
va_start(va, fmt);
res = vsnprintfW(query, size, fmt, va);
va_end(va);
__ms_va_start(va, fmt);
res = vswprintf(query, size, fmt, va);
__ms_va_end(va);
if (res == -1) size *= 2;
else if (res >= size) size = res + 1;
else break;
@ -592,7 +591,7 @@ static UINT msi_set_record_type_string( MSIRECORD *rec, UINT field,
if (type & MSITYPE_NULLABLE)
szType[0] &= ~0x20;
sprintfW( &szType[1], fmt, (type&0xff) );
swprintf( &szType[1], ARRAY_SIZE(szType) - 1, fmt, (type&0xff) );
TRACE("type %04x -> %s\n", type, debugstr_w(szType) );

View File

@ -45,7 +45,6 @@
#include "wine/heap.h"
#include "wine/debug.h"
#include "wine/exception.h"
#include "wine/unicode.h"
#include "msipriv.h"
#include "winemsi.h"
@ -563,12 +562,12 @@ static LPWSTR get_fusion_filename(MSIPACKAGE *package)
size = ARRAY_SIZE(path);
if (!RegQueryValueExW(hkey, installpath, NULL, &type, (BYTE *)path, &size))
{
len = strlenW(path) + strlenW(fusion) + 2;
len = lstrlenW(path) + lstrlenW(fusion) + 2;
if (!(filename = msi_alloc(len * sizeof(WCHAR)))) return NULL;
strcpyW(filename, path);
strcatW(filename, szBackSlash);
strcatW(filename, fusion);
lstrcpyW(filename, path);
lstrcatW(filename, szBackSlash);
lstrcatW(filename, fusion);
if (GetFileAttributesW(filename) != INVALID_FILE_ATTRIBUTES)
{
TRACE( "found %s\n", debugstr_w(filename) );
@ -584,15 +583,15 @@ static LPWSTR get_fusion_filename(MSIPACKAGE *package)
{
RegCloseKey(hkey);
GetWindowsDirectoryW(windir, MAX_PATH);
len = strlenW(windir) + strlenW(subdir) + strlenW(v2050727) + strlenW(fusion) + 3;
len = lstrlenW(windir) + lstrlenW(subdir) + lstrlenW(v2050727) + lstrlenW(fusion) + 3;
if (!(filename = msi_alloc(len * sizeof(WCHAR)))) return NULL;
strcpyW(filename, windir);
strcatW(filename, szBackSlash);
strcatW(filename, subdir);
strcatW(filename, v2050727);
strcatW(filename, szBackSlash);
strcatW(filename, fusion);
lstrcpyW(filename, windir);
lstrcatW(filename, szBackSlash);
lstrcatW(filename, subdir);
lstrcatW(filename, v2050727);
lstrcatW(filename, szBackSlash);
lstrcatW(filename, fusion);
if (GetFileAttributesW(filename) != INVALID_FILE_ATTRIBUTES)
{
TRACE( "found %s\n", debugstr_w(filename) );
@ -651,7 +650,7 @@ static void set_msi_assembly_prop(MSIPACKAGE *package)
if (!VerQueryValueW(version, translation, (LPVOID *)&translate, &val_len))
goto done;
sprintfW(buf, verfmt, translate[0].wLanguage, translate[0].wCodePage);
swprintf(buf, ARRAY_SIZE(buf), verfmt, translate[0].wLanguage, translate[0].wCodePage);
if (!VerQueryValueW(version, buf, (LPVOID *)&verstr, &val_len))
goto done;
@ -765,91 +764,91 @@ static VOID set_installer_properties(MSIPACKAGE *package)
*/
SHGetFolderPathW(NULL, CSIDL_COMMON_APPDATA, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szCommonAppDataFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_FAVORITES, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szFavoritesFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_FONTS, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szFontsFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_SENDTO, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szSendToFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_STARTMENU, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szStartMenuFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_STARTUP, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szStartupFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_TEMPLATES, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szTemplateFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_DESKTOP, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szDesktopFolder, pth, -1 );
/* FIXME: set to AllUsers profile path if ALLUSERS is set */
SHGetFolderPathW(NULL, CSIDL_PROGRAMS, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szProgramMenuFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_ADMINTOOLS, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szAdminToolsFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szAppDataFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_SYSTEM, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szSystemFolder, pth, -1 );
msi_set_property( package->db, szSystem16Folder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_LOCAL_APPDATA, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szLocalAppDataFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_MYPICTURES, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szMyPicturesFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_PERSONAL, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szPersonalFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_WINDOWS, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szWindowsFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_PRINTHOOD, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szPrintHoodFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_NETHOOD, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szNetHoodFolder, pth, -1 );
SHGetFolderPathW(NULL, CSIDL_RECENT, NULL, 0, pth);
strcatW(pth, szBackSlash);
lstrcatW(pth, szBackSlash);
msi_set_property( package->db, szRecentFolder, pth, -1 );
/* Physical Memory is specified in MB. Using total amount. */
msex.dwLength = sizeof(msex);
GlobalMemoryStatusEx( &msex );
len = sprintfW( bufstr, szIntFormat, (int)(msex.ullTotalPhys / 1024 / 1024) );
len = swprintf( bufstr, ARRAY_SIZE(bufstr), szIntFormat, (int)(msex.ullTotalPhys / 1024 / 1024) );
msi_set_property( package->db, szPhysicalMemory, bufstr, len );
SHGetFolderPathW(NULL, CSIDL_WINDOWS, NULL, 0, pth);
ptr = strchrW(pth,'\\');
ptr = wcschr(pth,'\\');
if (ptr) *(ptr + 1) = 0;
msi_set_property( package->db, szWindowsVolume, pth, -1 );
@ -864,7 +863,7 @@ static VOID set_installer_properties(MSIPACKAGE *package)
OSVersion.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXW);
GetVersionExW((OSVERSIONINFOW *)&OSVersion);
verval = OSVersion.dwMinorVersion + OSVersion.dwMajorVersion * 100;
len = sprintfW( verstr, szFormat, verval );
len = swprintf( verstr, ARRAY_SIZE(verstr), szFormat, verval );
switch (OSVersion.dwPlatformId)
{
case VER_PLATFORM_WIN32_WINDOWS:
@ -872,25 +871,25 @@ static VOID set_installer_properties(MSIPACKAGE *package)
break;
case VER_PLATFORM_WIN32_NT:
msi_set_property( package->db, szVersionNT, verstr, len );
len = sprintfW( bufstr, szFormat,OSVersion.wProductType );
len = swprintf( bufstr, ARRAY_SIZE(bufstr), szFormat,OSVersion.wProductType );
msi_set_property( package->db, szMsiNTProductType, bufstr, len );
break;
}
len = sprintfW( bufstr, szFormat, OSVersion.dwBuildNumber );
len = swprintf( bufstr, ARRAY_SIZE(bufstr), szFormat, OSVersion.dwBuildNumber );
msi_set_property( package->db, szWindowsBuild, bufstr, len );
len = sprintfW( bufstr, szFormat, OSVersion.wServicePackMajor );
len = swprintf( bufstr, ARRAY_SIZE(bufstr), szFormat, OSVersion.wServicePackMajor );
msi_set_property( package->db, szServicePackLevel, bufstr, len );
len = sprintfW( bufstr, szFormat2, MSI_MAJORVERSION, MSI_MINORVERSION );
len = swprintf( bufstr, ARRAY_SIZE(bufstr), szFormat2, MSI_MAJORVERSION, MSI_MINORVERSION );
msi_set_property( package->db, szVersionMsi, bufstr, len );
len = sprintfW( bufstr, szFormat, MSI_MAJORVERSION * 100 );
len = swprintf( bufstr, ARRAY_SIZE(bufstr), szFormat, MSI_MAJORVERSION * 100 );
msi_set_property( package->db, szVersionDatabase, bufstr, len );
RegOpenKeyExW(HKEY_LOCAL_MACHINE, szCurrentVersion, 0,
KEY_QUERY_VALUE | KEY_WOW64_64KEY, &hkey);
GetNativeSystemInfo( &sys_info );
len = sprintfW( bufstr, szIntFormat, sys_info.wProcessorLevel );
len = swprintf( bufstr, ARRAY_SIZE(bufstr), szIntFormat, sys_info.wProcessorLevel );
msi_set_property( package->db, szIntel, bufstr, len );
if (sys_info.u.s.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL)
{
@ -947,11 +946,11 @@ static VOID set_installer_properties(MSIPACKAGE *package)
/* Screen properties. */
dc = GetDC(0);
len = sprintfW( bufstr, szIntFormat, GetDeviceCaps(dc, HORZRES) );
len = swprintf( bufstr, ARRAY_SIZE(bufstr), szIntFormat, GetDeviceCaps(dc, HORZRES) );
msi_set_property( package->db, szScreenX, bufstr, len );
len = sprintfW( bufstr, szIntFormat, GetDeviceCaps(dc, VERTRES) );
len = swprintf( bufstr, ARRAY_SIZE(bufstr), szIntFormat, GetDeviceCaps(dc, VERTRES) );
msi_set_property( package->db, szScreenY, bufstr, len );
len = sprintfW( bufstr, szIntFormat, GetDeviceCaps(dc, BITSPIXEL) );
len = swprintf( bufstr, ARRAY_SIZE(bufstr), szIntFormat, GetDeviceCaps(dc, BITSPIXEL) );
msi_set_property( package->db, szColorBits, bufstr, len );
ReleaseDC(0, dc);
@ -991,14 +990,14 @@ static VOID set_installer_properties(MSIPACKAGE *package)
set_msi_assembly_prop( package );
langid = GetUserDefaultLangID();
len = sprintfW( bufstr, szIntFormat, langid );
len = swprintf( bufstr, ARRAY_SIZE(bufstr), szIntFormat, langid );
msi_set_property( package->db, szUserLanguageID, bufstr, len );
langid = GetSystemDefaultLangID();
len = sprintfW( bufstr, szIntFormat, langid );
len = swprintf( bufstr, ARRAY_SIZE(bufstr), szIntFormat, langid );
msi_set_property( package->db, szSystemLangID, bufstr, len );
len = sprintfW( bufstr, szIntFormat, MsiQueryProductStateW(package->ProductCode) );
len = swprintf( bufstr, ARRAY_SIZE(bufstr), szIntFormat, MsiQueryProductStateW(package->ProductCode) );
msi_set_property( package->db, szProductState, bufstr, len );
len = 0;
@ -1115,7 +1114,7 @@ MSIPACKAGE *MSI_CreatePackage( MSIDATABASE *db )
set_installer_properties( package );
package->ui_level = gUILevel;
len = sprintfW( uilevel, fmtW, gUILevel & INSTALLUILEVEL_MASK );
len = swprintf( uilevel, ARRAY_SIZE(uilevel), fmtW, gUILevel & INSTALLUILEVEL_MASK );
msi_set_property( package->db, szUILevel, uilevel, len );
r = msi_load_suminfo_properties( package );
@ -1180,14 +1179,14 @@ UINT msi_create_empty_local_file( LPWSTR path, LPCWSTR suffix )
time = GetTickCount();
GetWindowsDirectoryW( path, MAX_PATH );
strcatW( path, szInstaller );
lstrcatW( path, szInstaller );
CreateDirectoryW( path, NULL );
len = strlenW(path);
len = lstrlenW(path);
for (i = 0; i < 0x10000; i++)
{
offset = snprintfW( path + len, MAX_PATH - len, fmt, (time + i) & 0xffff );
memcpy( path + len + offset, suffix, (strlenW( suffix ) + 1) * sizeof(WCHAR) );
offset = swprintf( path + len, MAX_PATH - len, fmt, (time + i) & 0xffff );
memcpy( path + len + offset, suffix, (lstrlenW( suffix ) + 1) * sizeof(WCHAR) );
handle = CreateFileW( path, GENERIC_WRITE, 0, NULL,
CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0 );
if (handle != INVALID_HANDLE_VALUE)
@ -1205,11 +1204,11 @@ UINT msi_create_empty_local_file( LPWSTR path, LPCWSTR suffix )
static enum platform parse_platform( const WCHAR *str )
{
if (!str[0] || !strcmpW( str, szIntel )) return PLATFORM_INTEL;
else if (!strcmpW( str, szIntel64 )) return PLATFORM_INTEL64;
else if (!strcmpW( str, szX64 ) || !strcmpW( str, szAMD64 )) return PLATFORM_X64;
else if (!strcmpW( str, szARM )) return PLATFORM_ARM;
else if (!strcmpW( str, szARM64 )) return PLATFORM_ARM64;
if (!str[0] || !wcscmp( str, szIntel )) return PLATFORM_INTEL;
else if (!wcscmp( str, szIntel64 )) return PLATFORM_INTEL64;
else if (!wcscmp( str, szX64 ) || !wcscmp( str, szAMD64 )) return PLATFORM_X64;
else if (!wcscmp( str, szARM )) return PLATFORM_ARM;
else if (!wcscmp( str, szARM64 )) return PLATFORM_ARM64;
return PLATFORM_UNKNOWN;
}
@ -1227,7 +1226,7 @@ static UINT parse_suminfo( MSISUMMARYINFO *si, MSIPACKAGE *package )
TRACE("template: %s\n", debugstr_w(template));
p = strchrW( template, ';' );
p = wcschr( template, ';' );
if (!p)
{
WARN("invalid template string %s\n", debugstr_w(template));
@ -1236,12 +1235,12 @@ static UINT parse_suminfo( MSISUMMARYINFO *si, MSIPACKAGE *package )
}
*p = 0;
platform = template;
if ((q = strchrW( platform, ',' ))) *q = 0;
if ((q = wcschr( platform, ',' ))) *q = 0;
package->platform = parse_platform( platform );
while (package->platform == PLATFORM_UNKNOWN && q)
{
platform = q + 1;
if ((q = strchrW( platform, ',' ))) *q = 0;
if ((q = wcschr( platform, ',' ))) *q = 0;
package->platform = parse_platform( platform );
}
if (package->platform == PLATFORM_UNKNOWN)
@ -1257,7 +1256,7 @@ static UINT parse_suminfo( MSISUMMARYINFO *si, MSIPACKAGE *package )
return ERROR_SUCCESS;
}
count = 1;
for (q = p; (q = strchrW( q, ',' )); q++) count++;
for (q = p; (q = wcschr( q, ',' )); q++) count++;
package->langids = msi_alloc( count * sizeof(LANGID) );
if (!package->langids)
@ -1269,9 +1268,9 @@ static UINT parse_suminfo( MSISUMMARYINFO *si, MSIPACKAGE *package )
i = 0;
while (*p)
{
q = strchrW( p, ',' );
q = wcschr( p, ',' );
if (q) *q = 0;
package->langids[i] = atoiW( p );
package->langids[i] = wcstol( p, NULL, 10 );
if (!q) break;
p = q + 1;
i++;
@ -1337,7 +1336,7 @@ static WCHAR *get_property( MSIDATABASE *db, const WCHAR *prop )
MSIRECORD *rec;
WCHAR *ret = NULL;
sprintfW(query, select_query, prop);
swprintf(query, ARRAY_SIZE(query), select_query, prop);
if (MSI_DatabaseOpenViewW( db, query, &view ) != ERROR_SUCCESS)
{
return NULL;
@ -1388,7 +1387,7 @@ static UINT get_registered_local_package( const WCHAR *product, WCHAR *localfile
if (!filename)
return ERROR_FUNCTION_FAILED;
strcpyW( localfile, filename );
lstrcpyW( localfile, filename );
msi_free( filename );
return ERROR_SUCCESS;
}
@ -1471,7 +1470,7 @@ UINT MSI_OpenPackageW(LPCWSTR szPackage, DWORD dwOptions, MSIPACKAGE **pPackage)
localfile[0] = 0;
if( szPackage[0] == '#' )
{
handle = atoiW(&szPackage[1]);
handle = wcstol(&szPackage[1], NULL, 10);
if (!(db = msihandle2msiinfo(handle, MSIHANDLETYPE_DATABASE)))
return ERROR_INVALID_HANDLE;
}
@ -1536,7 +1535,7 @@ UINT MSI_OpenPackageW(LPCWSTR szPackage, DWORD dwOptions, MSIPACKAGE **pPackage)
{
WCHAR *cache_version = get_product_version( db );
if (!product_version != !cache_version ||
(product_version && strcmpW(product_version, cache_version)))
(product_version && wcscmp(product_version, cache_version)))
{
msiobj_release( &db->hdr );
msi_free(product_version);
@ -2034,11 +2033,11 @@ INT MSI_ProcessMessage( MSIPACKAGE *package, INSTALLMESSAGE eMessageType, MSIREC
return 0;
}
template = msi_alloc((strlenW(template_rec) + strlenW(template_prefix) + 1) * sizeof(WCHAR));
template = msi_alloc((lstrlenW(template_rec) + lstrlenW(template_prefix) + 1) * sizeof(WCHAR));
if (!template) return ERROR_OUTOFMEMORY;
strcpyW(template, template_prefix);
strcatW(template, template_rec);
lstrcpyW(template, template_prefix);
lstrcatW(template, template_rec);
MSI_RecordSetStringW(record, 0, template);
msi_free(template_prefix);
@ -2064,11 +2063,10 @@ INT MSI_ProcessMessage( MSIPACKAGE *package, INSTALLMESSAGE eMessageType, MSIREC
{
static const WCHAR template_s[] =
{'{','{','%','s',':',' ','}','}','%','s',0};
WCHAR *template;
template = msi_alloc((strlenW(package->LastAction) + strlenW(package->LastActionTemplate) + 7) * sizeof(WCHAR));
size_t len = lstrlenW(package->LastAction) + lstrlenW(package->LastActionTemplate) + 7;
WCHAR *template = msi_alloc(len * sizeof(WCHAR));
if (!template) return ERROR_OUTOFMEMORY;
sprintfW(template, template_s, package->LastAction, package->LastActionTemplate);
swprintf(template, len, template_s, package->LastAction, package->LastActionTemplate);
MSI_RecordSetStringW(record, 0, template);
msi_free(template);
}
@ -2198,22 +2196,22 @@ UINT msi_set_property( MSIDATABASE *db, const WCHAR *name, const WCHAR *value, i
if (!name[0])
return value ? ERROR_FUNCTION_FAILED : ERROR_SUCCESS;
if (value && len < 0) len = strlenW( value );
if (value && len < 0) len = lstrlenW( value );
rc = msi_get_property( db, name, 0, &sz );
if (!value || (!*value && !len))
{
sprintfW( query, delete_query, name );
swprintf( query, ARRAY_SIZE(query), delete_query, name );
}
else if (rc == ERROR_MORE_DATA || rc == ERROR_SUCCESS)
{
sprintfW( query, update_query, name );
swprintf( query, ARRAY_SIZE(query), update_query, name );
row = MSI_CreateRecord(1);
msi_record_set_string( row, 1, value, len );
}
else
{
strcpyW( query, insert_query );
lstrcpyW( query, insert_query );
row = MSI_CreateRecord(2);
msi_record_set_string( row, 1, name, -1 );
msi_record_set_string( row, 2, value, len );
@ -2257,7 +2255,7 @@ UINT WINAPI MsiSetPropertyW( MSIHANDLE hInstall, LPCWSTR szName, LPCWSTR szValue
}
ret = msi_set_property( package->db, szName, szValue, -1 );
if (ret == ERROR_SUCCESS && !strcmpW( szName, szSourceDir ))
if (ret == ERROR_SUCCESS && !wcscmp( szName, szSourceDir ))
msi_reset_source_folders( package );
msiobj_release( &package->hdr );
@ -2282,7 +2280,7 @@ static MSIRECORD *msi_get_property_row( MSIDATABASE *db, LPCWSTR name )
if (!name || !*name)
return NULL;
if (!strcmpW(name, szDate))
if (!wcscmp(name, szDate))
{
length = GetDateFormatW(LOCALE_USER_DEFAULT, DATE_SHORTDATE, NULL, NULL, NULL, 0);
if (!length)
@ -2300,7 +2298,7 @@ static MSIRECORD *msi_get_property_row( MSIDATABASE *db, LPCWSTR name )
msi_free(buffer);
return row;
}
else if (!strcmpW(name, szTime))
else if (!wcscmp(name, szTime))
{
length = GetTimeFormatW(LOCALE_USER_DEFAULT, TIME_NOTIMEMARKER, NULL, NULL, NULL, 0);
if (!length)
@ -2397,7 +2395,7 @@ LPWSTR msi_dup_property(MSIDATABASE *db, LPCWSTR prop)
int msi_get_property_int( MSIDATABASE *db, LPCWSTR prop, int def )
{
LPWSTR str = msi_dup_property( db, prop );
int val = str ? atoiW(str) : def;
int val = str ? wcstol(str, NULL, 10) : def;
msi_free(str);
return val;
}
@ -2452,7 +2450,7 @@ UINT WINAPI MsiGetPropertyA(MSIHANDLE hinst, const char *name, char *buf, DWORD
midl_user_free(value);
return ERROR_OUTOFMEMORY;
}
strcpyW(tmp, value);
lstrcpyW(tmp, value);
r = msi_strncpyWtoA(tmp, len, buf, sz, TRUE);
@ -2515,7 +2513,7 @@ UINT WINAPI MsiGetPropertyW(MSIHANDLE hinst, const WCHAR *name, WCHAR *buf, DWOR
midl_user_free(value);
return ERROR_OUTOFMEMORY;
}
strcpyW(tmp, value);
lstrcpyW(tmp, value);
r = msi_strncpyW(tmp, len, buf, sz);
@ -2721,7 +2719,7 @@ UINT msi_package_add_info(MSIPACKAGE *package, DWORD context, DWORD options,
LIST_FOR_EACH_ENTRY( info, &package->sourcelist_info, MSISOURCELISTINFO, entry )
{
if (!strcmpW( info->value, value )) return ERROR_SUCCESS;
if (!wcscmp( info->value, value )) return ERROR_SUCCESS;
}
info = msi_alloc(sizeof(MSISOURCELISTINFO));

View File

@ -27,7 +27,6 @@
#include "objbase.h"
#include "shlwapi.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "msipriv.h"
WINE_DEFAULT_DEBUG_CHANNEL(msi);
@ -71,7 +70,7 @@ static struct transform_desc *parse_transform_desc( const WCHAR *str )
if (!(ret = msi_alloc_zero( sizeof(*ret) ))) return NULL;
q = strchrW( p, '}' );
q = wcschr( p, '}' );
if (*p != '{' || !q) goto error;
len = q - p + 1;
@ -80,14 +79,14 @@ static struct transform_desc *parse_transform_desc( const WCHAR *str )
ret->product_code_from[len] = 0;
p = q + 1;
if (!(q = strchrW( p, ';' ))) goto error;
if (!(q = wcschr( p, ';' ))) goto error;
len = q - p;
if (!(ret->version_from = msi_alloc( (len + 1) * sizeof(WCHAR) ))) goto error;
memcpy( ret->version_from, p, len * sizeof(WCHAR) );
ret->version_from[len] = 0;
p = q + 1;
q = strchrW( p, '}' );
q = wcschr( p, '}' );
if (*p != '{' || !q) goto error;
len = q - p + 1;
@ -96,14 +95,14 @@ static struct transform_desc *parse_transform_desc( const WCHAR *str )
ret->product_code_to[len] = 0;
p = q + 1;
if (!(q = strchrW( p, ';' ))) goto error;
if (!(q = wcschr( p, ';' ))) goto error;
len = q - p;
if (!(ret->version_to = msi_alloc( (len + 1) * sizeof(WCHAR) ))) goto error;
memcpy( ret->version_to, p, len * sizeof(WCHAR) );
ret->version_to[len] = 0;
p = q + 1;
q = strchrW( p, '}' );
q = wcschr( p, '}' );
if (*p != '{' || !q) goto error;
len = q - p + 1;
@ -173,7 +172,7 @@ static UINT check_transform_applicable( MSIPACKAGE *package, IStorage *transform
if (wanted_flags & MSITRANSFORM_VALIDATE_LANGUAGE)
{
if (!template[0] || ((p = strchrW( template, ';' )) && match_language( package, atoiW( p + 1 ) )))
if (!template[0] || ((p = wcschr( template, ';' )) && match_language( package, wcstol( p + 1, NULL, 10 ) )))
{
valid_flags |= MSITRANSFORM_VALIDATE_LANGUAGE;
}
@ -189,7 +188,7 @@ static UINT check_transform_applicable( MSIPACKAGE *package, IStorage *transform
msiobj_release( &si->hdr );
return ERROR_INSTALL_PACKAGE_INVALID;
}
if (!strcmpW( desc->product_code_from, product_code_installed ))
if (!wcscmp( desc->product_code_from, product_code_installed ))
{
valid_flags |= MSITRANSFORM_VALIDATE_PRODUCT;
}
@ -245,7 +244,7 @@ static UINT check_transform_applicable( MSIPACKAGE *package, IStorage *transform
msiobj_release( &si->hdr );
return ERROR_INSTALL_PACKAGE_INVALID;
}
if (!strcmpW( desc->upgrade_code, upgrade_code_installed ))
if (!wcscmp( desc->upgrade_code, upgrade_code_installed ))
valid_flags |= MSITRANSFORM_VALIDATE_UPGRADECODE;
msi_free( upgrade_code_installed );
}
@ -303,7 +302,7 @@ UINT msi_check_patch_applicable( MSIPACKAGE *package, MSISUMMARYINFO *si )
guids = msi_split_string( guid_list, ';' );
for (i = 0; guids[i] && ret != ERROR_SUCCESS; i++)
{
if (!strcmpW( guids[i], product_code )) ret = ERROR_SUCCESS;
if (!wcscmp( guids[i], product_code )) ret = ERROR_SUCCESS;
}
msi_free( guids );
msi_free( guid_list );
@ -333,7 +332,7 @@ static UINT msi_parse_patch_summary( MSISUMMARYINFO *si, MSIPATCHINFO **patch )
msi_free( pi );
return ERROR_PATCH_PACKAGE_INVALID;
}
if (!(p = strchrW( p + 1, '}' )))
if (!(p = wcschr( p + 1, '}' )))
{
msi_free( pi->patchcode );
msi_free( pi );
@ -526,7 +525,7 @@ static UINT patch_update_file_sequence( MSIDATABASE *db, const struct patch_offs
LIST_FOR_EACH_ENTRY( po, &pos->files, struct patch_offset, entry )
{
if (!strcmpiW( file, po->name ))
if (!wcsicmp( file, po->name ))
{
MSI_RecordSetInteger( rec, 8, seq + pos->offset_to_apply );
r = MSI_ViewModify( view, MSIMODIFY_UPDATE, rec );
@ -557,7 +556,7 @@ static UINT patch_update_filepatch_sequence( MSIDATABASE *db, const struct patch
LIST_FOR_EACH_ENTRY( po, &pos->patches, struct patch_offset, entry )
{
if (seq == po->sequence && !strcmpiW( file, po->name ))
if (seq == po->sequence && !wcsicmp( file, po->name ))
{
MSIQUERY *delete_view, *insert_view;
MSIRECORD *rec2;
@ -858,7 +857,7 @@ static DWORD is_uninstallable( MSIDATABASE *db )
if (MSI_ViewFetch( view, &rec ) == ERROR_SUCCESS)
{
const WCHAR *value = MSI_RecordGetString( rec, 1 );
ret = atoiW( value );
ret = wcstol( value, NULL, 10 );
msiobj_release( &rec->hdr );
}
@ -1005,17 +1004,17 @@ UINT msi_apply_transforms( MSIPACKAGE *package )
if (!PathIsRelativeW( xforms[i] )) transform = xforms[i];
else
{
WCHAR *p = strrchrW( package->PackagePath, '\\' );
WCHAR *p = wcsrchr( package->PackagePath, '\\' );
DWORD len = p - package->PackagePath + 1;
if (!(transform = msi_alloc( (len + strlenW( xforms[i] ) + 1) * sizeof(WCHAR)) ))
if (!(transform = msi_alloc( (len + lstrlenW( xforms[i] ) + 1) * sizeof(WCHAR)) ))
{
msi_free( xforms );
msi_free( xform_list );
return ERROR_OUTOFMEMORY;
}
memcpy( transform, package->PackagePath, len * sizeof(WCHAR) );
memcpy( transform + len, xforms[i], (strlenW( xforms[i] ) + 1) * sizeof(WCHAR) );
memcpy( transform + len, xforms[i], (lstrlenW( xforms[i] ) + 1) * sizeof(WCHAR) );
}
r = MSI_DatabaseApplyTransformW( package->db, transform, 0 );
if (transform != xforms[i]) msi_free( transform );

View File

@ -27,7 +27,6 @@
#include "winuser.h"
#include "winerror.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "msi.h"
#include "msiquery.h"
#include "msipriv.h"
@ -582,7 +581,7 @@ UINT msi_record_set_string( MSIRECORD *rec, UINT field, const WCHAR *value, int
MSI_FreeField( &rec->fields[field] );
if (value && len < 0) len = strlenW( value );
if (value && len < 0) len = lstrlenW( value );
if (value && len)
{

View File

@ -32,7 +32,6 @@
#include "msi.h"
#include "msipriv.h"
#include "wincrypt.h"
#include "wine/unicode.h"
#include "winver.h"
#include "winuser.h"
#include "sddl.h"
@ -338,15 +337,15 @@ DWORD msi_version_str_to_dword(LPCWSTR p)
if (!p)
return version;
major = atoiW(p);
major = wcstol(p, NULL, 10);
p = strchrW(p, '.');
p = wcschr(p, '.');
if (p)
{
minor = atoiW(p+1);
p = strchrW(p+1, '.');
minor = wcstol(p+1, NULL, 10);
p = wcschr(p+1, '.');
if (p)
build = atoiW(p+1);
build = wcstol(p+1, NULL, 10);
}
return MAKELONG(build, MAKEWORD(minor, major));
@ -456,8 +455,8 @@ UINT MSIREG_OpenUninstallKey(const WCHAR *product, enum platform platform, HKEY
access |= KEY_WOW64_32KEY;
else
access |= KEY_WOW64_64KEY;
strcpyW(keypath, szUninstall);
strcatW(keypath, product);
lstrcpyW(keypath, szUninstall);
lstrcatW(keypath, product);
if (create) return RegCreateKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, key, NULL);
return RegOpenKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, access, key);
}
@ -492,14 +491,14 @@ UINT MSIREG_OpenProductKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTE
if (context == MSIINSTALLCONTEXT_MACHINE)
{
strcpyW(keypath, szInstaller_LocalClassesProd);
strcatW( keypath, squashed_pc );
lstrcpyW(keypath, szInstaller_LocalClassesProd);
lstrcatW( keypath, squashed_pc );
}
else if (context == MSIINSTALLCONTEXT_USERUNMANAGED)
{
root = HKEY_CURRENT_USER;
strcpyW(keypath, szUserProducts);
strcatW( keypath, squashed_pc );
lstrcpyW(keypath, szUserProducts);
lstrcatW( keypath, squashed_pc );
}
else
{
@ -512,7 +511,7 @@ UINT MSIREG_OpenProductKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONTE
}
szUserSid = usersid;
}
sprintfW( keypath, szInstaller_LocalManagedProd_fmt, szUserSid, squashed_pc );
swprintf( keypath, ARRAY_SIZE(keypath), szInstaller_LocalManagedProd_fmt, szUserSid, squashed_pc );
LocalFree(usersid);
}
if (create) return RegCreateKeyExW(root, keypath, 0, NULL, 0, access, NULL, key, NULL);
@ -526,8 +525,8 @@ UINT MSIREG_DeleteUserProductKey(LPCWSTR szProduct)
if (!squash_guid( szProduct, squashed_pc )) return ERROR_FUNCTION_FAILED;
TRACE("%s squashed %s\n", debugstr_w(szProduct), debugstr_w(squashed_pc));
strcpyW(keypath, szUserProducts);
strcatW( keypath, squashed_pc );
lstrcpyW(keypath, szUserProducts);
lstrcatW( keypath, squashed_pc );
return RegDeleteTreeW(HKEY_CURRENT_USER, keypath);
}
@ -538,8 +537,8 @@ UINT MSIREG_OpenUserPatchesKey(LPCWSTR szPatch, HKEY *key, BOOL create)
if (!squash_guid( szPatch, squashed_pc )) return ERROR_FUNCTION_FAILED;
TRACE("%s squashed %s\n", debugstr_w(szPatch), debugstr_w(squashed_pc));
strcpyW(keypath, szUserPatches);
strcatW( keypath, squashed_pc );
lstrcpyW(keypath, szUserPatches);
lstrcatW( keypath, squashed_pc );
if (create) return RegCreateKeyW(HKEY_CURRENT_USER, keypath, key);
return RegOpenKeyW(HKEY_CURRENT_USER, keypath, key);
@ -557,14 +556,14 @@ UINT MSIREG_OpenFeaturesKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONT
if (context == MSIINSTALLCONTEXT_MACHINE)
{
strcpyW(keypath, szInstaller_LocalClassesFeat);
strcatW( keypath, squashed_pc );
lstrcpyW(keypath, szInstaller_LocalClassesFeat);
lstrcatW( keypath, squashed_pc );
}
else if (context == MSIINSTALLCONTEXT_USERUNMANAGED)
{
root = HKEY_CURRENT_USER;
strcpyW(keypath, szUserFeatures);
strcatW( keypath, squashed_pc );
lstrcpyW(keypath, szUserFeatures);
lstrcatW( keypath, squashed_pc );
}
else
{
@ -577,7 +576,7 @@ UINT MSIREG_OpenFeaturesKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINSTALLCONT
}
szUserSid = usersid;
}
sprintfW( keypath, szInstaller_LocalManagedFeat_fmt, szUserSid, squashed_pc );
swprintf( keypath, ARRAY_SIZE(keypath), szInstaller_LocalManagedFeat_fmt, szUserSid, squashed_pc );
LocalFree(usersid);
}
if (create) return RegCreateKeyExW(root, keypath, 0, NULL, 0, access, NULL, key, NULL);
@ -591,8 +590,8 @@ UINT MSIREG_DeleteUserFeaturesKey(LPCWSTR szProduct)
if (!squash_guid( szProduct, squashed_pc )) return ERROR_FUNCTION_FAILED;
TRACE("%s squashed %s\n", debugstr_w(szProduct), debugstr_w(squashed_pc));
strcpyW(keypath, szUserFeatures);
strcatW( keypath, squashed_pc );
lstrcpyW(keypath, szUserFeatures);
lstrcatW( keypath, squashed_pc );
return RegDeleteTreeW(HKEY_CURRENT_USER, keypath);
}
@ -604,8 +603,8 @@ static UINT MSIREG_OpenInstallerFeaturesKey(LPCWSTR szProduct, HKEY *key, BOOL c
if (!squash_guid( szProduct, squashed_pc )) return ERROR_FUNCTION_FAILED;
TRACE("%s squashed %s\n", debugstr_w(szProduct), debugstr_w(squashed_pc));
strcpyW(keypath, szInstaller_Features);
strcatW( keypath, squashed_pc );
lstrcpyW(keypath, szInstaller_Features);
lstrcatW( keypath, squashed_pc );
if (create) return RegCreateKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, key, NULL);
return RegOpenKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, access, key);
@ -622,7 +621,7 @@ UINT MSIREG_OpenUserDataFeaturesKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINS
if (context == MSIINSTALLCONTEXT_MACHINE)
{
sprintfW( keypath, szUserDataFeatures_fmt, szLocalSid, squashed_pc );
swprintf( keypath, ARRAY_SIZE(keypath), szUserDataFeatures_fmt, szLocalSid, squashed_pc );
}
else
{
@ -635,7 +634,7 @@ UINT MSIREG_OpenUserDataFeaturesKey(LPCWSTR szProduct, LPCWSTR szUserSid, MSIINS
}
szUserSid = usersid;
}
sprintfW( keypath, szUserDataFeatures_fmt, szUserSid, squashed_pc );
swprintf( keypath, ARRAY_SIZE(keypath), szUserDataFeatures_fmt, szUserSid, squashed_pc );
LocalFree(usersid);
}
if (create) return RegCreateKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, key, NULL);
@ -651,15 +650,15 @@ UINT MSIREG_OpenUserComponentsKey(LPCWSTR szComponent, HKEY *key, BOOL create)
if (!squash_guid( szComponent, squashed_cc)) return ERROR_FUNCTION_FAILED;
TRACE("%s squashed %s\n", debugstr_w(szComponent), debugstr_w(squashed_cc));
strcpyW(keypath, szUserComponents);
strcatW( keypath, squashed_cc );
lstrcpyW(keypath, szUserComponents);
lstrcatW( keypath, squashed_cc );
if (create) return RegCreateKeyW(HKEY_CURRENT_USER, keypath, key);
ret = RegOpenKeyW(HKEY_CURRENT_USER, keypath, key);
if (ret != ERROR_FILE_NOT_FOUND) return ret;
strcpyW(keypath, szInstaller_Components);
strcatW( keypath, squashed_cc );
lstrcpyW(keypath, szInstaller_Components);
lstrcatW( keypath, squashed_cc );
return RegOpenKeyExW( HKEY_LOCAL_MACHINE, keypath, 0, access, key );
}
@ -678,11 +677,11 @@ UINT MSIREG_OpenUserDataComponentKey(LPCWSTR szComponent, LPCWSTR szUserSid, HKE
ERR("Failed to retrieve user SID\n");
return ERROR_FUNCTION_FAILED;
}
sprintfW( keypath, szUserDataComp_fmt, usersid, squashed_comp );
swprintf( keypath, ARRAY_SIZE(keypath), szUserDataComp_fmt, usersid, squashed_comp );
LocalFree(usersid);
}
else
sprintfW( keypath, szUserDataComp_fmt, szUserSid, squashed_comp );
swprintf( keypath, ARRAY_SIZE(keypath), szUserDataComp_fmt, szUserSid, squashed_comp );
if (create) return RegCreateKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, key, NULL);
return RegOpenKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, access, key);
@ -705,11 +704,11 @@ UINT MSIREG_DeleteUserDataComponentKey(LPCWSTR szComponent, LPCWSTR szUserSid)
ERR("Failed to retrieve user SID\n");
return ERROR_FUNCTION_FAILED;
}
sprintfW(keypath, szUserDataComponents_fmt, usersid);
swprintf(keypath, ARRAY_SIZE(keypath), szUserDataComponents_fmt, usersid);
LocalFree(usersid);
}
else
sprintfW(keypath, szUserDataComponents_fmt, szUserSid);
swprintf(keypath, ARRAY_SIZE(keypath), szUserDataComponents_fmt, szUserSid);
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, access, &hkey)) return ERROR_SUCCESS;
r = RegDeleteTreeW( hkey, squashed_comp );
@ -726,9 +725,9 @@ UINT MSIREG_OpenUserDataProductKey(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContex
TRACE("%s squashed %s\n", debugstr_w(szProduct), debugstr_w(squashed_pc));
if (dwContext == MSIINSTALLCONTEXT_MACHINE)
sprintfW( keypath, szUserDataProd_fmt, szLocalSid, squashed_pc );
swprintf( keypath, ARRAY_SIZE(keypath), szUserDataProd_fmt, szLocalSid, squashed_pc );
else if (szUserSid)
sprintfW( keypath, szUserDataProd_fmt, szUserSid, squashed_pc );
swprintf( keypath, ARRAY_SIZE(keypath), szUserDataProd_fmt, szUserSid, squashed_pc );
else
{
if (!(usersid = get_user_sid()))
@ -736,7 +735,7 @@ UINT MSIREG_OpenUserDataProductKey(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContex
ERR("Failed to retrieve user SID\n");
return ERROR_FUNCTION_FAILED;
}
sprintfW( keypath, szUserDataProd_fmt, usersid, squashed_pc );
swprintf( keypath, ARRAY_SIZE(keypath), szUserDataProd_fmt, usersid, squashed_pc );
LocalFree(usersid);
}
if (create) return RegCreateKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, key, NULL);
@ -752,7 +751,7 @@ UINT MSIREG_OpenUserDataPatchKey(LPCWSTR szPatch, MSIINSTALLCONTEXT dwContext, H
TRACE("%s squashed %s\n", debugstr_w(szPatch), debugstr_w(squashed_patch));
if (dwContext == MSIINSTALLCONTEXT_MACHINE)
sprintfW( keypath, szUserDataPatch_fmt, szLocalSid, squashed_patch );
swprintf( keypath, ARRAY_SIZE(keypath), szUserDataPatch_fmt, szLocalSid, squashed_patch );
else
{
if (!(usersid = get_user_sid()))
@ -760,7 +759,7 @@ UINT MSIREG_OpenUserDataPatchKey(LPCWSTR szPatch, MSIINSTALLCONTEXT dwContext, H
ERR("Failed to retrieve user SID\n");
return ERROR_FUNCTION_FAILED;
}
sprintfW( keypath, szUserDataPatch_fmt, usersid, squashed_patch );
swprintf( keypath, ARRAY_SIZE(keypath), szUserDataPatch_fmt, usersid, squashed_patch );
LocalFree(usersid);
}
if (create) return RegCreateKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, key, NULL);
@ -778,7 +777,7 @@ UINT MSIREG_DeleteUserDataPatchKey(LPCWSTR patch, MSIINSTALLCONTEXT context)
TRACE("%s squashed %s\n", debugstr_w(patch), debugstr_w(squashed_patch));
if (context == MSIINSTALLCONTEXT_MACHINE)
sprintfW(keypath, szUserDataPatches_fmt, szLocalSid);
swprintf(keypath, ARRAY_SIZE(keypath), szUserDataPatches_fmt, szLocalSid);
else
{
if (!(usersid = get_user_sid()))
@ -786,7 +785,7 @@ UINT MSIREG_DeleteUserDataPatchKey(LPCWSTR patch, MSIINSTALLCONTEXT context)
ERR("Failed to retrieve user SID\n");
return ERROR_FUNCTION_FAILED;
}
sprintfW(keypath, szUserDataPatches_fmt, usersid);
swprintf(keypath, ARRAY_SIZE(keypath), szUserDataPatches_fmt, usersid);
LocalFree(usersid);
}
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, access, &hkey)) return ERROR_SUCCESS;
@ -804,7 +803,7 @@ UINT MSIREG_OpenUserDataProductPatchesKey(LPCWSTR product, MSIINSTALLCONTEXT con
TRACE("%s squashed %s\n", debugstr_w(product), debugstr_w(squashed_product));
if (context == MSIINSTALLCONTEXT_MACHINE)
sprintfW( keypath, szUserDataProductPatches_fmt, szLocalSid, squashed_product );
swprintf( keypath, ARRAY_SIZE(keypath), szUserDataProductPatches_fmt, szLocalSid, squashed_product );
else
{
if (!(usersid = get_user_sid()))
@ -812,7 +811,7 @@ UINT MSIREG_OpenUserDataProductPatchesKey(LPCWSTR product, MSIINSTALLCONTEXT con
ERR("Failed to retrieve user SID\n");
return ERROR_FUNCTION_FAILED;
}
sprintfW( keypath, szUserDataProductPatches_fmt, usersid, squashed_product );
swprintf( keypath, ARRAY_SIZE(keypath), szUserDataProductPatches_fmt, usersid, squashed_product );
LocalFree(usersid);
}
if (create) return RegCreateKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, key, NULL);
@ -828,9 +827,9 @@ UINT MSIREG_OpenInstallProps(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContext, LPC
TRACE("%s squashed %s\n", debugstr_w(szProduct), debugstr_w(squashed_pc));
if (dwContext == MSIINSTALLCONTEXT_MACHINE)
sprintfW( keypath, szInstallProperties_fmt, szLocalSid, squashed_pc );
swprintf( keypath, ARRAY_SIZE(keypath), szInstallProperties_fmt, szLocalSid, squashed_pc );
else if (szUserSid)
sprintfW( keypath, szInstallProperties_fmt, szUserSid, squashed_pc );
swprintf( keypath, ARRAY_SIZE(keypath), szInstallProperties_fmt, szUserSid, squashed_pc );
else
{
if (!(usersid = get_user_sid()))
@ -838,7 +837,7 @@ UINT MSIREG_OpenInstallProps(LPCWSTR szProduct, MSIINSTALLCONTEXT dwContext, LPC
ERR("Failed to retrieve user SID\n");
return ERROR_FUNCTION_FAILED;
}
sprintfW( keypath, szInstallProperties_fmt, usersid, squashed_pc );
swprintf( keypath, ARRAY_SIZE(keypath), szInstallProperties_fmt, usersid, squashed_pc );
LocalFree(usersid);
}
if (create) return RegCreateKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, key, NULL);
@ -856,7 +855,7 @@ UINT MSIREG_DeleteUserDataProductKey(LPCWSTR szProduct, MSIINSTALLCONTEXT contex
TRACE("%s squashed %s\n", debugstr_w(szProduct), debugstr_w(squashed_pc));
if (context == MSIINSTALLCONTEXT_MACHINE)
sprintfW(keypath, szUserDataProducts_fmt, szLocalSid);
swprintf(keypath, ARRAY_SIZE(keypath), szUserDataProducts_fmt, szLocalSid);
else
{
if (!(usersid = get_user_sid()))
@ -864,7 +863,7 @@ UINT MSIREG_DeleteUserDataProductKey(LPCWSTR szProduct, MSIINSTALLCONTEXT contex
ERR("Failed to retrieve user SID\n");
return ERROR_FUNCTION_FAILED;
}
sprintfW(keypath, szUserDataProducts_fmt, usersid);
swprintf(keypath, ARRAY_SIZE(keypath), szUserDataProducts_fmt, usersid);
LocalFree(usersid);
}
@ -898,7 +897,7 @@ UINT MSIREG_OpenPatchesKey(LPCWSTR szPatch, HKEY *key, BOOL create)
if (!squash_guid( szPatch, squashed_pc )) return ERROR_FUNCTION_FAILED;
TRACE("%s squashed %s\n", debugstr_w(szPatch), debugstr_w(squashed_pc));
sprintfW( keypath, szInstaller_Patches, squashed_pc );
swprintf( keypath, ARRAY_SIZE(keypath), szInstaller_Patches, squashed_pc );
if (create) return RegCreateKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, key, NULL);
return RegOpenKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, access, key);
@ -912,8 +911,8 @@ UINT MSIREG_OpenUpgradeCodesKey(LPCWSTR szUpgradeCode, HKEY *key, BOOL create)
if (!squash_guid( szUpgradeCode, squashed_uc )) return ERROR_FUNCTION_FAILED;
TRACE("%s squashed %s\n", debugstr_w(szUpgradeCode), debugstr_w(squashed_uc));
strcpyW(keypath, szInstaller_UpgradeCodes);
strcatW( keypath, squashed_uc );
lstrcpyW(keypath, szInstaller_UpgradeCodes);
lstrcatW( keypath, squashed_uc );
if (create) return RegCreateKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, key, NULL);
return RegOpenKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, access, key);
@ -926,8 +925,8 @@ UINT MSIREG_OpenUserUpgradeCodesKey(LPCWSTR szUpgradeCode, HKEY* key, BOOL creat
if (!squash_guid( szUpgradeCode, squashed_uc )) return ERROR_FUNCTION_FAILED;
TRACE("%s squashed %s\n", debugstr_w(szUpgradeCode), debugstr_w(squashed_uc));
strcpyW(keypath, szInstaller_UserUpgradeCodes);
strcatW( keypath, squashed_uc );
lstrcpyW(keypath, szInstaller_UserUpgradeCodes);
lstrcatW( keypath, squashed_uc );
if (create) return RegCreateKeyW(HKEY_CURRENT_USER, keypath, key);
return RegOpenKeyW(HKEY_CURRENT_USER, keypath, key);
@ -956,8 +955,8 @@ UINT MSIREG_DeleteUserUpgradeCodesKey(LPCWSTR szUpgradeCode)
if (!squash_guid( szUpgradeCode, squashed_uc )) return ERROR_FUNCTION_FAILED;
TRACE("%s squashed %s\n", debugstr_w(szUpgradeCode), debugstr_w(squashed_uc));
strcpyW(keypath, szInstaller_UserUpgradeCodes);
strcatW( keypath, squashed_uc );
lstrcpyW(keypath, szInstaller_UserUpgradeCodes);
lstrcatW( keypath, squashed_uc );
return RegDeleteTreeW(HKEY_CURRENT_USER, keypath);
}
@ -1001,8 +1000,8 @@ UINT MSIREG_OpenClassesUpgradeCodesKey(LPCWSTR szUpgradeCode, HKEY *key, BOOL cr
if (!squash_guid( szUpgradeCode, squashed_uc )) return ERROR_FUNCTION_FAILED;
TRACE("%s squashed %s\n", debugstr_w(szUpgradeCode), debugstr_w(squashed_uc));
strcpyW(keypath, szInstaller_ClassesUpgradeCode);
strcatW( keypath, squashed_uc );
lstrcpyW(keypath, szInstaller_ClassesUpgradeCode);
lstrcatW( keypath, squashed_uc );
if (create) return RegCreateKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, key, NULL);
return RegOpenKeyExW(HKEY_LOCAL_MACHINE, keypath, 0, access, key);
@ -1059,8 +1058,8 @@ UINT WINAPI MsiDecomposeDescriptorW( LPCWSTR szDescriptor, LPWSTR szProduct,
TRACE("product %s\n", debugstr_guid( &product ));
if (!(p = strchrW( &szDescriptor[20], '>' )))
p = strchrW( &szDescriptor[20], '<' );
if (!(p = wcschr( &szDescriptor[20], '>' )))
p = wcschr( &szDescriptor[20], '<' );
if (!p)
return ERROR_INVALID_PARAMETER;
@ -1344,15 +1343,15 @@ static UINT fetch_user_component( const WCHAR *usersid, DWORD ctx, DWORD index,
len_user = ARRAY_SIZE( user );
while (!RegEnumKeyExW( key_users, i, user, &len_user, NULL, NULL, NULL, NULL ))
{
if ((strcmpW( usersid, szAllSid ) && strcmpW( usersid, user )) ||
!strcmpW( szLocalSid, user ))
if ((wcscmp( usersid, szAllSid ) && wcscmp( usersid, user )) ||
!wcscmp( szLocalSid, user ))
{
i++;
len_user = ARRAY_SIZE( user );
continue;
}
strcpyW( path, user );
strcatW( path, componentsW );
lstrcpyW( path, user );
lstrcatW( path, componentsW );
if (RegOpenKeyExW( key_users, path, 0, access, &key_components ))
{
i++;
@ -1385,7 +1384,7 @@ found:
else if (sid)
{
*sid_len = len_user;
strcpyW( sid, user );
lstrcpyW( sid, user );
}
}
if (guid) unsquash_guid( component, guid );
@ -2126,7 +2125,7 @@ UINT WINAPI MsiEnumPatchesExW(LPCWSTR szProductCode, LPCWSTR szUserSid,
if (!szProductCode || !squash_guid( szProductCode, squashed_pc ))
return ERROR_INVALID_PARAMETER;
if (szUserSid && !strcmpW( szUserSid, szLocalSid ))
if (szUserSid && !wcscmp( szUserSid, szLocalSid ))
return ERROR_INVALID_PARAMETER;
if (dwContext & MSIINSTALLCONTEXT_MACHINE && szUserSid)
@ -2319,7 +2318,7 @@ static UINT fetch_machine_product( const WCHAR *match, DWORD index, DWORD *idx,
len = ARRAY_SIZE( product );
while (!RegEnumKeyExW( key, i, product, &len, NULL, NULL, NULL, NULL ))
{
if (match && strcmpW( match, product ))
if (match && wcscmp( match, product ))
{
i++;
len = ARRAY_SIZE( product );
@ -2391,14 +2390,14 @@ static UINT fetch_user_product( const WCHAR *match, const WCHAR *usersid, DWORD
len_user = ARRAY_SIZE( user );
while (!RegEnumKeyExW( key_users, i, user, &len_user, NULL, NULL, NULL, NULL ))
{
if (strcmpW( usersid, user ) && strcmpW( usersid, szAllSid ))
if (wcscmp( usersid, user ) && wcscmp( usersid, szAllSid ))
{
i++;
len_user = ARRAY_SIZE( user );
continue;
}
strcpyW( path, user );
strcatW( path, subkey );
lstrcpyW( path, user );
lstrcatW( path, subkey );
if (RegOpenKeyExW( key_users, path, 0, access, &key_products ))
{
i++;
@ -2408,7 +2407,7 @@ static UINT fetch_user_product( const WCHAR *match, const WCHAR *usersid, DWORD
len_product = ARRAY_SIZE( product );
while (!RegEnumKeyExW( key_products, j, product, &len_product, NULL, NULL, NULL, NULL ))
{
if (match && strcmpW( match, product ))
if (match && wcscmp( match, product ))
{
j++;
len_product = ARRAY_SIZE( product );
@ -2438,7 +2437,7 @@ found:
if (installed_ctx) *installed_ctx = ctx;
if (sid)
{
strcpyW( sid, user );
lstrcpyW( sid, user );
*sid_len = len_user;
}
r = ERROR_SUCCESS;

View File

@ -30,7 +30,6 @@
#include "activscp.h"
#include "oleauto.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "msiserver.h"
@ -136,7 +135,7 @@ static HRESULT WINAPI MsiActiveScriptSite_GetItemInfo(IActiveScriptSite* iface,
}
/* Are we looking for the session object? */
if (!strcmpW(szSession, pstrName)) {
if (!wcscmp(szSession, pstrName)) {
if (dwReturnMask & SCRIPTINFO_ITYPEINFO) {
HRESULT hr = get_typeinfo(Session_tid, ppti);
if (SUCCEEDED(hr))

View File

@ -34,7 +34,6 @@
#include "wincrypt.h"
#include "winver.h"
#include "winuser.h"
#include "wine/unicode.h"
#include "sddl.h"
WINE_DEFAULT_DEBUG_CHANNEL(msi);
@ -273,10 +272,10 @@ UINT WINAPI MsiSourceListEnumMediaDisksW(LPCWSTR szProductCodeOrPatchCode,
goto done;
if (pdwDiskId)
*pdwDiskId = atolW(value);
*pdwDiskId = wcstol(value, NULL, 10);
ptr2 = data;
ptr = strchrW(data, ';');
ptr = wcschr(data, ';');
if (!ptr)
ptr = data;
else
@ -286,7 +285,7 @@ UINT WINAPI MsiSourceListEnumMediaDisksW(LPCWSTR szProductCodeOrPatchCode,
{
if (type == REG_DWORD)
{
sprintfW(convert, fmt, *data);
swprintf(convert, ARRAY_SIZE(convert), fmt, *data);
size = lstrlenW(convert);
ptr2 = convert;
}
@ -308,7 +307,7 @@ UINT WINAPI MsiSourceListEnumMediaDisksW(LPCWSTR szProductCodeOrPatchCode,
if (type == REG_DWORD)
{
sprintfW(convert, fmt, *ptr);
swprintf(convert, ARRAY_SIZE(convert), fmt, *ptr);
size = lstrlenW(convert);
ptr = convert;
}
@ -459,7 +458,7 @@ UINT WINAPI MsiSourceListEnumSourcesW(LPCWSTR szProductCodeOrPatch, LPCWSTR szUs
goto done;
}
sprintfW(name, format, dwIndex + 1);
swprintf(name, ARRAY_SIZE(name), format, dwIndex + 1);
res = RegQueryValueExW(subkey, name, 0, 0, (LPBYTE)szSource, pcchSource);
if (res != ERROR_SUCCESS && res != ERROR_MORE_DATA)
@ -569,8 +568,8 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
if (rc != ERROR_SUCCESS)
return rc;
if (!strcmpW( szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_DISKPROMPTW ))
if (!wcscmp( szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_DISKPROMPTW ))
{
rc = OpenMediaSubkey(sourcekey, &media, FALSE);
if (rc != ERROR_SUCCESS)
@ -579,14 +578,14 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
return ERROR_SUCCESS;
}
if (!strcmpW( szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHW ))
if (!wcscmp( szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHW ))
szProperty = mediapack;
RegQueryValueExW(media, szProperty, 0, 0, (LPBYTE)szValue, pcchValue);
RegCloseKey(media);
}
else if (!strcmpW( szProperty, INSTALLPROPERTY_LASTUSEDSOURCEW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_LASTUSEDTYPEW ))
else if (!wcscmp( szProperty, INSTALLPROPERTY_LASTUSEDSOURCEW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_LASTUSEDTYPEW ))
{
rc = RegQueryValueExW(sourcekey, INSTALLPROPERTY_LASTUSEDSOURCEW,
0, 0, NULL, &size);
@ -610,7 +609,7 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
return ERROR_SUCCESS;
}
if (!strcmpW( szProperty, INSTALLPROPERTY_LASTUSEDTYPEW ))
if (!wcscmp( szProperty, INSTALLPROPERTY_LASTUSEDTYPEW ))
{
if (*source != 'n' && *source != 'u' && *source != 'm')
{
@ -624,7 +623,7 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
}
else
{
ptr = strrchrW(source, ';');
ptr = wcsrchr(source, ';');
if (!ptr)
ptr = source;
else
@ -633,7 +632,7 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
output_out:
if (szValue)
{
if (strlenW(ptr) < *pcchValue)
if (lstrlenW(ptr) < *pcchValue)
lstrcpyW(szValue, ptr);
else
rc = ERROR_MORE_DATA;
@ -642,7 +641,7 @@ output_out:
*pcchValue = lstrlenW(ptr);
msi_free(source);
}
else if (!strcmpW( szProperty, INSTALLPROPERTY_PACKAGENAMEW ))
else if (!wcscmp( szProperty, INSTALLPROPERTY_PACKAGENAMEW ))
{
*pcchValue = *pcchValue * sizeof(WCHAR);
rc = RegQueryValueExW(sourcekey, INSTALLPROPERTY_PACKAGENAMEW, 0, 0,
@ -737,8 +736,8 @@ UINT msi_set_last_used_source(LPCWSTR product, LPCWSTR usersid,
return r;
}
size = (lstrlenW(format) + lstrlenW(value) + 7) * sizeof(WCHAR);
buffer = msi_alloc(size);
size = lstrlenW(format) + lstrlenW(value) + 7;
buffer = msi_alloc(size * sizeof(WCHAR));
if (!buffer)
return ERROR_OUTOFMEMORY;
@ -749,7 +748,7 @@ UINT msi_set_last_used_source(LPCWSTR product, LPCWSTR usersid,
return r;
}
sprintfW(buffer, format, typechar, index, value);
swprintf(buffer, size, format, typechar, index, value);
size = (lstrlenW(buffer) + 1) * sizeof(WCHAR);
r = RegSetValueExW(source, INSTALLPROPERTY_LASTUSEDSOURCEW, 0,
@ -795,22 +794,22 @@ UINT WINAPI MsiSourceListSetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
}
property = szProperty;
if (!strcmpW( szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHW ))
if (!wcscmp( szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHW ))
property = media_package;
rc = OpenSourceKey(szProduct, &sourcekey, MSICODE_PRODUCT, dwContext, FALSE);
if (rc != ERROR_SUCCESS)
return rc;
if (strcmpW( szProperty, INSTALLPROPERTY_LASTUSEDSOURCEW ) &&
if (wcscmp( szProperty, INSTALLPROPERTY_LASTUSEDSOURCEW ) &&
dwOptions & (MSISOURCETYPE_NETWORK | MSISOURCETYPE_URL))
{
RegCloseKey(sourcekey);
return ERROR_INVALID_PARAMETER;
}
if (!strcmpW( szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHW ) ||
!strcmpW( szProperty, INSTALLPROPERTY_DISKPROMPTW ))
if (!wcscmp( szProperty, INSTALLPROPERTY_MEDIAPACKAGEPATHW ) ||
!wcscmp( szProperty, INSTALLPROPERTY_DISKPROMPTW ))
{
rc = OpenMediaSubkey(sourcekey, &media, TRUE);
if (rc == ERROR_SUCCESS)
@ -819,7 +818,7 @@ UINT WINAPI MsiSourceListSetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
RegCloseKey(media);
}
}
else if (!strcmpW( szProperty, INSTALLPROPERTY_PACKAGENAMEW ))
else if (!wcscmp( szProperty, INSTALLPROPERTY_PACKAGENAMEW ))
{
DWORD size = (lstrlenW(szValue) + 1) * sizeof(WCHAR);
rc = RegSetValueExW(sourcekey, INSTALLPROPERTY_PACKAGENAMEW, 0,
@ -827,7 +826,7 @@ UINT WINAPI MsiSourceListSetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
if (rc != ERROR_SUCCESS)
rc = ERROR_UNKNOWN_PROPERTY;
}
else if (!strcmpW( szProperty, INSTALLPROPERTY_LASTUSEDSOURCEW ))
else if (!wcscmp( szProperty, INSTALLPROPERTY_LASTUSEDSOURCEW ))
{
if (!(dwOptions & (MSISOURCETYPE_NETWORK | MSISOURCETYPE_URL)))
rc = ERROR_INVALID_PARAMETER;
@ -989,7 +988,7 @@ static void add_source_to_list(struct list *sourcelist, media_info *info,
/* update the rest of the list */
if (found)
sprintfW(iter->szIndex, fmt, ++iter->index);
swprintf(iter->szIndex, ARRAY_SIZE(iter->szIndex), fmt, ++iter->index);
else if (index)
(*index)++;
}
@ -1027,7 +1026,7 @@ static UINT fill_source_list(struct list *sourcelist, HKEY sourcekey, DWORD *cou
}
lstrcpyW(entry->szIndex, name);
entry->index = atoiW(name);
entry->index = wcstol(name, NULL, 10);
size++;
r = RegEnumValueW(sourcekey, index, name, &size, NULL,
@ -1134,13 +1133,13 @@ UINT WINAPI MsiSourceListAddSourceExW( LPCWSTR szProduct, LPCWSTR szUserSid,
}
else if (dwIndex > count || dwIndex == 0)
{
sprintfW(name, fmt, count + 1);
swprintf(name, ARRAY_SIZE(name), fmt, count + 1);
rc = RegSetValueExW(typekey, name, 0, REG_EXPAND_SZ, (LPBYTE)source, size);
goto done;
}
else
{
sprintfW(name, fmt, dwIndex);
swprintf(name, ARRAY_SIZE(name), fmt, dwIndex);
info = msi_alloc(sizeof(media_info));
if (!info)
{
@ -1244,7 +1243,7 @@ UINT WINAPI MsiSourceListAddMediaDiskW(LPCWSTR szProduct, LPCWSTR szUserSid,
OpenMediaSubkey(sourcekey, &mediakey, TRUE);
sprintfW(szIndex, fmt, dwDiskId);
swprintf(szIndex, ARRAY_SIZE(szIndex), fmt, dwDiskId);
size = 2;
if (szVolumeLabel) size += lstrlenW(szVolumeLabel);

View File

@ -20,9 +20,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
@ -32,7 +29,6 @@
#include "query.h"
#include "wine/list.h"
#include "wine/debug.h"
#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(msi);
@ -746,15 +742,15 @@ number:
static LPWSTR parser_add_table( void *info, LPCWSTR list, LPCWSTR table )
{
static const WCHAR space[] = {' ',0};
DWORD len = strlenW( list ) + strlenW( table ) + 2;
DWORD len = lstrlenW( list ) + lstrlenW( table ) + 2;
LPWSTR ret;
ret = parser_alloc( info, len * sizeof(WCHAR) );
if( ret )
{
strcpyW( ret, list );
strcatW( ret, space );
strcatW( ret, table );
lstrcpyW( ret, list );
lstrcatW( ret, space );
lstrcatW( ret, table );
}
return ret;
}
@ -978,7 +974,7 @@ static BOOL SQL_MarkPrimaryKeys( column_info **cols,
found = FALSE;
for( c = *cols, idx = 0; c && !found; c = c->next, idx++ )
{
if( strcmpW( k->column, c->column ) )
if( wcscmp( k->column, c->column ) )
continue;
c->type |= MSITYPE_KEY;
found = TRUE;

View File

@ -33,7 +33,6 @@
#include "query.h"
#include "wine/debug.h"
#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(msidb);
@ -615,7 +614,7 @@ UINT msi_commit_streams( MSIDATABASE *db )
for (i = 0; i < db->num_streams; i++)
{
name = msi_string_lookup( db->strings, db->streams[i].str_index, NULL );
if (!strcmpW( name, szSumInfo )) continue;
if (!wcscmp( name, szSumInfo )) continue;
if (!(encname = encode_streamname( FALSE, name ))) return ERROR_OUTOFMEMORY;
TRACE("saving stream %s as %s\n", debugstr_w(name), debugstr_w(encname));

View File

@ -29,7 +29,6 @@
#include "winbase.h"
#include "winerror.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "msi.h"
#include "msiquery.h"
#include "objbase.h"
@ -311,7 +310,7 @@ int msi_add_string( string_table *st, const WCHAR *data, int len, BOOL persisten
if( !data )
return 0;
if (len < 0) len = strlenW( data );
if (len < 0) len = lstrlenW( data );
if( !data[0] && !len )
return 0;
@ -404,7 +403,7 @@ UINT msi_string2id( const string_table *st, const WCHAR *str, int len, UINT *id
{
int i, c, low = 0, high = st->sortcount - 1;
if (len < 0) len = strlenW( str );
if (len < 0) len = lstrlenW( str );
while (low <= high)
{

View File

@ -31,7 +31,6 @@
#include "shlwapi.h"
#include "wine/debug.h"
#include "wine/exception.h"
#include "wine/unicode.h"
#include "msi.h"
#include "msiquery.h"
#include "msidefs.h"
@ -985,31 +984,31 @@ static void parse_filetime( LPCWSTR str, FILETIME *ft )
/* YYYY/MM/DD hh:mm:ss */
while (isspaceW( *p )) p++;
while (iswspace( *p )) p++;
lt.wYear = strtolW( p, &end, 10 );
lt.wYear = wcstol( p, &end, 10 );
if (*end != '/') return;
p = end + 1;
lt.wMonth = strtolW( p, &end, 10 );
lt.wMonth = wcstol( p, &end, 10 );
if (*end != '/') return;
p = end + 1;
lt.wDay = strtolW( p, &end, 10 );
lt.wDay = wcstol( p, &end, 10 );
if (*end != ' ') return;
p = end + 1;
while (isspaceW( *p )) p++;
while (iswspace( *p )) p++;
lt.wHour = strtolW( p, &end, 10 );
lt.wHour = wcstol( p, &end, 10 );
if (*end != ':') return;
p = end + 1;
lt.wMinute = strtolW( p, &end, 10 );
lt.wMinute = wcstol( p, &end, 10 );
if (*end != ':') return;
p = end + 1;
lt.wSecond = strtolW( p, &end, 10 );
lt.wSecond = wcstol( p, &end, 10 );
TzSpecificLocalTimeToSystemTime( NULL, &lt, &utc );
SystemTimeToFileTime( &utc, ft );
@ -1018,7 +1017,7 @@ static void parse_filetime( LPCWSTR str, FILETIME *ft )
static UINT parse_prop( LPCWSTR prop, LPCWSTR value, UINT *pid, INT *int_value,
FILETIME *ft_value, awcstring *str_value )
{
*pid = atoiW( prop );
*pid = wcstol( prop, NULL, 10 );
switch (*pid)
{
case PID_CODEPAGE:
@ -1026,7 +1025,7 @@ static UINT parse_prop( LPCWSTR prop, LPCWSTR value, UINT *pid, INT *int_value,
case PID_CHARCOUNT:
case PID_SECURITY:
case PID_PAGECOUNT:
*int_value = atoiW( value );
*int_value = wcstol( value, NULL, 10 );
break;
case PID_LASTPRINTED:

View File

@ -35,7 +35,6 @@
#include "query.h"
#include "wine/debug.h"
#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(msidb);
@ -493,7 +492,7 @@ static MSITABLE *find_cached_table( MSIDATABASE *db, LPCWSTR name )
MSITABLE *t;
LIST_FOR_EACH_ENTRY( t, &db->tables, MSITABLE, entry )
if( !strcmpW( name, t->name ) )
if( !wcscmp( name, t->name ) )
return t;
return NULL;
@ -523,12 +522,12 @@ static UINT get_defaulttablecolumns( MSIDATABASE *db, LPCWSTR name, MSICOLUMNINF
TRACE("%s\n", debugstr_w(name));
if (!strcmpW( name, szTables ))
if (!wcscmp( name, szTables ))
{
p = _Tables_cols;
n = 1;
}
else if (!strcmpW( name, szColumns ))
else if (!wcscmp( name, szColumns ))
{
p = _Columns_cols;
n = 4;
@ -606,7 +605,7 @@ static UINT get_table( MSIDATABASE *db, LPCWSTR name, MSITABLE **table_ret )
table->persistent = MSICONDITION_TRUE;
lstrcpyW( table->name, name );
if (!strcmpW( name, szTables ) || !strcmpW( name, szColumns ))
if (!wcscmp( name, szTables ) || !wcscmp( name, szColumns ))
table->persistent = MSICONDITION_NONE;
r = table_get_column_info( db, name, &table->colinfo, &table->col_count );
@ -972,8 +971,8 @@ BOOL TABLE_Exists( MSIDATABASE *db, LPCWSTR name )
UINT r, table_id, i;
MSITABLE *table;
if( !strcmpW( name, szTables ) || !strcmpW( name, szColumns ) ||
!strcmpW( name, szStreams ) || !strcmpW( name, szStorages ) )
if( !wcscmp( name, szTables ) || !wcscmp( name, szColumns ) ||
!wcscmp( name, szStreams ) || !wcscmp( name, szStorages ) )
return TRUE;
r = msi_string2id( db->strings, name, -1, &table_id );
@ -1097,10 +1096,10 @@ static UINT get_stream_name( const MSITABLEVIEW *tv, UINT row, WCHAR **pstname )
switch( n )
{
case 2:
sprintfW( number, fmt, ival-0x8000 );
swprintf( number, ARRAY_SIZE(number), fmt, ival-0x8000 );
break;
case 4:
sprintfW( number, fmt, ival^0x80000000 );
swprintf( number, ARRAY_SIZE(number), fmt, ival^0x80000000 );
break;
default:
ERR( "oops - unknown column width %d\n", n );
@ -2063,7 +2062,7 @@ static UINT TABLE_add_column(struct tagMSIVIEW *view, LPCWSTR table, UINT number
msitable = find_cached_table(tv->db, table);
for (i = 0; i < msitable->col_count; i++)
{
if (!strcmpW( msitable->colinfo[i].colname, column ))
if (!wcscmp( msitable->colinfo[i].colname, column ))
{
InterlockedIncrement(&msitable->colinfo[i].ref_count);
break;
@ -2154,9 +2153,9 @@ UINT TABLE_CreateView( MSIDATABASE *db, LPCWSTR name, MSIVIEW **view )
TRACE("%p %s %p\n", db, debugstr_w(name), view );
if ( !strcmpW( name, szStreams ) )
if ( !wcscmp( name, szStreams ) )
return STREAMS_CreateView( db, view );
else if ( !strcmpW( name, szStorages ) )
else if ( !wcscmp( name, szStorages ) )
return STORAGES_CreateView( db, view );
sz = FIELD_OFFSET( MSITABLEVIEW, name[lstrlenW( name ) + 1] );
@ -2615,7 +2614,7 @@ static UINT msi_table_load_transform( MSIDATABASE *db, IStorage *stg,
UINT number = MSI_NULL_INTEGER;
UINT row = 0;
if (!strcmpW( name, szColumns ))
if (!wcscmp( name, szColumns ))
{
MSI_RecordGetStringW( rec, 1, table, &sz );
number = MSI_RecordGetInteger( rec, 2 );
@ -2627,7 +2626,7 @@ static UINT msi_table_load_transform( MSIDATABASE *db, IStorage *stg,
if ( number == MSI_NULL_INTEGER )
{
/* reset the column number on a new table */
if (strcmpW( coltable, table ))
if (wcscmp( coltable, table ))
{
colcol = 0;
lstrcpyW( coltable, table );
@ -2673,7 +2672,7 @@ static UINT msi_table_load_transform( MSIDATABASE *db, IStorage *stg,
WARN("failed to insert row %u\n", r);
}
if (!strcmpW( name, szColumns ))
if (!wcscmp( name, szColumns ))
msi_update_table_columns( db, table );
msiobj_release( &rec->hdr );
@ -2736,8 +2735,8 @@ UINT msi_table_apply_transform( MSIDATABASE *db, IStorage *stg )
if ( name[0] != 0x4840 )
continue;
if ( !strcmpW( name+1, szStringPool ) ||
!strcmpW( name+1, szStringData ) )
if ( !wcscmp( name+1, szStringPool ) ||
!wcscmp( name+1, szStringData ) )
continue;
transform = msi_alloc_zero( sizeof(TRANSFORMDATA) );
@ -2748,11 +2747,11 @@ UINT msi_table_apply_transform( MSIDATABASE *db, IStorage *stg )
transform->name = strdupW( name + 1 );
if ( !strcmpW( transform->name, szTables ) )
if ( !wcscmp( transform->name, szTables ) )
tables = transform;
else if (!strcmpW( transform->name, szColumns ) )
else if (!wcscmp( transform->name, szColumns ) )
columns = transform;
else if (!strcmpW( transform->name, szProperty ))
else if (!wcscmp( transform->name, szProperty ))
property_update = TRUE;
TRACE("transform contains stream %s\n", debugstr_w(name));
@ -2788,8 +2787,8 @@ UINT msi_table_apply_transform( MSIDATABASE *db, IStorage *stg )
{
transform = LIST_ENTRY( list_head( &transforms ), TRANSFORMDATA, entry );
if ( strcmpW( transform->name, szColumns ) &&
strcmpW( transform->name, szTables ) &&
if ( wcscmp( transform->name, szColumns ) &&
wcscmp( transform->name, szTables ) &&
ret == ERROR_SUCCESS )
{
ret = msi_table_load_transform( db, stg, strings, transform, bytes_per_strref );

View File

@ -22,7 +22,6 @@
#include "windef.h"
#include "winbase.h"
#include "wine/unicode.h"
#include "query.h"
#include "sql.tab.h"
@ -124,11 +123,11 @@ static const Keyword aKeywordTable[] = {
/*
** Comparison function for binary search.
*/
static int compKeyword(const void *m1, const void *m2){
static int __cdecl compKeyword(const void *m1, const void *m2){
const Keyword *k1 = m1, *k2 = m2;
int ret, len = min( k1->len, k2->len );
if ((ret = strncmpiW( k1->name, k2->name, len ))) return ret;
if ((ret = wcsnicmp( k1->name, k2->name, len ))) return ret;
if (k1->len < k2->len) return -1;
else if (k1->len > k2->len) return 1;
return 0;

View File

@ -36,7 +36,6 @@
#include "msidefs.h"
#include "msipriv.h"
#include "winuser.h"
#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(msi);
@ -47,7 +46,7 @@ static BOOL check_language(DWORD lang1, LPCWSTR lang2, DWORD attributes)
if (!lang2 || lang2[0]==0)
return TRUE;
langdword = atoiW(lang2);
langdword = wcstol(lang2, NULL, 10);
if (attributes & msidbUpgradeAttributesLanguagesExclusive)
return (lang1 != langdword);
@ -68,7 +67,7 @@ static BOOL find_product( const WCHAR *list, const WCHAR *product )
while (*q && *q != '}') q++;
if (*q != '}') return FALSE;
q++;
if (q - p < strlenW( product )) return FALSE;
if (q - p < lstrlenW( product )) return FALSE;
if (!memcmp( p, product, (q - p) * sizeof(WCHAR) )) return TRUE;
p = q + 1;
while (*p && *p != ';') p++;
@ -92,19 +91,19 @@ static void append_productcode( MSIPACKAGE *package, const WCHAR *action_prop, c
return;
}
if (prop) len += strlenW( prop );
len += strlenW( product ) + 2;
if (prop) len += lstrlenW( prop );
len += lstrlenW( product ) + 2;
if (!(newprop = msi_alloc( len * sizeof(WCHAR) ))) return;
if (prop)
{
strcpyW( newprop, prop );
strcatW( newprop, szSemiColon );
lstrcpyW( newprop, prop );
lstrcatW( newprop, szSemiColon );
}
else newprop[0] = 0;
strcatW( newprop, product );
lstrcatW( newprop, product );
r = msi_set_property( package->db, action_prop, newprop, -1 );
if (r == ERROR_SUCCESS && !strcmpW( action_prop, szSourceDir ))
if (r == ERROR_SUCCESS && !wcscmp( action_prop, szSourceDir ))
msi_reset_source_folders( package );
TRACE( "related product property %s now %s\n", debugstr_w(action_prop), debugstr_w(newprop) );

View File

@ -26,7 +26,6 @@
#include "winbase.h"
#include "winerror.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "msi.h"
#include "msiquery.h"
#include "objbase.h"
@ -187,7 +186,7 @@ static UINT parse_column(MSIWHEREVIEW *wv, union ext_column *column,
NULL, &table_name);
if (r != ERROR_SUCCESS)
return r;
if (strcmpW(table_name, column->unparsed.table) != 0)
if (wcscmp(table_name, column->unparsed.table) != 0)
continue;
}
@ -200,7 +199,7 @@ static UINT parse_column(MSIWHEREVIEW *wv, union ext_column *column,
if(r != ERROR_SUCCESS )
return r;
if(strcmpW(col_name, column->unparsed.column))
if(wcscmp(col_name, column->unparsed.column))
continue;
column->parsed.column = i;
column->parsed.table = table;
@ -587,7 +586,7 @@ static UINT STRCMP_Evaluate( MSIWHEREVIEW *wv, const UINT rows[], const struct c
else if( r_str && ! l_str )
sr = -1;
else
sr = strcmpW( l_str, r_str );
sr = wcscmp( l_str, r_str );
*val = ( expr->op == OP_EQ && ( sr == 0 ) ) ||
( expr->op == OP_NE && ( sr != 0 ) );
@ -682,7 +681,7 @@ static UINT check_condition( MSIWHEREVIEW *wv, MSIRECORD *record, JOINTABLE **ta
return r;
}
static int compare_entry( const void *left, const void *right )
static int __cdecl compare_entry( const void *left, const void *right )
{
const MSIROWENTRY *le = *(const MSIROWENTRY**)left;
const MSIROWENTRY *re = *(const MSIROWENTRY**)right;
@ -1247,7 +1246,7 @@ UINT WHERE_CreateView( MSIDATABASE *db, MSIVIEW **view, LPWSTR tables,
{
JOINTABLE *table;
if ((ptr = strchrW(tables, ' ')))
if ((ptr = wcschr(tables, ' ')))
*ptr = '\0';
table = msi_alloc(sizeof(JOINTABLE));