Felipe Contreras <felipe.contreras@xxxxxxxxx> 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.contreras@xxxxxxxxx> > --- > 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html