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