summaryrefslogtreecommitdiff
path: root/ext/node/ops/os/mod.rs
diff options
context:
space:
mode:
authorNathan Whitaker <17734409+nathanwhit@users.noreply.github.com>2024-07-05 11:32:51 -0700
committerGitHub <noreply@github.com>2024-07-05 18:32:51 +0000
commitd4d3a3c54f5e26dec0cc79e273dc488f8a47f2b3 (patch)
treee6ff88b550211257ea7a7997e221d10fdf22e242 /ext/node/ops/os/mod.rs
parent28d2ff7bdc023a3b7aff47503aa03a8dd65fe87f (diff)
fix(node): Implement `fs.lchown` (and `process.getegid`) (#24418)
Closes https://github.com/denoland/deno/issues/21260. Part of https://github.com/denoland/deno/issues/18218. Implements `node:fs.lchown`, and enables the node_compat test for it. The test uses `process.getegid`, which we didn't have implemented, so I went ahead and implemented that as well to get the test working.
Diffstat (limited to 'ext/node/ops/os/mod.rs')
-rw-r--r--ext/node/ops/os/mod.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/ext/node/ops/os/mod.rs b/ext/node/ops/os/mod.rs
index 5b32113e5..b7374dc32 100644
--- a/ext/node/ops/os/mod.rs
+++ b/ext/node/ops/os/mod.rs
@@ -75,6 +75,25 @@ where
Ok(euid)
}
+#[op2(fast)]
+pub fn op_getegid<P>(state: &mut OpState) -> Result<u32, AnyError>
+where
+ P: NodePermissions + 'static,
+{
+ {
+ let permissions = state.borrow_mut::<P>();
+ permissions.check_sys("getegid", "node:os.getegid()")?;
+ }
+
+ #[cfg(windows)]
+ let egid = 0;
+ #[cfg(unix)]
+ // SAFETY: Call to libc getegid.
+ let egid = unsafe { libc::getegid() };
+
+ Ok(egid)
+}
+
#[op2]
#[serde]
pub fn op_cpus<P>(state: &mut OpState) -> Result<Vec<cpus::CpuInfo>, AnyError>