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 | 
