Alexandre Julliard : appwiz.cpl: Use Unicode strings for addons file names.
Alexandre Julliard
julliard at winehq.org
Mon Nov 18 16:19:17 CST 2019
Module: wine
Branch: master
Commit: 0a443c1f36c9f7fd8242f129dbbfcc4604cf8e2f
URL: https://source.winehq.org/git/wine.git/?a=commit;h=0a443c1f36c9f7fd8242f129dbbfcc4604cf8e2f
Author: Alexandre Julliard <julliard at winehq.org>
Date: Sun Nov 17 15:58:59 2019 +0100
appwiz.cpl: Use Unicode strings for addons file names.
---
dlls/appwiz.cpl/addons.c | 38 ++++++++++++++++----------------------
1 file changed, 16 insertions(+), 22 deletions(-)
diff --git a/dlls/appwiz.cpl/addons.c b/dlls/appwiz.cpl/addons.c
index 350c25ef90..8d4be64930 100644
--- a/dlls/appwiz.cpl/addons.c
+++ b/dlls/appwiz.cpl/addons.c
@@ -63,8 +63,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(appwizcpl);
typedef struct {
const char *version;
- const char *file_name;
- const char *subdir_name;
+ const WCHAR *file_name;
+ const WCHAR *subdir_name;
const char *sha;
const char *url_default;
const char *config_key;
@@ -79,8 +79,8 @@ typedef struct {
static const addon_info_t addons_info[] = {
{
GECKO_VERSION,
- "wine_gecko-" GECKO_VERSION "-" ARCH_STRING ".msi",
- "gecko",
+ L"wine_gecko-" GECKO_VERSION "-" ARCH_STRING ".msi",
+ L"gecko",
GECKO_SHA,
"http://source.winehq.org/winegecko.php",
"MSHTML", "GeckoUrl", "GeckoCabDir",
@@ -88,8 +88,8 @@ static const addon_info_t addons_info[] = {
},
{
MONO_VERSION,
- "wine-mono-" MONO_VERSION ".msi",
- "mono",
+ L"wine-mono-" MONO_VERSION ".msi",
+ L"mono",
MONO_SHA,
"http://source.winehq.org/winemono.php",
"Dotnet", "MonoUrl", "MonoCabDir",
@@ -198,28 +198,23 @@ static enum install_res install_file(const WCHAR *file_name)
return INSTALL_OK;
}
-static enum install_res install_from_dos_file(const WCHAR *dir, const char *subdir, const char *file_name)
+static enum install_res install_from_dos_file(const WCHAR *dir, const WCHAR *subdir, const WCHAR *file_name)
{
- static const WCHAR ntprefixW[] = {'\\','?','?','\\',0};
WCHAR *path;
enum install_res ret;
int len = lstrlenW( dir );
int size = len + 1;
- size += MultiByteToWideChar( CP_UNIXCP, 0, subdir, -1, NULL, 0 );
- size += MultiByteToWideChar( CP_UNIXCP, 0, file_name, -1, NULL, 0 );
+ size += lstrlenW( subdir ) + lstrlenW( file_name ) + 2;
if (!(path = heap_alloc( size * sizeof(WCHAR) ))) return INSTALL_FAILED;
lstrcpyW( path, dir );
- if (!wcsncmp( path, ntprefixW, wcslen(ntprefixW) )) path[1] = '\\'; /* change \??\ into \\?\ */
+ if (!wcsncmp( path, L"\\??\\", 4 )) path[1] = '\\'; /* change \??\ into \\?\ */
if (len && path[len-1] != '/' && path[len-1] != '\\') path[len++] = '\\';
- if (*subdir)
- {
- len += MultiByteToWideChar( CP_UNIXCP, 0, subdir, -1, path + len, size - len );
- path[len - 1] = '\\';
- }
- MultiByteToWideChar( CP_UNIXCP, 0, file_name, -1, path + len, size - len );
+ lstrcpyW( path + len, subdir );
+ lstrcatW( path, L"\\" );
+ lstrcatW( path, file_name );
if (GetFileAttributesW( path ) == INVALID_FILE_ATTRIBUTES)
{
@@ -234,7 +229,7 @@ static enum install_res install_from_dos_file(const WCHAR *dir, const char *subd
return ret;
}
-static enum install_res install_from_unix_file(const char *dir, const char *subdir, const char *file_name)
+static enum install_res install_from_unix_file(const char *dir, const WCHAR *subdir, const WCHAR *file_name)
{
WCHAR *dos_dir;
enum install_res ret = INSTALL_NEXT;
@@ -290,7 +285,7 @@ static enum install_res install_from_registered_dir(void)
return INSTALL_FAILED;
}
- ret = install_from_unix_file(package_dir, "", addon->file_name);
+ ret = install_from_unix_file(package_dir, L"", addon->file_name);
heap_free(package_dir);
return ret;
@@ -357,8 +352,7 @@ static WCHAR *get_cache_file_name(BOOL ensure_exists)
return NULL;
}
- size = lstrlenW( cache_dir ) + ARRAY_SIZE(wineW);
- size += MultiByteToWideChar( CP_UNIXCP, 0, addon->file_name, -1, NULL, 0 );
+ size = lstrlenW( cache_dir ) + ARRAY_SIZE(wineW) + lstrlenW( addon->file_name ) + 1;
if (!(ret = heap_alloc( size * sizeof(WCHAR) )))
{
heap_free( cache_dir );
@@ -376,7 +370,7 @@ static WCHAR *get_cache_file_name(BOOL ensure_exists)
}
len = lstrlenW( ret );
ret[len++] = '\\';
- MultiByteToWideChar( CP_UNIXCP, 0, addon->file_name, -1, ret + len, size - len );
+ lstrcpyW( ret + len, addon->file_name );
TRACE( "got %s\n", debugstr_w(ret) );
return ret;
More information about the wine-cvs
mailing list