From 45f0ae17ce5528af2af66fd681e88fe4a4a7cd6e Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 16 Aug 2026 10:29:50 +0900 Subject: refactor(php-shim): give fstat and lstat a typed FileStat result MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fstat and lstat now return Option instead of a PhpMixed array, so Platform::is_tty and Filesystem::is_junction read `mode` as a field. The array carried each of the 13 values twice — once under its numeric index and once under its name — which no caller relied on, and building it spelled the field list out four times. Co-Authored-By: Claude Opus 5 (1M context) --- crates/shirabe/src/util/filesystem.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'crates/shirabe/src/util/filesystem.rs') diff --git a/crates/shirabe/src/util/filesystem.rs b/crates/shirabe/src/util/filesystem.rs index 532c96dd..44dddb8c 100644 --- a/crates/shirabe/src/util/filesystem.rs +++ b/crates/shirabe/src/util/filesystem.rs @@ -1021,11 +1021,10 @@ impl Filesystem { let stat = lstat(junction); // S_ISDIR test (S_IFDIR is 0x4000, S_IFMT is 0xF000 bitmask) - if let Some(arr) = stat { - let mode = arr.get("mode").and_then(|v| v.as_int()).unwrap_or(0); - return 0x4000 != (mode & 0xF000); + match stat { + Some(stat) => 0x4000 != (stat.mode & 0xF000), + None => false, } - false } /// Removes a Windows NTFS junction. -- cgit v1.3.1-4-g156e