tangled
alpha
login
or
join now
tsiry-sandratraina.com
/
rockbox-zig
2
fork
atom
A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
2
fork
atom
overview
issues
pulls
pipelines
Remove cast_ptr macro and cast argv to c_char
tsiry-sandratraina.com
2 months ago
0c45936b
19df6855
+1
-21
1 changed file
expand all
collapse all
unified
split
crates
cli
src
lib.rs
+1
-21
crates/cli/src/lib.rs
···
12
12
use std::{env, ffi::CStr};
13
13
use std::{fs, thread};
14
14
15
15
-
#[macro_export]
16
16
-
macro_rules! cast_ptr {
17
17
-
($ptr:expr) => {{
18
18
-
#[cfg(all(target_arch = "aarch64", target_os = "macos"))]
19
19
-
{
20
20
-
$ptr as *const i8
21
21
-
}
22
22
-
23
23
-
#[cfg(all(target_arch = "aarch64", target_os = "linux"))]
24
24
-
{
25
25
-
$ptr as *const u8
26
26
-
}
27
27
-
28
28
-
#[cfg(not(target_arch = "aarch64"))]
29
29
-
{
30
30
-
$ptr as *const i8
31
31
-
}
32
32
-
}};
33
33
-
}
34
34
-
35
15
#[no_mangle]
36
16
pub extern "C" fn parse_args(argc: usize, argv: *const *const u8) -> i32 {
37
17
let string_array = unsafe { std::slice::from_raw_parts(argv, argc) };
38
18
let args: Vec<&str> = string_array
39
19
.iter()
40
20
.map(|&ptr| {
41
41
-
let c_str = unsafe { CStr::from_ptr(cast_ptr!(ptr)) };
21
21
+
let c_str = unsafe { CStr::from_ptr(ptr as *const std::ffi::c_char) };
42
22
c_str
43
23
.to_str()
44
24
.unwrap_or("[Invalid UTF-8 or Non Null-Terminated String]")