]> Sergey Matveev's repositories - public-inbox.git/commitdiff
import: quiet down warnings from bogus From: lines
authorEric Wong (Contractor, The Linux Foundation) <e@80x24.org>
Thu, 15 Feb 2018 09:27:55 +0000 (09:27 +0000)
committerEric Wong (Contractor, The Linux Foundation) <e@80x24.org>
Thu, 15 Feb 2018 09:30:52 +0000 (09:30 +0000)
There's a lot of crap in archives and git-fast-import
accepts empty names and email addresses for authors
just fine.

lib/PublicInbox/Import.pm

index 845fbb69852e57f465a47e73de844330215ff888..f8d100377e17e6e3058b2a91e3b0795969b276ea 100644 (file)
@@ -246,11 +246,6 @@ sub add {
        my $from = $mime->header('From');
        my ($email) = PublicInbox::Address::emails($from);
        my ($name) = PublicInbox::Address::names($from);
-       # git gets confused with:
-       #  "'A U Thor <u@example.com>' via foo" <foo@example.com>
-       # ref:
-       # <CAD0k6qSUYANxbjjbE4jTW4EeVwOYgBD=bXkSu=akiYC_CB7Ffw@mail.gmail.com>
-       $name =~ tr/<>//d;
 
        my $date_raw = parse_date($mime);
        my $subject = $mime->header('Subject');
@@ -297,10 +292,26 @@ sub add {
                print $w "reset $ref\n" or wfail;
        }
 
-       utf8::encode($email);
-       utf8::encode($name);
+       # quiet down wide character warnings with utf8::encode
+       if (defined $email) {
+               utf8::encode($email);
+       } else {
+               $email = '';
+               warn "no email in From: $from\n";
+       }
+
+       # git gets confused with:
+       #  "'A U Thor <u@example.com>' via foo" <foo@example.com>
+       # ref:
+       # <CAD0k6qSUYANxbjjbE4jTW4EeVwOYgBD=bXkSu=akiYC_CB7Ffw@mail.gmail.com>
+       if (defined $name) {
+               $name =~ tr/<>//d;
+               utf8::encode($name);
+       } else {
+               $name = '';
+               warn "no name in From: $from\n";
+       }
        utf8::encode($subject);
-       # quiet down wide character warnings:
        print $w "commit $ref\nmark :$commit\n",
                "author $name <$email> $date_raw\n",
                "committer $self->{ident} ", now_raw(), "\n" or wfail;