send-email: add sendmail email aliases format

Teach send-email to read aliases in the sendmail aliases format, i.e.

	<alias>: <address|alias>[, <address|alias>...]

Examples:

	alice: Alice W Land <awol@example.com>
	bob: Robert Bobbyton <bob@example.com>
	# this is a comment
	   # this is also a comment
	chloe: chloe@example.com
	abgroup: alice, bob
	bcgrp: bob, chloe, Other <o@example.com>

 - Quoted aliases and quoted addresses are not supported.
 - Line continuations are not supported.

Warnings are printed for explicitly unsupported constructs, and any
other lines that are not matched by the parser.

Signed-off-by: Allen Hubbe <allenbh@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Allen Hubbe
2015-05-26 17:32:03 -04:00
committed by Junio C Hamano
parent 9532ead987
commit 3169e06daf
3 changed files with 69 additions and 1 deletions

View File

@ -516,6 +516,31 @@ my %parse_alias = (
}
} },
sendmail => sub { my $fh = shift; while (<$fh>) {
# ignore blank lines and comment lines
if (/^\s*(?:#.*)?$/) { }
# warn on lines that contain quotes
elsif (/"/) {
print STDERR "sendmail alias with quotes is not supported: $_\n";
}
# warn on lines that continue
elsif (/^\s|\\$/) {
print STDERR "sendmail continuation line is not supported: $_\n";
}
# recognize lines that look like an alias
elsif (/^(\S+?)\s*:\s*(.+)$/) {
my ($alias, $addr) = ($1, $2);
$aliases{$alias} = [ split_addrs($addr) ];
}
# warn on lines that are not recognized
else {
print STDERR "sendmail line is not recognized: $_\n";
}}},
gnus => sub { my $fh = shift; while (<$fh>) {
if (/\(define-mail-alias\s+"(\S+?)"\s+"(\S+?)"\)/) {
$aliases{$1} = [ $2 ];