Subject: Re: bug#25025: python-shell-calculate-command is wrong

From: Noam Postavsky <[email-masked]>
Date: Sat, 26 Nov 2016 19:50:40 -0500

On Sat, Nov 26, 2016 at 1:43 PM, Eli Zaretskii <[email-masked]> wrote:
>> From: Noam Postavsky <[email-masked]>
>> Date: Fri, 25 Nov 2016 09:59:43 -0500
>> Cc: Clément Pit--Claudel <[email-masked]>,
>>       [email-masked]
>>
>> >> > The python shell name is not passed to any underlying shell.
>> >> > It is used to create a process, so it must not be quoted in anyway.
>> >>
>> >> Are you sure? Looking at the code, I see this:
>> >>
>> >>   (python-shell-make-comint
>> >>       (or cmd (python-shell-calculate-command)) …)
>> >>
>> >> And python-shell-make-comint does this:
>> >>
>> >>   (split-string-and-unquote cmd)
>> >>
>> >> (ok, this is weird).  But still, if the command is "C:\Program Files\Python\python.exe", then we *do* need the shell quoting, right?
>> >
>> > The quoting needs to be done only where a shell command is created
>> > that is about to be passed to a shell.  I believe in this case the
>> > quoting is done too early.
>> >
>>
>> I think the whole command should be quoted with
>> combine-and-quote-strings to balance the call to
>> split-string-and-unquote.
>
> Why not remove both of those calls?  Do you understand why they are
> needed in that case?

Well, CMD can also come from user input, so we would need some way for
the user to specify a list of arguments. Currently that can work by
entering a string that would be split by split-string-and-unquote. It
might be more intuitive to actually use a shell and then the user
would enter a shell command (though inserting a shell into things
might bring more complications).