679d678
< 	my $parsed;
681a681
> 	    my ($range, $fac, $args);
683,684c683,692
< 	    $parsed = &parse_alert_line($alerts[$i]);
< 	    next if defined $parsed->{exit} && !inRange($retval, $parsed->{exit});
---
> 	    if ($alerts[$i] =~ /^exit\s*=\s*((\d+|\d+-\d+))\s/i)
> 	    {
> 		$range=$1;
> 		next if (!inRange($retval, $range));
> 		($fac, $args) = (split (/\s+/, $alerts[$i], 3))[1,2];
> 	    }
> 	    else
> 	    {
> 		($fac, $args) = split (/\s+/, $alerts[$i], 2);
> 	    }
694,698c702,703
< 		    alert	=> $parsed->{fac},
< 		    args	=> $parsed->{args},
< 
< 		    severity    => $parsed->{severity},
< 
---
> 		    alert	=> $fac,
> 		    args	=> $args,
705d709
< 	# and record (last) alert severity
707,713d710
< 	# This is somewhat ambiguous since we could call multiple
< 	# alerts each with a different severity level; should we
< 	# record the last severity, or the lowest (highest priority)?
< 	# My assumption is that people would use severity levels in
< 	# combination with exit value ranges, and severity levels for
< 	# all alerts with the same exit range would be identical.
<         # 
722,723d718
< 
< 	    $pref->{"_alert_severity"} = $parsed->{severity};
1244d1238
< 		$pref->{"_alert_severity"} = 0; # This is just a placeholder
1982a1977
> 		    my ($alert, $args) = split (/\s+/, $_, 2);
1984c1979,1981
< 		    my $parsed = &parse_alert_line($_);
---
> 		    if ($args =~ /^exit=/) {
> 		    	$args =~ s/^exit=\S+ \s+//x;
> 		    }
1992,1993c1989,1990
< 			alert	=> $parsed->{fac},
< 			args	=> $parsed->{args},
---
> 			alert	=> $alert,
> 			args	=> $args,
2630d2626
<     my $last_alert_severity;
2633,2636c2629,2630
< 	if ($sref->{"periods"}->{$p}->{"_last_alert"} > $l){
< 	  $l = $sref->{"periods"}->{$p}->{"_last_alert"};
< 	  $last_alert_severity = $sref->{"periods"}->{$p}->{"_alert_severity"};
< 	}
---
> 	$l = $sref->{"periods"}->{$p}->{"_last_alert"}
> 	    if ($sref->{"periods"}->{$p}->{"_last_alert"} > $l);
2639,2640c2633,2634
<     $buf .= " last_alert=$l last_alert_severity=$last_alert_severity"
<         if ($l);
---
>     $buf .= " last_alert=$l"
> 	if ($l);
4499d4492
< #       severity        => "from mon config file"
4507c4500
< 		retval alert output severity
---
> 		retval alert output
4593d4585
< 	$ENV{"MON_SEVERITY"}            = $args{"severity"};
4658,4659c4650
<     # It would be really nice if we had an alert object...
<     my $alertline = "$alerttype $args{group} $args{service} $args{severity}" .
---
>     my $alertline = "$alerttype $args{group} $args{service}" .
4931,4951d4921
< }
< 
< 
< #
< # Parse out the alert line
< #
< sub parse_alert_line
< {
<   my($line) = @_;
<   $line =~ s/\s*=\s*/=/g; # Remove whitespace around "="
<   my @words = split(/\s+/, $line);
<   my $word;
<   my $result = {};
<   while( ($word = shift(@words)) =~ /([^=]+)=([^=]+)/  ){ # While we have something with an "="
<     $result->{lc $1} = $2;
<   }
<   $result->{severity} = 1 unless defined $result->{severity}; # default severity is 1
<   $result->{fac} = $word;
<   $result->{args} = join(" ", @words);
< 
<   return $result;
