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

Dpkg::Changelog: New function parse_changelog to replace controllib's parsechangelog

Raphael Hertzog лет назад: 18
Родитель
Сommit
894364fca9
1 измененных файлов с 25 добавлено и 1 удалено
  1. 25 1
      scripts/Dpkg/Changelog.pm

+ 25 - 1
scripts/Dpkg/Changelog.pm

@@ -39,7 +39,8 @@ use English;
 
 
 use Dpkg;
 use Dpkg;
 use Dpkg::Gettext;
 use Dpkg::Gettext;
-use Dpkg::ErrorHandling qw(warning report);
+use Dpkg::ErrorHandling qw(warning report syserr subprocerr);
+use Dpkg::Cdata;
 
 
 use base qw(Exporter);
 use base qw(Exporter);
 
 
@@ -48,6 +49,7 @@ our %EXPORT_TAGS = ( 'util' => [ qw(
                 data2rfc822
                 data2rfc822
                 data2rfc822_mult
                 data2rfc822_mult
                 get_dpkg_changes
                 get_dpkg_changes
+		parse_changelog
 ) ] );
 ) ] );
 our @EXPORT_OK = @{$EXPORT_TAGS{util}};
 our @EXPORT_OK = @{$EXPORT_TAGS{util}};
 
 
@@ -692,6 +694,28 @@ sub get_dpkg_changes {
     return $changes;
     return $changes;
 }
 }
 
 
+=pod
+
+=head3 parse_changelog($file, $format, $since)
+
+Calls "dpkg-parsechangelog -l$file -F$format -v$since"  and returns a
+Dpkg::Cdata::Object with the values output by the program.
+
+=cut
+sub parse_changelog {
+    my ($changelogfile, $changelogformat, $since) = @_;
+
+    my @exec = ('dpkg-parsechangelog');
+    push(@exec, "-l$changelogfile");
+    push(@exec, "-F$changelogformat") if defined($changelogformat);
+    push(@exec, "-v$since") if defined($since);
+
+    open(PARSECH, "-|", @exec) || syserr(_g("fork for parse changelog"));
+    my $fields = parsecdata(\*PARSECH, _g("parsed version of changelog"));
+    close(PARSECH) || subprocerr(_g("parse changelog"));
+    return $fields;
+}
+
 =head1 NAME
 =head1 NAME
 
 
 Dpkg::Changelog::Entry - represents one entry in a Debian changelog
 Dpkg::Changelog::Entry - represents one entry in a Debian changelog