From fa12403b9ae7d7306ac38f01d5e46e4ea6e15b01 Mon Sep 17 00:00:00 2001
From: Jeremy Soller <jeremy@system76.com>
Date: Wed, 7 Nov 2018 20:31:35 -0700
Subject: [PATCH] Fix for missing setenv/unsetenv

---
 src/libstd/sys/redox/os.rs | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/libstd/sys/redox/os.rs b/src/libstd/sys/redox/os.rs
index 84eb56615b60..39752c9d6658 100644
--- a/src/libstd/sys/redox/os.rs
+++ b/src/libstd/sys/redox/os.rs
@@ -205,21 +205,30 @@ pub fn getenv(k: &OsStr) -> io::Result<Option<OsString>> {
 }
 
 pub fn setenv(k: &OsStr, v: &OsStr) -> io::Result<()> {
+    extern "C" {
+        fn setenv(name: *const c_char, val: *const c_char,
+                  overwrite: libc::c_int) -> libc::c_int;
+    }
+
     let k = CString::new(k.as_bytes())?;
     let v = CString::new(v.as_bytes())?;
 
     unsafe {
         let _guard = ENV_LOCK.lock();
-        cvt_libc(libc::setenv(k.as_ptr(), v.as_ptr(), 1)).map(|_| ())
+        cvt_libc(setenv(k.as_ptr(), v.as_ptr(), 1)).map(|_| ())
     }
 }
 
 pub fn unsetenv(n: &OsStr) -> io::Result<()> {
+    extern "C" {
+        fn unsetenv(name: *const c_char) -> libc::c_int;
+    }
+
     let nbuf = CString::new(n.as_bytes())?;
 
     unsafe {
         let _guard = ENV_LOCK.lock();
-        cvt_libc(libc::unsetenv(nbuf.as_ptr())).map(|_| ())
+        cvt_libc(unsetenv(nbuf.as_ptr())).map(|_| ())
     }
 }
 
-- 
GitLab