Merge branch 'hb/maint-send-email-quote-recipients'
authorJunio C Hamano <gitster@pobox.com>
Wed, 21 May 2008 20:09:31 +0000 (13:09 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 21 May 2008 20:09:31 +0000 (13:09 -0700)
* hb/maint-send-email-quote-recipients:
Fix recipient santitization

1  2 
git-send-email.perl
diff --combined git-send-email.perl
index 1e1d98656d645371612cac02abad4ea33757d40e,5630276f78da78599c07354697b23228a1205ee3..f5a86d39796b3cdc8e996cc1db259edf4475ef6c
@@@ -168,8 -168,7 +168,8 @@@ my $envelope_sender
  # Example reply to:
  #$initial_reply_to = ''; #<20050203173208.GA23964@foobar.com>';
  
 -my $repo = Git->repository();
 +my $repo = eval { Git->repository() };
 +my @repo = $repo ? ($repo) : ();
  my $term = eval {
        $ENV{"GIT_SEND_EMAIL_NOTTY"}
                ? new Term::ReadLine 'git-send-email', \*STDIN, \*STDOUT
@@@ -203,7 -202,6 +203,7 @@@ my %config_settings = 
      "smtpuser" => \$smtp_authuser,
      "smtppass" => \$smtp_authpass,
      "to" => \@to,
 +    "cc" => \@initial_cc,
      "cccmd" => \$cc_cmd,
      "aliasfiletype" => \$aliasfiletype,
      "bcc" => \@bcclist,
@@@ -273,25 -271,25 +273,25 @@@ sub read_config 
  
        foreach my $setting (keys %config_bool_settings) {
                my $target = $config_bool_settings{$setting}->[0];
 -              $$target = $repo->config_bool("$prefix.$setting") unless (defined $$target);
 +              $$target = Git::config_bool(@repo, "$prefix.$setting") unless (defined $$target);
        }
  
        foreach my $setting (keys %config_settings) {
                my $target = $config_settings{$setting};
                if (ref($target) eq "ARRAY") {
                        unless (@$target) {
 -                              my @values = $repo->config("$prefix.$setting");
 +                              my @values = Git::config(@repo, "$prefix.$setting");
                                @$target = @values if (@values && defined $values[0]);
                        }
                }
                else {
 -                      $$target = $repo->config("$prefix.$setting") unless (defined $$target);
 +                      $$target = Git::config(@repo, "$prefix.$setting") unless (defined $$target);
                }
        }
  }
  
  # read configuration from [sendemail "$identity"], fall back on [sendemail]
 -$identity = $repo->config("sendemail.identity") unless (defined $identity);
 +$identity = Git::config(@repo, "sendemail.identity") unless (defined $identity);
  read_config("sendemail.$identity") if (defined $identity);
  read_config("sendemail");
  
@@@ -329,9 -327,8 +329,9 @@@ if (0) 
        }
  }
  
 -my ($repoauthor) = $repo->ident_person('author');
 -my ($repocommitter) = $repo->ident_person('committer');
 +my ($repoauthor, $repocommitter);
 +($repoauthor) = Git::ident_person(@repo, 'author');
 +($repocommitter) = Git::ident_person(@repo, 'committer');
  
  # Verify the user input
  
@@@ -418,7 -415,7 +418,7 @@@ if (@files) 
  
  my $prompting = 0;
  if (!defined $sender) {
 -      $sender = $repoauthor || $repocommitter;
 +      $sender = $repoauthor || $repocommitter || '';
  
        while (1) {
                $_ = $term->readline("Who should the emails appear to be from? [$sender] ");
@@@ -512,8 -509,8 +512,8 @@@ GIT: for the patch you are writing
  EOT
        close(C);
  
 -      my $editor = $ENV{GIT_EDITOR} || $repo->config("core.editor") || $ENV{VISUAL} || $ENV{EDITOR} || "vi";
 -      system('sh', '-c', '$0 $@', $editor, $compose_filename);
 +      my $editor = $ENV{GIT_EDITOR} || Git::config(@repo, "core.editor") || $ENV{VISUAL} || $ENV{EDITOR} || "vi";
 +      system('sh', '-c', $editor.' "$@"', $editor, $compose_filename);
  
        open(C2,">",$compose_filename . ".final")
                or die "Failed to open $compose_filename.final : " . $!;
@@@ -636,7 -633,7 +636,7 @@@ sub sanitize_addres
  
        # double quotes are needed if specials or CTLs are included
        elsif ($recipient_name =~ /[][()<>@,;:\\".\000-\037\177]/) {
-               $recipient_name =~ s/(["\\\r])/\\$1/;
+               $recipient_name =~ s/(["\\\r])/\\$1/g;
                $recipient_name = "\"$recipient_name\"";
        }