diff options
author | Sverker Eriksson <[email protected]> | 2016-08-30 16:36:02 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2016-08-30 16:36:02 +0200 |
commit | b532d464577ab7efbd3d7075ca90175c973d315e (patch) | |
tree | c8ee85f8cb381c6e719f83a867fed9a927481924 /lib | |
parent | 0caa1d3cda20a87b33dbb1805c30315bee7b79a8 (diff) | |
parent | 9f794b187208729728a3e5c11ed2e8f959174a5c (diff) | |
download | otp-b532d464577ab7efbd3d7075ca90175c973d315e.tar.gz otp-b532d464577ab7efbd3d7075ca90175c973d315e.tar.bz2 otp-b532d464577ab7efbd3d7075ca90175c973d315e.zip |
Merge branch 'maint'
Diffstat (limited to 'lib')
-rw-r--r-- | lib/erl_interface/src/connect/ei_connect.c | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/lib/erl_interface/src/connect/ei_connect.c b/lib/erl_interface/src/connect/ei_connect.c index 6dc51adee1..624100ad49 100644 --- a/lib/erl_interface/src/connect/ei_connect.c +++ b/lib/erl_interface/src/connect/ei_connect.c @@ -1708,28 +1708,36 @@ error: static int get_home(char *buf, int size) { - char* homedrive; - char* homepath; - #ifdef __WIN32__ - homedrive = getenv("HOMEDRIVE"); - homepath = getenv("HOMEPATH"); -#else - homedrive = ""; - homepath = getenv("HOME"); -#endif + char* homedrive = getenv("HOMEDRIVE"); + char* homepath = getenv("HOMEPATH"); - if (!homedrive || !homepath) { - buf[0] = '.'; - buf[1] = '\0'; - return 1; - } else if (strlen(homedrive)+strlen(homepath) < size-1) { + if (homedrive && homepath) { + if (strlen(homedrive)+strlen(homepath) >= size) + return 0; strcpy(buf, homedrive); strcat(buf, homepath); return 1; } - - return 0; + else { + int len = GetWindowsDirectory(buf, size); + if (len) { + return (len < size); + } + } +#else + char* homepath = getenv("HOME"); + if (homepath) { + if (strlen(homepath) >= size) + return 0; + strcpy(buf, homepath); + return 1; + } +#endif + + buf[0] = '.'; + buf[1] = '\0'; + return 1; } |