]> err.no Git - dpkg/commitdiff
Dpkg::Fields::Object: Support filehandles and strings for output and dump
authorFrank Lichtenheld <djpig@debian.org>
Sun, 13 Jan 2008 17:07:15 +0000 (18:07 +0100)
committerFrank Lichtenheld <djpig@debian.org>
Sun, 13 Jan 2008 17:07:15 +0000 (18:07 +0100)
* scripts/Dpkg/Fields.pm (dump): Allow to omit the
filehandle argument. If the function is called in
non-void context, also remove the printed string
to the caller. Together this avoids having to fiddle
with filehandles if the caller doesn't want to.
(output): Likewise.
* scripts/Dpkg/Changelog.pm (data2rfc822): Simplify
using this new behaviour.

ChangeLog
scripts/Dpkg/Changelog.pm
scripts/Dpkg/Fields.pm

index 87ba103df1a33d5599bcb4fcec8ed4657228c290..4d1028d0b2e97ac33061252136cca85c11ca8261 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2008-01-13  Frank Lichtenheld  <djpig@debian.org>
 
+       * scripts/Dpkg/Fields.pm (dump): Allow to omit the
+       filehandle argument. If the function is called in
+       non-void context, also remove the printed string
+       to the caller. Together this avoids having to fiddle
+       with filehandles if the caller doesn't want to.
+       (output): Likewise.
+       * scripts/Dpkg/Changelog.pm (data2rfc822): Simplify
+       using this new behaviour.
+
        * scripts/t/600_Dpkg_Changelog.t: Add a new changelog
        'fields' that tests the handling of the different fields
        in the dpkg format.
index e186871f1826c901c710a3fdcce7d9f75ac21e78..de59c667dfcbbcdcd3df14f65e9c4c528c59339c 100644 (file)
@@ -35,7 +35,6 @@ package Dpkg::Changelog;
 use strict;
 use warnings;
 
-use v5.8.0; # for open $fh, '>', \$scalar
 use English;
 
 use Dpkg;
@@ -665,12 +664,7 @@ sub data2rfc822 {
 
        return join "\n", @rfc822;
     } else {
-       my $rfc822_str = "";
-
-       open my $fh, '>', \$rfc822_str
-           or warning("couldn't open filehandle for string");
-       $data->output($fh);
-       close $fh;
+       my $rfc822_str = $data->output;
 
        return $rfc822_str;
     }
index 809ca664c934853e1ff38ea88f011c313dbba425..c640bb58ee3d51cf565f4c8a829c0f29e69279e5 100644 (file)
@@ -158,15 +158,19 @@ sub NEXTKEY {
 
 sub dump {
     my ($self, $fh) = @_;
+    my $str = "";
     foreach (@{$self->[1]}) {
        if (exists $self->[0]->{$_}) {
-           print $fh "$_: " . $self->[0]->{$_} . "\n";
+           print $fh "$_: " . $self->[0]->{$_} . "\n" if $fh;
+           $str .= "$_: " . $self->[0]->{$_} . "\n" if defined wantarray;
        }
     }
+    return $str;
 }
 
 sub output {
     my ($self, $fh, $substvars) = @_;
+    my $str = "";
 
     # Add substvars to refer to other fields
     if (defined($substvars)) {
@@ -194,8 +198,14 @@ sub output {
            $v =~ s/\s*,\s*$//;
         }
         $v =~ s/\$\{\}/\$/g;
-        print $fh "$f: $v\n" || syserr(_g("write error on control data"));
+       if ($fh) {
+           print $fh "$f: $v\n" || syserr(_g("write error on control data"));
+       }
+       if (defined wantarray) {
+           $str .= "$f: $v\n";
+       }
     }
+    return $str;
 }
 
 1;