Commit Graph

39380 Commits (4a136572857fcf5d5fd21789a777bbde67c1076d)

Author SHA1 Message Date
Nat Goodspeed 4a13657285 SL-10153: auto name{expression} declares an initializer_list
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-15 09:13:24 -05:00
Nat Goodspeed 3c53f8abde SL-10153: VS 2013 isn't so fond of ?: involving std::string. 2018-12-14 16:00:09 -05: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
Nat Goodspeed 132e708fec SL-10153: Fix previous commit for non-Windows systems.
Move Windows-flavored llstring_getoptenv() to Windows-specific section of
llstring.cpp.

boost::optional type must be stated explicitly to initialize with a value.

On platforms where llwchar is the same as wchar_t, LLWString is the same as
std::wstring, so ll_convert specializations for std::wstring would duplicate
those for LLWString. Defend against that.

The compilers we use don't like 'return condition? { expr } : {}', in which we
hope to construct and return an instance of the declared return type without
having to restate the type. It works to use an explicit 'if' statement.
2018-12-14 12:01:51 -05:00
Nat Goodspeed 9ffcafb64b SL-10153: Introduce ll_convert, windows_message() templates.
Add ll_convert<TO, FROM> template, used as (e.g.):
ll_convert<std::string>(value_of_some_other_string_type);
There is no generic template implementation -- the template exists solely to
provide generic aliases for a bewildering family of llstring.h string-
conversion functions with highly-specific names. There's a generic
implementation, though, for the degenerate case where FROM and TO are
identical.

Add ll_convert<> specialization aliases for most of the string-conversion
functions declared in llstring.h, including the Windows-specific ones
involving llutf16string and std::wstring.

Add a mini-lecture in llstring.h about appropriate use of string types on
Windows.

Add LL_WCHAR_T_NATIVE llpreprocessor.h macro so we can detect whether to
provide separate conversions for llutf16string and std::wstring, or whether
those would collide because the types are identical.

Add inline ll_convert_wide_to_string(const std::wstring&) overloads so caller
isn't required to call arg.c_str(), which naturally permits an ll_convert
alias.

Add ll_convert_wide_to_wstring(), ll_convert_wstring_to_wide() as placeholders
for converting between Windows std::wstring and Linden LLWString, with
corresponding ll_convert aliases. We don't yet have library code to perform
such conversions officially; for now, just copy characters.

Add LLStringUtil::getenv(key) and getoptenv(key) functions. The latter returns
boost::optional<string_type> in case the caller needs to detect absence of a
given environment variable rather than simply accepting a default value.
Naturally getenv(), which accepts a default, is implemented using getoptenv().
getoptenv(), in turn, is implemented using an underlying llstring_getoptenv().

On Windows, llstring_getoptenv() returns boost::optional<std::wstring> (based
on GetEnvironmentVariableW()), whereas elsewhere, llstring_getoptenv() returns
boost::optional<std::string> (based on classic Posix getenv()).

The beauty of generic ll_convert is that the portable LLStringUtilBase<T>::
getoptenv() template can call the platform-specific llstring_getoptenv() and
transparently perform whatever conversion is necessary to return the desired
string_type.

Add windows_message<T>(error) template, with an overload that implicitly calls
GetLastError(). We provide a single concrete windows_message<std::wstring>()
implementation because that's what we get from Windows FormatMessageW() --
everything else is a generic conversion to the desired target string type.

This obviates llprocess.cpp's previous WindowsErrorString() implementation --
reimplement using windows_message<std::string>().
2018-12-14 10:48:43 -05:00
Nat Goodspeed cbf4295b63 SL-10153: Update to viewer-manager build 522507 2018-12-13 12:02:38 -05:00
Nat Goodspeed 02b9ac8d9a SL-10153: Fix OSMessageBoxWin32() to handle non-ASCII text. 2018-12-11 20:51:51 -05:00
Nat Goodspeed 4e894eb2a7 SL-10153: Improve ll_convert_string_to_wide() and its converse.
Instead of returning a wchar_t* and requiring the caller to delete it later,
return a std::basic_string<wchar_t> that's self-cleaning. If the caller wants
a wchar_t*, s/he can call c_str() on the returned string.

Default the code_page parameter to CP_UTF8, since we try to be really
consistent about using UTF-8 encoding for all our internal std::strings.
2018-12-11 20:48:20 -05:00
Nat Goodspeed bb4a649b9c SL-10153: Validate APPDATA, LOCALAPPDATA by checking existence. 2018-12-11 15:47:29 -05:00
Nat Goodspeed d72dd8a35d SL-10153: Update to viewer-manager build 522465 2018-12-11 15:47:17 -05:00
Nat Goodspeed 63d6016791 SL-10153: Update to viewer-manager build 522443 2018-12-11 09:06:41 -05:00
Nat Goodspeed 9479d422d4 SL-10153: Use a degenerate singleton for PRELOG log file.
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-10 17:14:31 -05:00
Nat Goodspeed 73eadfa12a INTL-318: Stop processing Danish and Polish language files. 2018-12-10 17:11:40 -05:00
Nat Goodspeed 601cbe1f60 SL-10153: Add ole32 to WINDOWS_LIBRARIES so it's everywhere we need. 2018-12-08 12:18:46 -05:00
Nat Goodspeed a4eb5056a7 SL-10153: Need ole32 for new Windows call to CoTaskMemFree(). 2018-12-08 11:26:37 -05:00
Nat Goodspeed a36cd3a292 SL-10153: Try to handle non-English non-ASCII Windows APPDATA. 2018-12-08 10:30:18 -05:00
Nat Goodspeed 6e58201736 SL-10153: Update to viewer-manager build 522407 2018-12-08 10:25:15 -05:00
Nat Goodspeed 758e7e8df7 SL-10174: LOCALAPPDATA bad? Try SHGetFolderPath(CSIDL_LOCAL_APPDATA).
This logic is essentially copy-and-edited from the same suspenders-and-belt
concerning APPDATA and CSIDL_APPDATA for SL-10153.
2018-12-06 14:33:51 -05:00
Nat Goodspeed 1029f6b776 SL-10153: Update to viewer-manager build 522314 2018-12-05 17:16:06 -05:00
Nat Goodspeed 7a336f63cc SL-10153: If $APPDATA isn't already good, try SHGetFolderPath().
In that case, also update $APPDATA for child processes.
2018-12-05 16:57:00 -05:00
Nat Goodspeed d509e315cf DRTVWR-447: Fix BugSplat init with non-ASCII chars in install path.
The whole remaining difference between llifstream and std::ifstream is that
the former handles UTF-8 coded pathnames. Microsoft's implementation of the
latter does not.
2018-12-05 10:30:53 -05:00
Nat Goodspeed 8892ec5a3b SL-10153: Update to viewer-manager build 522260 2018-12-04 16:14:32 -05:00
Nat Goodspeed 8205bd22f1 SL-10153: Update to viewer-manager build 522217 2018-12-03 18:59:10 -05:00
Nat Goodspeed abf1b6474e SL-10153: Update to viewer-manager build 522199 2018-12-03 16:07:27 -05:00
Nat Goodspeed 63117d2919 SL-10147: Copy placeholder English text to supported NSIS languages. 2018-11-30 15:06:27 -05:00
Nat Goodspeed 4d9ad4612a SL-10030: Update to viewer-manager build 522096 2018-11-29 14:49:19 -05:00
Nat Goodspeed ff802c5cd2 SL-10030: Update to viewer-manager build 522079 2018-11-28 22:02:50 -05:00
Nat Goodspeed ed5dfb0b2f SL-10030: Update to viewer-manager build 522068 2018-11-28 18:32:48 -05:00
Nat Goodspeed 31b6d83606 SL-10030: Include nextviewer.bat in the Windows install directory. 2018-11-28 16:00:27 -05:00
Nat Goodspeed 5863403391 SL-10030: Update to viewer-manager build 522055 2018-11-28 15:59:06 -05:00
Nat Goodspeed c54d3eaa7d SL-10030: Update to viewer-manager build 522036 2018-11-28 07:11:21 -05:00
Nat Goodspeed a5b624fe3a SL-10030: Update to viewer-manager build 522023 2018-11-27 17:28:21 -05:00
Nat Goodspeed feb886e08a DRTVWR-447: Update to viewer-manager build 521943 2018-11-21 14:40:12 -05:00
Nat Goodspeed 7ca89229f8 SL-10077: Save correct uninstall directory and (un)install mode.
Curiously, the value of $INSTDIR is correct before MULTIUSER_UNINIT, but is
made incorrect by MULTIUSER_UNINIT. Save and restore the correct value.

Saving $MultiUser.InstallMode in the registry (by setting relevant macros
examined by MultiUser.nsh) is susceptible to overwriting if the user installs
multiple viewers with the same channel name. Instead, write an InstallMode.txt
in the install directory, and read it back on uninstall. Of course, add it to
the files to be deleted on uninstall.
2018-11-21 12:07:18 -05:00
Nat Goodspeed 24872bea74 DRTVWR-447: Fix longstanding NSIS warning about unused label. 2018-11-21 09:55:54 -05:00
Nat Goodspeed 8420e20102 DRTVWR-447: Fix syntax error in embedded variable reference. 2018-11-21 09:53:45 -05:00
Nat Goodspeed db2cddf93f SL-10010: Use trunk NSIS + Unicode attrib, instead of Unicode fork.
Back out misguided attempt to overwrite $PROGRAMFILES with $PROGRAMFILES64.
2018-11-15 16:02:47 -05:00
Nat Goodspeed dd9f6784cc SL-10010: Use c:\Program Files rather than c:\Program Files (x86)
for 64-bit viewers.

It seems there's a longstanding bug in NSIS: it fails to use $PROGRAMFILES64
rather than $PROGRAMFILES when performing an all-users install of a 64-bit
program. Try to remedy that.

Also pick up a few NSIS suggestions from Ansariel Hiller.
2018-11-15 12:06:30 -05:00
Nat Goodspeed f49ee0a053 DRTVWR-447: Animesh + BugSplat = 6.1 2018-11-14 16:19:47 -05:00
Nat Goodspeed f7e99f0db7 Automated merge with ssh://bitbucket.org/lindenlab/viewer-release 2018-11-14 16:17:36 -05:00
Nat Goodspeed 8558ce5c60 increment viewer version to 6.0.1 2018-11-14 15:31:16 -05:00
Nat Goodspeed d1bab77c1b Added tag 6.0.0-release for changeset 821edfcd1491 2018-11-14 15:31:16 -05:00
Nat Goodspeed 4e776c522c SL-10030: Update to viewer-manager build 521526 2018-11-08 14:21:31 -08:00
Nat Goodspeed cb5c5bb6ee SL-9952: updater.exe now renamed to SLVersionChecker.exe
thereby avoiding strange Windows requirement for elevated privilege.
2018-11-07 15:57:20 -08:00
Nat Goodspeed 6c51d3ba74 SL-9952: Update to viewer-manager build 521490 2018-11-07 15:45:18 -08:00
Nat Goodspeed e7ce166469 DRTVWR-447: Fix NSIS installer icons with "Modern UI" mechanism. 2018-11-02 08:24:28 -04:00
Nat Goodspeed 559899f1bd DRTVWR-447: Merge directly executing updater for Windows precheck. 2018-11-02 08:00:46 -04:00
Nat Goodspeed 75cbe187a6 DRTVWR-447: Back out changeset 69118ad33b45: directly run updater
from NSIS installer, instead of via explorer.exe.

A recent test run performed the install, then opened an Explorer window on My
Documents. <eyeroll/>
2018-11-02 07:59:51 -04:00
Nat Goodspeed a186f9a729 DRTVWR-447: Allow Standard Windows user to install for current user.
This should eliminate any confusion due to a Standard user needing to elevate
to Admin privileges, since from that point on Windows tells the running
program the current user is that Admin. Bypass all that.
2018-11-01 22:08:44 -04:00
Nat Goodspeed e2ca890898 DRTVWR-447: Copy VIEWER_EXE to local variable (thanks Ansariel) 2018-10-30 10:36:28 -04:00