diff --git a/src/libstd/sys/redox/os.rs b/src/libstd/sys/redox/os.rs index 84eb56615b60d8e99a8ea75f984cb253a5a5ab71..39752c9d6658a3d2efa757a08775b75825de6396 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(|_| ()) } }