+ z39 failback [list explain-crash $target $base]
+ explain-check $target [list ready-response $base]
+ }
+}
+
+# Procedure explain-crash
+# Handles target that dies during explain.
+proc explain-crash {target base} {
+ global profile settingsChanged
+
+ set profile($target,timeLastInit) [clock seconds]
+ set profile($target,timeLastExplain) {}
+ set settingsChanged 1
+
+ show-message {}
+ open-target $target $base
+}
+
+# Procedure explain-check
+# Stub function to check explain. May be overwritten later.
+proc explain-check {target response} {
+ eval $response [list $target]
+}
+
+# Procedure ready-response
+# Called after a target has been initialized and, possibly, explained
+proc ready-response {base target} {
+ global profile settingsChanged scanEnable
+
+ z39 failback [list fail-response $target]
+ if {[string length $base]} {
+ set profile($target,timeLastInit) [clock seconds]
+ set settingsChanged 1
+
+ z39 databaseNames $base
+ cascade-dblist $target $base
+ show-target $target $base
+ }
+ if {[lsearch [z39 options] scan] >= 0} {
+ set scanEnable 1
+ } else {
+ set scanEnable 0
+ }
+ .data.record delete 1.0 end
+ set desc [string trim $profile($target,description)]
+ if {[string length $desc]} {
+ .data.record insert end "$desc\n\n"
+ } else {
+ .data.record insert end "$target\n\n"
+ }
+ set data [string trim $profile($target,welcomeMessage)]
+ if {[string length $data]} {
+ .data.record insert end "Welcome Message:\n$data\n\n"
+ }
+ set data [string trim $profile($target,recentNews)]
+ if {[string length $data]} {
+ .data.record insert end "News:\n$data\n"