projects
/
ZOOM-Perl-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use STRLEN type for _unused_len instead of unsigned: this prevents a
[ZOOM-Perl-moved-to-github.git]
/
lib
/
ZOOM.pm
diff --git
a/lib/ZOOM.pm
b/lib/ZOOM.pm
index
2b335b4
..
5783adb
100644
(file)
--- a/
lib/ZOOM.pm
+++ b/
lib/ZOOM.pm
@@
-1,4
+1,4
@@
-# $Id: ZOOM.pm,v 1.47 2007-02-26 14:52:21 mike Exp $
+# $Id: ZOOM.pm,v 1.49 2007-09-14 10:34:35 mike Exp $
use strict;
use warnings;
use strict;
use warnings;
@@
-113,6
+113,12
@@
sub diag_str {
return Net::Z3950::ZOOM::diag_str($code);
}
return Net::Z3950::ZOOM::diag_str($code);
}
+sub diag_srw_str {
+ my($code) = @_;
+
+ return Net::Z3950::ZOOM::diag_srw_str($code);
+}
+
sub event_str {
return Net::Z3950::ZOOM::event_str(@_);
}
sub event_str {
return Net::Z3950::ZOOM::event_str(@_);
}
@@
-141,8
+147,11
@@
sub new {
$diagset ||= "ZOOM";
if (uc($diagset) eq "ZOOM" || uc($diagset) eq "BIB-1") {
$message ||= ZOOM::diag_str($code);
$diagset ||= "ZOOM";
if (uc($diagset) eq "ZOOM" || uc($diagset) eq "BIB-1") {
$message ||= ZOOM::diag_str($code);
+ } elsif (lc($diagset) eq "info:srw/diagnostic/1") {
+ $message ||= ZOOM::diag_srw_str($code);
} else {
} else {
- # Should fill in messages for other diagsets, too.
+ # Should fill in messages for any other known diagsets.
+ $message ||= "(unknown error)";
}
return bless {
}
return bless {
@@
-175,7
+184,9
@@
sub diagset {
sub render {
my $this = shift();
sub render {
my $this = shift();
- my $res = "ZOOM error " . $this->code() . ' "' . $this->message() . '"';
+
+ my $res = "ZOOM error " . $this->code();
+ $res .= ' "' . $this->message() . '"' if $this->message();
$res .= ' (addinfo: "' . $this->addinfo() . '")' if $this->addinfo();
$res .= " from diag-set '" . $this->diagset() . "'" if $this->diagset();
return $res;
$res .= ' (addinfo: "' . $this->addinfo() . '")' if $this->addinfo();
$res .= " from diag-set '" . $this->diagset() . "'" if $this->diagset();
return $res;
@@
-402,6
+413,14
@@
sub error_x {
return wantarray() ? ($errcode, $errmsg, $addinfo, $diagset) : $errcode;
}
return wantarray() ? ($errcode, $errmsg, $addinfo, $diagset) : $errcode;
}
+sub exception {
+ my $this = shift();
+
+ my($errcode, $errmsg, $addinfo, $diagset) = $this->error_x();
+ return undef if $errcode == 0;
+ return new ZOOM::Exception($errcode, $errmsg, $addinfo, $diagset);
+}
+
sub errcode {
my $this = shift();
return Net::Z3950::ZOOM::connection_errcode($this->_conn());
sub errcode {
my $this = shift();
return Net::Z3950::ZOOM::connection_errcode($this->_conn());