diff options
author | bors <bors@rust-lang.org> | 2021-09-15 02:55:18 +0000 |
---|---|---|
committer | bors <bors@rust-lang.org> | 2021-09-15 02:55:18 +0000 |
commit | e0670c1858da985676001dcc052dcffd237a8410 (patch) | |
tree | 0bcc3c7ecdbe885c7db27353dc9c3d3376c3b7a2 | |
parent | 590e69f521a68560852dc250bf1046a98849d057 (diff) | |
parent | 7dc48c843d729a9deed8a3484e5910f536ed1dd6 (diff) | |
download | rust-libc-e0670c1858da985676001dcc052dcffd237a8410.tar.gz |
Auto merge of #2389 - devnexen:macos_sysdir_api, r=Amanieu
apple add sysdir api
-rw-r--r-- | libc-test/build.rs | 1 | ||||
-rw-r--r-- | libc-test/semver/apple.txt | 4 | ||||
-rw-r--r-- | src/unix/bsd/apple/mod.rs | 63 |
3 files changed, 68 insertions, 0 deletions
diff --git a/libc-test/build.rs b/libc-test/build.rs index b397a83b19..f568affc7d 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -234,6 +234,7 @@ fn test_apple(target: &str) { "stdio.h", "stdlib.h", "string.h", + "sysdir.h", "sys/attr.h", "sys/clonefile.h", "sys/event.h", diff --git a/libc-test/semver/apple.txt b/libc-test/semver/apple.txt index e67830880f..1814d73ffc 100644 --- a/libc-test/semver/apple.txt +++ b/libc-test/semver/apple.txt @@ -1920,6 +1920,10 @@ syscall sysctl sysctlbyname sysctlnametomib +sysdir_get_next_search_path_enumeration +sysdir_search_path_directory_t +sysdir_search_path_domain_mask_t +sysdir_start_search_path_enumeration telldir thread_basic_info_t thread_extended_info_t diff --git a/src/unix/bsd/apple/mod.rs b/src/unix/bsd/apple/mod.rs index 33a0c4a69e..e63d26dc7f 100644 --- a/src/unix/bsd/apple/mod.rs +++ b/src/unix/bsd/apple/mod.rs @@ -105,6 +105,8 @@ pub type vm_statistics_data_t = vm_statistics; pub type vm_statistics64_t = *mut vm_statistics64; pub type vm_statistics64_data_t = vm_statistics64; +pub type sysdir_search_path_enumeration_state = ::c_uint; + pub type CCStatus = i32; pub type CCCryptorStatus = i32; pub type CCRNGStatus = ::CCCryptorStatus; @@ -140,6 +142,57 @@ impl ::Clone for qos_class_t { } } +#[cfg_attr(feature = "extra_traits", derive(Debug))] +#[repr(u32)] +pub enum sysdir_search_path_directory_t { + SYSDIR_DIRECTORY_APPLICATION = 1, + SYSDIR_DIRECTORY_DEMO_APPLICATION = 2, + SYSDIR_DIRECTORY_DEVELOPER_APPLICATION = 3, + SYSDIR_DIRECTORY_ADMIN_APPLICATION = 4, + SYSDIR_DIRECTORY_LIBRARY = 5, + SYSDIR_DIRECTORY_DEVELOPER = 6, + SYSDIR_DIRECTORY_USER = 7, + SYSDIR_DIRECTORY_DOCUMENTATION = 8, + SYSDIR_DIRECTORY_DOCUMENT = 9, + SYSDIR_DIRECTORY_CORESERVICE = 10, + SYSDIR_DIRECTORY_AUTOSAVED_INFORMATION = 11, + SYSDIR_DIRECTORY_DESKTOP = 12, + SYSDIR_DIRECTORY_CACHES = 13, + SYSDIR_DIRECTORY_APPLICATION_SUPPORT = 14, + SYSDIR_DIRECTORY_DOWNLOADS = 15, + SYSDIR_DIRECTORY_INPUT_METHODS = 16, + SYSDIR_DIRECTORY_MOVIES = 17, + SYSDIR_DIRECTORY_MUSIC = 18, + SYSDIR_DIRECTORY_PICTURES = 19, + SYSDIR_DIRECTORY_PRINTER_DESCRIPTION = 20, + SYSDIR_DIRECTORY_SHARED_PUBLIC = 21, + SYSDIR_DIRECTORY_PREFERENCE_PANES = 22, + SYSDIR_DIRECTORY_ALL_APPLICATIONS = 100, + SYSDIR_DIRECTORY_ALL_LIBRARIES = 101, +} +impl ::Copy for sysdir_search_path_directory_t {} +impl ::Clone for sysdir_search_path_directory_t { + fn clone(&self) -> sysdir_search_path_directory_t { + *self + } +} + +#[cfg_attr(feature = "extra_traits", derive(Debug))] +#[repr(u32)] +pub enum sysdir_search_path_domain_mask_t { + SYSDIR_DOMAIN_MASK_USER = (1 << 0), + SYSDIR_DOMAIN_MASK_LOCAL = (1 << 1), + SYSDIR_DOMAIN_MASK_NETWORK = (1 << 2), + SYSDIR_DOMAIN_MASK_SYSTEM = (1 << 3), + SYSDIR_DOMAIN_MASK_ALL = 0x0ffff, +} +impl ::Copy for sysdir_search_path_domain_mask_t {} +impl ::Clone for sysdir_search_path_domain_mask_t { + fn clone(&self) -> sysdir_search_path_domain_mask_t { + *self + } +} + s! { pub struct ip_mreq { pub imr_multiaddr: in_addr, @@ -4971,6 +5024,16 @@ extern "C" { ) -> ::kern_return_t; pub static mut mach_task_self_: mach_port_t; + + // sysdir.h + pub fn sysdir_start_search_path_enumeration( + dir: sysdir_search_path_directory_t, + domainMask: sysdir_search_path_domain_mask_t, + ) -> ::sysdir_search_path_enumeration_state; + pub fn sysdir_get_next_search_path_enumeration( + state: ::sysdir_search_path_enumeration_state, + path: *mut ::c_char, + ) -> ::sysdir_search_path_enumeration_state; } pub unsafe fn mach_task_self() -> mach_port_t { |