[nagiosplug] git-notify: Optionally call mail(1) without "-a"

"Holger Weiss" <[email protected]>
Newsgroups gmane.network.nagios.plugins.cvs
Message-ID <[email protected]>
 Module: nagiosplug
 Branch: master
 Commit: 71351c5a4db3a143ca23d7614c23e80b31bdd15c
 Author: Holger Weiss <[email protected]>
   Date: Sat Nov  7 10:40:22 2009 +0100
    URL: http://nagiosplug.git.sf.net/git/gitweb.cgi?p=nagiosplug/nagiosplug;a=commit;h=71351c5

git-notify: Optionally call mail(1) without "-a"

Not all mail(1) implementations support specifying additional header
fields via "-a": with some, this flag is used for attaching files,
others don't provide an "-a" flag at all (this is true for the /bin/mail
utility currently installed on the SourceForge servers, for example).
We now provide the "-H" flag and the "notify.legacyMail" configuration
key for these cases.

---

 tools/git-notify |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/tools/git-notify b/tools/git-notify
index 2970f00..b3223a8 100755
--- a/tools/git-notify
+++ b/tools/git-notify
@@ -18,6 +18,7 @@
 #   -A        Omit the author name from the mail subject
 #   -C        Show committer in the body if different from the author
 #   -c name   Send CIA notifications under specified project name
+#   -H        The mail(1) utility doesn't accept headers via "-a"
 #   -m addr   Send mail notifications to specified address
 #   -n max    Set max number of individual mails to send
 #   -r name   Set the git repository name
@@ -53,6 +54,9 @@ my $debug = 0;
 
 # configuration parameters
 
+# the $mailer doesn't accept headers via "-a" (can be set with the -H option)
+my $legacy_mail = git_config( "notify.legacymail" );
+
 # omit the author from the mail subject (can be set with the -A option)
 my $omit_author = git_config( "notify.omitauthor" );
 
@@ -104,6 +108,7 @@ sub usage()
     print "   -A        Omit the author name from the mail subject\n";
     print "   -C        Show committer in the body if different from the author\n";
     print "   -c name   Send CIA notifications under specified project name\n";
+    print "   -H        The mail(1) utility doesn't accept headers via `-a'\n";
     print "   -m addr   Send mail notifications to specified address\n";
     print "   -n max    Set max number of individual mails to send\n";
     print "   -r name   Set the git repository name\n";
@@ -291,6 +296,7 @@ sub parse_options()
         elsif ($arg eq '-A') { $omit_author = 1; }
         elsif ($arg eq '-C') { $show_committer = 1; }
         elsif ($arg eq '-c') { $cia_project_name = shift @ARGV; }
+        elsif ($arg eq '-H') { $legacy_mail = 1; }
         elsif ($arg eq '-m') { $commitlist_address = shift @ARGV; }
         elsif ($arg eq '-n') { $max_individual_notices = shift @ARGV; }
         elsif ($arg eq '-r') { $repos_name = shift @ARGV; }
@@ -333,7 +339,13 @@ sub mail_notification($$$@)
         return unless defined $pid;
         if (!$pid)
         {
-            exec $mailer, "-s", $subject, "-a", "Content-Type: $content_type", $name or die "Cannot exec $mailer";
+            my @mailer_options = ( "-s", $subject );
+
+            unless ($legacy_mail)
+            {
+                push @mailer_options, "-a", "Content-Type: $content_type";
+            }
+            exec $mailer, @mailer_options, $name or die "Cannot exec $mailer";
         }
         binmode MAIL, ":utf8";
         print MAIL join("\n", @text), "\n";


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.