_parse_target_string() factored out of targets()
authorMike Taylor <mike@indexdata.com>
Tue, 18 Jul 2006 11:10:38 +0000 (11:10 +0000)
committerMike Taylor <mike@indexdata.com>
Tue, 18 Jul 2006 11:10:38 +0000 (11:10 +0000)
lib/ZOOM/IRSpy.pm

index 0fb95f7..2024e46 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: IRSpy.pm,v 1.6 2006-06-21 16:24:55 mike Exp $
+# $Id: IRSpy.pm,v 1.7 2006-07-18 11:10:38 mike Exp $
 
 package ZOOM::IRSpy;
 
@@ -76,16 +76,11 @@ sub targets {
     my @targets = split /\s+/, $targetList;
     my @qlist;
     foreach my $target (@targets) {
-       my($host, $port, $db) = ($target =~ /(.*?):(.*?)\/(.*)/);
-       if (!defined $host) {
-           $port = 210;
-           ($host, $db) = ($target =~ /(.*?)\/(.*)/);
-           my $new = "$host:$port/$db";
-           $this->log("irspy_debug", "rewriting '$target' to '$new'");
-           $target = $new;
+       my($host, $port, $db, $newtarget) = _parse_target_string($target);
+       if ($newtarget ne $target) {
+           $this->log("irspy_debug", "rewriting '$target' to '$newtarget'");
+           $target = $newtarget; ### Does this get written through the ref?
        }
-       die "invalid target string '$target'"
-           if !defined $host;
        push @qlist,
            (qq[(host = "$host" and port = "$port" and path="$db")]);
     }
@@ -95,6 +90,23 @@ sub targets {
 }
 
 
+# Also used by ZOOM::IRSpy::Record
+sub _parse_target_string {
+    my($target) = @_;
+
+    my($host, $port, $db) = ($target =~ /(.*?):(.*?)\/(.*)/);
+    if (!defined $host) {
+       $port = 210;
+       ($host, $db) = ($target =~ /(.*?)\/(.*)/);
+       $target = "$host:$port/$db";
+    }
+    die "invalid target string '$target'"
+       if !defined $host;
+
+    return ($host, $port, $db, $target);
+}
+
+
 # There are two cases.
 #
 # 1. A specific set of targets is nominated on the command line.