summaryrefslogtreecommitdiff
path: root/indra
AgeCommit message (Collapse)Author
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-14SL-10153: Fix previous commit for non-Windows systems.Nat Goodspeed
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-14SL-10153: Introduce ll_convert, windows_message() templates.Nat Goodspeed
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-13increment viewer version to 6.0.2Nat Goodspeed
2018-12-11SL-10153: Fix OSMessageBoxWin32() to handle non-ASCII text.Nat Goodspeed
2018-12-11SL-10153: Improve ll_convert_string_to_wide() and its converse.Nat Goodspeed
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-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-10INTL-318: Stop processing Danish and Polish language files.Nat Goodspeed
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-12-05DRTVWR-447: Fix BugSplat init with non-ASCII chars in install path.Nat Goodspeed
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-04Merged INTL-316AndreyL ProductEngine
2018-12-03FIX INTL-316 translate Viewer Set54 into 9 languages, for Animesh project ↵eli
Viewer (repository: axon)
2018-11-30SL-10147: Copy placeholder English text to supported NSIS languages.Nat Goodspeed
2018-11-28SL-10030: Include nextviewer.bat in the Windows install directory.Nat Goodspeed
2018-11-22MAINT-8977 Only affect large LOD texturesandreykproductengine
2018-11-21SL-10077: Save correct uninstall directory and (un)install mode.Nat Goodspeed
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-21DRTVWR-447: Fix longstanding NSIS warning about unused label.Nat Goodspeed
2018-11-21DRTVWR-447: Fix syntax error in embedded variable reference.Nat Goodspeed
2018-11-15SL-10010: Use trunk NSIS + Unicode attrib, instead of Unicode fork.Nat Goodspeed
Back out misguided attempt to overwrite $PROGRAMFILES with $PROGRAMFILES64.
2018-11-15SL-10010: Use c:\Program Files rather than c:\Program Files (x86)Nat Goodspeed
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-14DRTVWR-447: Animesh + BugSplat = 6.1Nat Goodspeed
2018-11-14Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2018-11-14Merged in lindenlab/viewer-releaseAndreyL ProductEngine
2018-11-14increment viewer version to 6.0.1Nat Goodspeed
2018-11-14Merged in lindenlab/axonAndreyL ProductEngine
2018-11-09SL-10018 FIXED Viewer crashes when clicking on a link of a folder in Inventorymaxim_productengine
2018-11-07SL-9952: updater.exe now renamed to SLVersionChecker.exeNat Goodspeed
thereby avoiding strange Windows requirement for elevated privilege.
2018-11-07Backed out changeset: 8f9f962ad6c0AndreyL ProductEngine
2018-11-06SL-10013 Crash in LLFolderViewModelItemInventory::filterChildItem(..)maxim_productengine
2018-11-06Updated viewer manifest to address CEF runtime file differencesAndreyL ProductEngine
2018-11-05SL-1386 Fix for onSelectionChange crashandreykproductengine
2018-11-05SL-9991 FIXED Crash in LLViewerLODTexture::processTextureStats()maxim_productengine
2018-11-05SL-10006 Fixed crash in addScriptLineandreykproductengine
2018-11-02SL-979 Don't allow DnD or paste folders to “Lost and Found”maxim_productengine
2018-11-02DRTVWR-447: Fix NSIS installer icons with "Modern UI" mechanism.Nat Goodspeed
2018-11-02DRTVWR-447: Merge directly executing updater for Windows precheck.Nat Goodspeed
2018-11-02DRTVWR-447: Back out changeset 69118ad33b45: directly run updaterNat Goodspeed
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-01DRTVWR-447: Allow Standard Windows user to install for current user.Nat Goodspeed
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-10-30DRTVWR-447: Copy VIEWER_EXE to local variable (thanks Ansariel)Nat Goodspeed
2018-10-30SL-9955 FIXED crash-on-exit in LLVivoxVoiceClient::removeObserverMnikolenko ProductEngine
2018-10-29SL-9980: Launch the first-run updater via explorer.exe as we used toNat Goodspeed
run the viewer from the installer. Turns out that the peculiar indirection through explorer.exe was a known trick for an elevated-privileges program to launch a program as the logged-in Windows user. (They could have commented that...) But explorer.exe doesn't pass command-line parameters, so if you want to pass any such to the actual target program, you have to launch a shortcut with those parameters. But this target program (the updater) and its parameters (precheck mumble) are specific to the very first viewer run after installation, so delete it after. Having an additional permanent icon that always runs the updater before the viewer would only confuse matters.
2018-10-29SL-9964: Put Mac cursors back into Resources/cursors_mac subdirectory.Nat Goodspeed
2018-10-27DRTVWR-447: Stop passing UpdaterServiceURL to leap updater.Nat Goodspeed
In fact, mark UpdaterServiceURL as obsolete. (Consumers should consult build_data.json.)
2018-10-26DRTVWR-447: For some reason the Windows viewer exe wasn't signed.Nat Goodspeed
viewer_manifest.py was signing updater.exe within the package, and then signing the installer executable itself, but not the actual viewer executable. Add that.
2018-10-24SL-1828 Indicate that "Allow Multiple Viewers" Preference is unsupportedmaxim_productengine