[lldb-dev] Should FileSpec::Resolve() look at PATH?

Greg Clayton gclayton at apple.com
Wed Oct 15 09:52:30 PDT 2014


I would change the "shell" argument to a boolean "run_in_default_shell". I don't see any call sites of RunShellCommand that actually specify an alternate shell (though I may have missed one). Then if "run_in_default_shell" is true, we call GetDefaultShell().

Greg

> On Oct 15, 2014, at 9:27 AM, Zachary Turner <zturner at google.com> wrote:
> 
> It's a little more difficult than that, because we have
> 
> #define LLDB_DEFAULT_SHELL "cmd.exe"
> 
> So we'd need to move this into a runtime function and fix up all assumptions about how it might be available at compile time.  It doesn't seem like that would be too bad though.   The biggest offender would be that we currently have a function like this:
> 
> void Foo(int x, int y, const char *shell = LLDB_DEFAULT_SHELL)
> 
> But I suppose we could just add a two-argument overload that calls the 3 argument version with GetDefaultShell(), to avoid having to fix up a ton of callsites.
> 
> This might be a better solution than fixing it in RunShellCommand because it removes the possibility of someone forgetting to resolve the path in the future.
> 
> Thoughts Greg?
> 
> On Tue, Oct 14, 2014 at 7:11 PM, Scott Graham <scottmg at chromium.org> wrote:
> getenv("COMSPEC") rather than "cmd.exe"? I've never seen that be non-absolute.
> 
> On Tue, Oct 14, 2014 at 4:36 PM, Zachary Turner <zturner at google.com> wrote:
> I have an issue on Windows when trying to run shell commands.  We specify the shell as "cmd.exe", create a FileSpec out of this, and call FileSpec::Resolve.  This ends up making an absolute path out of cmd.exe, but it does so by just sticking the working directory onto the front of it, which is obviously wrong.
> 
> My question is: For FileSpecs that are only filenames, nothing else, should we attempt to locate a matching file in PATH, and when we find one use the resulting absolute path?
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
> 
> 
> 





More information about the lldb-dev mailing list