summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Gustavsson <bjorn@erlang.org>2019-09-02 13:15:27 +0200
committerBjörn Gustavsson <bjorn@erlang.org>2019-09-02 13:15:27 +0200
commit743526b1eea5a26de4eca83b4a7c99ba22458bb3 (patch)
treeef23420081bbe0f2af620a57d09d2b964d3b9e8b
parent7ac1f050adfbd31cd7c3e2e31e50a6a3cae03936 (diff)
downloaderlang-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.c13
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