aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/llvfs
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/llvfs')
-rw-r--r--linden/indra/llvfs/CMakeLists.txt1
-rw-r--r--linden/indra/llvfs/lldir.cpp12
-rw-r--r--linden/indra/llvfs/lldir.h8
-rw-r--r--linden/indra/llvfs/lldir_linux.cpp45
-rw-r--r--linden/indra/llvfs/lldir_linux.h3
-rw-r--r--linden/indra/llvfs/lldir_mac.cpp17
-rw-r--r--linden/indra/llvfs/lldir_mac.h3
-rw-r--r--linden/indra/llvfs/lldir_solaris.cpp4
-rw-r--r--linden/indra/llvfs/lldir_win32.cpp17
-rw-r--r--linden/indra/llvfs/lldir_win32.h3
-rwxr-xr-xlinden/indra/llvfs/llpidlock.cpp3
-rwxr-xr-xlinden/indra/llvfs/llpidlock.h4
-rw-r--r--linden/indra/llvfs/llvfile.cpp1
-rw-r--r--linden/indra/llvfs/llvfs.cpp8
14 files changed, 111 insertions, 18 deletions
diff --git a/linden/indra/llvfs/CMakeLists.txt b/linden/indra/llvfs/CMakeLists.txt
index cc0297e..25b57e0 100644
--- a/linden/indra/llvfs/CMakeLists.txt
+++ b/linden/indra/llvfs/CMakeLists.txt
@@ -4,7 +4,6 @@ project(llvfs)
4 4
5include(00-Common) 5include(00-Common)
6include(LLCommon) 6include(LLCommon)
7include(UnixInstall)
8 7
9include_directories( 8include_directories(
10 ${LLCOMMON_INCLUDE_DIRS} 9 ${LLCOMMON_INCLUDE_DIRS}
diff --git a/linden/indra/llvfs/lldir.cpp b/linden/indra/llvfs/lldir.cpp
index af55593..0c93cbb 100644
--- a/linden/indra/llvfs/lldir.cpp
+++ b/linden/indra/llvfs/lldir.cpp
@@ -43,6 +43,7 @@
43#include "lldir.h" 43#include "lldir.h"
44#include "llerror.h" 44#include "llerror.h"
45#include "lluuid.h" 45#include "lluuid.h"
46#include "lltimer.h"
46 47
47#if LL_WINDOWS 48#if LL_WINDOWS
48#include "lldir_win32.h" 49#include "lldir_win32.h"
@@ -192,8 +193,9 @@ const std::string &LLDir::getOSUserAppDir() const
192 return mOSUserAppDir; 193 return mOSUserAppDir;
193} 194}
194 195
195const std::string &LLDir::getLindenUserDir() const 196const std::string &LLDir::getLindenUserDir(bool empty_ok) const
196{ 197{
198 llassert(empty_ok || !mLindenUserDir.empty());
197 return mLindenUserDir; 199 return mLindenUserDir;
198} 200}
199 201
@@ -247,7 +249,7 @@ std::string LLDir::buildSLOSCacheDir() const
247 } 249 }
248 else 250 else
249 { 251 {
250 res = getOSCacheDir() + mDirDelimiter + "Imprudence"; 252 res = getOSCacheDir() + mDirDelimiter + "ImprudenceExperimental";
251 } 253 }
252 return res; 254 return res;
253} 255}
@@ -294,6 +296,10 @@ const std::string LLDir::getSkinBaseDir() const
294 return dir; 296 return dir;
295} 297}
296 298
299const std::string &LLDir::getLLPluginDir() const
300{
301 return mLLPluginDir;
302}
297 303
298std::string LLDir::getExpandedFilename(ELLPath location, const std::string& filename) const 304std::string LLDir::getExpandedFilename(ELLPath location, const std::string& filename) const
299{ 305{
@@ -465,6 +471,8 @@ std::string LLDir::getDirName(const std::string& filepath) const
465 471
466std::string LLDir::getExtension(const std::string& filepath) const 472std::string LLDir::getExtension(const std::string& filepath) const
467{ 473{
474 if (filepath.empty())
475 return std::string();
468 std::string basename = getBaseFileName(filepath, false); 476 std::string basename = getBaseFileName(filepath, false);
469 std::size_t offset = basename.find_last_of('.'); 477 std::size_t offset = basename.find_last_of('.');
470 std::string exten = (offset == std::string::npos || offset == 0) ? "" : basename.substr(offset+1); 478 std::string exten = (offset == std::string::npos || offset == 0) ? "" : basename.substr(offset+1);
diff --git a/linden/indra/llvfs/lldir.h b/linden/indra/llvfs/lldir.h
index 21dcf5b..766f351 100644
--- a/linden/indra/llvfs/lldir.h
+++ b/linden/indra/llvfs/lldir.h
@@ -80,6 +80,10 @@ class LLDir
80 virtual BOOL fileExists(const std::string &filename) const = 0; 80 virtual BOOL fileExists(const std::string &filename) const = 0;
81 81
82 const std::string findFile(const std::string &filename, const std::string searchPath1 = "", const std::string searchPath2 = "", const std::string searchPath3 = "") const; 82 const std::string findFile(const std::string &filename, const std::string searchPath1 = "", const std::string searchPath2 = "", const std::string searchPath3 = "") const;
83
84 virtual std::string getLLPluginLauncher() = 0; // full path and name for the plugin shell
85 virtual std::string getLLPluginFilename(std::string base_name) = 0; // full path and name to the plugin DSO for this base_name (i.e. 'FOO' -> '/bar/baz/libFOO.so')
86
83 const std::string &getExecutablePathAndName() const; // Full pathname of the executable 87 const std::string &getExecutablePathAndName() const; // Full pathname of the executable
84 const std::string &getAppName() const; // install directory under progams/ ie "SecondLife" 88 const std::string &getAppName() const; // install directory under progams/ ie "SecondLife"
85 const std::string &getExecutableDir() const; // Directory where the executable is located 89 const std::string &getExecutableDir() const; // Directory where the executable is located
@@ -88,7 +92,7 @@ class LLDir
88 const std::string &getAppRODataDir() const; // Location of read-only data files 92 const std::string &getAppRODataDir() const; // Location of read-only data files
89 const std::string &getOSUserDir() const; // Location of the os-specific user dir 93 const std::string &getOSUserDir() const; // Location of the os-specific user dir
90 const std::string &getOSUserAppDir() const; // Location of the os-specific user app dir 94 const std::string &getOSUserAppDir() const; // Location of the os-specific user app dir
91 const std::string &getLindenUserDir() const; // Location of the Linden user dir. 95 const std::string &getLindenUserDir(bool empty_ok = false) const; // Location of the Linden user dir.
92 const std::string &getChatLogsDir() const; // Location of the chat logs dir. 96 const std::string &getChatLogsDir() const; // Location of the chat logs dir.
93 const std::string &getPerAccountChatLogsDir() const; // Location of the per account chat logs dir. 97 const std::string &getPerAccountChatLogsDir() const; // Location of the per account chat logs dir.
94 const std::string &getTempDir() const; // Common temporary directory 98 const std::string &getTempDir() const; // Common temporary directory
@@ -100,6 +104,7 @@ class LLDir
100 const std::string &getUserSkinDir() const; // User-specified skin folder with user modifications. e.g. c:\documents and settings\username\application data\second life\skins\curskin 104 const std::string &getUserSkinDir() const; // User-specified skin folder with user modifications. e.g. c:\documents and settings\username\application data\second life\skins\curskin
101 const std::string &getDefaultSkinDir() const; // folder for default skin. e.g. c:\program files\second life\skins\default 105 const std::string &getDefaultSkinDir() const; // folder for default skin. e.g. c:\program files\second life\skins\default
102 const std::string getSkinBaseDir() const; // folder that contains all installed skins (not user modifications). e.g. c:\program files\second life\skins 106 const std::string getSkinBaseDir() const; // folder that contains all installed skins (not user modifications). e.g. c:\program files\second life\skins
107 const std::string &getLLPluginDir() const; // Directory containing plugins and plugin shell
103 108
104 // Expanded filename 109 // Expanded filename
105 std::string getExpandedFilename(ELLPath location, const std::string &filename) const; 110 std::string getExpandedFilename(ELLPath location, const std::string &filename) const;
@@ -156,6 +161,7 @@ protected:
156 std::string mSkinDir; // Location for current skin info. 161 std::string mSkinDir; // Location for current skin info.
157 std::string mDefaultSkinDir; // Location for default skin info. 162 std::string mDefaultSkinDir; // Location for default skin info.
158 std::string mUserSkinDir; // Location for user-modified skin info. 163 std::string mUserSkinDir; // Location for user-modified skin info.
164 std::string mLLPluginDir; // Location for plugins and plugin shell
159}; 165};
160 166
161void dir_exists_or_crash(const std::string &dir_name); 167void dir_exists_or_crash(const std::string &dir_name);
diff --git a/linden/indra/llvfs/lldir_linux.cpp b/linden/indra/llvfs/lldir_linux.cpp
index 8ff8c5d..5f1eabb 100644
--- a/linden/indra/llvfs/lldir_linux.cpp
+++ b/linden/indra/llvfs/lldir_linux.cpp
@@ -94,14 +94,10 @@ LLDir_Linux::LLDir_Linux()
94 mExecutablePathAndName = ""; 94 mExecutablePathAndName = "";
95 mExecutableDir = tmp_str; 95 mExecutableDir = tmp_str;
96 mWorkingDir = tmp_str; 96 mWorkingDir = tmp_str;
97#ifdef APP_RO_DATA_DIR
98 mAppRODataDir = APP_RO_DATA_DIR;
99#else
100 mAppRODataDir = tmp_str; 97 mAppRODataDir = tmp_str;
101#endif
102 mOSUserDir = getCurrentUserHome(tmp_str); 98 mOSUserDir = getCurrentUserHome(tmp_str);
103 mOSUserAppDir = ""; 99 mOSUserAppDir = "";
104 mLindenUserDir = tmp_str; 100 mLindenUserDir = "";
105 101
106 char path [32]; /* Flawfinder: ignore */ 102 char path [32]; /* Flawfinder: ignore */
107 103
@@ -128,6 +124,33 @@ LLDir_Linux::LLDir_Linux()
128 } 124 }
129 } 125 }
130 126
127 mLLPluginDir = mExecutableDir + mDirDelimiter + "llplugin";
128
129#ifdef APP_RO_DATA_DIR
130 const char* appRODataDir = APP_RO_DATA_DIR;
131 if(appRODataDir[0] == '/')
132 {
133 // We have a full path to the data directory.
134 mAppRODataDir = appRODataDir;
135 }
136 else if(appRODataDir[0] != '\0')
137 {
138 // We have a relative path to the data directory. Search
139 // for it in each potential install prefix containing the
140 // executable.
141 for(std::string prefix = getDirName(mExecutableDir);
142 !prefix.empty(); prefix = getDirName(prefix))
143 {
144 std::string dir = prefix + "/" + appRODataDir;
145 if(fileExists(dir + "/app_settings"))
146 {
147 mAppRODataDir = dir;
148 break;
149 }
150 }
151 }
152#endif
153
131 // *TODO: don't use /tmp, use $HOME/.secondlife/tmp or something. 154 // *TODO: don't use /tmp, use $HOME/.secondlife/tmp or something.
132 mTempDir = "/tmp"; 155 mTempDir = "/tmp";
133} 156}
@@ -370,3 +393,15 @@ BOOL LLDir_Linux::fileExists(const std::string &filename) const
370 } 393 }
371} 394}
372 395
396
397/*virtual*/ std::string LLDir_Linux::getLLPluginLauncher()
398{
399 return gDirUtilp->getExecutableDir() + gDirUtilp->getDirDelimiter() +
400 "SLPlugin";
401}
402
403/*virtual*/ std::string LLDir_Linux::getLLPluginFilename(std::string base_name)
404{
405 return gDirUtilp->getLLPluginDir() + gDirUtilp->getDirDelimiter() +
406 "lib" + base_name + ".so";
407}
diff --git a/linden/indra/llvfs/lldir_linux.h b/linden/indra/llvfs/lldir_linux.h
index 20b408f..8e94fb1 100644
--- a/linden/indra/llvfs/lldir_linux.h
+++ b/linden/indra/llvfs/lldir_linux.h
@@ -52,6 +52,9 @@ public:
52 virtual void getRandomFileInDir(const std::string &dirname, const std::string &mask, std::string &fname); 52 virtual void getRandomFileInDir(const std::string &dirname, const std::string &mask, std::string &fname);
53 /*virtual*/ BOOL fileExists(const std::string &filename) const; 53 /*virtual*/ BOOL fileExists(const std::string &filename) const;
54 54
55 /*virtual*/ std::string getLLPluginLauncher();
56 /*virtual*/ std::string getLLPluginFilename(std::string base_name);
57
55private: 58private:
56 DIR *mDirp; 59 DIR *mDirp;
57 int mCurrentDirIndex; 60 int mCurrentDirIndex;
diff --git a/linden/indra/llvfs/lldir_mac.cpp b/linden/indra/llvfs/lldir_mac.cpp
index 6d5dcf3..6f0b037 100644
--- a/linden/indra/llvfs/lldir_mac.cpp
+++ b/linden/indra/llvfs/lldir_mac.cpp
@@ -173,7 +173,7 @@ LLDir_Mac::LLDir_Mac()
173 if (error == noErr) 173 if (error == noErr)
174 { 174 {
175 FSRefToLLString(&cacheDirRef, mOSCacheDir); 175 FSRefToLLString(&cacheDirRef, mOSCacheDir);
176 (void)CFCreateDirectory(&cacheDirRef, CFSTR("Imprudence"),NULL); 176 (void)CFCreateDirectory(&cacheDirRef, CFSTR("ImprudenceExperimental"),NULL);
177 } 177 }
178 178
179 // mOSUserAppDir 179 // mOSUserAppDir
@@ -190,6 +190,8 @@ LLDir_Mac::LLDir_Mac()
190 } 190 }
191 191
192 mWorkingDir = getCurPath(); 192 mWorkingDir = getCurPath();
193
194 mLLPluginDir = mAppRODataDir + mDirDelimiter + "llplugin";
193 195
194 CFRelease(executableURLRef); 196 CFRelease(executableURLRef);
195 executableURLRef = NULL; 197 executableURLRef = NULL;
@@ -388,4 +390,17 @@ BOOL LLDir_Mac::fileExists(const std::string &filename) const
388} 390}
389 391
390 392
393/*virtual*/ std::string LLDir_Mac::getLLPluginLauncher()
394{
395 return gDirUtilp->getAppRODataDir() + gDirUtilp->getDirDelimiter() +
396 "SLPlugin.app/Contents/MacOS/SLPlugin";
397}
398
399/*virtual*/ std::string LLDir_Mac::getLLPluginFilename(std::string base_name)
400{
401 return gDirUtilp->getLLPluginDir() + gDirUtilp->getDirDelimiter() +
402 base_name + ".dylib";
403}
404
405
391#endif // LL_DARWIN 406#endif // LL_DARWIN
diff --git a/linden/indra/llvfs/lldir_mac.h b/linden/indra/llvfs/lldir_mac.h
index 28d48a0..8be5d03 100644
--- a/linden/indra/llvfs/lldir_mac.h
+++ b/linden/indra/llvfs/lldir_mac.h
@@ -52,6 +52,9 @@ public:
52 virtual void getRandomFileInDir(const std::string &dirname, const std::string &ask, std::string &fname); 52 virtual void getRandomFileInDir(const std::string &dirname, const std::string &ask, std::string &fname);
53 virtual BOOL fileExists(const std::string &filename) const; 53 virtual BOOL fileExists(const std::string &filename) const;
54 54
55 /*virtual*/ std::string getLLPluginLauncher();
56 /*virtual*/ std::string getLLPluginFilename(std::string base_name);
57
55private: 58private:
56 int mCurrentDirIndex; 59 int mCurrentDirIndex;
57 int mCurrentDirCount; 60 int mCurrentDirCount;
diff --git a/linden/indra/llvfs/lldir_solaris.cpp b/linden/indra/llvfs/lldir_solaris.cpp
index 9553d92..5132455 100644
--- a/linden/indra/llvfs/lldir_solaris.cpp
+++ b/linden/indra/llvfs/lldir_solaris.cpp
@@ -100,7 +100,7 @@ LLDir_Solaris::LLDir_Solaris()
100 mAppRODataDir = strdup(tmp_str); 100 mAppRODataDir = strdup(tmp_str);
101 mOSUserDir = getCurrentUserHome(tmp_str); 101 mOSUserDir = getCurrentUserHome(tmp_str);
102 mOSUserAppDir = ""; 102 mOSUserAppDir = "";
103 mLindenUserDir = tmp_str; 103 mLindenUserDir = "";
104 104
105 char path [LL_MAX_PATH]; /* Flawfinder: ignore */ 105 char path [LL_MAX_PATH]; /* Flawfinder: ignore */
106 106
@@ -161,6 +161,8 @@ LLDir_Solaris::LLDir_Solaris()
161 } 161 }
162 } 162 }
163 163
164 mLLPluginDir = mExecutableDir + mDirDelimiter + "llplugin";
165
164 // *TODO: don't use /tmp, use $HOME/.secondlife/tmp or something. 166 // *TODO: don't use /tmp, use $HOME/.secondlife/tmp or something.
165 mTempDir = "/tmp"; 167 mTempDir = "/tmp";
166} 168}
diff --git a/linden/indra/llvfs/lldir_win32.cpp b/linden/indra/llvfs/lldir_win32.cpp
index 19b9bcc..e5d6747 100644
--- a/linden/indra/llvfs/lldir_win32.cpp
+++ b/linden/indra/llvfs/lldir_win32.cpp
@@ -112,7 +112,7 @@ LLDir_Win32::LLDir_Win32()
112 } 112 }
113 else 113 else
114 { 114 {
115 fprintf(stderr, "Couldn't get APP path, assuming current directory!"); 115 LL_WARNS("AppInit") << "Couldn't get APP path, assuming current directory!\n" << LL_ENDL;
116 GetCurrentDirectory(MAX_PATH, w_str); 116 GetCurrentDirectory(MAX_PATH, w_str);
117 mExecutableDir = utf16str_to_utf8str(llutf16string(w_str)); 117 mExecutableDir = utf16str_to_utf8str(llutf16string(w_str));
118 // Assume it's the current directory 118 // Assume it's the current directory
@@ -143,6 +143,8 @@ LLDir_Win32::LLDir_Win32()
143 llwarns << "Couldn't create LL_PATH_CACHE dir " << mDefaultCacheDir << llendl; 143 llwarns << "Couldn't create LL_PATH_CACHE dir " << mDefaultCacheDir << llendl;
144 } 144 }
145 } 145 }
146
147 mLLPluginDir = mExecutableDir + mDirDelimiter + "llplugin";
146} 148}
147 149
148LLDir_Win32::~LLDir_Win32() 150LLDir_Win32::~LLDir_Win32()
@@ -378,6 +380,19 @@ BOOL LLDir_Win32::fileExists(const std::string &filename) const
378} 380}
379 381
380 382
383/*virtual*/ std::string LLDir_Win32::getLLPluginLauncher()
384{
385 return gDirUtilp->getExecutableDir() + gDirUtilp->getDirDelimiter() +
386 "SLPlugin.exe";
387}
388
389/*virtual*/ std::string LLDir_Win32::getLLPluginFilename(std::string base_name)
390{
391 return gDirUtilp->getLLPluginDir() + gDirUtilp->getDirDelimiter() +
392 base_name + ".dll";
393}
394
395
381#if 0 396#if 0
382// Utility function to get version number of a DLL 397// Utility function to get version number of a DLL
383 398
diff --git a/linden/indra/llvfs/lldir_win32.h b/linden/indra/llvfs/lldir_win32.h
index 8710ca5..9ef4d30 100644
--- a/linden/indra/llvfs/lldir_win32.h
+++ b/linden/indra/llvfs/lldir_win32.h
@@ -49,6 +49,9 @@ public:
49 /*virtual*/ void getRandomFileInDir(const std::string &dirname, const std::string &mask, std::string &fname); 49 /*virtual*/ void getRandomFileInDir(const std::string &dirname, const std::string &mask, std::string &fname);
50 /*virtual*/ BOOL fileExists(const std::string &filename) const; 50 /*virtual*/ BOOL fileExists(const std::string &filename) const;
51 51
52 /*virtual*/ std::string getLLPluginLauncher();
53 /*virtual*/ std::string getLLPluginFilename(std::string base_name);
54
52private: 55private:
53 BOOL LLDir_Win32::getNextFileInDir(const llutf16string &dirname, const std::string &mask, std::string &fname, BOOL wrap); 56 BOOL LLDir_Win32::getNextFileInDir(const llutf16string &dirname, const std::string &mask, std::string &fname, BOOL wrap);
54 57
diff --git a/linden/indra/llvfs/llpidlock.cpp b/linden/indra/llvfs/llpidlock.cpp
index 93ac120..cb64428 100755
--- a/linden/indra/llvfs/llpidlock.cpp
+++ b/linden/indra/llvfs/llpidlock.cpp
@@ -39,6 +39,7 @@
39#include "llsdserialize.h" 39#include "llsdserialize.h"
40#include "llnametable.h" 40#include "llnametable.h"
41#include "llframetimer.h" 41#include "llframetimer.h"
42#include "llapp.h"
42 43
43#if LL_WINDOWS //For windows platform. 44#if LL_WINDOWS //For windows platform.
44bool isProcessAlive(U32 pid) 45bool isProcessAlive(U32 pid)
@@ -60,7 +61,7 @@ class LLPidLockFile
60 public: 61 public:
61 LLPidLockFile( ) : 62 LLPidLockFile( ) :
62 mSaving(FALSE), mWaiting(FALSE), 63 mSaving(FALSE), mWaiting(FALSE),
63 mClean(TRUE), mPID(getpid()) 64 mClean(TRUE), mPID(LLApp::getPid())
64 { 65 {
65 mLockName = gDirUtilp->getTempDir() + "/savelock"; 66 mLockName = gDirUtilp->getTempDir() + "/savelock";
66 } 67 }
diff --git a/linden/indra/llvfs/llpidlock.h b/linden/indra/llvfs/llpidlock.h
index 42aee4d..6103599 100755
--- a/linden/indra/llvfs/llpidlock.h
+++ b/linden/indra/llvfs/llpidlock.h
@@ -39,10 +39,10 @@ class LLFrameTimer;
39 39
40#if LL_WINDOWS //For windows platform. 40#if LL_WINDOWS //For windows platform.
41 41
42# define WIN32_LEAN_AND_MEAN
43# include <winsock2.h>
42#include <windows.h> 44#include <windows.h>
43 45
44#define getpid GetCurrentProcessId
45
46#else //Everyone Else 46#else //Everyone Else
47 47
48#include <signal.h> 48#include <signal.h>
diff --git a/linden/indra/llvfs/llvfile.cpp b/linden/indra/llvfs/llvfile.cpp
index 6b1563b..630975a 100644
--- a/linden/indra/llvfs/llvfile.cpp
+++ b/linden/indra/llvfs/llvfile.cpp
@@ -38,6 +38,7 @@
38#include "llthread.h" 38#include "llthread.h"
39#include "llstat.h" 39#include "llstat.h"
40#include "llvfs.h" 40#include "llvfs.h"
41#include "llfasttimer.h"
41 42
42const S32 LLVFile::READ = 0x00000001; 43const S32 LLVFile::READ = 0x00000001;
43const S32 LLVFile::WRITE = 0x00000002; 44const S32 LLVFile::WRITE = 0x00000002;
diff --git a/linden/indra/llvfs/llvfs.cpp b/linden/indra/llvfs/llvfs.cpp
index 7df2a81..654dfa1 100644
--- a/linden/indra/llvfs/llvfs.cpp
+++ b/linden/indra/llvfs/llvfs.cpp
@@ -47,6 +47,7 @@
47 47
48#include "llvfs.h" 48#include "llvfs.h"
49#include "llstl.h" 49#include "llstl.h"
50#include "lltimer.h"
50 51
51const S32 FILE_BLOCK_MASK = 0x000003FF; // 1024-byte blocks 52const S32 FILE_BLOCK_MASK = 0x000003FF; // 1024-byte blocks
52const S32 VFS_CLEANUP_SIZE = 5242880; // how much space we free up in a single stroke 53const S32 VFS_CLEANUP_SIZE = 5242880; // how much space we free up in a single stroke
@@ -236,7 +237,7 @@ const S32 LLVFSFileBlock::SERIAL_SIZE = 34;
236LLVFS::LLVFS(const std::string& index_filename, const std::string& data_filename, const BOOL read_only, const U32 presize, const BOOL remove_after_crash) 237LLVFS::LLVFS(const std::string& index_filename, const std::string& data_filename, const BOOL read_only, const U32 presize, const BOOL remove_after_crash)
237: mRemoveAfterCrash(remove_after_crash) 238: mRemoveAfterCrash(remove_after_crash)
238{ 239{
239 mDataMutex = new LLMutex(0); 240 mDataMutex = new LLMutex;
240 241
241 S32 i; 242 S32 i;
242 for (i = 0; i < VFSLOCK_COUNT; i++) 243 for (i = 0; i < VFSLOCK_COUNT; i++)
@@ -583,8 +584,9 @@ LLVFS::LLVFS(const std::string& index_filename, const std::string& data_filename
583 } 584 }
584 } 585 }
585 586
586 LL_WARNS("VFS") << "Using index file " << mIndexFilename << LL_ENDL; 587 // Success!
587 LL_WARNS("VFS") << "Using data file " << mDataFilename << LL_ENDL; 588 LL_INFOS("VFS") << "Using index file " << mIndexFilename << LL_ENDL;
589 LL_INFOS("VFS") << "Using data file " << mDataFilename << LL_ENDL;
588 590
589 mValid = VFSVALID_OK; 591 mValid = VFSVALID_OK;
590} 592}