On 31.3.2015 г. 03:16, Lex Trotman wrote:
On 31 March 2015 at 11:14, Colomban Wendling<lists....@herbesfolles.org>  wrote:
Le 31/03/2015 02:10, Lex Trotman a écrit :
[…]

Perhaps we should be more explicit in the manual that on *ix build
commands are run in the shell and the user is responsible for either
quoting the substitutions correctly, […]

The user currently *cannot* do it "correctly" so it works with any
possible replacement, that's actually the problem :]

See the second part of the sentence which you elided :-D

There is 1 case where the user can't do it correctly: Context Action.

if (sci_has_selection(doc->editor->sci))
        word = sci_get_selection_contents(doc->editor->sci);
...
utils_str_replace_all(&command, "%s", word);
spawn_async(... command, ...)

This can be fixed by removing the %s specified and passing the text as an argv after the command (the now spawn allows that), with the slight disadvantage that the selection will always be at the end.

--

In all other cases, except if somebody uses a file or directory name with ' under Unix for build or printing, the right thing *can* be done by quoting. But:

- In all default Geany commands, the placeholders are unquoted, meaning that any file name with space(s) currently breaks. Shame on us. :)

- The quotes are different under Unix/Win~1: single vs. double.

I think there is an absolute minimum we can do about it: quote the file/directory name placeholders natively, but if, and only if, the entire command does not contain any single or double quotes. I don't see a way this can fail, but maybe elextr can prove me wrong.

Of course, that's not perfect by any means. But if it'll unquestionably improve the most realistic scenarios (file / directory names with spaces), with a very small effort, I think it's worth.

--
E-gards: Jimmy
_______________________________________________
Devel mailing list
Devel@lists.geany.org
https://lists.geany.org/cgi-bin/mailman/listinfo/devel

Reply via email to