summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2021-09-15 02:55:18 +0000
committerbors <bors@rust-lang.org>2021-09-15 02:55:18 +0000
commite0670c1858da985676001dcc052dcffd237a8410 (patch)
tree0bcc3c7ecdbe885c7db27353dc9c3d3376c3b7a2
parent590e69f521a68560852dc250bf1046a98849d057 (diff)
parent7dc48c843d729a9deed8a3484e5910f536ed1dd6 (diff)
downloadrust-libc-e0670c1858da985676001dcc052dcffd237a8410.tar.gz
Auto merge of #2389 - devnexen:macos_sysdir_api, r=Amanieu
apple add sysdir api
-rw-r--r--libc-test/build.rs1
-rw-r--r--libc-test/semver/apple.txt4
-rw-r--r--src/unix/bsd/apple/mod.rs63
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 {