diff options
Diffstat (limited to 'indra/llvfs')
-rw-r--r-- | indra/llvfs/lldir.h | 4 | ||||
-rw-r--r-- | indra/llvfs/lldir_mac.cpp | 59 | ||||
-rw-r--r-- | indra/llvfs/lldir_mac.h | 8 |
3 files changed, 50 insertions, 21 deletions
diff --git a/indra/llvfs/lldir.h b/indra/llvfs/lldir.h index a8b204e63e..3b1883b5d8 100644 --- a/indra/llvfs/lldir.h +++ b/indra/llvfs/lldir.h @@ -1,4 +1,4 @@ -/** +/** * @file lldir.h * @brief Definition of directory utilities class * @@ -73,6 +73,8 @@ class LLDir virtual S32 deleteFilesInDir(const std::string &dirname, const std::string &mask); // pure virtual functions + virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask) = 0; + virtual std::string getCurPath() = 0; virtual BOOL fileExists(const std::string &filename) const = 0; diff --git a/indra/llvfs/lldir_mac.cpp b/indra/llvfs/lldir_mac.cpp index de3347cf63..9f60111275 100644 --- a/indra/llvfs/lldir_mac.cpp +++ b/indra/llvfs/lldir_mac.cpp @@ -22,7 +22,7 @@ * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ - */ + */ #if LL_DARWIN @@ -35,24 +35,8 @@ #include <sys/stat.h> #include <unistd.h> #include <glob.h> -#include <boost/filesystem.hpp> #include <Carbon/Carbon.h> -//#include "lldir_mac.mm" -// -//std::string getApplicationSupportFolder () -//{ -// std::string support_folder_str; -// CFArrayRef a = appSupport(); -// if (CFArrayGetCount(a) > 0) { -// CFStringRef s = CFArrayGetValueAtIndex(a, 0); -// char path[PATH_MAX]; -// CFStringGetFileSystemRepresentation(s, path, sizeof(path)); -// support_folder_str = std::string(path); -// } -// CFRelease(a); -// return support_folder_str; -//} // -------------------------------------------------------------------------------- @@ -125,6 +109,8 @@ static void FSRefToLLString(FSRef *fsRef, std::string &llString) LLDir_Mac::LLDir_Mac() { mDirDelimiter = "/"; + mCurrentDirIndex = -1; + mCurrentDirCount = -1; CFBundleRef mainBundleRef = NULL; CFURLRef executableURLRef = NULL; @@ -249,17 +235,52 @@ void LLDir_Mac::initAppDirs(const std::string &app_name, mSkinBaseDir = mAppRODataDir + mDirDelimiter + "skins"; } mCAFile = getExpandedFilename(LL_PATH_APP_SETTINGS, "CA.pem"); + + //dumpCurrentDirectories(); +} + +U32 LLDir_Mac::countFilesInDir(const std::string &dirname, const std::string &mask) +{ + U32 file_count = 0; + glob_t g; + + std::string tmp_str; + tmp_str = dirname; + tmp_str += mask; + + if(glob(tmp_str.c_str(), GLOB_NOSORT, NULL, &g) == 0) + { + file_count = g.gl_pathc; + + globfree(&g); + } + + return (file_count); } std::string LLDir_Mac::getCurPath() { - return boost::filesystem::path( boost::filesystem::current_path() ).string(); + char tmp_str[LL_MAX_PATH]; /* Flawfinder: ignore */ + getcwd(tmp_str, LL_MAX_PATH); + return tmp_str; } + BOOL LLDir_Mac::fileExists(const std::string &filename) const { - return boost::filesystem::exists(filename); + struct stat stat_data; + // Check the age of the file + // Now, we see if the files we've gathered are recent... + int res = stat(filename.c_str(), &stat_data); + if (!res) + { + return TRUE; + } + else + { + return FALSE; + } } diff --git a/indra/llvfs/lldir_mac.h b/indra/llvfs/lldir_mac.h index b8b9c6a9e7..64e9485757 100644 --- a/indra/llvfs/lldir_mac.h +++ b/indra/llvfs/lldir_mac.h @@ -22,7 +22,7 @@ * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ - */ + */ #if !LL_DARWIN #error This header must not be included when compiling for any target other than Mac OS. Consider including lldir.h instead. @@ -45,10 +45,16 @@ public: const std::string& app_read_only_data_dir); virtual std::string getCurPath(); + virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask); virtual BOOL fileExists(const std::string &filename) const; /*virtual*/ std::string getLLPluginLauncher(); /*virtual*/ std::string getLLPluginFilename(std::string base_name); + +private: + int mCurrentDirIndex; + int mCurrentDirCount; + std::string mCurrentDir; }; #endif // LL_LLDIR_MAC_H |