From 0f8af9d8cb13776c30a340f364c3b60d8f6a4eab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 5 Jul 2005 18:21:50 +0000 Subject: [PATCH] Removed extra version of find_directory() - it is supposed to live in libroot.so, and in fact, already does it for quite some time :) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13456 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/storage/FindDirectory.cpp | 295 ++--------------------------- 1 file changed, 14 insertions(+), 281 deletions(-) diff --git a/src/kits/storage/FindDirectory.cpp b/src/kits/storage/FindDirectory.cpp index b71b729436..781ab1c207 100644 --- a/src/kits/storage/FindDirectory.cpp +++ b/src/kits/storage/FindDirectory.cpp @@ -1,6 +1,6 @@ //---------------------------------------------------------------------- -// This software is part of the OpenBeOS distribution and is covered -// by the OpenBeOS license. +// This software is part of the Haiku distribution and is covered +// by the MIT license. //--------------------------------------------------------------------- /*! \file FindDirectory.cpp @@ -8,273 +8,9 @@ */ #include - -#include -#include - -#include -#include -#include #include #include -#ifdef USE_OPENBEOS_NAMESPACE -namespace OpenBeOS { -#endif - -enum { - NOT_IMPLEMENTED = B_ERROR, -}; - -// find_directory -/*! \brief Internal find_directory() helper function, that does the real work. - \param which the directory_which constant specifying the directory - \param path a BPath object to be initialized to the directory's path - \param createIt \c true, if the directory shall be created, if it doesn't - already exist, \c false otherwise. - \param device the volume on which the directory is located - \return \c B_OK if everything went fine, an error code otherwise. -*/ -static -status_t -find_directory(directory_which which, BPath &path, bool createIt, dev_t device) -{ - status_t error = B_BAD_VALUE; - switch (which) { - // volume relative dirs - case B_DESKTOP_DIRECTORY: - { - if (device < 0) - device = dev_for_path("/boot"); - fs_info info; - if (fs_stat_dev(device, &info) == 0) { - if (!strcmp(info.fsh_name, "bfs")) { - entry_ref ref(device, info.root, "home"); - BPath homePath(&ref); - error = homePath.InitCheck(); - if (error == B_OK) - path.SetTo(homePath.Path(), "Desktop"); - } else - error = B_ENTRY_NOT_FOUND; - } else - error = errno; - break; - } - case B_TRASH_DIRECTORY: - { - if (device < 0) - device = dev_for_path("/boot"); - fs_info info; - if (fs_stat_dev(device, &info) == 0) { - if (!strcmp(info.fsh_name, "bfs")) { - entry_ref ref(device, info.root, "home"); - BPath homePath(&ref); - error = homePath.InitCheck(); - if (error == B_OK) - path.SetTo(homePath.Path(), "Desktop/Trash"); - } else if (!strcmp(info.fsh_name, "dos")) { - entry_ref ref(device, info.root, "RECYCLED"); - BPath recycledPath(&ref); - error = recycledPath.InitCheck(); - if (error == B_OK) - path.SetTo(recycledPath.Path(), "_BEOS_"); - } else - error = B_ENTRY_NOT_FOUND; - } else - error = errno; - break; - } - // BeOS directories. These are mostly accessed read-only. - case B_BEOS_DIRECTORY: - error = path.SetTo("/boot/beos"); - break; - case B_BEOS_SYSTEM_DIRECTORY: - error = path.SetTo("/boot/beos/system"); - break; - case B_BEOS_ADDONS_DIRECTORY: - error = path.SetTo("/boot/beos/system/add-ons"); - break; - case B_BEOS_BOOT_DIRECTORY: - error = path.SetTo("/boot/beos/system/boot"); - break; - case B_BEOS_FONTS_DIRECTORY: - error = path.SetTo("/boot/beos/etc/fonts"); - break; - case B_BEOS_LIB_DIRECTORY: - error = path.SetTo("/boot/beos/system/lib"); - break; - case B_BEOS_SERVERS_DIRECTORY: - error = path.SetTo("/boot/beos/system/servers"); - break; - case B_BEOS_APPS_DIRECTORY: - error = path.SetTo("/boot/beos/apps"); - break; - case B_BEOS_BIN_DIRECTORY: - error = path.SetTo("/boot/beos/bin"); - break; - case B_BEOS_ETC_DIRECTORY: - error = path.SetTo("/boot/beos/etc"); - break; - case B_BEOS_DOCUMENTATION_DIRECTORY: - error = path.SetTo("/boot/beos/documentation"); - break; - case B_BEOS_PREFERENCES_DIRECTORY: - error = path.SetTo("/boot/beos/preferences"); - break; - case B_BEOS_TRANSLATORS_DIRECTORY: - error = path.SetTo("/boot/beos/system/add-ons/Translators"); - break; - case B_BEOS_MEDIA_NODES_DIRECTORY: - error = path.SetTo("/boot/beos/system/add-ons/media"); - break; - case B_BEOS_SOUNDS_DIRECTORY: - error = path.SetTo("/boot/beos/etc/sounds"); - break; - // Common directories, shared among all users. - case B_COMMON_DIRECTORY: - error = path.SetTo("/boot/home"); - break; - case B_COMMON_SYSTEM_DIRECTORY: - error = path.SetTo("/boot/home/config"); - break; - case B_COMMON_ADDONS_DIRECTORY: - error = path.SetTo("/boot/home/config/add-ons"); - break; - case B_COMMON_BOOT_DIRECTORY: - error = path.SetTo("/boot/home/config/boot"); - break; - case B_COMMON_FONTS_DIRECTORY: - error = path.SetTo("/boot/home/config/fonts"); - break; - case B_COMMON_LIB_DIRECTORY: - error = path.SetTo("/boot/home/config/lib"); - break; - case B_COMMON_SERVERS_DIRECTORY: - error = path.SetTo("/boot/home/config/servers"); - break; - case B_COMMON_BIN_DIRECTORY: - error = path.SetTo("/boot/home/config/bin"); - break; - case B_COMMON_ETC_DIRECTORY: - error = path.SetTo("/boot/home/config/etc"); - break; - case B_COMMON_DOCUMENTATION_DIRECTORY: - error = path.SetTo("/boot/home/config/documentation"); - break; - case B_COMMON_SETTINGS_DIRECTORY: - error = path.SetTo("/boot/home/config/settings"); - break; - case B_COMMON_DEVELOP_DIRECTORY: - error = path.SetTo("/boot/develop"); - break; - case B_COMMON_LOG_DIRECTORY: - error = path.SetTo("/boot/var/log"); - break; - case B_COMMON_SPOOL_DIRECTORY: - error = path.SetTo("/boot/var/spool"); - break; - case B_COMMON_TEMP_DIRECTORY: - error = path.SetTo("/boot/var/tmp"); - break; - case B_COMMON_VAR_DIRECTORY: - error = path.SetTo("/boot/var"); - break; - case B_COMMON_TRANSLATORS_DIRECTORY: - error = path.SetTo("/boot/home/config/add-ons/Translators"); - break; - case B_COMMON_MEDIA_NODES_DIRECTORY: - error = path.SetTo("/boot/home/config/add-ons/media"); - break; - case B_COMMON_SOUNDS_DIRECTORY: - error = path.SetTo("/boot/home/config/sounds"); - break; - // User directories. These are interpreted in the context - // of the user making the find_directory call. - case B_USER_DIRECTORY: - error = path.SetTo("/boot/home"); - break; - case B_USER_CONFIG_DIRECTORY: - error = path.SetTo("/boot/home/config"); - break; - case B_USER_ADDONS_DIRECTORY: - error = path.SetTo("/boot/home/config/add-ons"); - break; - case B_USER_BOOT_DIRECTORY: - error = path.SetTo("/boot/home/config/boot"); - break; - case B_USER_FONTS_DIRECTORY: - error = path.SetTo("/boot/home/config/fonts"); - break; - case B_USER_LIB_DIRECTORY: - error = path.SetTo("/boot/home/config/lib"); - break; - case B_USER_SETTINGS_DIRECTORY: - error = path.SetTo("/boot/home/config/settings"); - break; - case B_USER_DESKBAR_DIRECTORY: - error = path.SetTo("/boot/home/config/be"); - break; - case B_USER_PRINTERS_DIRECTORY: - error = path.SetTo("/boot/home/config/settings/printers"); - break; - case B_USER_TRANSLATORS_DIRECTORY: - error = path.SetTo("/boot/home/config/add-ons/Translators"); - break; - case B_USER_MEDIA_NODES_DIRECTORY: - error = path.SetTo("/boot/home/config/add-ons/media"); - break; - case B_USER_SOUNDS_DIRECTORY: - error = path.SetTo("/boot/home/config/sounds"); - break; - // Global directories. - case B_APPS_DIRECTORY: - error = path.SetTo("/boot/apps"); - break; - case B_PREFERENCES_DIRECTORY: - error = path.SetTo("/boot/preferences"); - break; - case B_UTILITIES_DIRECTORY: - error = path.SetTo("/boot/utilities"); - break; - } - // create the directory, if desired - if (error == B_OK && createIt) - create_directory(path.Path(), S_IRWXU | S_IRWXG | S_IRWXO); - return error; -} - - -// find_directory -//! Returns a path of a directory specified by a directory_which constant. -/*! If the supplied volume ID is - \param which the directory_which constant specifying the directory - \param volume the volume on which the directory is located - \param createIt \c true, if the directory shall be created, if it doesn't - already exist, \c false otherwise. - \param pathString a pointer to a buffer into which the directory path - shall be written. - \param length the size of the buffer - \return - - \c B_OK: Everything went fine. - - \c B_BAD_VALUE: \c NULL \a pathString. - - \c E2BIG: Buffer is too small for path. - - another error code -*/ -status_t -find_directory(directory_which which, dev_t volume, bool createIt, - char *pathString, int32 length) -{ - status_t error = (pathString ? B_OK : B_BAD_VALUE); - if (error == B_OK) { - BPath path; - error = find_directory(which, path, createIt, volume); - if (error == B_OK && (int32)strlen(path.Path()) >= length) - error = E2BIG; - if (error == B_OK) - strcpy(pathString, path.Path()); - } - return error; -} // find_directory //! Returns a path of a directory specified by a directory_which constant. @@ -292,21 +28,18 @@ status_t find_directory(directory_which which, BPath *path, bool createIt, BVolume *volume) { - status_t error = (path ? B_OK : B_BAD_VALUE); - if (error == B_OK) { - dev_t device = (dev_t)-1; - if (volume && volume->InitCheck() == B_OK) - device = volume->Device(); - error = find_directory(which, *path, createIt, device); - } + if (path == NULL) + return B_BAD_VALUE; + + dev_t device = (dev_t)-1; + if (volume && volume->InitCheck() == B_OK) + device = volume->Device(); + + char buffer[B_PATH_NAME_LENGTH]; + status_t error = find_directory(which, device, createIt, buffer, B_PATH_NAME_LENGTH); + if (error == B_OK) + error = path->SetTo(buffer); + return error; } - -#ifdef USE_OPENBEOS_NAMESPACE -}; // namespace OpenBeOS -#endif - - - -