MCPcopy Index your code
hub / github.com/RustPython/RustPython / get_right_permission

Function get_right_permission

crates/vm/src/stdlib/posix.rs:412–436  ·  view source on GitHub ↗
(
        mode: u32,
        file_owner: Uid,
        file_group: Gid,
    )

Source from the content-addressed store, hash-verified

410 }
411
412 fn get_right_permission(
413 mode: u32,
414 file_owner: Uid,
415 file_group: Gid,
416 ) -> nix::Result<Permissions> {
417 let owner_mode = (mode & 0o700) >> 6;
418 let owner_permissions = get_permissions(owner_mode);
419
420 let group_mode = (mode & 0o070) >> 3;
421 let group_permissions = get_permissions(group_mode);
422
423 let others_mode = mode & 0o007;
424 let others_permissions = get_permissions(others_mode);
425
426 let user_id = nix::unistd::getuid();
427 let groups_ids = getgroups_impl()?;
428
429 if file_owner == user_id {
430 Ok(owner_permissions)
431 } else if groups_ids.contains(&file_group) {
432 Ok(group_permissions)
433 } else {
434 Ok(others_permissions)
435 }
436 }
437
438 #[cfg(any(target_os = "macos", target_os = "ios"))]
439 fn getgroups_impl() -> nix::Result<Vec<Gid>> {

Callers 1

accessFunction · 0.85

Calls 4

get_permissionsFunction · 0.85
getuidFunction · 0.85
getgroups_implFunction · 0.85
containsMethod · 0.45

Tested by

no test coverage detected