From: Raphael Hertzog Date: Sun, 1 Jun 2008 19:37:17 +0000 (+0200) Subject: Dpkg::Control: fix error messages during parsing X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=73957553935c79bf2beff09a85404713df9bad02;p=dpkg Dpkg::Control: fix error messages during parsing Make sure that the errors during parsing are meaningful and refer to the filename when possible and not always "standard input". --- diff --git a/scripts/Dpkg/Control.pm b/scripts/Dpkg/Control.pm index fd0c27ec..a54db177 100644 --- a/scripts/Dpkg/Control.pm +++ b/scripts/Dpkg/Control.pm @@ -52,7 +52,7 @@ sub new { bless $self, $class; if ($arg) { if ($arg eq "-") { - $self->parse_fh(\*STDIN); + $self->parse_fh(\*STDIN, _g("standard input")); } else { $self->parse($arg); } @@ -81,30 +81,33 @@ Parse the content of $file. Exits in case of errors. sub parse { my ($self, $file) = @_; open(CDATA, "<", $file) || syserr(_g("cannot read %s"), $file); - $self->parse_fh(\*CDATA); + $self->parse_fh(\*CDATA, $file); close(CDATA); } -=item $c->parse_fh($fh) +=item $c->parse_fh($fh, $description) Parse a control file from the given filehandle. Exits in case of errors. +$description is used to describe the filehandle, ideally it's a filename +or a description of where the data comes from. It's used in error +messages. =cut sub parse_fh { - my ($self, $fh) = @_; + my ($self, $fh, $desc) = @_; $self->reset(); - my $cdata = parsecdata($fh, _g("standard input")); + my $cdata = parsecdata($fh, $desc); return if not defined $cdata; $self->{source} = $cdata; unless (exists $cdata->{Source}) { - syntaxerr(_g("standard input"), _g("first block lacks a source field")); + syntaxerr($desc, _g("first block lacks a source field")); } while (1) { - $cdata = parsecdata($fh, _g("standard input")); + $cdata = parsecdata($fh, $desc); last if not defined $cdata; push @{$self->{packages}}, $cdata; unless (exists $cdata->{Package}) { - syntaxerr(_g("standard input"), _g("block lacks a package field")); + syntaxerr($desc, _g("block lacks a package field")); } } }