diff options
author | Pascal Rigaux <pixel@mandriva.com> | 2002-07-26 17:03:10 +0000 |
---|---|---|
committer | Pascal Rigaux <pixel@mandriva.com> | 2002-07-26 17:03:10 +0000 |
commit | 2e83b63adaf8acfa9a25c2e169525e1c5534f437 (patch) | |
tree | d0ca89474bcb7067c91be52a7d6c43f8d0a3cc0e | |
parent | 6990f9fecf2642e7a876717091968d4f7872562c (diff) | |
download | drakx-2e83b63adaf8acfa9a25c2e169525e1c5534f437.tar drakx-2e83b63adaf8acfa9a25c2e169525e1c5534f437.tar.gz drakx-2e83b63adaf8acfa9a25c2e169525e1c5534f437.tar.bz2 drakx-2e83b63adaf8acfa9a25c2e169525e1c5534f437.tar.xz drakx-2e83b63adaf8acfa9a25c2e169525e1c5534f437.zip |
- also give the ability to redirect to an array ref
- add rooted_get_stdout which is alike ``
-rw-r--r-- | perl-install/run_program.pm | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/perl-install/run_program.pm b/perl-install/run_program.pm index a0d5c98dc..a50f31f0a 100644 --- a/perl-install/run_program.pm +++ b/perl-install/run_program.pm @@ -16,6 +16,13 @@ sub rooted_or_die { my ($root, $name, @args) = @_; rooted($root, $name, @args) or die "$name failed\n"; } +sub rooted_get_stdout { + my ($root, $name, @args) = @_; + my @r; + rooted($root, $name, '>', \@r, @args) or return; + @r; +} + sub run { rooted('', @_) } sub rooted { @@ -41,11 +48,19 @@ sub rooted { waitpid $pid, 0; $? == 0 or return; if ($stdout_raw && ref($stdout_raw)) { - $$stdout_raw = cat_($stdout); + if (ref($stdout_raw) eq 'ARRAY') { + @$stdout_raw = cat_($stdout); + } else { + $$stdout_raw = cat_($stdout); + } unlink $stdout; } if ($stderr_raw && ref($stderr_raw)) { - $$stderr_raw = cat_($stderr); + if (ref($stderr_raw) eq 'ARRAY') { + @$stderr_raw = cat_($stderr); + } else { + $$stderr_raw = cat_($stderr); + } unlink $stderr; } 1; |