00001
00032 #ifndef LL_LLDIR_H
00033 #define LL_LLDIR_H
00034
00035 typedef enum ELLPath
00036 {
00037 LL_PATH_NONE = 0,
00038 LL_PATH_USER_SETTINGS = 1,
00039 LL_PATH_APP_SETTINGS = 2,
00040 LL_PATH_PER_SL_ACCOUNT = 3,
00041 LL_PATH_CACHE = 4,
00042 LL_PATH_CHARACTER = 5,
00043 LL_PATH_MOTIONS = 6,
00044 LL_PATH_HELP = 7,
00045 LL_PATH_LOGS = 8,
00046 LL_PATH_TEMP = 9,
00047 LL_PATH_SKINS = 10,
00048 LL_PATH_TOP_SKIN = 11,
00049 LL_PATH_CHAT_LOGS = 12,
00050 LL_PATH_PER_ACCOUNT_CHAT_LOGS = 13,
00051 LL_PATH_MOZILLA_PROFILE = 14,
00052 LL_PATH_HTML = 15,
00053 LL_PATH_COUNT = 16
00054 } ELLPath;
00055
00056
00057 class LLDir
00058 {
00059 public:
00060 LLDir();
00061 virtual ~LLDir();
00062
00063 virtual void initAppDirs(const std::string &app_name) = 0;
00064 public:
00065 virtual S32 deleteFilesInDir(const std::string &dirname, const std::string &mask);
00066
00067
00068 virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask) = 0;
00069 virtual BOOL getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname, BOOL wrap) = 0;
00070 virtual void getRandomFileInDir(const std::string &dirname, const std::string &mask, std::string &fname) = 0;
00071 virtual std::string getCurPath() = 0;
00072 virtual BOOL fileExists(const std::string &filename) = 0;
00073
00074 const std::string findFile(const std::string &filename, const std::string searchPath1 = "", const std::string searchPath2 = "", const std::string searchPath3 = "");
00075 const std::string &getExecutablePathAndName() const;
00076 const std::string &getAppName() const;
00077 const std::string &getExecutableDir() const;
00078 const std::string &getExecutableFilename() const;
00079 const std::string &getWorkingDir() const;
00080 const std::string &getAppRODataDir() const;
00081 const std::string &getOSUserDir() const;
00082 const std::string &getOSUserAppDir() const;
00083 const std::string &getLindenUserDir() const;
00084 const std::string &getChatLogsDir() const;
00085 const std::string &getPerAccountChatLogsDir() const;
00086 const std::string &getTempDir() const;
00087 const std::string getCacheDir(bool get_default = false) const;
00088 const std::string &getCAFile() const;
00089 const std::string &getDirDelimiter() const;
00090 const std::string &getSkinDir() const;
00091
00092
00093 std::string getExpandedFilename(ELLPath location, const std::string &filename) const;
00094 std::string getExpandedFilename(ELLPath location, const std::string &subdir, const std::string &filename) const;
00095
00096
00097 std::string getTempFilename() const;
00098
00099 virtual void setChatLogsDir(const std::string &path);
00100 virtual void setPerAccountChatLogsDir(const std::string &first, const std::string &last);
00101 virtual void setLindenUserDir(const std::string &first, const std::string &last);
00102 virtual void setSkinFolder(const std::string &skin_folder);
00103 virtual bool setCacheDir(const std::string &path);
00104
00105 virtual void dumpCurrentDirectories();
00106
00107 protected:
00108 std::string mAppName;
00109 std::string mExecutablePathAndName;
00110 std::string mExecutableFilename;
00111 std::string mExecutableDir;
00112 std::string mWorkingDir;
00113 std::string mAppRODataDir;
00114 std::string mOSUserDir;
00115 std::string mOSUserAppDir;
00116 std::string mLindenUserDir;
00117 std::string mPerAccountChatLogsDir;
00118 std::string mChatLogsDir;
00119 std::string mCAFile;
00120 std::string mTempDir;
00121 std::string mCacheDir;
00122 std::string mDirDelimiter;
00123 std::string mSkinDir;
00124 };
00125
00126 void dir_exists_or_crash(const std::string &dir_name);
00127
00128 extern LLDir *gDirUtilp;
00129
00130 #endif // LL_LLDIR_H