From e4698987bba0ced53c1d5e557fdfe493cd58e2bc Mon Sep 17 00:00:00 2001 From: coolreader18 <33094578+coolreader18@users.noreply.github.com> Date: Thu, 25 Apr 2019 15:14:43 -0500 Subject: [PATCH] Add a cfg for os.stat for android --- vm/src/stdlib/os.rs | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/vm/src/stdlib/os.rs b/vm/src/stdlib/os.rs index db5ba3bcb..6d81ca9c1 100644 --- a/vm/src/stdlib/os.rs +++ b/vm/src/stdlib/os.rs @@ -359,6 +359,25 @@ fn os_stat(path: PyStringRef, vm: &VirtualMachine) -> PyResult { } } +#[cfg(target_os = "android")] +fn os_stat(path: PyStringRef, vm: &VirtualMachine) -> PyResult { + use std::os::android::fs::MetadataExt; + match fs::metadata(&path.value) { + Ok(meta) => Ok(StatResult { + st_mode: meta.st_mode(), + st_ino: meta.st_ino(), + st_dev: meta.st_dev(), + st_nlink: meta.st_nlink(), + st_uid: meta.st_uid(), + st_gid: meta.st_gid(), + st_size: meta.st_size(), + } + .into_ref(vm) + .into_object()), + Err(s) => Err(vm.new_os_error(s.to_string())), + } +} + #[cfg(windows)] fn os_stat(path: PyStringRef, vm: &VirtualMachine) -> PyResult { use std::os::windows::fs::MetadataExt; @@ -378,7 +397,12 @@ fn os_stat(path: PyStringRef, vm: &VirtualMachine) -> PyResult { } } -#[cfg(all(not(target_os = "linux"), not(target_os = "macos"), not(windows)))] +#[cfg(not(any( + target_os = "linux", + target_os = "macos", + target_os = "android", + windows +)))] fn os_stat(path: PyStringRef, vm: &VirtualMachine) -> PyResult { unimplemented!(); }