Просмотр исходного кода

dpkg-scanpackages: Create the dpkg-deb pipe using open instead of Dpkg::IPC

Guillem Jover лет назад: 11
Родитель
Сommit
a2215c7dab
1 измененных файлов с 5 добавлено и 6 удалено
  1. 5 6
      scripts/dpkg-scanpackages.pl

+ 5 - 6
scripts/dpkg-scanpackages.pl

@@ -30,7 +30,6 @@ use Dpkg::Control;
 use Dpkg::Version;
 use Dpkg::Checksums;
 use Dpkg::Compression::FileHandle;
-use Dpkg::IPC;
 
 textdomain('dpkg-dev');
 
@@ -156,13 +155,13 @@ sub load_override_extra
 sub process_deb {
     my ($pathprefix, $fn) = @_;
 
-    my $output;
-    my $pid = spawn(exec => [ 'dpkg-deb', '-I', $fn, 'control' ],
-                    to_pipe => \$output);
     my $fields = Dpkg::Control->new(type => CTRL_INDEX_PKG);
-    $fields->parse($output, $fn)
+
+    open my $output_fh, '-|', 'dpkg-deb', '-I', $fn, 'control'
+        or syserr(g_('cannot fork for %s'), 'dpkg-deb');
+    $fields->parse($output_fh, $fn)
         or error(g_("couldn't parse control information from %s"), $fn);
-    wait_child($pid, nocheck => 1);
+    close $output_fh;
     if ($?) {
         warning(g_("'dpkg-deb -I %s control' exited with %d, skipping package"),
                 $fn, $?);