Felipe Contreras <felipe.contre...@gmail.com> writes:

> We don't need to quote the filename to pass to the command, we can use
> an array of all the arguments to pass to the command, which is safer,
> and more extensible.
>
> Commit a47eab0 (send-email: use the three-arg form of open in
> recipients_cmd) stated we couldn't pass $file directly, but in fact, we
> can, the multi-word string is passed as is, and we can pass an array
> too.

I think the comment is not about passing $file directly, but is
about passing $cmd that could be multi-word string directly.  The
caller expects it be split into command and its earlier part of
command line parameters, so that you can say

    $cmd = "cccmd --frotz --nitfol"

but the non-string form of open would not give you that, unless you
rewrite it to

        open $fh, "-|", qw(sh -c), $cmd, @args

or something, no?

> Signed-off-by: Felipe Contreras <felipe.contre...@gmail.com>
> ---
>  git-send-email.perl | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/git-send-email.perl b/git-send-email.perl
> index bd13cc8..7880d12 100755
> --- a/git-send-email.perl
> +++ b/git-send-email.perl
> @@ -1452,11 +1452,11 @@ foreach my $t (@files) {
>  # Execute a command (e.g. $to_cmd) to get a list of email addresses
>  # and return a results array
>  sub recipients_cmd {
> -     my ($prefix, $what, $cmd, $file) = @_;
> +     my ($prefix, $what, $cmd, @args) = @_;
>  
>       my $sanitized_sender = sanitize_address($sender);
>       my @addresses = ();
> -     open my $fh, "-|", "$cmd \Q$file\E"
> +     open my $fh, "-|", $cmd, @args
>           or die "($prefix) Could not execute '$cmd'";
>       while (my $address = <$fh>) {
>               $address =~ s/^\s*//g;
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to