-
Notifications
You must be signed in to change notification settings - Fork 0
/
sysdir.3
197 lines (148 loc) · 8.82 KB
/
sysdir.3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
sysdir(3) Library Functions Manual sysdir(3)
NAME
sysdir_start_search_path_enumeration,
sysdir_get_next_search_path_enumeration – Enumeration of the filesystem
paths for the various standard system directories where apps, resources,
etc. get installed.
SYNOPSIS
#include <sysdir.h>
sysdir_search_path_enumeration_state
sysdir_start_search_path_enumeration(sysdir_search_path_directory_t dir,
sysdir_search_path_domain_mask_t domainMask);
sysdir_search_path_enumeration_state
sysdir_get_next_search_path_enumeration(sysdir_search_path_enumeration_state state,
char *path);
DESCRIPTION
The sysdir API returns the various standard system directories where
apps, resources, etc. get installed. Because queries can return multiple
directories, the API is in the form of an enumeration. The directories
are returned in search path order: that is, the first place to look is
returned first.
sysdir_start_search_path_enumeration() begins enumeration of the
filesystem paths for the specified directory and domain(s). The return
value should be passed to one or more calls to
sysdir_get_next_search_path_enumeration() to obtain the filesystem path
and continue the enumeration.
sysdir_get_next_search_path_enumeration() returns a filesystem path for
the directory and domain(s) specified by the state value returned by
sysdir_start_search_path_enumeration(). Subsequent calls to
sysdir_get_next_search_path_enumeration() should pass the state value
returned by the previous call to continue the enumeration in each domain.
A state value of zero will be returned when all domains have been
enumerated.
The path buffer that is passed to
sysdir_get_next_search_path_enumeration() will be filled with a null-
terminated string, possibly containing as many as PATH_MAX-1 characters.
Some directory paths returned may not exist on the filesystem.
Some combinations of dir and domainMask may return no directory paths.
Directory paths returned in the user domain will contain "~" to refer to
the user's directory.
The environment variable NEXT_ROOT is prepended as necessary to the
returned directory paths. NEXT_ROOT is ignored if the process is setuid
or is code signed with entitlements.
DIRECTORY CONSTANTS
The following sysdir_search_path_directory constants are defined:
SYSDIR_DIRECTORY_APPLICATION Supported applications (Applications)
SYSDIR_DIRECTORY_DEMO_APPLICATION
Unsupported applications and
demonstration versions
(Applications/Demos)
SYSDIR_DIRECTORY_DEVELOPER_APPLICATION
Developer applications
(Developer/Applications) Deprecated: As
of Xcode 4.3, there is no longer a
Developer Application directory
directory; instead, Xcode.app is a self-
contained application that gets
installed in the user's Applications
directory, by default, although it can
be put anywhere.
SYSDIR_DIRECTORY_ADMIN_APPLICATION
System and network administration
applications (Applications/Utilities)
SYSDIR_DIRECTORY_LIBRARY Various user-visible documentation,
support, and configuration files,
resources (Library)
SYSDIR_DIRECTORY_DEVELOPER Developer resources (Developer)
Deprecated: As of Xcode 4.3, there is no
longer a Developer directory; instead,
Xcode.app is a self-contained
application that gets installed in the
user's Applications directory, by
default, although it can be put
anywhere.
SYSDIR_DIRECTORY_USER User home directories (Users)
SYSDIR_DIRECTORY_DOCUMENTATION Location of documentation
(Library/Documentation)
SYSDIR_DIRECTORY_DOCUMENT Location of documents (Documents)
SYSDIR_DIRECTORY_CORESERVICE Location of core services
(Library/CoreServices)
SYSDIR_DIRECTORY_AUTOSAVED_INFORMATION
Location of user's autosaved documents
(Library/Autosave Information)
SYSDIR_DIRECTORY_DESKTOP Location of user's desktop directory
(Desktop)
SYSDIR_DIRECTORY_CACHES Location of discardable cache files
(Library/Caches)
SYSDIR_DIRECTORY_APPLICATION_SUPPORT
Location of application support files
(Library/Application Support)
SYSDIR_DIRECTORY_DOWNLOADS Location of user's downloads directory
(Downloads)
SYSDIR_DIRECTORY_INPUT_METHODS Location of input methods (Library/Input
Methods)
SYSDIR_DIRECTORY_MOVIES Location of user's Movies directory
(Movies)
SYSDIR_DIRECTORY_MUSIC Location of user's Music directory
(Music)
SYSDIR_DIRECTORY_PICTURES Location of user's Pictures directory
(Pictures)
SYSDIR_DIRECTORY_PRINTER_DESCRIPTION
Location of system's PPDs directory
(Library/Printers/PPDs)
SYSDIR_DIRECTORY_SHARED_PUBLIC Location of user's Public sharing
directory (Public)
SYSDIR_DIRECTORY_PREFERENCE_PANES
Location of the PreferencePanes
directory for use with System
Preferences (Library/PreferencePanes)
SYSDIR_DIRECTORY_ALL_APPLICATIONS
All directories where applications can
occur (/Applications, ~/Applications,
/Applications/Utilities, etc)
SYSDIR_DIRECTORY_ALL_LIBRARIES All directories where resources can
occur (/Library, ~/Library,
/Network/Library, etc)
DOMAIN CONSTANTS
The following sysdir_search_path_domain_mask constants are defined:
SYSDIR_DOMAIN_MASK_USER The user's home directory -- the place
to install user's personal items (~)
SYSDIR_DOMAIN_MASK_LOCAL Local to the current machine -- the
place to install items available to
everyone on this machine
SYSDIR_DOMAIN_MASK_NETWORK Publically available location in the
local area network -- the place to
install items available on the network
SYSDIR_DOMAIN_MASK_SYSTEM Provided by Apple -- can't be modified
SYSDIR_DOMAIN_MASK_ALL All domains -- all of the above and
future domains
ENVIRONMENT
The following environment variable affects the execution of
sysdir_get_next_search_path_enumeration:
NEXT_ROOT If the NEXT_ROOT environment variable is set and the current
process is not tainted by uid or gid changes, NEXT_ROOT is
prepended as necessary to the returned directory paths.
NEXT_ROOT is ignored if the process is setuid or is code
signed with entitlements.
EXAMPLES
#include <limits.h>
#include <sysdir.h>
char path[PATH_MAX];
sysdir_search_path_enumeration_state state = sysdir_start_search_path_enumeration(dir, domainMask);
while ( (state = sysdir_get_next_search_path_enumeration(state, path)) != 0 ) {
// Handle directory path
}
HISTORY
The sysdir API first appeared in OS X 10.12, iOS 10, watchOS 3 and tvOS
10 replacing the deprecated NSSystemDirectories(3) API.
Darwin December 22, 2015 Darwin