core_foundation_sys/
file_security.rs

1// Copyright 2023 The Servo Project Developers. See the COPYRIGHT
2// file at the top-level directory of this distribution.
3//
4// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
5// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
6// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
7// option. This file may not be copied, modified, or distributed
8// except according to those terms.
9
10use std::os::raw::c_void;
11
12#[cfg(feature = "mac_os_10_8_features")]
13use crate::base::CFOptionFlags;
14use crate::base::{Boolean, CFAllocatorRef, CFTypeID};
15use crate::uuid::CFUUIDRef;
16
17#[repr(C)]
18pub struct __CFFileSecurity(c_void);
19pub type CFFileSecurityRef = *mut __CFFileSecurity;
20
21#[cfg(feature = "mac_os_10_8_features")]
22pub type CFFileSecurityClearOptions = CFOptionFlags;
23#[cfg(feature = "mac_os_10_8_features")]
24pub const kCFFileSecurityClearOwner: CFFileSecurityClearOptions = 1 << 0;
25#[cfg(feature = "mac_os_10_8_features")]
26pub const kCFFileSecurityClearGroup: CFFileSecurityClearOptions = 1 << 1;
27#[cfg(feature = "mac_os_10_8_features")]
28pub const kCFFileSecurityClearMode: CFFileSecurityClearOptions = 1 << 2;
29#[cfg(feature = "mac_os_10_8_features")]
30pub const kCFFileSecurityClearOwnerUUID: CFFileSecurityClearOptions = 1 << 3;
31#[cfg(feature = "mac_os_10_8_features")]
32pub const kCFFileSecurityClearGroupUUID: CFFileSecurityClearOptions = 1 << 4;
33#[cfg(feature = "mac_os_10_8_features")]
34pub const kCFFileSecurityClearAccessControlList: CFFileSecurityClearOptions = 1 << 5;
35
36extern "C" {
37    /*
38     * CFFileSecurity.h
39     */
40    pub fn CFFileSecurityGetTypeID() -> CFTypeID;
41    pub fn CFFileSecurityCreate(allocator: CFAllocatorRef) -> CFFileSecurityRef;
42    pub fn CFFileSecurityCreateCopy(
43        allocator: CFAllocatorRef,
44        fileSec: CFFileSecurityRef,
45    ) -> CFFileSecurityRef;
46    pub fn CFFileSecurityCopyOwnerUUID(
47        fileSec: CFFileSecurityRef,
48        ownerUUID: *mut CFUUIDRef,
49    ) -> Boolean;
50    pub fn CFFileSecuritySetOwnerUUID(fileSec: CFFileSecurityRef, ownerUUID: CFUUIDRef) -> Boolean;
51    pub fn CFFileSecurityCopyGroupUUID(
52        fileSec: CFFileSecurityRef,
53        groupUUID: *mut CFUUIDRef,
54    ) -> Boolean;
55    pub fn CFFileSecuritySetGroupUUID(fileSec: CFFileSecurityRef, groupUUID: CFUUIDRef) -> Boolean;
56    //pub fn CFFileSecurityCopyAccessControlList(fileSec: CFFileSecurityRef, accessControlList: *mut acl_t) -> Boolean;
57    //pub fn CFFileSecuritySetAccessControlList(fileSec: CFFileSecurityRef, accessControlList: acl_t) -> Boolean;
58    //pub fn CFFileSecurityGetOwner(fileSec: CFFileSecurityRef, owner: *mut uid_t) -> Boolean;
59    //pub fn CFFileSecuritySetOwner(fileSec: CFFileSecurityRef, owner: uid_t) -> Boolean;
60    //pub fn CFFileSecurityGetGroup(fileSec: CFFileSecurityRef, group: *mut gid_t) -> Boolean;
61    //pub fn CFFileSecuritySetGroup(fileSec: CFFileSecurityRef, group: gid_t) -> Boolean;
62    //pub fn CFFileSecurityGetMode(fileSec: CFFileSecurityRef, mode: *mut mode_t) -> Boolean;
63    //pub fn CFFileSecuritySetMode(fileSec: CFFileSecurityRef, mode: mode_t) -> Boolean;
64
65    #[cfg(feature = "mac_os_10_8_features")]
66    #[cfg_attr(feature = "mac_os_10_7_support", linkage = "extern_weak")]
67    pub fn CFFileSecurityClearProperties(
68        fileSec: CFFileSecurityRef,
69        clearPropertyMask: CFFileSecurityClearOptions,
70    ) -> Boolean;
71}