@@ -250,28 +250,28 @@ sub do_edit {
);
my %config_settings = (
- "smtpserver" => \$smtp_server,
- "smtpserverport" => \$smtp_server_port,
- "smtpserveroption" => \@smtp_server_options,
- "smtpuser" => \$smtp_authuser,
- "smtppass" => \$smtp_authpass,
- "smtpdomain" => \$smtp_domain,
- "smtpauth" => \$smtp_auth,
- "smtpbatchsize" => \$batch_size,
- "smtprelogindelay" => \$relogin_delay,
- "to" => \@initial_to,
- "tocmd" => \$to_cmd,
- "cc" => \@initial_cc,
- "cccmd" => \$cc_cmd,
- "aliasfiletype" => \$aliasfiletype,
- "bcc" => \@bcclist,
- "suppresscc" => \@suppress_cc,
- "envelopesender" => \$envelope_sender,
- "confirm" => \$confirm,
- "from" => \$sender,
- "assume8bitencoding" => \$auto_8bit_encoding,
- "composeencoding" => \$compose_encoding,
- "transferencoding" => \$target_xfer_encoding,
+ "smtpserver" => [\$smtp_server],
+ "smtpserverport" => [\$smtp_server_port],
+ "smtpserveroption" => [\@smtp_server_options],
+ "smtpuser" => [\$smtp_authuser],
+ "smtppass" => [\$smtp_authpass],
+ "smtpdomain" => [\$smtp_domain],
+ "smtpauth" => [\$smtp_auth],
+ "smtpbatchsize" => [\$batch_size],
+ "smtprelogindelay" => [\$relogin_delay],
+ "to" => [\@initial_to],
+ "tocmd" => [\$to_cmd],
+ "cc" => [\@initial_cc],
+ "cccmd" => [\$cc_cmd],
+ "aliasfiletype" => [\$aliasfiletype],
+ "bcc" => [\@bcclist],
+ "suppresscc" => [\@suppress_cc],
+ "envelopesender" => [\$envelope_sender],
+ "confirm" => [\$confirm],
+ "from" => [\$sender],
+ "assume8bitencoding" => [\$auto_8bit_encoding],
+ "composeencoding" => [\$compose_encoding],
+ "transferencoding" => [\$target_xfer_encoding],
);
my %config_path_settings = (
@@ -411,7 +411,7 @@ sub read_config {
}
foreach my $setting (keys %config_settings) {
- my $target = $config_settings{$setting};
+ my $target = $config_settings{$setting}->[0];
next if $setting eq "to" and defined $no_to;
next if $setting eq "cc" and defined $no_cc;
next if $setting eq "bcc" and defined $no_bcc;
@@ -446,6 +446,16 @@ sub read_config {
${$setting->[0]} = $setting->[1] unless (defined (${$setting->[0]}));
}
+# fall back to builtin defaults
+while (my ($name, $setting) = each %config_settings) {
+ next unless @$setting == 2;
+
+ my ($target, $default) = @$setting;
+ if (ref($target) eq "SCALAR") {
+ $$target = $default unless defined $$target;
+ } # elsif ... for other types later.
+}
+
# 'default' encryption is none -- this only prevents a warning
$smtp_encryption = '' unless (defined $smtp_encryption);
The program has a good mechanism to specify the fallback default values for boolean configuration variables after two invocations of read_config() for "sendmail.$ident.$var" and "sendemail.$var" have not found any configuration. Imitate it so that we can set the default values for non-boolean variables as well. Signed-off-by: Junio C Hamano <gitster@pobox.com> --- git-send-email.perl | 56 ++++++++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 23 deletions(-)