Skip to content

Commit e0670c1

Browse files
committed
Auto merge of #2389 - devnexen:macos_sysdir_api, r=Amanieu
apple add sysdir api
2 parents 590e69f + 7dc48c8 commit e0670c1

File tree

3 files changed

+68
-0
lines changed

3 files changed

+68
-0
lines changed

libc-test/build.rs

+1
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ fn test_apple(target: &str) {
234234
"stdio.h",
235235
"stdlib.h",
236236
"string.h",
237+
"sysdir.h",
237238
"sys/attr.h",
238239
"sys/clonefile.h",
239240
"sys/event.h",

libc-test/semver/apple.txt

+4
Original file line numberDiff line numberDiff line change
@@ -1920,6 +1920,10 @@ syscall
19201920
sysctl
19211921
sysctlbyname
19221922
sysctlnametomib
1923+
sysdir_get_next_search_path_enumeration
1924+
sysdir_search_path_directory_t
1925+
sysdir_search_path_domain_mask_t
1926+
sysdir_start_search_path_enumeration
19231927
telldir
19241928
thread_basic_info_t
19251929
thread_extended_info_t

src/unix/bsd/apple/mod.rs

+63
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ pub type vm_statistics_data_t = vm_statistics;
105105
pub type vm_statistics64_t = *mut vm_statistics64;
106106
pub type vm_statistics64_data_t = vm_statistics64;
107107

108+
pub type sysdir_search_path_enumeration_state = ::c_uint;
109+
108110
pub type CCStatus = i32;
109111
pub type CCCryptorStatus = i32;
110112
pub type CCRNGStatus = ::CCCryptorStatus;
@@ -140,6 +142,57 @@ impl ::Clone for qos_class_t {
140142
}
141143
}
142144

145+
#[cfg_attr(feature = "extra_traits", derive(Debug))]
146+
#[repr(u32)]
147+
pub enum sysdir_search_path_directory_t {
148+
SYSDIR_DIRECTORY_APPLICATION = 1,
149+
SYSDIR_DIRECTORY_DEMO_APPLICATION = 2,
150+
SYSDIR_DIRECTORY_DEVELOPER_APPLICATION = 3,
151+
SYSDIR_DIRECTORY_ADMIN_APPLICATION = 4,
152+
SYSDIR_DIRECTORY_LIBRARY = 5,
153+
SYSDIR_DIRECTORY_DEVELOPER = 6,
154+
SYSDIR_DIRECTORY_USER = 7,
155+
SYSDIR_DIRECTORY_DOCUMENTATION = 8,
156+
SYSDIR_DIRECTORY_DOCUMENT = 9,
157+
SYSDIR_DIRECTORY_CORESERVICE = 10,
158+
SYSDIR_DIRECTORY_AUTOSAVED_INFORMATION = 11,
159+
SYSDIR_DIRECTORY_DESKTOP = 12,
160+
SYSDIR_DIRECTORY_CACHES = 13,
161+
SYSDIR_DIRECTORY_APPLICATION_SUPPORT = 14,
162+
SYSDIR_DIRECTORY_DOWNLOADS = 15,
163+
SYSDIR_DIRECTORY_INPUT_METHODS = 16,
164+
SYSDIR_DIRECTORY_MOVIES = 17,
165+
SYSDIR_DIRECTORY_MUSIC = 18,
166+
SYSDIR_DIRECTORY_PICTURES = 19,
167+
SYSDIR_DIRECTORY_PRINTER_DESCRIPTION = 20,
168+
SYSDIR_DIRECTORY_SHARED_PUBLIC = 21,
169+
SYSDIR_DIRECTORY_PREFERENCE_PANES = 22,
170+
SYSDIR_DIRECTORY_ALL_APPLICATIONS = 100,
171+
SYSDIR_DIRECTORY_ALL_LIBRARIES = 101,
172+
}
173+
impl ::Copy for sysdir_search_path_directory_t {}
174+
impl ::Clone for sysdir_search_path_directory_t {
175+
fn clone(&self) -> sysdir_search_path_directory_t {
176+
*self
177+
}
178+
}
179+
180+
#[cfg_attr(feature = "extra_traits", derive(Debug))]
181+
#[repr(u32)]
182+
pub enum sysdir_search_path_domain_mask_t {
183+
SYSDIR_DOMAIN_MASK_USER = (1 << 0),
184+
SYSDIR_DOMAIN_MASK_LOCAL = (1 << 1),
185+
SYSDIR_DOMAIN_MASK_NETWORK = (1 << 2),
186+
SYSDIR_DOMAIN_MASK_SYSTEM = (1 << 3),
187+
SYSDIR_DOMAIN_MASK_ALL = 0x0ffff,
188+
}
189+
impl ::Copy for sysdir_search_path_domain_mask_t {}
190+
impl ::Clone for sysdir_search_path_domain_mask_t {
191+
fn clone(&self) -> sysdir_search_path_domain_mask_t {
192+
*self
193+
}
194+
}
195+
143196
s! {
144197
pub struct ip_mreq {
145198
pub imr_multiaddr: in_addr,
@@ -4971,6 +5024,16 @@ extern "C" {
49715024
) -> ::kern_return_t;
49725025

49735026
pub static mut mach_task_self_: mach_port_t;
5027+
5028+
// sysdir.h
5029+
pub fn sysdir_start_search_path_enumeration(
5030+
dir: sysdir_search_path_directory_t,
5031+
domainMask: sysdir_search_path_domain_mask_t,
5032+
) -> ::sysdir_search_path_enumeration_state;
5033+
pub fn sysdir_get_next_search_path_enumeration(
5034+
state: ::sysdir_search_path_enumeration_state,
5035+
path: *mut ::c_char,
5036+
) -> ::sysdir_search_path_enumeration_state;
49745037
}
49755038

49765039
pub unsafe fn mach_task_self() -> mach_port_t {

0 commit comments

Comments
 (0)