_irspy_identifier2target() recognises and allows for comma-separated
[irspy-moved-to-github.git] / lib / ZOOM / IRSpy / Utils.pm
index 856e602..089e8e7 100644 (file)
@@ -181,6 +181,7 @@ sub cql_target {
     }
 
     return "rec.id=" . cql_quote($id);
+    #return "rec.id_raw=" . cql_quote($id);
 }
 
 
@@ -284,13 +285,13 @@ sub _irspy_identifier2target {
     confess "_irspy_identifier2target(): id is undefined"
        if !defined $id;
 
-    my($protocol, $target) = ($id =~ /(.*?):(.*)/);
+    my($prefix, $protocol, $target) = ($id =~ /([^:]*,)?(.*?):(.*)/);
     if (uc($protocol) eq "Z39.50" || uc($protocol) eq "TCP") {
-       return "tcp:$target";
+       return "${prefix}tcp:$target";
     } elsif (uc($protocol) eq "SRU") {
-       return "sru=get,http:$target";
+       return "${prefix}sru=get,http:$target";
     } elsif (uc($protocol) eq "SRW") {
-       return "sru=srw,http:$target";
+       return "${prefix}sru=srw,http:$target";
     }
 
     warn "_irspy_identifier2target($id): unrecognised protocol '$protocol'";
@@ -848,7 +849,7 @@ sub validate_record {
     my @errors = $id;
 
     if ($tests{'protocol'}) {
-       push(@errors, 'protocol number is not valid') if $protocol !~ /^(z39\.50|sru|srw|tcp)$/;
+       push(@errors, 'protocol number is not valid') if $protocol !~ /^(z39\.50|sru|srw|tcp)$/i;
     }
 
     if ($tests{'port'}) {
@@ -861,7 +862,7 @@ sub validate_record {
 
     if ($tests{'database'}) {
        push(@errors, 'database name is not valid') if $dbname =~ m,/,i;
-       push(@errors, 'database has trailing spaces') if $dbname ne trimField($dbname);
+       push(@errors, 'database has trailing spaces') if $dbname =~ /^\s+|\s+$/;
     }
 
     if ($tests{'hosturl'}) {