Alexandre Julliard : winevdm: Avoid using wine_get_config_dir().
Alexandre Julliard
julliard at winehq.org
Fri Apr 17 16:12:56 CDT 2020
Module: wine
Branch: master
Commit: a094f5173aefba96429624eb493b755b6d37bb60
URL: https://source.winehq.org/git/wine.git/?a=commit;h=a094f5173aefba96429624eb493b755b6d37bb60
Author: Alexandre Julliard <julliard at winehq.org>
Date: Fri Apr 17 12:50:23 2020 +0200
winevdm: Avoid using wine_get_config_dir().
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
programs/winevdm/winevdm.c | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/programs/winevdm/winevdm.c b/programs/winevdm/winevdm.c
index 64750db135..bfc47b8853 100644
--- a/programs/winevdm/winevdm.c
+++ b/programs/winevdm/winevdm.c
@@ -31,7 +31,6 @@
#include "winuser.h"
#include "wincon.h"
#include "wine/unicode.h"
-#include "wine/library.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(winevdm);
@@ -150,11 +149,12 @@ static char *find_dosbox(void)
static void start_dosbox( const char *appname, const char *args )
{
static const WCHAR cfgW[] = {'c','f','g',0};
- const char *config_dir = wine_get_config_dir();
+ const char *home = getenv( "HOME" );
+ const char *prefix = getenv( "WINEPREFIX" );
WCHAR path[MAX_PATH], config[MAX_PATH];
HANDLE file;
char *p, *buffer, app[MAX_PATH];
- int i;
+ int i, len;
int ret = 1;
DWORD written, drives = GetLogicalDrives();
char *dosbox = find_dosbox();
@@ -168,9 +168,10 @@ static void start_dosbox( const char *appname, const char *args )
file = CreateFileW( config, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0 );
if (file == INVALID_HANDLE_VALUE) return;
+ len = prefix ? strlen(prefix) : strlen(home) + strlen("/.wine");
buffer = HeapAlloc( GetProcessHeap(), 0, sizeof("[autoexec]") +
sizeof("mount -z c") + sizeof("config -securemode") +
- 25 * (strlen(config_dir) + sizeof("mount c /dosdevices/c:")) +
+ 25 * (len + sizeof("mount c /dosdevices/c:")) +
4 * strlenW( path ) +
6 + strlen( app ) + strlen( args ) + 20 );
p = buffer;
@@ -182,8 +183,13 @@ static void start_dosbox( const char *appname, const char *args )
break;
}
for (i = 0; i <= 25; i++)
- if (drives & (1 << i))
- p += sprintf( p, "mount %c %s/dosdevices/%c:\n", 'a' + i, config_dir, 'a' + i );
+ {
+ if (!(drives & (1 << i))) continue;
+ if (prefix)
+ p += sprintf( p, "mount %c %s/dosdevices/%c:\n", 'a' + i, prefix, 'a' + i );
+ else
+ p += sprintf( p, "mount %c %s/.wine/dosdevices/%c:\n", 'a' + i, home, 'a' + i );
+ }
p += sprintf( p, "%c:\ncd ", path[0] );
p += WideCharToMultiByte( CP_UNIXCP, 0, path + 2, -1, p, 4 * strlenW(path), NULL, NULL ) - 1;
p += sprintf( p, "\nconfig -securemode\n" );
More information about the wine-cvs
mailing list