summaryrefslogtreecommitdiff
path: root/indra/llvfs
AgeCommit message (Collapse)Author
2021-03-08Revert "Merge branch 'master' of https://bitbucket.org/lindenlab/viewer into ↵Brad Payne (Vir Linden)
DRTVWR-519" This reverts commit e61f485a04dc8c8ac6bcf6a24848359092884d14, reversing changes made to 00c47d079f7e958e473ed4083a7f7691fa02dcd5.
2020-09-16First part of change to remove LLVFS from the Viewer. Consists of code ↵Callum Prentice
changes to remove LLVFS and LLVFSThread classes along with the associated source files. The existing llvfs folder is renamed to llcache. Also includes changes to CMake script in many places to reflect changes. Eventually, llvfile source file and class will be renamed but that is not in this change.
2020-09-16Check existence of local files instead of checking VFSMnikolenko Productengine
2020-09-11Effective rename of DRTVWR-506-simple since there is no way to rename a ↵Callum Prentice
branch. Cloned canonical viewer into DRTVWR-519, copied over the files that changed from DRTVWR-506-simple and pushed back. Once I am satisfied everything is correct, DRTVWR-506-simple will be removed
2020-03-25[DRTVWR-476] - fix compiler errors 32 bit windows buildAnchor
2020-03-25DRTVWR-494: Use std::thread::id for LLThread::currentID().Nat Goodspeed
LLThread::currentID() used to return a U32, a distinct unsigned value incremented by explicitly constructing LLThread or by calling LLThread:: registerThreadID() early in a thread launched by other means. The latter imposed an unobvious requirement on new code based on std::thread. Using std::thread::id instead delegates to the compiler/library the problem of distinguishing threads launched by any means. Change lots of explicit U32 declarations. Introduce LLThread::id_t typedef to avoid having to run around fixing uses again if we later revisit this decision. LLMutex, which stores an LLThread::id_t, wants a distinguished value meaning NO_THREAD, and had an enum with that name. But as std::thread::id promises that the default-constructed value is distinct from every valid value, NO_THREAD becomes unnecessary and goes away. Because LLMutex now stores LLThread::id_t instead of U32, make llmutex.h #include "llthread.h" instead of the other way around. This makes LLMutex an incomplete type within llthread.h, so move LLThread::lockData() and unlockData() to the .cpp file. Similarly, remove llrefcount.h's #include "llmutex.h" to break circularity; instead forward-declare LLMutex. It turns out that a number of source files assumed that #include "llthread.h" would get the definition for LLMutex. Sprinkle #include "llmutex.h" as needed. In the SAFE_SSL code in llcorehttp/httpcommon.cpp, there's an ssl_thread_id() callback that returns an unsigned long to the SSL library. When LLThread:: currentID() was U32, we could simply return that. But std::thread::id is very deliberately opaque, and can't be reinterpret_cast to unsigned long. Fortunately it can be hashed because std::hash is specialized with that type.
2019-06-03SL-10423 Dump path data when missing critical fileandreykproductengine
2019-03-01Merged in lindenlab/viewer-releaseAndreyL ProductEngine
2019-01-15SL-10291 Replace apr_atomic with standard C++11 functionalityandreykproductengine
2019-01-17SL-10291 cleanup-mutexandreykproductengine
2019-01-14SL-10291 Replace apr_mutex with standard C++11 functionalityandreykproductengine
2018-12-15SL-10153: auto name{expression} declares an initializer_listNat Goodspeed
instead of a variable of type decltype(expression). Using SHGetKnownFolderPath(FOLDERID_Fonts) in LLFontGL::getFontPathSystem() requires new Windows #include files. A variable with a constructor can't be declared within the braces of a switch statement, even outside any of its case clauses.
2018-12-14SL-10153: Review and rationalize fetching paths from environment.Nat Goodspeed
Use LLStringUtil::getenv() or getoptenv() whenever we fetch a string that will be used as a pathname. Use LLFile::tmpdir() instead of getenv("TEMP"). As an added extra-special bonus, finally clean up $TMP/llcontrol-test-zzzzzz directories that have been accumulating every time we run a local build!
2018-12-11SL-10153: Validate APPDATA, LOCALAPPDATA by checking existence.Nat Goodspeed
2018-12-10SL-10153: Use a degenerate singleton for PRELOG log file.Nat Goodspeed
The previous build declared a static std::ofstream; but the code that determines the pathname for the log file is called so early that static objects have not yet been constructed. Declare a pointer instead, and instantiate it on demand.
2018-12-08SL-10153: Add ole32 to WINDOWS_LIBRARIES so it's everywhere we need.Nat Goodspeed
2018-12-08SL-10153: Need ole32 for new Windows call to CoTaskMemFree().Nat Goodspeed
2018-12-08SL-10153: Try to handle non-English non-ASCII Windows APPDATA.Nat Goodspeed
2018-12-06SL-10174: LOCALAPPDATA bad? Try SHGetFolderPath(CSIDL_LOCAL_APPDATA).Nat Goodspeed
This logic is essentially copy-and-edited from the same suspenders-and-belt concerning APPDATA and CSIDL_APPDATA for SL-10153.
2018-12-05SL-10153: If $APPDATA isn't already good, try SHGetFolderPath().Nat Goodspeed
In that case, also update $APPDATA for child processes.
2018-10-17Automated merge with ssh://bitbucket.org/nat_linden/viewer-poseidonNat Goodspeed
2018-09-13DRTVWR-474: Clean up use of LLDir::getAppRODataDir(), esp. on Mac.Nat Goodspeed
Clearly it's not obvious to maintainers that on the Mac, getAppRODataDir() returns the app's Resources directory: in a number of places the code starts with the executable directory and appends "../Resources" to find that.
2018-09-07remove only-partially-successful attempt to put teamcity blocks around targetsOz Linden
2018-09-05add more block structure to TeamCity log output for componentsOz Linden
2018-08-21Don't compare rbegin() iterators, use LLStringUtil::endsWith().Nat Goodspeed
I think the intention of (sDumpDir.rbegin() == mDirDelimiter.rbegin()) was to test whether sDumpDir endsWith(mDirDelimiter). But those iterators will never be equal. Instead, use LLStringUtil::endsWith().
2018-03-02MAINT-8297 path fix #2andreykproductengine
2018-03-02MAINT-8297 path fixandreykproductengine
2018-03-01MAINT-8297 Cleanupandreykproductengine
2018-02-22MAINT-8183 Fixed some exit issues and crashesandreykproductengine
2018-02-21MAINT-8297 Removing old ca bundleAndrey Kleshchev
2018-02-15MAINT-8297 Fixed "Missing CA File" message when running under debugger on ↵andreykproductengine
windows
2018-02-12Merged in lindenlab/viewer-bearAndreyL ProductEngine
2018-01-23MAINT-8047 [Mac] Incorrect VFS (cache) creation time is shown in "help>about SL"maxim_productengine
2018-01-17merge 5.1.0-releaseOz Linden
2017-12-20MAINT-8087: Use env vars from VMP for AppData\Roaming and Local.Nat Goodspeed
On Windows, when logged in with a non-ASCII username, every one of the three documented APIs -- SHGetSpecialFolderPath(), SHGetFolderPath() and SHGetKnownFolderPath() -- fails to retrieve any pathname at all. We cannot account for the fact that the oldest of these continues to work with the release viewer and within a Python script (though not, curiously, from a Python interactive session). With a non-ASCII username, they consistently fail when called from an Alex Ivy viewer build: "The filename, directory name, or volume label syntax is incorrect." Empirically, with a non-ASCII username, the preset APPDATA and LOCALAPPDATA environment variables are also useless, e.g. c:\Users\??????\AppData\Roaming where those are, yup, actual question marks. Empirically, the VMP is able to successfully call SHGetFolderPath() to retrieve both AppData\Roaming and AppData\Local. Therefore, we make the VMP set the APPDATA and LOCALAPPDATA environment variables to the UTF-8 encoded correct pathnames. Instead of calling SHGetSomethingFolderPath() at all, make LLDir_Win32 retrieve those environment variables. Make LLFile::mkdir() treat "directory already exists" as a success case. Every single call fell into one of two categories: either it didn't check success at all, or it tested specially to exempt errno == EEXIST. Migrate that test into mkdir(); eliminate it from call sites. Make LLDir::append() and add() convenience functions accept variadic arguments. Replace add(add()...) constructs, as well as clumsy concatenations of directory names and getDirDelimiter(), with simple variadic add() calls.
2017-12-14MAINT-8087: #include header for CoTaskMemFree() functionNat Goodspeed
which is required to free the pointer returned by SHGetKnownFolderPath().
2017-12-14MAINT-8087: Use SHGetKnownFolderPath(), not SHGetSpecialFolderPath().Nat Goodspeed
SHGetSpecialFolderPath() is deprecated, and empirically it appears to be failing when the user name contains non-ASCII characters. The relevant Microsoft documentation pages recommend calling SHGetKnownFolderPath() instead. Also, the SHGetSpecialFolderPath() calls had no error checking or reporting, which is why we can only say it "appears to be" failing. Make sure that if SHGetKnownFolderPath() fails, at least we try to tell somebody about it.
2017-10-11Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2017-10-11merge changes for 5.0.8-releaseOz Linden
2017-08-23merge changes for 5.0.7-releaseOz Linden
2017-08-16merge changes for DRTVWR-439Oz Linden
2017-08-18MAINT-7691 Fixed cache not clearing correctly and incapability to find dump ↵andreykproductengine
files in case of unicode path
2017-05-23merge changes for 5.0.5-releaseOz Linden
2017-05-22Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2017-04-19MAINT-7074 Fixed ability to escape from skin directory with <icon>AndreyL ProductEngine
2017-02-03Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2017-02-02merge changes for 5.0.1-releaseOz Linden
2016-12-20DRTVWR-418: std::string::find() returns std::string::size_type.Nat Goodspeed
Storing it in a U32 and then comparing it to std::string::npos isn't going to work in 64 bit land.
2017-05-25MAINT-5100 Fixed viewer not finding sky files at loginandreykproductengine
2016-12-15DRTVWR-418: Store std::string::find() result in size_t, not U32.Nat Goodspeed
In a 64-bit build, std::string::npos is way bigger than a U32.