summaryrefslogtreecommitdiff
path: root/indra/llcommon/llprocesslauncher.cpp
AgeCommit message (Collapse)Author
2012-01-20Per Richard, replace LLProcessLauncher with LLProcess.Nat Goodspeed
LLProcessLauncher had the somewhat fuzzy mandate of (1) accumulating parameters with which to launch a child process and (2) sometimes tracking the lifespan of the ensuing child process. But a valid LLProcessLauncher object might or might not have ever been associated with an actual child process. LLProcess specifically tracks a child process. In effect, it's a fairly thin wrapper around a process HANDLE (on Windows) or pid_t (elsewhere), with lifespan management thrown in. A static LLProcess::create() method launches a new child; create() accepts an LLSD bundle with child parameters. So building up a parameter bundle is deferred to LLSD rather than conflated with the process management object. Reconcile all known LLProcessLauncher consumers in the viewer code base, notably the class unit tests.
2012-01-19To grow std::string by a char, use push_back() instead of append().Nat Goodspeed
2012-01-19Try to fix argument quoting on Windows.Nat Goodspeed
Despite LLProcessLauncher's list-of-argument-strings API, on Windows it must ram them all into a single command-line string anyway. This means that if arguments contain spaces (or anything else that would confuse Windows command- line parsing), the target process won't receive the intended arguments. Introduce double quotes for any arguments not already double-quoted by caller.
2012-01-18Introduce static LLProcessLauncher::isRunning(ll_pid_t) method.Nat Goodspeed
typedef LLProcessLauncher::ll_pid_t to be HANDLE on Windows, pid_t elsewhere. Then we can define getProcessID() returning ll_pid_t on all platforms, retaining getProcessHandle() for hypothetical existing consumers... of which there are none in practice. This lets us define isRunning(ll_pid_t) to encapsulate the platform-specific logic to actually check on a running child process, turning non-static isRunning() into a fairly trivial wrapper.
2012-01-17Add log message if LLProcessLauncher child fails to execv().Nat Goodspeed
On a Posix platform (vfork()/execv() implementation), if for any reason the execv() failed (e.g. executable not on PATH), the viewer would never know, nor the user: the vfork() child produced no output, and terminated with rc 0! Add logging, make child terminate with nonzero rc. Remove pointless addArgument(const char*) overload: this does nothing for you that the compiler won't do implicitly. In llupdateinstaller.cpp, remove pointless c_str() call in addArgument() arg: we were starting with a std::string, then extracting its c_str(), only to construct a whole new std::string from it!
2011-03-17Fix CHOP-544. Use cwd when creating a process on windows when the ↵Alain Linden
llprocesslauncher's working directory is not set. Currently "" will be passed for the working directory which breaks the launching of the updater script.
2011-03-01SOCIAL-595 FIX Global Volume control does not affect volume of MOAP in ↵Richard Linden
minimal skin on Windows made slplugin.exe start with correct working directory (llplugin)
2010-12-10fix working directory in install script and remove dependency on open option ↵Andrew A. de Laix
--args which is 10.6 only. Also fix erroneous check in process launcher which was mistakenly reporting a failed execution of the new updater script.
2010-11-13STORM-52 FIXED Made it possible to use an external script editor.Vadim ProductEngine
The editor can be specified: * via "ExternalEditor" setting in settings.xml * via LL_SCRIPT_EDITOR variable Removed obsolete XUIEditor setting in favor of the new one.
2010-08-13Change license from GPL to LGPL (version 2.1)Oz Linden
2009-08-27svn merge -r 129841:129910 ↵Monroe Williams
svn+ssh://svn.lindenlab.com/svn/linden/branches/moss/pluginapi_05-merge@129910 svn merge -r 129913:131718 svn+ssh://svn.lindenlab.com/svn/linden/branches/pluginapi/pluginapi_05 Some branch shenannigans in the pluginapi_05 branch caused this to become a two-part merge.