1use crate::alloc::string::ToString;
2use alloc::{string::String, vec::Vec};
3
4use super::MAX_PATH_LENGTH;
5
6pub fn get_path_str(path_ptr: *const u8) -> Result<String, &'static str> {
7 let mut path_bytes = Vec::new();
9 let mut i = 0;
10 unsafe {
11 loop {
12 let byte = *path_ptr.add(i);
13 if byte == 0 {
14 break;
15 }
16 path_bytes.push(byte);
17 i += 1;
18
19 if i > MAX_PATH_LENGTH {
20 return Err("Path too long");
21 }
22 }
23 }
24
25 let path_str = match str::from_utf8(&path_bytes) {
27 Ok(s) => s,
28 Err(_) => return Err("Invalid UTF-8"),
29 };
30 Ok(path_str.to_string())
31}