1 /* 2 * Copyright 2002-2013, Haiku Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef _FIND_DIRECTORY_H 6 #define _FIND_DIRECTORY_H 7 8 9 #include <image.h> 10 11 12 typedef enum { 13 /* Per volume directories */ 14 B_DESKTOP_DIRECTORY = 0, 15 B_TRASH_DIRECTORY, 16 17 /* System directories */ 18 B_SYSTEM_DIRECTORY = 1000, 19 B_SYSTEM_ADDONS_DIRECTORY = 1002, 20 B_SYSTEM_BOOT_DIRECTORY, 21 B_SYSTEM_FONTS_DIRECTORY, 22 B_SYSTEM_LIB_DIRECTORY, 23 B_SYSTEM_SERVERS_DIRECTORY, 24 B_SYSTEM_APPS_DIRECTORY, 25 B_SYSTEM_BIN_DIRECTORY, 26 B_SYSTEM_DOCUMENTATION_DIRECTORY = 1010, 27 B_SYSTEM_PREFERENCES_DIRECTORY, 28 B_SYSTEM_TRANSLATORS_DIRECTORY, 29 B_SYSTEM_MEDIA_NODES_DIRECTORY, 30 B_SYSTEM_SOUNDS_DIRECTORY, 31 B_SYSTEM_DATA_DIRECTORY, 32 B_SYSTEM_DEVELOP_DIRECTORY, 33 B_SYSTEM_PACKAGES_DIRECTORY, 34 B_SYSTEM_HEADERS_DIRECTORY, 35 36 B_SYSTEM_ETC_DIRECTORY = 2008, 37 B_SYSTEM_SETTINGS_DIRECTORY = 2010, 38 B_SYSTEM_LOG_DIRECTORY = 2012, 39 B_SYSTEM_SPOOL_DIRECTORY, 40 B_SYSTEM_TEMP_DIRECTORY, 41 B_SYSTEM_VAR_DIRECTORY, 42 B_SYSTEM_CACHE_DIRECTORY = 2020, 43 44 B_SYSTEM_NONPACKAGED_DIRECTORY = 2023, 45 B_SYSTEM_NONPACKAGED_ADDONS_DIRECTORY, 46 B_SYSTEM_NONPACKAGED_TRANSLATORS_DIRECTORY, 47 B_SYSTEM_NONPACKAGED_MEDIA_NODES_DIRECTORY, 48 B_SYSTEM_NONPACKAGED_BIN_DIRECTORY, 49 B_SYSTEM_NONPACKAGED_DATA_DIRECTORY, 50 B_SYSTEM_NONPACKAGED_FONTS_DIRECTORY, 51 B_SYSTEM_NONPACKAGED_SOUNDS_DIRECTORY, 52 B_SYSTEM_NONPACKAGED_DOCUMENTATION_DIRECTORY, 53 B_SYSTEM_NONPACKAGED_LIB_DIRECTORY, 54 B_SYSTEM_NONPACKAGED_HEADERS_DIRECTORY, 55 B_SYSTEM_NONPACKAGED_DEVELOP_DIRECTORY, 56 57 /* User directories. These are interpreted in the context 58 of the user making the find_directory call. */ 59 B_USER_DIRECTORY = 3000, 60 B_USER_CONFIG_DIRECTORY, 61 B_USER_ADDONS_DIRECTORY, 62 B_USER_BOOT_DIRECTORY, 63 B_USER_FONTS_DIRECTORY, 64 B_USER_LIB_DIRECTORY, 65 B_USER_SETTINGS_DIRECTORY, 66 B_USER_DESKBAR_DIRECTORY, 67 B_USER_PRINTERS_DIRECTORY, 68 B_USER_TRANSLATORS_DIRECTORY, 69 B_USER_MEDIA_NODES_DIRECTORY, 70 B_USER_SOUNDS_DIRECTORY, 71 B_USER_DATA_DIRECTORY, 72 B_USER_CACHE_DIRECTORY, 73 B_USER_PACKAGES_DIRECTORY, 74 B_USER_HEADERS_DIRECTORY, 75 B_USER_NONPACKAGED_DIRECTORY, 76 B_USER_NONPACKAGED_ADDONS_DIRECTORY, 77 B_USER_NONPACKAGED_TRANSLATORS_DIRECTORY, 78 B_USER_NONPACKAGED_MEDIA_NODES_DIRECTORY, 79 B_USER_NONPACKAGED_BIN_DIRECTORY, 80 B_USER_NONPACKAGED_DATA_DIRECTORY, 81 B_USER_NONPACKAGED_FONTS_DIRECTORY, 82 B_USER_NONPACKAGED_SOUNDS_DIRECTORY, 83 B_USER_NONPACKAGED_DOCUMENTATION_DIRECTORY, 84 B_USER_NONPACKAGED_LIB_DIRECTORY, 85 B_USER_NONPACKAGED_HEADERS_DIRECTORY, 86 B_USER_NONPACKAGED_DEVELOP_DIRECTORY, 87 B_USER_DEVELOP_DIRECTORY, 88 B_USER_DOCUMENTATION_DIRECTORY, 89 B_USER_SERVERS_DIRECTORY, 90 B_USER_APPS_DIRECTORY, 91 B_USER_BIN_DIRECTORY, 92 B_USER_PREFERENCES_DIRECTORY, 93 B_USER_ETC_DIRECTORY, 94 B_USER_LOG_DIRECTORY, 95 B_USER_SPOOL_DIRECTORY, 96 B_USER_VAR_DIRECTORY, 97 98 /* Global directories. */ 99 B_APPS_DIRECTORY = 4000, 100 B_PREFERENCES_DIRECTORY, 101 B_UTILITIES_DIRECTORY, 102 B_PACKAGE_LINKS_DIRECTORY, 103 104 /* Obsolete: Legacy BeOS definition to be phased out */ 105 B_BEOS_DIRECTORY = 1000, 106 B_BEOS_SYSTEM_DIRECTORY, 107 B_BEOS_ADDONS_DIRECTORY, 108 B_BEOS_BOOT_DIRECTORY, 109 B_BEOS_FONTS_DIRECTORY, 110 B_BEOS_LIB_DIRECTORY, 111 B_BEOS_SERVERS_DIRECTORY, 112 B_BEOS_APPS_DIRECTORY, 113 B_BEOS_BIN_DIRECTORY, 114 B_BEOS_ETC_DIRECTORY, 115 B_BEOS_DOCUMENTATION_DIRECTORY, 116 B_BEOS_PREFERENCES_DIRECTORY, 117 B_BEOS_TRANSLATORS_DIRECTORY, 118 B_BEOS_MEDIA_NODES_DIRECTORY, 119 B_BEOS_SOUNDS_DIRECTORY, 120 B_BEOS_DATA_DIRECTORY, 121 } directory_which; 122 123 124 /* find_path[s]() flags */ 125 enum { 126 B_FIND_PATH_CREATE_DIRECTORY = 0x0001, 127 B_FIND_PATH_CREATE_PARENT_DIRECTORY = 0x0002, 128 B_FIND_PATH_EXISTING_ONLY = 0x0004, 129 }; 130 131 132 typedef enum path_base_directory { 133 B_FIND_PATH_INSTALLATION_LOCATION_DIRECTORY, 134 B_FIND_PATH_ADD_ONS_DIRECTORY, 135 B_FIND_PATH_APPS_DIRECTORY, 136 B_FIND_PATH_BIN_DIRECTORY, 137 B_FIND_PATH_BOOT_DIRECTORY, 138 B_FIND_PATH_CACHE_DIRECTORY, 139 B_FIND_PATH_DATA_DIRECTORY, 140 B_FIND_PATH_DEVELOP_DIRECTORY, 141 B_FIND_PATH_DEVELOP_LIB_DIRECTORY, 142 B_FIND_PATH_DOCUMENTATION_DIRECTORY, 143 B_FIND_PATH_ETC_DIRECTORY, 144 B_FIND_PATH_FONTS_DIRECTORY, 145 B_FIND_PATH_HEADERS_DIRECTORY, 146 B_FIND_PATH_LIB_DIRECTORY, 147 B_FIND_PATH_LOG_DIRECTORY, 148 B_FIND_PATH_MEDIA_NODES_DIRECTORY, 149 B_FIND_PATH_PACKAGES_DIRECTORY, 150 B_FIND_PATH_PREFERENCES_DIRECTORY, 151 B_FIND_PATH_SERVERS_DIRECTORY, 152 B_FIND_PATH_SETTINGS_DIRECTORY, 153 B_FIND_PATH_SOUNDS_DIRECTORY, 154 B_FIND_PATH_SPOOL_DIRECTORY, 155 B_FIND_PATH_TRANSLATORS_DIRECTORY, 156 B_FIND_PATH_VAR_DIRECTORY, 157 158 /* find_path() only */ 159 B_FIND_PATH_IMAGE_PATH = 1000, 160 B_FIND_PATH_PACKAGE_PATH, 161 } path_base_directory; 162 163 164 #ifdef __cplusplus 165 extern "C" { 166 #endif 167 168 /* C interface */ 169 170 status_t find_directory(directory_which which, dev_t volume, bool createIt, 171 char* pathString, int32 length); 172 173 status_t find_path(const void* codePointer, path_base_directory baseDirectory, 174 const char* subPath, char* pathBuffer, size_t bufferSize); 175 176 status_t find_path_etc(const void* codePointer, const char* dependency, 177 const char* architecture, path_base_directory baseDirectory, 178 const char* subPath, uint32 flags, char* pathBuffer, size_t bufferSize); 179 180 status_t find_path_for_path(const char* path, path_base_directory baseDirectory, 181 const char* subPath, char* pathBuffer, size_t bufferSize); 182 183 status_t find_path_for_path_etc(const char* path, const char* dependency, 184 const char* architecture, path_base_directory baseDirectory, 185 const char* subPath, uint32 flags, char* pathBuffer, size_t bufferSize); 186 187 status_t find_paths(path_base_directory baseDirectory, const char* subPath, 188 char*** _paths, size_t* _pathCount); 189 190 status_t find_paths_etc(const char* architecture, 191 path_base_directory baseDirectory, const char* subPath, uint32 flags, 192 char*** _paths, size_t* _pathCount); 193 194 195 #ifdef __cplusplus 196 } 197 198 /* C++ interface */ 199 200 class BVolume; 201 class BPath; 202 203 204 status_t find_directory(directory_which which, BPath* path, 205 bool createIt = false, BVolume* volume = NULL); 206 207 208 #endif /* __cplusplus */ 209 210 #endif /* _FIND_DIRECTORY_H */ 211