--- trunk/lib/WebPAC/Input.pm 2009/09/21 15:48:52 1306 +++ trunk/lib/WebPAC/Input.pm 2009/09/21 16:42:25 1307 @@ -182,9 +182,7 @@ my $input_encoding = $arg->{'input_encoding'} || $self->{'input_encoding'} || 'cp852'; # store data in object - foreach my $v (qw/path offset limit/) { - $self->{$v} = $arg->{$v} if defined $arg->{$v}; - } + $self->{$_} = $arg->{$_} foreach grep { defined $arg->{$_} } qw(path offset limit); if ($arg->{load_row} || $arg->{save_row}) { $log->logconfess("save_row and load_row must be defined in pair and be CODE") unless ( @@ -276,9 +274,6 @@ $to_rec = $size if ($to_rec > $size); } - # store size for later - $self->{size} = $to_rec - $from_rec + 1; - my $strict_encoding = $arg->{strict_encoding} || $self->{strict_encoding}; ## FIXME should be 1 really $log->info("processing $self->{size}/$size records [$from_rec-$to_rec]", @@ -286,11 +281,15 @@ $self->{stats} ? ' [stats]' : '', ); + $self->{size} = 0; + # read database for (my $pos = $from_rec; $pos <= $to_rec; $pos++) { $log->debug("position: $pos\n"); + $self->{size}++; # XXX I could move this more down if I didn't want empty records... + my $rec = $ll_db->fetch_rec($pos, sub { my ($l,$f_nr,$debug) = @_; # return unless defined($l); @@ -473,7 +472,6 @@ sub size { my $self = shift; - $self->{ll_db}->size if $self->{ll_db}->can('size'); return $self->{size}; # FIXME this is buggy if open is called multiple times! }