From fd0232d68577d3820e5ebb3f5bb2d546145dbcad Mon Sep 17 00:00:00 2001 From: mrmiywj Date: Wed, 29 Apr 2020 00:43:28 -0700 Subject: [PATCH 1/2] add umask support in os --- vm/src/stdlib/os.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/vm/src/stdlib/os.rs b/vm/src/stdlib/os.rs index 3c6f97cd9..0d43138a8 100644 --- a/vm/src/stdlib/os.rs +++ b/vm/src/stdlib/os.rs @@ -1280,6 +1280,18 @@ fn os_urandom(size: usize, vm: &VirtualMachine) -> PyResult> { } } +#[cfg(target_os = "linux")] +type MODE_t = u32; + +#[cfg(target_os = "macos")] +type MODE_t = u16; + +#[cfg(any(target_os = "macos", target_os = "linux"))] +fn os_umask(mask: MODE_t, _vm: &VirtualMachine) -> PyResult { + let ret_mask = unsafe { libc::umask(mask) }; + Ok(ret_mask) +} + #[pystruct_sequence(name = "os.uname_result")] #[derive(Debug)] #[cfg(unix)] @@ -1488,6 +1500,7 @@ pub fn make_module(vm: &VirtualMachine) -> PyObjectRef { SupportFunc::new(vm, "chmod", os_chmod, Some(false), Some(false), Some(false)), #[cfg(not(target_os = "redox"))] SupportFunc::new(vm, "chroot", os_chroot, Some(false), None, None), + SupportFunc::new(vm, "umask", os_umask, Some(false), Some(false), Some(false)), ]); let supports_fd = PySet::default().into_ref(vm); let supports_dir_fd = PySet::default().into_ref(vm); From b286e5d4dd25bccbd5d3242d62df2810dc37c83d Mon Sep 17 00:00:00 2001 From: mrmiywj Date: Wed, 29 Apr 2020 12:05:55 -0700 Subject: [PATCH 2/2] format --- vm/src/stdlib/os.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vm/src/stdlib/os.rs b/vm/src/stdlib/os.rs index 0d43138a8..497656495 100644 --- a/vm/src/stdlib/os.rs +++ b/vm/src/stdlib/os.rs @@ -1281,13 +1281,13 @@ fn os_urandom(size: usize, vm: &VirtualMachine) -> PyResult> { } #[cfg(target_os = "linux")] -type MODE_t = u32; +type ModeT = u32; #[cfg(target_os = "macos")] -type MODE_t = u16; +type ModeT = u16; #[cfg(any(target_os = "macos", target_os = "linux"))] -fn os_umask(mask: MODE_t, _vm: &VirtualMachine) -> PyResult { +fn os_umask(mask: ModeT, _vm: &VirtualMachine) -> PyResult { let ret_mask = unsafe { libc::umask(mask) }; Ok(ret_mask) }