diff options
author | Björn Gustavsson <bjorn@erlang.org> | 2019-09-02 13:15:27 +0200 |
---|---|---|
committer | Björn Gustavsson <bjorn@erlang.org> | 2019-09-02 13:15:27 +0200 |
commit | 743526b1eea5a26de4eca83b4a7c99ba22458bb3 (patch) | |
tree | ef23420081bbe0f2af620a57d09d2b964d3b9e8b | |
parent | 7ac1f050adfbd31cd7c3e2e31e50a6a3cae03936 (diff) | |
download | erlang-743526b1eea5a26de4eca83b4a7c99ba22458bb3.tar.gz |
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.
-rw-r--r-- | erts/etc/common/erlc.c | 13 |
1 files 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 |