more command error handling fixes
Robert 'phaylon' Sedlacek [Wed, 20 Jun 2012 20:02:57 +0000 (20:02 +0000)]
lib/System/Introspector/Probe/FileHandles.pm
lib/System/Introspector/Util.pm

index 9b72367..a3289b2 100644 (file)
@@ -2,7 +2,7 @@ package System::Introspector::Probe::FileHandles;
 use Moo;
 
 use System::Introspector::Util qw(
-    handle_from_command
+    lines_from_command
     transform_exceptions
 );
 
@@ -11,9 +11,9 @@ has lsof_command => (is => 'ro', default => sub { 'lsof' });
 sub gather {
     my ($self) = @_;
     return transform_exceptions {
-        my $pipe = $self->_open_lsof_pipe;
+        my @lines = lines_from_command [$self->_lsof_command_call];
         my @handles;
-        while (defined( my $line = <$pipe> )) {
+        for my $line (@lines) {
             chomp $line;
             my @fields = split m{\0}, $line;
             push @handles, { map {
@@ -25,10 +25,9 @@ sub gather {
     };
 }
 
-sub _open_lsof_pipe {
+sub _lsof_command_call {
     my ($self) = @_;
-    my $lsof = $self->lsof_command;
-    return handle_from_command "$lsof -F0";
+    return $self->lsof_command, '-F0';
 }
 
 1;
index 530f9f9..c73572b 100644 (file)
@@ -56,7 +56,8 @@ sub output_from_command {
     $in = ''
         unless defined $in;
     my ($out, $err) = ('', '');
-    my $ok = run($command, \$in, \$out, \$err);
+    my $ok = eval { run($command, \$in, \$out, \$err) or die $err};
+    $err = $@ unless $ok;
     return $out, $err, $ok
         if wantarray;
     $command = join ' ', @$command