Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be1546b8 authored by Steven Rostedt (VMware)'s avatar Steven Rostedt (VMware)
Browse files

ktest.pl: Add MAIL_PATH option to define where to find the mailer



The option MAIL_PATH lets the user decide how to find the mailer they are
using. For example, sendmail is usually located in /usr/sbin but is not
always in the path of non admin users. Have ktest look through the user's
PATH environment variable (adding /usr/sbin) as well, but if that's not good
enough, allow the user to define where to find the mailer.

Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>

squash to mail exec

Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
parent f5ef4885
Loading
Loading
Loading
Loading
+31 −5
Original line number Diff line number Diff line
@@ -218,6 +218,7 @@ my $dirname = $FindBin::Bin;

my $mailto;
my $mailer;
my $mail_path;
my $email_on_error;
my $email_when_finished;
my $email_when_started;
@@ -252,6 +253,7 @@ my $reboot_success = 0;
my %option_map = (
    "MAILTO"			=> \$mailto,
    "MAILER"			=> \$mailer,
    "MAIL_PATH"			=> \$mail_path,
    "EMAIL_ON_ERROR"		=> \$email_on_error,
    "EMAIL_WHEN_FINISHED"	=> \$email_when_finished,
    "EMAIL_WHEN_STARTED"	=> \$email_when_started,
@@ -4126,12 +4128,29 @@ sub set_test_option {

sub _mailx_send {
    my ($subject, $message) = @_;
    system("$mailer -s \'$subject\' $mailto <<< \'$message\'");
    system("$mail_path/$mailer -s \'$subject\' $mailto <<< \'$message\'");
}

sub _sendmail_send {
    my ($subject, $message) = @_;
    system("echo -e \"Subject: $subject\n\n$message\" | sendmail -t $mailto");
    system("echo -e \"Subject: $subject\n\n$message\" | $mail_path/sendmail -t $mailto");
}

sub find_mailer {
    my ($mailer) = @_;

    my @paths = split /:/, $ENV{PATH};

    # sendmail is usually in /usr/sbin
    $paths[$#paths + 1] = "/usr/sbin";

    foreach my $path (@paths) {
	if (-x "$path/$mailer") {
	    return $path;
	}
    }

    return undef;
}

sub send_email {
@@ -4140,6 +4159,13 @@ sub send_email {
	    doprint "No email sent: email or mailer not specified in config.\n";
	    return;
	}
	if (!defined($mail_path)) {
	    # find the mailer
	    $mail_path = find_mailer $mailer;
	    if (!defined($mail_path)) {
		die "\nCan not find $mailer in PATH\n";
	    }
	}
        if ($mailer eq "mail" || $mailer eq "mailx"){ _mailx_send(@_);}
        elsif ($mailer eq "sendmail" ) { _sendmail_send(@_);}
        else { doprint "\nYour mailer: $mailer is not supported.\n" }
+4 −0
Original line number Diff line number Diff line
@@ -411,6 +411,10 @@
# (default sendmail)
#MAILER = sendmail
#
# The executable to run
# (default: for sendmail "/usr/sbin/sendmail", otherwise equals ${MAILER})
#MAIL_EXEC = /usr/sbin/sendmail
#
# Errors are defined as those would terminate the script
# (default 1)
#EMAIL_ON_ERROR = 1