Commit Graph

62 Commits (23edfd0bfa4a0e3ec2b2ff80cf956a8bcd39c55b)

Author SHA1 Message Date
Ansariel 8b6392c0aa Merge viewer-bugsplat 2018-12-16 13:04:08 +01:00
Nat Goodspeed c4096f670c SL-10153: Review and rationalize fetching paths from environment.
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-14 15:38:13 -05:00
Beq 1618e7a9dd grrr Fix up for the return type of LL internal file copy returning bool 2018-11-08 10:26:41 +00:00
Beq 22c7655573 FIRE-21669 & FIRE-11276: Fix for cross volume rename failures on Linux/Mac 2018-11-07 23:51:06 +00:00
Ansariel 7e7984fcfd Merge viewer-neko 2018-05-01 18:42:59 +02:00
Ansariel 799309f890 Merge viewer-64 2018-01-04 13:09:03 +01:00
Nat Goodspeed 5002bf5660 MAINT-8087: Use env vars from VMP for AppData\Roaming and Local.
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-20 22:51:26 -05:00
Ansariel c182741596 Merge viewer-lynx 2016-11-16 09:55:54 +01:00
andreykproductengine 759b4f14d8 MAINT-6828 Removed unnessesary spam in logs 2016-10-13 22:49:06 +03:00
Ansariel 3192fe832f Merge viewer-quickgraphics 2016-03-08 01:41:31 +01:00
Oz Linden c8726aba30 remove execute permission from many files that should not have it 2015-11-10 09:48:56 -05:00
andreykproductengine 66502df050 MAINT-8540 Eliminated a lot of xui related log warnings on startup and opening preferences 2018-04-20 20:21:20 +03:00
Nat Goodspeed e9be710daf Strip down the Windows ll[io]fstream implementations to constructors
and open() methods. The only remaining value added by ll[io]fstream over
std::[io]stream is proper handling of non-ASCII pathnames, which can be done
by deriving from std::[io]stream, converting pathname strings and passing them
to the corresponding base-class methods.
This is only necessary on Windows. On Posix, ll[io]fstream are already
typedefs for std::[io]fstream.
This change removes a significant volume of cruft from llfile.{h,cpp}.
2015-04-15 13:26:32 -04:00
Oz Linden 5c6cf3e7fb restore the ll[io]fstream because we need them as wrappers on Windows for wide char paths; on other platforms they are now just typedefs to the std classes 2015-04-10 11:02:37 -04:00
Oz Linden 8b42c7898e replace llifstream and llofstream with std::ifstream and std::ofstream respectively 2015-04-07 17:59:28 -04:00
Oz Linden 3a57b18896 convert llifstream and llofstream to std::ifstream and std::ofstream respectively 2015-04-07 17:28:05 -04:00
Nicky 006190f2a1 Merge with tools update. 2015-05-05 13:09:27 +02:00
Nat Goodspeed ae6440eecc MAINT-4744: Eliminate viewer dependency on (old) GNU libstdc++.
To be more accurate, this changeset doesn't actually eliminate the dependency:
it eliminates the use cases for the llifstream / llofstream feature that
requires it.
Currently you can construct an llifstream or llofstream from an open LLFILE*
file handle (or, except on Windows, an int file descriptor). But rather than
containing a streambuf implementation based on FILE*, llfile.h relies on the
fact that the Windows std::filebuf happens to support that as a nonstandard
extension; also on a nonstandard GNU extension __gnu_cxx::stdio_filebuf<char>.
To move from GNU libstdc++ to clang's libc++ (the direction on Mac), we could
code a streambuf that supports FILE*. But before doing that, it's worth asking
whether anyone actually uses this questionable feature.
In fact there were only two methods: LLWearable::exportFile() and importFile()
-- and only one call to either, in LLViewerWearable::saveNewAsset(). The code
in saveNewAsset() opened the LLFILE* immediately before calling exportFile(),
meaning we could reasonably push the open operation down into exportFile().
That logic was complex anyway due to the need for the caller to close the
LLFILE* regardless of the success of the exportFile().
Change LLWearable::exportFile() and importFile() to accept a std::string
filename rather than an open LLFILE*. Change LLViewerWearable::saveNewAsset()
to simply call exportFile(filename) rather than horsing around with an LLFILE*
handle. (This improves the code in another way too: it encapsulates the need
to open the relevant file in binary mode. Previously, each caller had to
remember to do that.)
To prevent inadvertent reintroduction of ll[io]fstream(LLFILE*) code, add
llstream_LLFILE preprocessor macro (default 0) to control access to the
relevant constructors. Also suppress rdbuf() override, the only method whose
signature references llstdio_filebuf.
2015-01-28 15:55:18 -05:00
callum_linden aca7976b87 Update to build on Xcode 6.0: turn BACK ON warnings as errors for overloaded virtuals [-Woverloaded-virtual] and fix up first (of many) files 2014-10-17 13:05:04 -07:00
Tank_Master 6babf8abd2 Merge LL 3.7.7 2014-06-09 11:29:57 -07:00
Nicky 381287b3eb Merge lgpl with LL breakpad changes. 2014-05-02 17:09:26 +02:00
Richard Linden 98aabdc176 merge with release 2014-04-07 19:09:40 -07:00
Aura Linden d2bb4dae98 Fixes for crash reporter startup race condition, crash reporter CPU use, Secondlife.log filehandle, XP Crash. 2014-03-07 14:58:22 -08:00
Richard Linden a2a6bf20d7 merge with release 2013-06-20 16:46:23 -07:00
Richard Linden 0a96b47663 merge with viewer-release 2013-06-05 19:05:43 -07:00
Graham Madarasz 6074f65991 Merge with vwr-dev-mat 2013-05-10 10:34:26 -07:00
Graham Madarasz 025c890958 Merge vwr-dev-mat 2013-05-01 08:11:15 -07:00
Graham Madarasz 806d09b114 Merge 3.5.1 into Materials 2013-04-30 19:50:05 -07:00
Oz Linden bfb1ab134f merge changes for 3.5.1-beta3 2013-04-23 14:29:24 -04:00
Nyx Linden 06d7845a5a SUN-72 SH-4132 FIX viewer builds cannot write to paths containing special characters.
Integrated Nicky Dasmijn's patch to handle the unicode file paths properly.
Code reviewed, patch was clean.
Tested locally, correctly allows wearables to load where they would fail before.
Should be ready for automated build & QA.
2013-04-22 19:14:24 -04:00
Oz Linden ddd5659f81 merge changes for DRTVWR-294 2013-04-19 10:11:29 -04:00
Graham Madarasz bf6182daa8 Update Mac and Windows breakpad builds to latest 2013-03-29 07:50:08 -07:00
Tank_Master 718f6fa0ff merge LL 3.6.1 2013-07-10 00:23:23 -07:00
Tank_Master d4640277d0 Merge LL 3.5.3 release. 2013-07-09 16:24:58 -07:00
Tank_Master 14001c54df Gastly CHUI merge pass 1, don't count on anything to work. 2013-06-26 12:14:54 -07:00
Nicky e76c0c0f47 FIRE-10035; Make sure there's not path with a trailing / or \ passed to _wstat. 2013-05-24 01:04:24 +02:00
Nicky 2c4d38d394 FIRE-9825; Windows does not use UTF8 but UTF16 filenames. Hence all filenames on Windows to UTF16 and open files using the wide character string. 2013-04-20 02:55:15 +02:00
Richard Linden 9d77e030d9 SH-3406 WIP convert fast timers to lltrace system
cleaning up build
moved most includes of windows.h to llwin32headers.h to disable min/max macros, etc
streamlined Time class and consolidated functionality in BlockTimer class
llfasttimer is no longer included via llstring.h, so had to add it manually in several places
2012-11-14 23:52:27 -08:00
developer@Developer-PC ecf72da021 More windows build fixes 2012-09-21 22:21:42 -07:00
Don Kjer 7d62343f44 Skipping experimental filebuffering code on windows for now 2012-09-20 04:56:09 +00:00
Don Kjer 7153d1db11 Partial rewrite of llifstream and llofstream (Windows implementation pending). Moved more functionality from llviewerwearable to llwearable 2012-09-20 04:29:17 +00:00
Nat Goodspeed 54228ddf50 IQA-463: Add error logging for certain LLFile operations.
Attempting to debug an observed LLFile::remove() failure, I was floored to
find that remove() made no attempt whatsoever to report its lack of success!
Add warnif() function to log errno text in platform-dependent way. Support the
notion that for some functions, certain errno values are acceptable -- e.g. we
expect stat() to frequently hit ENOENT -- and need not be logged.
Add commented-out Windows-specific logic to try to provide further information
in the case of EACCES ("Permission denied," e.g. another process has the file
open). To use, enable the code block, download handle.exe and turn on DEBUG
logging for LLFile. handle.exe can be obtained from:
http://technet.microsoft.com/en-us/sysinternals/bb896655
2012-04-18 15:34:15 -04:00
Don Kjer e3e6d429d4 Merge from http://bitbucket.org/simon_linden/viewer-dev 2010-12-08 17:23:38 -08:00
Dave SIMmONs 0dce88bc92 ER-330 : Improve ObjectUpdateCached message packing. Added some viewer metrics, will disable later. 2010-11-19 16:49:24 -08:00
Mark Palange (Mani) 8c2026d6b7 CHOP-135 Bug fixes. 2010-11-18 21:57:27 -08:00
Oz Linden 06b0d72efa Change license from GPL to LGPL (version 2.1) 2010-08-13 07:24:57 -04:00
Aaron Brashears e3cf284388 Result of svn merge -r107256:107258 svn+ssh://svn/svn/user/phoenix/license_2009_merge into trunk. QAR-1165 2009-01-08 00:05:06 +00:00
Steven Bennetts 25c10ed028 QAR-628 merge string-cleanup-5 -r 90476:90508 -> release
dataserver-is-deprecated
2008-06-26 00:39:00 +00:00
Bryan O'Sullivan 9db949eec3 svn merge -r88066:88786 svn+ssh://svn.lindenlab.com/svn/linden/branches/cmake-9-merge
dataserver-is-deprecated
for-fucks-sake-whats-with-these-commit-markers
2008-06-02 21:14:31 +00:00
Steven Bennetts 63e7894148 QAR-570 maint-render-4 merge
merge -r 87067:87077 svn+ssh://svn.lindenlab.com/svn/linden/branches/maint-render/maint-render-4-merge -> release. dataserver-is-deprecated.
2008-05-08 18:41:20 +00:00