summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llvfs/lldir.h4
-rw-r--r--indra/llvfs/lldir_mac.cpp59
-rw-r--r--indra/llvfs/lldir_mac.h8
-rw-r--r--indra/newview/tests/lldir_stub.cpp1
-rw-r--r--indra/viewer_components/updater/tests/llupdaterservice_test.cpp6
5 files changed, 56 insertions, 22 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
diff --git a/indra/newview/tests/lldir_stub.cpp b/indra/newview/tests/lldir_stub.cpp
index 288541b4fd..18cf4e7419 100644
--- a/indra/newview/tests/lldir_stub.cpp
+++ b/indra/newview/tests/lldir_stub.cpp
@@ -45,6 +45,7 @@ public:
/*virtual*/ void initAppDirs(const std::string &app_name) {}
/*virtual*/ std::string getCurPath() { return "CUR_PATH_FROM_LLDIR"; }
+ /*virtual*/ U32 countFilesInDir(const std::string &dirname, const std::string &mask) { return 42; }
/*virtual*/ BOOL getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname, BOOL wrap) { fname = fname + "_NEXT"; return false; }
/*virtual*/ void getRandomFileInDir(const std::string &dirname, const std::string &mask, std::string &fname) { fname = "RANDOM_FILE"; }
/*virtual*/ BOOL fileExists(const std::string &filename) const { return false; }
diff --git a/indra/viewer_components/updater/tests/llupdaterservice_test.cpp b/indra/viewer_components/updater/tests/llupdaterservice_test.cpp
index 6f67fd0da0..8ffb5cacc2 100644
--- a/indra/viewer_components/updater/tests/llupdaterservice_test.cpp
+++ b/indra/viewer_components/updater/tests/llupdaterservice_test.cpp
@@ -1,4 +1,4 @@
-/**
+/**
* @file llupdaterservice_test.cpp
* @brief Tests of llupdaterservice.cpp.
*
@@ -54,6 +54,10 @@ class LLDir_Mock : public LLDir
{
void initAppDirs(const std::string &app_name,
const std::string& app_read_only_data_dir = "") {}
+ U32 countFilesInDir(const std::string &dirname, const std::string &mask)
+ {
+ return 0;
+ }
void getRandomFileInDir(const std::string &dirname,
const std::string &mask,