]> err.no Git - dpkg/commitdiff
Dpkg::Changelog: New function parse_changelog to replace controllib's parsechangelog
authorRaphael Hertzog <hertzog@debian.org>
Tue, 1 Jan 2008 17:10:22 +0000 (18:10 +0100)
committerRaphael Hertzog <hertzog@debian.org>
Tue, 1 Jan 2008 19:38:00 +0000 (20:38 +0100)
scripts/Dpkg/Changelog.pm

index 80fc701249aa8f758776e0fc7eb003fc7e5b3d3a..8a5cc7fe25e4a151ac9ca2bda281686911d1be2b 100644 (file)
@@ -39,7 +39,8 @@ use English;
 
 use Dpkg;
 use Dpkg::Gettext;
-use Dpkg::ErrorHandling qw(warning report);
+use Dpkg::ErrorHandling qw(warning report syserr subprocerr);
+use Dpkg::Cdata;
 
 use base qw(Exporter);
 
@@ -48,6 +49,7 @@ our %EXPORT_TAGS = ( 'util' => [ qw(
                 data2rfc822
                 data2rfc822_mult
                 get_dpkg_changes
+               parse_changelog
 ) ] );
 our @EXPORT_OK = @{$EXPORT_TAGS{util}};
 
@@ -692,6 +694,28 @@ sub get_dpkg_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
 
 Dpkg::Changelog::Entry - represents one entry in a Debian changelog