BEGIN {
use Exporter ();
use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
- $VERSION = 0.02;
+ $VERSION = 0.03;
@ISA = qw (Exporter);
#Give a hoot don't pollute, do not export more than needed by default
@EXPORT = qw ();
isisdb => './cds/cds',
read_fdt => 1,
debug => 1,
+ include_deleted => 1,
);
Options are described below:
Dump a C<lot> of debugging output.
+=item include_deleted
+
+Don't skip logically deleted records.
+
=back
It will also set C<$isis-E<gt>{'maxmfn'}> which is maximum MFN stored in database.
my $self = {};
bless($self, $class);
- $self->{isisdb} = {@_}->{isisdb} || croak "new needs database name as argument!";
+ croak "new needs database name (isisdb) as argument!" unless ({@_}->{isisdb});
- $self->{debug} = {@_}->{debug};
+ foreach my $v (qw{isisdb debug include_deleted}) {
+ $self->{$v} = {@_}->{$v};
+ }
# if you want to read .FDT file use read_fdt argument when creating class!
if ({@_}->{read_fdt} && -e $self->{isisdb}.".FDT") {
my $buff = shift || return;
my @arr = unpack("ssssssllls", $buff);
+ print "unpack_cnt: ",join(" ",@arr),"\n" if ($self->{'debug'});
+
my $IDTYPE = shift @arr;
foreach (@flds) {
$self->{$IDTYPE}->{$_} = abs(shift @arr);
print "MFRL: $MFRL MFBWB: $MFBWB MFBWP: $MFBWP BASE: $BASE NVF: $NVF STATUS: $STATUS\n" if ($self->{debug});
+ # delete old record
+ delete $self->{record};
+
+ if (! $self->{'include_deleted'} && $MFRL < 0) {
+ print "## logically deleted record $mfn, skipping...\n" if ($self->{debug});
+ return;
+ }
+
# Get Directory Format
my @FieldPOS;
# Get Variable Fields
- delete $self->{record};
-
read($self->{'fileMST'},$buff,$fld_len);
for (my $i = 0 ; $i < $NVF ; $i++) {
}
close(fileMST);
- # The record is marked for deletion
- if ($STATUS==1) {
- return -1;
- }
-
print Dumper($self) if ($self->{debug});
return $self->{'record'};