From 743526b1eea5a26de4eca83b4a7c99ba22458bb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= Date: Mon, 2 Sep 2019 13:15:27 +0200 Subject: erlc: Tolerate that erlc is installed in a dir with space in its name 3e9cba0f0b4f broke erlc when OTP was installed in a directory with space in its name. --- erts/etc/common/erlc.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/erts/etc/common/erlc.c b/erts/etc/common/erlc.c index a9ee023727..56060497f3 100644 --- a/erts/etc/common/erlc.c +++ b/erts/etc/common/erlc.c @@ -233,10 +233,6 @@ int main(int argc, char** argv) if (strlen(emulator) >= MAXPATHLEN) error("Value of environment variable ERLC_EMULATOR is too large"); -#ifndef __WIN32__ - emulator = find_executable(emulator); -#endif - /* * Add scriptname to env */ @@ -256,7 +252,10 @@ int main(int argc, char** argv) #ifdef __WIN32__ set_env("ERLC_CONFIGURATION", get_env("PATH")); #else - set_env("ERLC_CONFIGURATION", emulator); + { + char* full_path_emulator = find_executable(emulator); + set_env("ERLC_CONFIGURATION", full_path_emulator); + } #endif /* @@ -595,7 +594,7 @@ run_erlang(char* progname, char** argv) } return status; #else - execv(progname, argv); + execvp(progname, argv); error("Error %d executing \'%s\'.", errno, progname); return 2; #endif @@ -949,7 +948,7 @@ start_compile_server(char* node_name, char** argv) } #else if (fork() == 0) { - execv(eargv[0], eargv); + execvp(eargv[0], eargv); error("Error %d executing \'%s\'.", errno, progname); } #endif -- cgit v1.2.1