Skip to content

Commit f827440

Browse files
taiki-eAmanieu
authored andcommitted
Use C string literal
1 parent 7e6562e commit f827440

File tree

4 files changed

+39
-40
lines changed

4 files changed

+39
-40
lines changed

crates/std_detect/src/detect/cache.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,26 +134,27 @@ cfg_if::cfg_if! {
134134

135135
#[inline]
136136
fn initialize(mut value: Initializer) -> Initializer {
137-
const RUST_STD_DETECT_UNSTABLE: &[u8] = b"RUST_STD_DETECT_UNSTABLE\0";
137+
use core::ffi::CStr;
138+
const RUST_STD_DETECT_UNSTABLE: &CStr = c"RUST_STD_DETECT_UNSTABLE";
138139
cfg_if::cfg_if! {
139140
if #[cfg(windows)] {
140141
use alloc::vec;
141142
#[link(name = "kernel32")]
142143
extern "system" {
143144
fn GetEnvironmentVariableA(name: *const u8, buffer: *mut u8, size: u32) -> u32;
144145
}
145-
let len = unsafe { GetEnvironmentVariableA(RUST_STD_DETECT_UNSTABLE.as_ptr(), core::ptr::null_mut(), 0) };
146+
let len = unsafe { GetEnvironmentVariableA(RUST_STD_DETECT_UNSTABLE.as_ptr().cast::<u8>(), core::ptr::null_mut(), 0) };
146147
if len > 0 {
147148
// +1 to include the null terminator.
148149
let mut env = vec![0; len as usize + 1];
149-
let len = unsafe { GetEnvironmentVariableA(RUST_STD_DETECT_UNSTABLE.as_ptr(), env.as_mut_ptr(), len + 1) };
150+
let len = unsafe { GetEnvironmentVariableA(RUST_STD_DETECT_UNSTABLE.as_ptr().cast::<u8>(), env.as_mut_ptr(), len + 1) };
150151
if len > 0 {
151152
disable_features(&env[..len as usize], &mut value);
152153
}
153154
}
154155
} else {
155156
let env = unsafe {
156-
libc::getenv(RUST_STD_DETECT_UNSTABLE.as_ptr() as *const libc::c_char)
157+
libc::getenv(RUST_STD_DETECT_UNSTABLE.as_ptr())
157158
};
158159
if !env.is_null() {
159160
let len = unsafe { libc::strlen(env) };

crates/std_detect/src/detect/os/darwin/aarch64.rs

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
//! <https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics>
44
55
use crate::detect::{cache, Feature};
6+
use core::ffi::CStr;
67

78
#[inline]
8-
fn _sysctlbyname(name: &str) -> bool {
9+
fn _sysctlbyname(name: &CStr) -> bool {
910
use libc;
1011

1112
let mut enabled: i32 = 0;
@@ -14,7 +15,7 @@ fn _sysctlbyname(name: &str) -> bool {
1415

1516
let ret = unsafe {
1617
libc::sysctlbyname(
17-
name.as_ptr() as *const i8,
18+
name.as_ptr(),
1819
enabled_ptr,
1920
&mut enabled_len,
2021
core::ptr::null_mut(),
@@ -38,35 +39,35 @@ pub(crate) fn detect_features() -> cache::Initializer {
3839
}
3940
};
4041

41-
let asimd = _sysctlbyname("hw.optional.AdvSIMD\0");
42-
let pmull = _sysctlbyname("hw.optional.arm.FEAT_PMULL\0");
43-
let fp = _sysctlbyname("hw.optional.floatingpoint\0");
44-
let fp16 = _sysctlbyname("hw.optional.arm.FEAT_FP16\0");
45-
let crc = _sysctlbyname("hw.optional.armv8_crc32\0");
46-
let lse = _sysctlbyname("hw.optional.arm.FEAT_LSE\0");
47-
let lse2 = _sysctlbyname("hw.optional.arm.FEAT_LSE2\0");
48-
let rdm = _sysctlbyname("hw.optional.arm.FEAT_RDM\0");
49-
let rcpc = _sysctlbyname("hw.optional.arm.FEAT_LRCPC\0");
50-
let rcpc2 = _sysctlbyname("hw.optional.arm.FEAT_LRCPC2\0");
51-
let dotprod = _sysctlbyname("hw.optional.arm.FEAT_DotProd\0");
52-
let fhm = _sysctlbyname("hw.optional.arm.FEAT_FHM\0");
53-
let flagm = _sysctlbyname("hw.optional.arm.FEAT_FlagM\0");
54-
let ssbs = _sysctlbyname("hw.optional.arm.FEAT_SSBS\0");
55-
let sb = _sysctlbyname("hw.optional.arm.FEAT_SB\0");
56-
let paca = _sysctlbyname("hw.optional.arm.FEAT_PAuth\0");
57-
let dpb = _sysctlbyname("hw.optional.arm.FEAT_DPB\0");
58-
let dpb2 = _sysctlbyname("hw.optional.arm.FEAT_DPB2\0");
59-
let frintts = _sysctlbyname("hw.optional.arm.FEAT_FRINTTS\0");
60-
let i8mm = _sysctlbyname("hw.optional.arm.FEAT_I8MM\0");
61-
let bf16 = _sysctlbyname("hw.optional.arm.FEAT_BF16\0");
62-
let bti = _sysctlbyname("hw.optional.arm.FEAT_BTI\0");
63-
let fcma = _sysctlbyname("hw.optional.arm.FEAT_FCMA\0");
64-
let aes = _sysctlbyname("hw.optional.arm.FEAT_AES\0");
65-
let sha1 = _sysctlbyname("hw.optional.arm.FEAT_SHA1\0");
66-
let sha2 = _sysctlbyname("hw.optional.arm.FEAT_SHA256\0");
67-
let sha3 = _sysctlbyname("hw.optional.arm.FEAT_SHA3\0");
68-
let sha512 = _sysctlbyname("hw.optional.arm.FEAT_SHA512\0");
69-
let jsconv = _sysctlbyname("hw.optional.arm.FEAT_JSCVT\0");
42+
let asimd = _sysctlbyname(c"hw.optional.AdvSIMD");
43+
let pmull = _sysctlbyname(c"hw.optional.arm.FEAT_PMULL");
44+
let fp = _sysctlbyname(c"hw.optional.floatingpoint");
45+
let fp16 = _sysctlbyname(c"hw.optional.arm.FEAT_FP16");
46+
let crc = _sysctlbyname(c"hw.optional.armv8_crc32");
47+
let lse = _sysctlbyname(c"hw.optional.arm.FEAT_LSE");
48+
let lse2 = _sysctlbyname(c"hw.optional.arm.FEAT_LSE2");
49+
let rdm = _sysctlbyname(c"hw.optional.arm.FEAT_RDM");
50+
let rcpc = _sysctlbyname(c"hw.optional.arm.FEAT_LRCPC");
51+
let rcpc2 = _sysctlbyname(c"hw.optional.arm.FEAT_LRCPC2");
52+
let dotprod = _sysctlbyname(c"hw.optional.arm.FEAT_DotProd");
53+
let fhm = _sysctlbyname(c"hw.optional.arm.FEAT_FHM");
54+
let flagm = _sysctlbyname(c"hw.optional.arm.FEAT_FlagM");
55+
let ssbs = _sysctlbyname(c"hw.optional.arm.FEAT_SSBS");
56+
let sb = _sysctlbyname(c"hw.optional.arm.FEAT_SB");
57+
let paca = _sysctlbyname(c"hw.optional.arm.FEAT_PAuth");
58+
let dpb = _sysctlbyname(c"hw.optional.arm.FEAT_DPB");
59+
let dpb2 = _sysctlbyname(c"hw.optional.arm.FEAT_DPB2");
60+
let frintts = _sysctlbyname(c"hw.optional.arm.FEAT_FRINTTS");
61+
let i8mm = _sysctlbyname(c"hw.optional.arm.FEAT_I8MM");
62+
let bf16 = _sysctlbyname(c"hw.optional.arm.FEAT_BF16");
63+
let bti = _sysctlbyname(c"hw.optional.arm.FEAT_BTI");
64+
let fcma = _sysctlbyname(c"hw.optional.arm.FEAT_FCMA");
65+
let aes = _sysctlbyname(c"hw.optional.arm.FEAT_AES");
66+
let sha1 = _sysctlbyname(c"hw.optional.arm.FEAT_SHA1");
67+
let sha2 = _sysctlbyname(c"hw.optional.arm.FEAT_SHA256");
68+
let sha3 = _sysctlbyname(c"hw.optional.arm.FEAT_SHA3");
69+
let sha512 = _sysctlbyname(c"hw.optional.arm.FEAT_SHA512");
70+
let jsconv = _sysctlbyname(c"hw.optional.arm.FEAT_JSCVT");
7071

7172
enable_feature(Feature::asimd, asimd);
7273
enable_feature(Feature::pmull, pmull);

crates/std_detect/src/detect/os/linux/aarch64.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,7 @@ pub(crate) fn detect_features() -> cache::Initializer {
1414
// https://reviews.llvm.org/D114523
1515
let mut arch = [0_u8; libc::PROP_VALUE_MAX as usize];
1616
let len = unsafe {
17-
libc::__system_property_get(
18-
b"ro.arch\0".as_ptr() as *const libc::c_char,
19-
arch.as_mut_ptr() as *mut libc::c_char,
20-
)
17+
libc::__system_property_get(c"ro.arch".as_ptr(), arch.as_mut_ptr() as *mut libc::c_char)
2118
};
2219
// On Exynos, ro.arch is not available on Android 12+, but it is fine
2320
// because Android 9+ includes the fix.

crates/std_detect/src/detect/os/linux/auxvec.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ fn getauxval(key: usize) -> Result<usize, ()> {
187187
use libc;
188188
pub type F = unsafe extern "C" fn(usize) -> usize;
189189
unsafe {
190-
let ptr = libc::dlsym(libc::RTLD_DEFAULT, "getauxval\0".as_ptr() as *const _);
190+
let ptr = libc::dlsym(libc::RTLD_DEFAULT, c"getauxval".as_ptr());
191191
if ptr.is_null() {
192192
return Err(());
193193
}

0 commit comments

Comments
 (0)