} else {
$display_data .= $ldel if ($display_data);
my $tmp = mkformat($x,$display);
- $display_data = $tmp if ($tmp);
+ $display_data .= $tmp if ($tmp);
}
}
if ($lookup_key) {
print STDERR "WARNING: try to redefine lookup_key (keys shouldn't be repeatable fields!)";
} else {
- $lookup_key = $display;
+ if ($filter) {
+ no strict 'refs';
+ $lookup_key = &$filter($display);
+ } else {
+ $lookup_key = $display;
+ }
}
} elsif (lc($x->{type}) eq "lookup_val") {
if ($lookup_key) {
- $lhash{$lookup_key} = $display;
+ if ($filter) {
+ no strict 'refs';
+ $lhash{$lookup_key} = &$filter($display);
+ } else {
+ $lhash{$lookup_key} = $display;
+ }
} else {
print STDERR "WARNING: no lookup_key defined for '$display'?";
}
#tie %lhash, 'GDBM_File', $lookup_file, &GDBM_NEWDB, 0644;
tie %lhash, 'TDB_File', $lookup_file, TDB_CLEAR_IF_FIRST, O_RDWR, 0644;
print STDERR "creating lookup file '$lookup_file'\n";
+ # delete memory cache for lookup file
+ delete $cache->{lhash};
}
# open existing lookup file
my $marc_file = $cfg -> val($database, 'marc_file') || die "$database doesn't have 'marc_file' defined!";
# optional argument is format
- my $format = x($config->{format}) || 'usmarc';
+ my $format = x($config->{marc_format}) || 'usmarc';
print STDERR "Reading MARC file '$marc_file'\n";
my $marc = new MARC;
my $nr = $marc->openmarc({
file=>$marc_file, format=>$format
- }) || die "Can't open MARC file '$marc_file'";
+ }) || die "Can't open MARC file '$marc_file' with format '$format'";
- my $i=0; # record nr.
+ # read MARC file in memory
+ $marc->nextmarc(-1);
- my $rec;
+ my $max_rec = $marc->marc_count();
- while ($marc->nextmarc(1)) {
+ for(my $i=1; $i<=$max_rec; $i++) {
- # XXX
- fakeprogress($i++);
+ progress($i,$max_rec);
+
+ # store value for marc_sf.pm
+ $main::cache->{marc_record} = $i;
my $swishpath = $database."#".$i;
print "Document-Type: XML\n\n$xml\n";
}
}
+
+ print STDERR "\n";
+
} elsif ($type_base eq "feed") {
$import2cp = Text::Iconv->new($config->{feed_codepage},$codepage);