git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Eric Sunshine <sunshine@sunshineco.com>
To: Allen Hubbe <allenbh@gmail.com>
Cc: "git@vger.kernel.org" <git@vger.kernel.org>,
	Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH v5 1/1] send-email: Add sendmail email aliases format
Date: Tue, 26 May 2015 15:10:03 -0400	[thread overview]
Message-ID: <CAPig+cTaiZ_PVaGk6n_bsEqqTJEYEMSCWcnC0=MiN2Bf7L4sWw@mail.gmail.com> (raw)
In-Reply-To: <49e9a95b52aa61ed4f37edf1dfa178186acb4a29.1432367540.git.allenbh@gmail.com>

On Saturday, May 23, 2015, Allen Hubbe <allenbh@gmail.com> wrote:
> Note that this only adds support for a limited subset of the sendmail
> format.  The format is is as follows.
>
>         <alias>: <address|alias>[, <address|alias>...]
>
> Aliases are specified one per line, and must start on the first column of the
> line.  Blank lines are ignored.  If the first non whitespace character
> on a line is a '#' symbol, then the whole line is considered a comment,
> and is ignored.
> [...]
> Signed-off-by: Allen Hubbe <allenbh@gmail.com>
> ---
>
> Notes:
>     This v5 renames the parser 'sendmail' again, from 'simple'.
>     Therefore, the subject line is changed again, too.
>
>     Previous subject line: send-email: Add simple email aliases format
>
>     The format is restricted to a subset of sendmail.  When the subset
>     diverges from sendmail, the parser warns about the line that diverges,
>     and ignores the line.  The supported format is described in the
>     documentation, as well as the behavior when an unsupported format
>     construct is detected.
>
>     A badly constructed sentence was corrected in the documentation.
>
>     The test case was changed to use a here document, and the unsupported
>     comment after an alias was removed from the test case alias file input.

Thanks. This round looks much nicer. A few minor comments below...

> diff --git a/git-send-email.perl b/git-send-email.perl
> index e1e9b1460ced..ffea50094a48 100755
> --- a/git-send-email.perl
> +++ b/git-send-email.perl
> @@ -487,6 +487,8 @@ sub split_addrs {
>  }
>
>  my %aliases;
> +
> +

Unnecessary whitespace change sneaked in.

>  my %parse_alias = (
>         # multiline formats can be supported in the future
>         mutt => sub { my $fh = shift; while (<$fh>) {
> @@ -516,6 +518,33 @@ my %parse_alias = (
>                           }
>                       } },
>
> +       sendmail => sub { my $fh = shift; while (<$fh>) {
> +               # ignore comment lines
> +               if (/^\s*(?:#.*)?$/) { }

This confused me at first because the comment talks only about
"comment lines", for which a simpler /^\s*#/ would suffice. The regex,
however, actually matches blank lines and comment lines (both of which
get skipped). Either the comment should be fixed or the regex could be
split into two much simpler ones. The splitting into simpler regex's
has the benefit of being easier to comprehend at a glance. For
instance:

    next if /^\s*$/;
    next if /^\s*#/;

Speaking of 'next', its use here is inconsistent. Due to use of the
if/elsif/else chain, 'next' is not needed at all, yet it is used for
some cases but not others. To be consistent, either use it everywhere
or nowhere.

> +               # warn on lines that contain quotes
> +               elsif (/"/) {
> +                       print STDERR "sendmail alias with quotes is not supported: $_\n";
> +                       next;
> +               }
> +
> +               # warn on lines that continue
> +               elsif (/^\s|\\$/) {
> +                       print STDERR "sendmail continuation line is not supported: $_\n";
> +                       next;
> +               }
> +
> +               # recognize lines that look like an alias
> +               elsif (/^(\S+)\s*:\s*(.+?)$/) {

Observation: Given "foo:bar:baz", this regex will take "foo:bar" as
the key, and "baz" as the value, which is probably not what was
intended, however, it likely doesn't matter much in this case since
colon isn't legal in an email address[1].

[1]: However, I could have sworn that colon was legal in some type of
email address years ago, but I can no longer remember which type it
was. UUCP used '!' in email addresses, so that wasn't it.

> +                       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 ];

  parent reply	other threads:[~2015-05-26 19:10 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-23 13:21 [PATCH v5 1/1] send-email: Add sendmail email aliases format Allen Hubbe
2015-05-23 17:45 ` Junio C Hamano
2015-05-23 18:00   ` Junio C Hamano
2015-05-23 23:01     ` Allen Hubbe
2015-05-23 18:07   ` Junio C Hamano
2015-05-23 22:24     ` Allen Hubbe
2015-05-25 12:47       ` Allen Hubbe
2015-05-25 16:32         ` Junio C Hamano
2015-05-25 21:12           ` Junio C Hamano
2015-05-25 21:35             ` Junio C Hamano
2015-05-26  1:51               ` Allen Hubbe
2015-05-26  1:58                 ` Junio C Hamano
2015-05-26  2:16                   ` Allen Hubbe
2015-05-26  2:55                     ` Junio C Hamano
2015-05-26  3:34                       ` Junio C Hamano
2015-05-26 18:47   ` Eric Sunshine
2015-05-26 19:10 ` Eric Sunshine [this message]
2015-05-26 19:41   ` Allen Hubbe
2015-05-26 20:53     ` Eric Sunshine
2015-05-26 21:04       ` Allen Hubbe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAPig+cTaiZ_PVaGk6n_bsEqqTJEYEMSCWcnC0=MiN2Bf7L4sWw@mail.gmail.com' \
    --to=sunshine@sunshineco.com \
    --cc=allenbh@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).