sysdir(3) BSD 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 filesys- tem 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 enumer- ated. The path buffer that is passed to sysdir_get_next_search_path_enumeration() will be filled with a null-ter- minated 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 demonstra- tion versions (Applications/Demos) SYSDIR_DIRECTORY_DEVELOPER_APPLICATION Developer applications (Developer/Appli- cations) Deprecated: As of Xcode 4.3, there is no longer a Developer Applica- tion directory directory; instead, Xcode.app is a self-contained applica- tion 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 appli- cations (Applications/Utilities) SYSDIR_DIRECTORY_LIBRARY Various user-visible documentation, sup- port, and configuration files, resources (Library) SYSDIR_DIRECTORY_DEVELOPER Developer resources (Developer) Depre- cated: As of Xcode 4.3, there is no longer a Developer directory; instead, Xcode.app is a self-contained applica- tion 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/Docu- mentation) SYSDIR_DIRECTORY_DOCUMENT Location of documents (Documents) SYSDIR_DIRECTORY_CORESERVICE Location of core services (Library/Core- Services) 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 direc- tory (Public) SYSDIR_DIRECTORY_PREFERENCE_PANES Location of the PreferencePanes direc- tory 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, /Net- work/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
Mac OS X 10.12.3 - Generated Wed Feb 8 18:23:11 CST 2017