set_options() now stores the old values in the stored options hash
authorMike Taylor <mike@indexdata.com>
Wed, 25 Oct 2006 13:34:56 +0000 (13:34 +0000)
committerMike Taylor <mike@indexdata.com>
Wed, 25 Oct 2006 13:34:56 +0000 (13:34 +0000)
that the new values were taken from, so that calling it for a second
time restores the old values.  (Well, nearly.  Because there is no way
to unset an option once it's been set, the best we can do is set such
an option to the empty string.  That seems to be good enough.)

lib/ZOOM/IRSpy/Task.pm

index 7e4d3fb..1bdd8e4 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Task.pm,v 1.3 2006-10-25 10:52:53 mike Exp $
+# $Id: Task.pm,v 1.4 2006-10-25 13:34:56 mike Exp $
 
 package ZOOM::IRSpy::Task;
 
@@ -68,11 +68,13 @@ sub run {
 sub set_options {
     my $this = shift();
 
-    my %options = %{ $this->{options} };
-    foreach my $key (sort keys %options) {
-       my $value = $options{$key};
-       $this->conn()->log("irspy_debug", "$this setting option '$key' -> '$value'");
-       $this->conn()->option($key, $value);
+    foreach my $key (sort keys %{ $this->{options} }) {
+       my $value = $this->{options}->{$key};
+       $value = "" if !defined $value;
+       $this->conn()->log("irspy_debug", "$this setting option '$key' -> ",
+                          defined $value ? "'$value'" : "undefined");
+       $this->{options}->{$key} = $this->conn()->option($key, $value);
+       #Net::Z3950::ZOOM::connection_option_set($this->conn()->_conn(), $key, $value);
     }
 }