From 1154d5afde0730b541716587ca3c5b962dba1b8d Mon Sep 17 00:00:00 2001
From: Aura Linden <aura@lindenlab.com>
Date: Wed, 25 Jul 2012 16:08:27 -0700
Subject: [PATCH] Reverted boost/cocoa changes to purely Mountain Lion fixes.

---
 indra/llvfs/lldir.h                           |  4 +-
 indra/llvfs/lldir_mac.cpp                     | 59 +++++++++++++------
 indra/llvfs/lldir_mac.h                       |  8 ++-
 indra/newview/tests/lldir_stub.cpp            |  1 +
 .../updater/tests/llupdaterservice_test.cpp   |  6 +-
 5 files changed, 56 insertions(+), 22 deletions(-)

diff --git a/indra/llvfs/lldir.h b/indra/llvfs/lldir.h
index a8b204e63e1..3b1883b5d8b 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 de3347cf634..9f60111275a 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 b8b9c6a9e73..64e9485757d 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 @@ class LLDir_Mac : public LLDir
 		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 288541b4fdd..18cf4e7419e 100644
--- a/indra/newview/tests/lldir_stub.cpp
+++ b/indra/newview/tests/lldir_stub.cpp
@@ -45,6 +45,7 @@ class LLDir_stub : public LLDir
 	/*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 6f67fd0da00..8ffb5cacc27 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, 
-- 
GitLab