Alexandre Julliard : ntdll: Avoid using wine_get_user_name() from libwine.
Alexandre Julliard
julliard at winehq.org
Mon Apr 27 15:19:30 CDT 2020
Module: wine
Branch: master
Commit: 9122bc1096f3231c5f6b8ffc0d7ad3e700f18af1
URL: https://source.winehq.org/git/wine.git/?a=commit;h=9122bc1096f3231c5f6b8ffc0d7ad3e700f18af1
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Apr 27 12:34:45 2020 +0200
ntdll: Avoid using wine_get_user_name() from libwine.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntdll/env.c | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/env.c b/dlls/ntdll/env.c
index efb5270a2c..ff0c8fbe90 100644
--- a/dlls/ntdll/env.c
+++ b/dlls/ntdll/env.c
@@ -27,6 +27,9 @@
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
+#ifdef HAVE_PWD_H
+# include <pwd.h>
+#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
@@ -386,15 +389,27 @@ static void set_wow64_environment( WCHAR **env )
UNICODE_STRING valW = { 0, sizeof(buf), buf };
OBJECT_ATTRIBUTES attr;
UNICODE_STRING nameW;
- const char *p, *name;
+ const char *p;
+ const char *home = getenv( "HOME" );
+ const char *name = getenv( "USER" );
WCHAR *val;
HANDLE hkey;
DWORD i;
+ if (!home || !name)
+ {
+ struct passwd *pwd = getpwuid( getuid() );
+ if (pwd)
+ {
+ if (!home) home = pwd->pw_dir;
+ if (!name) name = pwd->pw_name;
+ }
+ }
+
/* set the Wine paths */
set_wine_path_variable( env, winedatadirW, wine_get_data_dir() );
- set_wine_path_variable( env, winehomedirW, getenv("HOME") );
+ set_wine_path_variable( env, winehomedirW, home );
set_wine_path_variable( env, winebuilddirW, wine_get_build_dir() );
set_wine_path_variable( env, wineconfigdirW, config_dir );
for (i = 0; (p = wine_dll_enum_load_path( i )); i++)
@@ -407,7 +422,7 @@ static void set_wow64_environment( WCHAR **env )
/* set user name */
- name = wine_get_user_name();
+ if (!name) name = "wine";
if ((p = strrchr( name, '/' ))) name = p + 1;
if ((p = strrchr( name, '\\' ))) name = p + 1;
ntdll_umbstowcs( name, strlen(name) + 1, buf, ARRAY_SIZE(buf) );
More information about the wine-cvs
mailing list