about summary refs log tree commit diff
path: root/src/rt/rust_run_program.cpp
diff options
context:
space:
mode:
authorJyun-Yan You <jyyou@cs.nctu.edu.tw>2012-02-09 14:08:24 +0800
committerBrian Anderson <banderson@mozilla.com>2012-02-09 18:41:57 -0800
commitb778dac1976c3d4f33bf8ee8c7c3208ca8af2563 (patch)
treeb0333951d4303a493e50de070a9507cb1092ecee /src/rt/rust_run_program.cpp
parent372cf4954c501b8a2068cfceaa826ead77f377fd (diff)
downloadrust-b778dac1976c3d4f33bf8ee8c7c3208ca8af2563.tar.gz
rust-b778dac1976c3d4f33bf8ee8c7c3208ca8af2563.zip
fix build on freebsd
Diffstat (limited to 'src/rt/rust_run_program.cpp')
-rw-r--r--src/rt/rust_run_program.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/rt/rust_run_program.cpp b/src/rt/rust_run_program.cpp
index a1a9e8d6189..7ccecb2f99a 100644
--- a/src/rt/rust_run_program.cpp
+++ b/src/rt/rust_run_program.cpp
@@ -136,6 +136,10 @@ rust_process_wait(int proc) {
 #include <unistd.h>
 #include <termios.h>
 
+#ifdef __FreeBSD__
+extern char **environ;
+#endif
+
 extern "C" CDECL int
 rust_run_program(const char* argv[],
                  void* envp,
@@ -164,6 +168,9 @@ rust_run_program(const char* argv[],
         *_NSGetEnviron() = (char **)envp;
     }
     execvp(argv[0], (char * const *)argv);
+#elif __FreeBSD__
+    if (envp) { environ = (char **)envp; }
+    execvp(argv[0], (char * const *)argv);
 #else
     if (!envp) { envp = environ; }
     execvpe(argv[0], (char * const *)argv, (char * const *)envp);