git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] git-send-email.perl: add maildomain_sanitize()

From
Jari Aalto <jari.aalto@cante.net>
Date
Apr 13, 2010, 11:35 UTC
Message-ID
<87bpdnwpoh.fsf_-_@jondo.cante.net>
In-Reply-To
<87ljcrwxni.fsf_-_@jondo.cante.net>

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

Signed-off-by: Jari Aalto <jari.aalto@cante.net>
---
 git-send-email.perl |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)
      Here is improved version 2 (use "tab" for indentation).
 
      -- Jari
 
      >Re: [PATCH 1/3] send-email: Don't use FQDNs without a '.'
      >Junio C Hamano <gitster@pobox.com> writes:
      >> Brian Gernhardt <brian@gernhardtsoftware.com> 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..0e8f18c 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
Previous: Jari AaltoNext: Jakub Narebski
Message 5 of 12 in “send-email: --smtp-domain improvements”
  1. 0/3 send-email: --smtp-domain improvementsBrian Gernhardt, Apr 9, 2010
  2. 1/3 send-email: Don't use FQDNs without a '.'Brian Gernhardt, Apr 9, 2010
  3. Junio C HamanoApr 9, 2010
  4. git-send-email.perl: Add sub maildomain_sanitizeJari Aalto, Apr 13, 2010
  5. git-send-email.perl: add maildomain_sanitize()Jari Aalto, Apr 13, 2010
  6. Jakub NarebskiApr 15, 2010
  7. git-send-email.perl: Add sub maildomain_sanitizeJari Aalto, Apr 16, 2010
  8. Jakub NarebskiApr 16, 2010
  9. Jari AaltoApr 16, 2010
  10. 2/3 Document send-email --smtp-domainBrian Gernhardt, Apr 9, 2010
  11. 3/3 send-email: Add sendemail.smtpdomainBrian Gernhardt, Apr 9, 2010
  12. Jakub NarebskiApr 9, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.