bless $self, $class;
if ($arg) {
if ($arg eq "-") {
- $self->parse_fh(\*STDIN);
+ $self->parse_fh(\*STDIN, _g("standard input"));
} else {
$self->parse($arg);
}
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"));
}
}
}