Skip to content

Commit a12107a

Browse files
Make getenv return an Option instead of a Result
1 parent d26e01e commit a12107a

File tree

7 files changed

+20
-36
lines changed

7 files changed

+20
-36
lines changed

library/std/src/env.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ pub fn var_os<K: AsRef<OsStr>>(key: K) -> Option<OsString> {
244244
}
245245

246246
fn _var_os(key: &OsStr) -> Option<OsString> {
247-
os_imp::getenv(key).ok()?
247+
os_imp::getenv(key)
248248
}
249249

250250
/// The error type for operations interacting with environment variables.

library/std/src/sys/hermit/os.rs

+2-7
Original file line numberDiff line numberDiff line change
@@ -140,13 +140,8 @@ pub fn env() -> Env {
140140
}
141141
}
142142

143-
pub fn getenv(k: &OsStr) -> io::Result<Option<OsString>> {
144-
unsafe {
145-
match ENV.as_ref().unwrap().lock().unwrap().get_mut(k) {
146-
Some(value) => Ok(Some(value.clone())),
147-
None => Ok(None),
148-
}
149-
}
143+
pub fn getenv(k: &OsStr) -> Option<OsString> {
144+
unsafe { ENV.as_ref().unwrap().lock().unwrap().get_mut(k).cloned() }
150145
}
151146

152147
pub fn setenv(k: &OsStr, v: &OsStr) -> io::Result<()> {

library/std/src/sys/sgx/os.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ pub fn env() -> Env {
106106
get_env_store().map(|env| clone_to_vec(&env.lock().unwrap())).unwrap_or_default().into_iter()
107107
}
108108

109-
pub fn getenv(k: &OsStr) -> io::Result<Option<OsString>> {
110-
Ok(get_env_store().and_then(|s| s.lock().unwrap().get(k).cloned()))
109+
pub fn getenv(k: &OsStr) -> Option<OsString> {
110+
get_env_store().and_then(|s| s.lock().unwrap().get(k).cloned())
111111
}
112112

113113
pub fn setenv(k: &OsStr, v: &OsStr) -> io::Result<()> {

library/std/src/sys/unix/os.rs

+4-5
Original file line numberDiff line numberDiff line change
@@ -532,19 +532,18 @@ pub fn env() -> Env {
532532
}
533533
}
534534

535-
pub fn getenv(k: &OsStr) -> io::Result<Option<OsString>> {
535+
pub fn getenv(k: &OsStr) -> Option<OsString> {
536536
// environment variables with a nul byte can't be set, so their value is
537537
// always None as well
538-
let k = CString::new(k.as_bytes())?;
538+
let k = CString::new(k.as_bytes()).ok()?;
539539
unsafe {
540540
let _guard = env_read_lock();
541541
let s = libc::getenv(k.as_ptr()) as *const libc::c_char;
542-
let ret = if s.is_null() {
542+
if s.is_null() {
543543
None
544544
} else {
545545
Some(OsStringExt::from_vec(CStr::from_ptr(s).to_bytes().to_vec()))
546-
};
547-
Ok(ret)
546+
}
548547
}
549548
}
550549

library/std/src/sys/unsupported/os.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ pub fn env() -> Env {
7676
panic!("not supported on this platform")
7777
}
7878

79-
pub fn getenv(_: &OsStr) -> io::Result<Option<OsString>> {
80-
Ok(None)
79+
pub fn getenv(_: &OsStr) -> Option<OsString> {
80+
None
8181
}
8282

8383
pub fn setenv(_: &OsStr, _: &OsStr) -> io::Result<()> {

library/std/src/sys/wasi/os.rs

+4-5
Original file line numberDiff line numberDiff line change
@@ -175,17 +175,16 @@ pub fn env() -> Env {
175175
}
176176
}
177177

178-
pub fn getenv(k: &OsStr) -> io::Result<Option<OsString>> {
179-
let k = CString::new(k.as_bytes())?;
178+
pub fn getenv(k: &OsStr) -> Option<OsString> {
179+
let k = CString::new(k.as_bytes()).ok()?;
180180
unsafe {
181181
let _guard = env_lock();
182182
let s = libc::getenv(k.as_ptr()) as *const libc::c_char;
183-
let ret = if s.is_null() {
183+
if s.is_null() {
184184
None
185185
} else {
186186
Some(OsStringExt::from_vec(CStr::from_ptr(s).to_bytes().to_vec()))
187-
};
188-
Ok(ret)
187+
}
189188
}
190189
}
191190

library/std/src/sys/windows/os.rs

+5-14
Original file line numberDiff line numberDiff line change
@@ -253,22 +253,13 @@ pub fn chdir(p: &path::Path) -> io::Result<()> {
253253
cvt(unsafe { c::SetCurrentDirectoryW(p.as_ptr()) }).map(drop)
254254
}
255255

256-
pub fn getenv(k: &OsStr) -> io::Result<Option<OsString>> {
257-
let k = to_u16s(k)?;
258-
let res = super::fill_utf16_buf(
256+
pub fn getenv(k: &OsStr) -> Option<OsString> {
257+
let k = to_u16s(k).ok()?;
258+
super::fill_utf16_buf(
259259
|buf, sz| unsafe { c::GetEnvironmentVariableW(k.as_ptr(), buf, sz) },
260260
|buf| OsStringExt::from_wide(buf),
261-
);
262-
match res {
263-
Ok(value) => Ok(Some(value)),
264-
Err(e) => {
265-
if e.raw_os_error() == Some(c::ERROR_ENVVAR_NOT_FOUND as i32) {
266-
Ok(None)
267-
} else {
268-
Err(e)
269-
}
270-
}
271-
}
261+
)
262+
.ok()
272263
}
273264

274265
pub fn setenv(k: &OsStr, v: &OsStr) -> io::Result<()> {

0 commit comments

Comments
 (0)