Mountain/IPC/WindServiceHandlers/FileSystem/Native/
FileStatNative.rs1#![allow(unused_variables, dead_code, unused_imports)]
2
3use serde_json::Value;
10
11use crate::{
12 IPC::{
13 DevLog,
14 WindServiceHandlers::Utilities::{
15 MetadataEncoding::Fn as metadata_to_istat,
16 PathExtraction::Fn as extract_path_from_arg,
17 },
18 },
19 dev_log,
20};
21
22pub async fn Fn(Arguments:Vec<Value>) -> Result<Value, String> {
23 let Path = extract_path_from_arg(Arguments.get(0).ok_or("Missing file path")?)?;
24
25 if !DevLog::IsBenignEnoent::Fn(&Path) {
30 dev_log!("vfs-verbose", "stat: {}", Path);
31 }
32
33 let Metadata = tokio::fs::symlink_metadata(&Path).await.map_err(|E| {
34 if DevLog::IsBenignEnoent::Fn(&Path) {
35 DevLog::DebugOnce::Fn(
36 "vfs",
37 &format!("stat-enoent:{}", Path),
38 &format!("stat ENOENT (benign): {}", Path),
39 );
40 } else {
41 dev_log!("vfs", "stat ENOENT: {}", Path);
42 }
43 format!("Failed to stat file: {} (path: {})", E, Path)
44 })?;
45
46 if !DevLog::IsBenignEnoent::Fn(&Path) {
47 dev_log!("vfs-verbose", "stat OK: {} (dir={})", Path, Metadata.is_dir());
48 }
49
50 Ok(metadata_to_istat(&Metadata))
51}