diff options
| author | Amanieu d'Antras <amanieu@gmail.com> | 2021-02-14 22:14:37 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-14 22:14:37 +0000 |
| commit | f32f7cb89967f211af8df3c8838755881d9f6408 (patch) | |
| tree | 79572ddcb2d55cf6189cc06f45d49535e2562374 /library/stdarch/crates/std_detect/src/detect/cache.rs | |
| parent | b7acc2e1da6ce4ab09093ac5a7af5528c2a3fd06 (diff) | |
| download | rust-f32f7cb89967f211af8df3c8838755881d9f6408.tar.gz rust-f32f7cb89967f211af8df3c8838755881d9f6408.zip | |
Turn std_detect into a no_std crate (#1005)
Diffstat (limited to 'library/stdarch/crates/std_detect/src/detect/cache.rs')
| -rw-r--r-- | library/stdarch/crates/std_detect/src/detect/cache.rs | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/library/stdarch/crates/std_detect/src/detect/cache.rs b/library/stdarch/crates/std_detect/src/detect/cache.rs index e79c96dafaf..d01a5ea244d 100644 --- a/library/stdarch/crates/std_detect/src/detect/cache.rs +++ b/library/stdarch/crates/std_detect/src/detect/cache.rs @@ -3,9 +3,9 @@ #![allow(dead_code)] // not used on all platforms -use crate::sync::atomic::Ordering; +use core::sync::atomic::Ordering; -use crate::sync::atomic::AtomicUsize; +use core::sync::atomic::AtomicUsize; /// Sets the `bit` of `x`. #[inline] @@ -125,9 +125,16 @@ cfg_if::cfg_if! { if #[cfg(feature = "std_detect_env_override")] { #[inline] fn initialize(mut value: Initializer) -> Initializer { - if let Ok(disable) = crate::env::var("RUST_STD_DETECT_UNSTABLE") { - for v in disable.split(" ") { - let _ = super::Feature::from_str(v).map(|v| value.unset(v as u32)); + let env = unsafe { + libc::getenv(b"RUST_STD_DETECT_UNSTABLE\0".as_ptr() as *const libc::c_char) + }; + if !env.is_null() { + let len = unsafe { libc::strlen(env) }; + let env = unsafe { core::slice::from_raw_parts(env as *const u8, len) }; + if let Ok(disable) = core::str::from_utf8(env) { + for v in disable.split(" ") { + let _ = super::Feature::from_str(v).map(|v| value.unset(v as u32)); + } } } do_initialize(value); |
