diff options
Diffstat (limited to 'runtime')
| -rw-r--r-- | runtime/js/30_os.js | 11 | ||||
| -rw-r--r-- | runtime/js/90_deno_ns.js | 1 | ||||
| -rw-r--r-- | runtime/ops/os.rs | 29 |
3 files changed, 35 insertions, 6 deletions
diff --git a/runtime/js/30_os.js b/runtime/js/30_os.js index 38b0acb32..e8467c268 100644 --- a/runtime/js/30_os.js +++ b/runtime/js/30_os.js @@ -28,6 +28,10 @@ return core.opSync("op_network_interfaces"); } + function getUid() { + return core.opSync("op_getuid"); + } + // This is an internal only method used by the test harness to override the // behavior of exit when the exit sanitizer is enabled. let exitHandler = null; @@ -87,12 +91,13 @@ window.__bootstrap.os = { env, execPath, - setExitHandler, exit, - osRelease, - systemMemoryInfo, + getUid, hostname, loadavg, networkInterfaces, + osRelease, + setExitHandler, + systemMemoryInfo, }; })(this); diff --git a/runtime/js/90_deno_ns.js b/runtime/js/90_deno_ns.js index 55cd34914..871062394 100644 --- a/runtime/js/90_deno_ns.js +++ b/runtime/js/90_deno_ns.js @@ -122,6 +122,7 @@ osRelease: __bootstrap.os.osRelease, systemMemoryInfo: __bootstrap.os.systemMemoryInfo, networkInterfaces: __bootstrap.os.networkInterfaces, + getUid: __bootstrap.os.getUid, applySourceMap: __bootstrap.errorStack.opApplySourceMap, formatDiagnostics: __bootstrap.errorStack.opFormatDiagnostics, sleepSync: __bootstrap.timers.sleepSync, diff --git a/runtime/ops/os.rs b/runtime/ops/os.rs index 877dbce21..405faf45a 100644 --- a/runtime/ops/os.rs +++ b/runtime/ops/os.rs @@ -17,16 +17,17 @@ use std::sync::Arc; pub fn init(maybe_exit_code: Option<Arc<AtomicI32>>) -> Extension { Extension::builder() .ops(vec![ - ("op_exit", op_sync(op_exit)), ("op_env", op_sync(op_env)), ("op_exec_path", op_sync(op_exec_path)), - ("op_set_env", op_sync(op_set_env)), - ("op_get_env", op_sync(op_get_env)), + ("op_exit", op_sync(op_exit)), ("op_delete_env", op_sync(op_delete_env)), + ("op_get_env", op_sync(op_get_env)), + ("op_getuid", op_sync(op_getuid)), ("op_hostname", op_sync(op_hostname)), ("op_loadavg", op_sync(op_loadavg)), ("op_network_interfaces", op_sync(op_network_interfaces)), ("op_os_release", op_sync(op_os_release)), + ("op_set_env", op_sync(op_set_env)), ("op_set_exit_code", op_sync(op_set_exit_code)), ("op_system_memory_info", op_sync(op_system_memory_info)), ]) @@ -237,3 +238,25 @@ fn op_system_memory_info( Err(_) => Ok(None), } } + +#[cfg(not(windows))] +fn op_getuid( + state: &mut OpState, + _: (), + _: (), +) -> Result<Option<u32>, AnyError> { + super::check_unstable(state, "Deno.getUid"); + state.borrow_mut::<Permissions>().env.check_all()?; + unsafe { Ok(Some(libc::getuid())) } +} + +#[cfg(windows)] +fn op_getuid( + state: &mut OpState, + _: (), + _: (), +) -> Result<Option<u32>, AnyError> { + super::check_unstable(state, "Deno.getUid"); + state.borrow_mut::<Permissions>().env.check_all()?; + Ok(None) +} |
