
Here's a patch to the newly released Qddb 1.42.6 that
fixes the following problems:

    1. Expert search date ranges were giving an error message
    2. When the expert search window was displayed, there was
        no busy cursor.

To apply:
    1. copy this file to the qddb-1.42.6 directory.
    2. patch -p0 < qddb-1.42.6p1.patch
    3. remake and install

--------------- cut here -----------------------
*** ../qddb-dists/qddb-1.42.6//ChangeLog	Mon Nov 27 10:22:24 1995
--- .//ChangeLog	Mon Nov 27 20:02:19 1995
***************
*** 1,5 ****
--- 1,13 ----
  Mon Nov 27 10:21:33 1995  Eric H. Herrin II  <eric@herrin.msext.uky.edu>
  
+ 	* Lib/LibQddb/Utils.c (Qddb_DateStringToTime): Was writing
+ 	unsigned; properly handle negative times.
+ 
+ 	* TkUtils/fx-tk4/fx_expert.tcl: Fixed a bug in range searching.
+ 	Explicitly check for non-existent args.
+ 
+ 	* Qddb 1.42.6 released.
+ 
  	* Testing under SunOS, HP/UX, Linux, BSD/OS 2.0.1, BSD/386 1.1
  	Misc changes to force clean compile.
  
***************
*** 14,20 ****
  	* TkUtils/fx-tk4/fx_expert.tcl: Lots of minor fixes; few
  	new major features.   Placed main search building box
  	in a canvas so it will scroll.   Added ability to resize
! 	the window horizontally.   Added comment field and current
  	settings frame.
  
  	* TkUtils/fx-tk4/nxqddb.tcl (Fx_Entry): Fixed a bug in nxqddb 
--- 22,28 ----
  	* TkUtils/fx-tk4/fx_expert.tcl: Lots of minor fixes; few
  	new major features.   Placed main search building box
  	in a canvas so it will scroll.   Added ability to resize
! 	the window vertically.   Added comment field and current
  	settings frame.
  
  	* TkUtils/fx-tk4/nxqddb.tcl (Fx_Entry): Fixed a bug in nxqddb 
*** ../qddb-dists/qddb-1.42.6//Lib/LibQddb/Utils.c	Wed Nov 22 17:33:37 1995
--- .//Lib/LibQddb/Utils.c	Mon Nov 27 20:05:41 1995
***************
*** 931,939 ****
  	}
      }
      if (sizeof(time_t) == sizeof(int))
! 	sprintf(buf, "%u", (int)clockVal);
      else if (sizeof(time_t) == sizeof(long))
! 	sprintf(buf, "%lu", (long)clockVal);
      else
  	PANIC("sizeof(time_t) != sizeof(int) or sizeof(long)");
      retval = Malloc(sizeof(char)*(strlen(buf)+1));
--- 931,939 ----
  	}
      }
      if (sizeof(time_t) == sizeof(int))
! 	sprintf(buf, "%d", (int)clockVal);
      else if (sizeof(time_t) == sizeof(long))
! 	sprintf(buf, "%ld", (long)clockVal);
      else
  	PANIC("sizeof(time_t) != sizeof(int) or sizeof(long)");
      retval = Malloc(sizeof(char)*(strlen(buf)+1));
*** ../qddb-dists/qddb-1.42.6//TclUtils/src/TclSearch.c	Fri Nov 24 12:02:27 1995
--- .//TclUtils/src/TclSearch.c	Mon Nov 27 19:30:53 1995
***************
*** 50,64 ****
      } else if (argc == 5 && argv[3][0] == '-' && argv[3][1] == '\0') { 
  	/* no lower limit */
  	args->UpperStr = argv[4];
  	args->LowerStr = NULL;
  	args->LowerExists = False;
- 	args->UpperExists = True;
      } else if (argc == 5 && argv[4][0] == '-' && argv[4][1] == '\0') {
  	/* no upper limit */
  	args->UpperStr = NULL;
  	args->LowerStr = argv[3];
  	args->LowerExists = True;
- 	args->UpperExists = False;
      } else {
  	if (argc != 6 || argv[4][0] != '-' || argv[4][1] != '\0') {
  	    if (argc <= 4) {
--- 50,64 ----
      } else if (argc == 5 && argv[3][0] == '-' && argv[3][1] == '\0') { 
  	/* no lower limit */
  	args->UpperStr = argv[4];
+ 	args->UpperExists = True;
  	args->LowerStr = NULL;
  	args->LowerExists = False;
      } else if (argc == 5 && argv[4][0] == '-' && argv[4][1] == '\0') {
  	/* no upper limit */
  	args->UpperStr = NULL;
+ 	args->UpperExists = False;
  	args->LowerStr = argv[3];
  	args->LowerExists = True;
      } else {
  	if (argc != 6 || argv[4][0] != '-' || argv[4][1] != '\0') {
  	    if (argc <= 4) {
*** ../qddb-dists/qddb-1.42.6//TkUtils/fx-tk4/fx_menu.tcl	Sun Nov 26 21:11:29 1995
--- .//TkUtils/fx-tk4/fx_menu.tcl	Mon Nov 27 21:25:31 1995
***************
*** 455,460 ****
--- 455,463 ----
      method ExpertSearchProc {} {
  	global fx_config $status_variable fx_blt
  
+ 	if {$fx_blt} {
+ 	    blt_busy hold .
+ 	}
  	if {[string length $restrict] == 0} {
  	    set res {}
  	} else {
***************
*** 466,474 ****
  	    set l [Fx:ExpertSearchWindow .expert_search $schema $res ""]
  	}
  	if {[lindex $l 0] == 1} {
- 	    if {$fx_blt} {
- 		blt_busy hold .
- 	    }
  	    ::set $status_variable "Searching..."
  	    update idletasks
  	    update
--- 469,474 ----
***************
*** 485,490 ****
--- 485,494 ----
  	    update idletasks
  	    update
  	    SearchProc [lindex $l 1] [Fx:UniqueList [lindex $l 0]]
+ 	} else {
+ 	    if {$fx_blt} {
+ 		blt_busy forget .
+ 	    }
  	}
      }
      method DeleteProc {} {
*** ../qddb-dists/qddb-1.42.6//TkUtils/fx-tk4/fx_expert.tcl	Sun Nov 26 23:13:23 1995
--- .//TkUtils/fx-tk4/fx_expert.tcl	Mon Nov 27 20:56:21 1995
***************
*** 762,767 ****
--- 762,768 ----
      catch "focus $oldFocus"
      catch "grab $oldGrab"
      destroy $w
+     update idletasks; update
      return $retval
  }
  
***************
*** 800,805 ****
--- 801,807 ----
  }
  
  proc Fx:ExpertSearchParseNode {s node} {
+     update idletasks; update
      set opt [lindex $node 2]
      set attr [lindex $node 3]
      set lhs [lindex $node 4]
***************
*** 827,844 ****
  	switch $opt {
  	    nr -
  	    wr {
  		if {[string compare $opt nr] == 0} {
! 		    if {[string length $lhs] > 0 && [catch "expr double($lhs)" err] != 0} {
  			error "Invalid number: $lhs"
  		    }
! 		    if {[string length $rhs] > 0 && [catch "expr double($rhs)" err] != 0} {
  			error "Invalid number: $rhs"
  		    }
  		}
  		if {$anynode} {
! 		    return [eval qddb_search $s $opt $lhs - $rhs]
  		} else {
! 		    return [eval qddb_search $s -prunebyattr $attr $opt $lhs - $rhs]
  		}
  	    }
  	    r -
--- 829,864 ----
  	switch $opt {
  	    nr -
  	    wr {
+ 		set llen [string length $lhs]
+ 		set rlen [string length $rhs]
  		if {[string compare $opt nr] == 0} {
! 		    if {$llen > 0 && [catch "expr double($lhs)" err] != 0} {
  			error "Invalid number: $lhs"
  		    }
! 		    if {$rlen > 0 && [catch "expr double($rhs)" err] != 0} {
  			error "Invalid number: $rhs"
  		    }
  		}
  		if {$anynode} {
! 		    if {$llen > 0 && $rlen > 0} {
! 			return [qddb_search $s $opt $lhs - $rhs]
! 		    } elseif {$llen > 0 && $rlen == 0} {
! 			return [qddb_search $s $opt $lhs -]
! 		    } elseif {$llen == 0 && $rlen > 0} {
! 			return [qddb_search $s $opt - $rhs]
! 		    } else {
! 			return [qddb_search $s $opt -]
! 		    }
  		} else {
! 		    if {$llen > 0 && $rlen > 0} {
! 			return [qddb_search $s -prunebyattr $attr $opt $lhs - $rhs]
! 		    } elseif {$llen > 0 && $rlen == 0} {
! 			return [qddb_search $s -prunebyattr $attr $opt $lhs -]
! 		    } elseif {$llen == 0 && $rlen > 0} {
! 			return [qddb_search $s -prunebyattr $attr $opt - $rhs]
! 		    } else {
! 			return [qddb_search $s -prunebyattr $attr $opt -]
! 		    }
  		}
  	    }
  	    r -
***************
*** 860,873 ****
  		if {[string compare $opt d] == 0} {
  		    set rhs $lhs
  		}
! 		if {[string length $lhs] > 0} {
  		    if {[qddb_util isdate "$lhs 12:00AM"]} {
  			set lhs "$lhs 12:00AM"
  		    } elseif {![qddb_util isdate $lhs]} {
  			error "Invalid date: $lhs"
  		    }
  		}
! 		if {[string length $rhs] > 0} {
  		    if {[qddb_util isdate "$rhs 11:59PM"]} {
  			set rhs "$rhs 11:59PM"
  		    } elseif {![qddb_util isdate $rhs]} {
--- 880,895 ----
  		if {[string compare $opt d] == 0} {
  		    set rhs $lhs
  		}
! 		set llen [string length $lhs]
! 		if {$llen > 0} {
  		    if {[qddb_util isdate "$lhs 12:00AM"]} {
  			set lhs "$lhs 12:00AM"
  		    } elseif {![qddb_util isdate $lhs]} {
  			error "Invalid date: $lhs"
  		    }
  		}
! 		set rlen [string length $rhs]
! 		if {$rlen > 0} {
  		    if {[qddb_util isdate "$rhs 11:59PM"]} {
  			set rhs "$rhs 11:59PM"
  		    } elseif {![qddb_util isdate $rhs]} {
***************
*** 875,883 ****
  		    }
  		}
  		if {$anynode} {
! 		    return [eval qddb_search $s dr $lhs - $rhs]
  		} else {
! 		    return [eval qddb_search $s -prunebyattr $attr dr $lhs - $rhs]
  		}
  	    }
  	    default {
--- 897,921 ----
  		    }
  		}
  		if {$anynode} {
! 		    if {$llen > 0 && $rlen > 0} {
! 			return [qddb_search $s dr $lhs - $rhs]
! 		    } elseif {$llen > 0 && $rlen == 0} {
! 			return [qddb_search $s dr $lhs -]
! 		    } elseif {$llen == 0 && $rlen > 0} {
! 			return [qddb_search $s dr - $rhs]
! 		    } else {
! 			return [qddb_search $s dr -]
! 		    }
  		} else {
! 		    if {$llen > 0 && $rlen > 0} {
! 			return [qddb_search $s -prunebyattr $attr dr $lhs - $rhs]
! 		    } elseif {$llen > 0 && $rlen == 0} {
! 			return [qddb_search $s -prunebyattr $attr dr $lhs -]
! 		    } elseif {$llen == 0 && $rlen > 0} {
! 			return [qddb_search $s -prunebyattr $attr dr - $rhs]
! 		    } else {
! 			return [qddb_search $s -prunebyattr $attr dr -]
! 		    }
  		}
  	    }
  	    default {
***************
*** 890,895 ****
--- 928,934 ----
  proc Fx:ExpertSearchParser {s nodes} {
      set search_attrs {}
      foreach i $nodes {
+ 	update idletasks; update
  	if {[string compare [lindex $i 0] t] != 0} {
  	    if {[string compare [lindex $i 0] c] == 0} {continue}
  	    if {[string compare [lindex $i 0] i] == 0} {
