[PATCH] git-send-email.perl: Add sub maildomain_sanitize

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Move duplicate maildomain checks to a single subroutine.
Require that a FQDN contains at least one period.

Signed-off-by: Jari Aalto <jari.aalto@xxxxxxxxx>
---
 git-send-email.perl |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)

    Here is improved version.

    -- Jari

    >Re: [PATCH 1/3] send-email: Don't use FQDNs without a '.'
    >Junio C Hamano <gitster@xxxxxxxxx> writes:
    >> Brian Gernhardt <brian@xxxxxxxxxxxxxxxxxxxxx> writes:
    >
    >>  		$maildomain = $domain
    >> -			unless $^O eq 'darwin' && $domain =~ /\.local$/;
    >> +			unless $^O eq 'darwin' && $domain =~ /\.local$/
    >> +				or $domain !~ /\./;
    >
    > [Junio] It would become *much* easier to read if we stop using the statement
    > modifier, and write it in a more straightforward way:
    >
    > 	unless (($^O eq 'darwin' && $domain =~ /\.local$/)
    >         	|| $domain !~ /\./) {
    >                 $maildomain = $domain;
    > 	}
    >
    > as the condition seems to have grown large enough to exceed "by the way
    > don't do this under this narrow condition", which is what statement
    > modifiers are designed to be used.  Also mixing && and or that have
    > different precedence taxes readers' brainpower unnecessarily.
    >
    > I also think that this particular exception logic should probably be in a
    > separate helper function that is called from the two places.
    >
    > Jari, you are the last person who touched code around this area.  What do
    > you think?

diff --git a/git-send-email.perl b/git-send-email.perl
index ce569a9..7a1c00f 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -863,14 +863,28 @@ sub sanitize_address
 # This maildomain*() code is based on ideas in Perl library Test::Reporter
 # /usr/share/perl5/Test/Reporter/Mail/Util.pm ==> sub _maildomain ()
 
+sub maildomain_sanitize
+{
+    local $_ = shift;
+
+    #	On Mac, the the domain name is not necessarily in FQDN format
+    #	Require a period in the string
+
+    if ( $^O eq 'darwin'  and  /\.local$/ ) {
+	# Nope, pass this one.
+    }
+    elsif ( /\./ ) {
+	$_;
+    }
+}
+
 sub maildomain_net
 {
 	my $maildomain;
 
 	if (eval { require Net::Domain; 1 }) {
 		my $domain = Net::Domain::domainname();
-		$maildomain = $domain
-			unless $^O eq 'darwin' && $domain =~ /\.local$/;
+		$maildomain = maildomain_sanitize($domain);
 	}
 
 	return $maildomain;
@@ -887,8 +901,7 @@ sub maildomain_mta
 				my $domain = $smtp->domain;
 				$smtp->quit;
 
-				$maildomain = $domain
-					unless $^O eq 'darwin' && $domain =~ /\.local$/;
+				$maildomain = maildomain_sanitize($domain);
 
 				last if $maildomain;
 			}
-- 
1.7.0
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]