It's not just file names, you would also have to make sure there's nothing else 
that might be in command argument or option value that has a single & a double 
quote, since without the backslashes this would be impossible.

If you really want to do this, I think it would be better to add a debugger 
setting for the "protection character".  Then this would be set to something 
else (maybe "#") on Windows, and backslash on all other systems.  That way you 
could probably always find a protection character that you could use for 
whatever gnarly string you ended up having to pass through the command 
interpreter.

Jim


> On Jan 8, 2015, at 2:55 PM, Zachary Turner <ztur...@google.com> wrote:
> 
> Actually ' is a valid filename character in Windows, but not ".  That being 
> said, it's so rare, and having a backslash is so common that I would prefer 
> the common case to be easy, and the rare case being either unsupported or 
> difficult is ok with me.  So I'd still prefer to disable this backslash 
> handling on Windows for now, and then fix ' on Windows separately in the 
> future.
> 
> On Thu Jan 08 2015 at 2:51:51 PM Zachary Turner <ztur...@google.com> wrote:
> On Windows, that's not a valid file name, and in fact any file name that has 
> an escaped character is not a valid filename.  I see what you're getting at 
> though, that for non-Windows it's necessary.  Can I wrap the backslash 
> handling in #ifndef _WIN32 then?
> 
> On Thu Jan 08 2015 at 2:49:49 PM <jing...@apple.com> wrote:
> If I have a file called foo"bar'baz, how what would I put in the place of 
> <AWKWARD NAME> for
> 
> (lldb) file <AWKWARD NAME>
> 
> Right now, I can do:
> 
> (lldb) file foo\"bar\'baz
> Current executable set to 'foo"bar'baz' (x86_64).
> 
> Jim
> 
> 
> > On Jan 8, 2015, at 2:31 PM, Zachary Turner <ztur...@google.com> wrote:
> >
> > FWIW, Removing backslash handling from this function (essentially ignoring 
> > backslashes in command arguments) fixes about 12-15 tests on Windows with 
> > no other changes.  I see there's some logic in Args for encoding and 
> > decoding escape sequences, but this only happens if a particular command 
> > option is set, and that command only only appears to be set for the 
> > "prompt" command.  I'm not sure if removing the backslash logic from 
> > SetCommandString would interfere with this command in any way, but it 
> > doesn't seem like it would interfere with any other commands, unless I'm 
> > missing something.
> >
> > On Thu Jan 08 2015 at 1:43:16 PM Zachary Turner <ztur...@google.com> wrote:
> > One thing causing many tests to fail on Windows is the presence of 
> > backslashes in argument.  Until now, I've worked around this in many cases 
> > by making sure that arguments with backslashes are always quoted.
> >
> > But there are some cases where this is not easy to guarantee and now I'm 
> > leaning towards (at least on Windows) allowing backslashes in argument 
> > strings.  The code in question comes from the function void 
> > SetCommandString (const char *command) in the file Args.cpp
> >
> > In particular, it implements special handling of whitespace, single quotes, 
> > double quotes, and backslashes.  For the case of backslashes it removes 
> > them from the string.
> >
> > What would be the implications of removing backslash handling from this 
> > function for all platforms?  I would prefer to keep platform specific code 
> > out of generic code, but I think this needs to be changed on Windows.
> > _______________________________________________
> > lldb-dev mailing list
> > lldb-dev@cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
> 


_______________________________________________
lldb-dev mailing list
lldb-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to