#!/usr/bin/perl -Tw
# Copyright (C) 2008 Peter Palfrader <peter@palfrader.org>
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# Need to allow /usr/local/bin/tw_cli info c0 u0 status in sudoers:
#
open (MPT, "$command|") or die ("Cannot run $command: $!\n");
my @tw=<MPT>;
close MPT;
-if ($CHILD_ERROR) { # program failed
- die("$command returned with non-zero exit code: ".($CHILD_ERROR / 256)."\n");
-};
+my $command_exitcode = $CHILD_ERROR;
my $exit = $UNKNOWN;
my $msg = '';
for my $line (@tw) {
chomp $line;
next if $line =~ /^$/;
- my ($device, $num, $status) = $line =~ m#^(log_id|vol_id|phys_id)\s+([0-9]+)\s+(.*)$#;
+ my ($device, $num, $status) = $line =~ m/^(log_id|vol_id|phys_id)\s+([0-9]+)\s+(.*)$/;
unless (defined($device) && defined($num) && defined($status)) {
print "Cannot parse line '$line'\n";
exit $UNKNOWN;
die ("exit is not UNKNOWN but $exit") if ($exit != $UNKNOWN);
}
+if ($command_exitcode && ($exit == $OK || $exit == $UNKNOWN)) {
+ $exit = $UNKNOWN;
+ $msg .= ($msg eq '' ? '' : '; '). "$command returned with non-zero exit code: ".($command_exitcode / 256);
+}
+
print $msg,"\n";
exit $exit;