X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=server.pl;h=91d45a12a16bb71f2428b1bb8bd5a07693a0a536;hb=18a4315db8c49fd64ca248a402e471915de12e24;hp=0571e9a783949333486d1e716701d189d64763c5;hpb=ac22376a3615c71edd43279abbdef0a76732bc11;p=Biblio-Z3950.git diff --git a/server.pl b/server.pl index 0571e9a..91d45a1 100755 --- a/server.pl +++ b/server.pl @@ -10,6 +10,9 @@ use Data::Dumper; use Aleph; use GoogleBooks; use vuFind; +use DPLA; +use AlephTR; +use CROSBI; use Encode; @@ -21,6 +24,11 @@ my $databases = { 'ZAG01' => 'Aleph', 'GOOGLEBOOKS' => 'GoogleBooks', 'HATHITRUST' => 'vuFind', + 'DPLA' => 'DPLA', + 'MKUTUP' => 'AlephTR', + 'CROSBI' => 'CROSBI', + 'CROSBI-CASOPIS' => 'CROSBI', + 'CROSBI-PREPRINT' => 'CROSBI', }; my $max_records = 10; # XXX configure this @@ -62,7 +70,7 @@ diag "SearchHandle ",Dumper($self); diag "using $module for $database ", Dumper( $from ); eval { $query = $rpn->{query}->render( $from->usemap ); }; - warn "ERROR: $@" if $@; + warn "ERROR: ", Dumper($@) if $@; if ( $@ && ref($@) ) { ## Did someone/something report any errors? $self->{ERR_CODE} = $@->{errcode}; $self->{ERR_STR} = $@->{errstr}; @@ -147,7 +155,9 @@ sub FetchHandle { my $from = $rs->{from} || die "no from?"; # fetch records up to offset while( $#{ $rs->{results} } < $offset ) { - push @{ $rs->{results} }, $from->next_marc; + my $marc = $from->next_marc; + last if ! $marc; # abort results + push @{ $rs->{results} }, $marc; warn "# rs result ", $#{ $rs->{results} },"\n"; } @@ -264,7 +274,8 @@ warn "# usemap ", dump($usemap); } } if ( defined( $attributes->{5} ) ) { ## No truncation - die { errcode => 113, errstr => 5 }; +# die { errcode => 113, errstr => 5 }; + warn "# truncation is ignored"; } my $comp = $attributes->{6}; if ($prefix) { @@ -279,7 +290,7 @@ warn "# usemap ", dump($usemap); warn "# using custom prefix_term query"; $q = $usemap->{prefix_term}->( $prefix, $self->{term} ); } else { - $q = $prefix . $self->{term} . '*'; + $q = $prefix . $self->{term} . '*'; } print "# q: $q\n"; return $q;