diff options
author | Lukas Larsson <[email protected]> | 2017-10-18 10:22:00 +0200 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2017-10-18 10:22:00 +0200 |
commit | 9afdaa2a401a0dbe5820df48212d33ec2cdb6144 (patch) | |
tree | c4117b8966456e1da77fe31ae84353d028bb367a | |
parent | b73c4d012e122547c896f64d92ef9af3e531433e (diff) | |
parent | b7a5e370d7a7a1b6cfc9c96cb56d7acfc0fa944b (diff) | |
download | otp-9afdaa2a401a0dbe5820df48212d33ec2cdb6144.tar.gz otp-9afdaa2a401a0dbe5820df48212d33ec2cdb6144.tar.bz2 otp-9afdaa2a401a0dbe5820df48212d33ec2cdb6144.zip |
Merge branch 'lukas/erts/win_user_home_dir/OTP-14691' into maint
* lukas/erts/win_user_home_dir/OTP-14691:
erts: Use PROFILE dir as home on windows
-rw-r--r-- | erts/etc/common/erlexec.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/erts/etc/common/erlexec.c b/erts/etc/common/erlexec.c index 51ed2d0dff..eaa94cd5e4 100644 --- a/erts/etc/common/erlexec.c +++ b/erts/etc/common/erlexec.c @@ -36,6 +36,7 @@ #ifdef __WIN32__ # include "erl_version.h" # include "init_file.h" +# include <Shlobj.h> #endif #define NO 0 @@ -1541,17 +1542,16 @@ static void get_parameters(int argc, char** argv) static void get_home(void) { - int len; - char tmpstr[MAX_PATH+1]; + wchar_t *profile; char* homedrive; char* homepath; homedrive = get_env("HOMEDRIVE"); homepath = get_env("HOMEPATH"); if (!homedrive || !homepath) { - if (len = GetWindowsDirectory(tmpstr,MAX_PATH)) { - home = emalloc(len+1); - strcpy(home,tmpstr); + if (SHGetKnownFolderPath(&FOLDERID_Profile, 0, NULL, &profile) == S_OK) { + home = utf16_to_utf8(profile); + /* CoTaskMemFree(profile); */ } else error("HOMEDRIVE or HOMEPATH is not set and GetWindowsDir failed"); } else { |