From 74a4580ba9945fc86b47654230865a68089245b6 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Fri, 10 Nov 1995 14:47:31 +0000 Subject: [PATCH] Plus (+) characters automatically converted to space in forms. Work on search in multiple targets. Doesn't work well - yet. Presentation formats enhanced. --- www/mquery.egw | 50 +++++++++-------- www/msearch.egw | 22 ++++---- www/mtargets.egw | 15 +++-- www/query.egw | 4 +- www/search.egw | 10 ++-- www/showfull.egw | 67 +++++++++++++++------- www/wproto.c | 22 +++++++- www/z39util.tcl | 162 +++++++++++++++++++++++++++++++++++++---------------- www/ztargets.conf | 4 +- 9 files changed, 234 insertions(+), 122 deletions(-) diff --git a/www/mquery.egw b/www/mquery.egw index 755b77a..de4b307 100644 --- a/www/mquery.egw +++ b/www/mquery.egw @@ -4,7 +4,7 @@ { -# $Id: mquery.egw,v 1.3 1995/11/08 18:07:22 adam Exp $ +# $Id: mquery.egw,v 1.4 1995/11/10 14:47:31 adam Exp $ if {[info commands saveState] == ""} { source z39util.tcl @@ -14,35 +14,32 @@ global nextSetNo global hist - html {
} \n - if {[catch {set setNo $nextSetNo}]} { set nextSetNo 1 set setNo 1 } - if {1} { - set i 1 - foreach host [array names targets] { - set databases [wform target$host] - if {$databases == ""} continue - html "host=$host, $databases
\n" - set hist($setNo,$i,host) $host - set hist($setNo,$i,database) $databases - incr i - } - } else { - set hosts [wform target] - html "hosts=$hosts
\n" - set i 1 - foreach host $hosts { - set hist($setNo,$i,host) $host - set hist($setNo,$i,database) [lindex [lindex $targets($host) 1] 0] - incr i + + html {} \n + + set phost {} + set i 0 + foreach t [lsort [wform target]] { + set host [lindex $t 0] + set base [lindex $t 1] + if {$host != $phost} { + set phost $host + incr i + set hist($setNo,$i,host) $host + set hist($setNo,$i,idAuthentication) [lindex $targets($host) 3] + } + lappend hist($setNo,$i,database) $base } - set host [lindex $hosts 0] + if {$i == 0} { + html "

No targets specified

" + wabort 1 } - set hist($setNo,0,host) [expr $i - 1] + set hist($setNo,0,host) $i }

Input your search criteria:


@@ -97,6 +94,11 @@ and will continue to be so until the end of December 1995. foreach e {SERVER_NAME PATH_INFO SCRIPT_NAME} { html $e {: } $env($e) {
} \n } + set j $hist($setNo,0,host) + for {set i 1} {$i <= $j} {incr i} { + html "host=" $hist($setNo,$i,host) " " $hist($setNo,$i,database) + html "
\n" + } html "form: " [wform] "
\n" html "target: " $host "
\n" html "setNo: " $setNo "
\n" diff --git a/www/msearch.egw b/www/msearch.egw index c1c825a..ee40776 100644 --- a/www/msearch.egw +++ b/www/msearch.egw @@ -1,6 +1,6 @@ { -# $Id: msearch.egw,v 1.3 1995/11/08 18:07:22 adam Exp $ +# $Id: msearch.egw,v 1.4 1995/11/10 14:47:31 adam Exp $ if {[info commands saveState] == ""} { source z39util.tcl @@ -13,15 +13,15 @@ html " WWW/Z39.50 Gateway Search \n" html "\n" - if {[wform menu1] == ""} { - set setNo [lindex $sessionParms 0] - } else { - if {![info exists hist($nextSetNo,0,host)]} { - set hist($nextSetNo,0,host) $hist($setNo,0,host) - for {set i 1} {$i <= $hist($setNo,0,host)} {incr i} { - set hist($nextSetNo,$i,host) $hist($setNo,$i,host) - set hist($nextSetNo,$i,database) $hist($setNo,$i,database) - } + set setNo [lindex $sessionParms 0] + + if {[wform menu1] != ""} { + set hist($nextSetNo,0,host) $hist($setNo,0,host) + for {set i 1} {$i <= $hist($setNo,0,host)} {incr i} { + set hist($nextSetNo,$i,host) $hist($setNo,$i,host) + set hist($nextSetNo,$i,database) $hist($setNo,$i,database) + set hist($nextSetNo,$i,idAuthentication) \ + hist($setNo,$i,idAuthentication) } set setNo $nextSetNo incr nextSetNo @@ -52,7 +52,7 @@ set r [z39$i.$setNo resultCount] html "$r hits\n
\n" - display-rec 1 $hist($setNo,$i,offset) display-brief z39$i + display-rec 1 $hist($setNo,$i,offset) display-brief $i } html "\n" } diff --git a/www/mtargets.egw b/www/mtargets.egw index 033028d..ba52c89 100644 --- a/www/mtargets.egw +++ b/www/mtargets.egw @@ -1,6 +1,6 @@ { -# $Id: mtargets.egw,v 1.5 1995/11/10 10:20:23 adam Exp $ +# $Id: mtargets.egw,v 1.6 1995/11/10 14:47:31 adam Exp $ set setNo 1 source /usr/local/etc/httpd/conf/ztargets.conf if {[info commands saveState] == ""} { @@ -20,15 +20,18 @@ html "
\n" foreach t [array names targets] { html {
} [ lindex $targets($t) 0] -# html { } html {
} set databases [lindex $targets($t) 1] + + set desc [lindex $targets($t) 4] + if {$desc != ""} { + html "$desc
\n" + } foreach d $databases { - html { } $d "
\n" + html { } $d } - html "\n" + html "
\n" } html "
\n" } diff --git a/www/query.egw b/www/query.egw index 19d74c8..e180d1e 100644 --- a/www/query.egw +++ b/www/query.egw @@ -4,7 +4,7 @@ { -# $Id: query.egw,v 1.13 1995/11/09 17:31:04 adam Exp $ +# $Id: query.egw,v 1.14 1995/11/10 14:47:31 adam Exp $ if {[info commands saveState] == ""} { source z39util.tcl @@ -69,7 +69,7 @@ proc ok-response {} { } } set sessionWait 0 - z39 idAuthentication $hist($setNo,idAuthentication) +# z39 idAuthentication $hist($setNo,idAuthentication) if {[catch {z39 init}]} { htmlr "Cannot initialize with target ${host}
" htmlr "" diff --git a/www/search.egw b/www/search.egw index 3091a5a..d1046ba 100644 --- a/www/search.egw +++ b/www/search.egw @@ -1,6 +1,6 @@ { -# $Id: search.egw,v 1.13 1995/11/10 10:20:24 adam Exp $ +# $Id: search.egw,v 1.14 1995/11/10 14:47:32 adam Exp $ proc buttons {setNo setMax startPos} { global sessionId @@ -69,21 +69,21 @@ proc buttons {setNo setMax startPos} { set setMax 0 set setOffset 0 if {$startPos == ""} { - if {[z39search $setNo 1] != "1"} { + if {[z39search $setNo 1 0] != "1"} { return } set r [z39.$setNo resultCount] html "

Search result $r hits

\n" wflush set setOffset [z39.$setNo numberOfRecordsReturned] - display-rec 1 $setOffset display-brief z39 + display-rec 1 $setOffset display-brief 0 incr setOffset set setMax [z39.$setNo resultCount] if {$setMax > $hist($setNo,maxPresent)} { set setMax $hist($setNo,maxPresent) } } else { - if {[z39search $setNo 0] != "1"} { + if {[z39search $setNo 0 0] != "1"} { return } set r [z39.$setNo resultCount] @@ -99,7 +99,7 @@ proc buttons {setNo setMax startPos} { } } if {$setMax > 0} { - z39present $setNo $setOffset $setMax display-brief + z39present $setNo 0 $setOffset $setMax display-brief } buttons $setNo $setMax $startPos diff --git a/www/showfull.egw b/www/showfull.egw index 0ec8051..ea8998b 100644 --- a/www/showfull.egw +++ b/www/showfull.egw @@ -1,41 +1,59 @@ { -# $Id: showfull.egw,v 1.8 1995/11/10 10:20:25 adam Exp $ +# $Id: showfull.egw,v 1.9 1995/11/10 14:47:32 adam Exp $ -proc buttons {setNo no format} { +proc buttons {setNo tno no format count host} { global sessionId global env global hist html "

\n" - if {$no < [z39.$setNo resultCount]} { + if {$no < $count} { html {Next record} " | \n" } if {$no > 1} { html {Previous record} " | \n" } html {Raw format} " | \n" } else { html full {">Full format} " | \n" } - html { 0} { + html {/msearch.egw/} + } else { + html {/search.egw/} + } + html $setNo + 1 html + $hist($setNo,maxPresent) html {">Result} " | \n" - html {New target} " | \n" - html { 0} { + html {/mtargets.egw} + } else { + html {/targets.egw} + } + html {">New target} " | \n" + + html {New query} "

\n" } @@ -51,21 +69,30 @@ proc buttons {setNo no format} { global hist set sno [lindex $sessionParms 0] - set no [lindex $sessionParms 1] - set format [lindex $sessionParms 2] + set tno [lindex $sessionParms 1] + set no [lindex $sessionParms 2] + set format [lindex $sessionParms 3] set setNo $sno + + if {$tno > 0} { + set zz z39$tno + set host $hist($setNo,$tno,host) + } else { + set zz z39 + set host $hist($setNo,$0,host) + } - if {[z39search $setNo 0] != "1"} { + if {[z39search $setNo 0 $tno] != "1"} { return } - set total [z39.$setNo resultCount] - html "

Record \#$no out of $total


\n" + set count [$zz.$setNo resultCount] + html "

Record \#$no out of $count


\n" - buttons $setNo $no $format + buttons $setNo $tno $no $format $count $host - eval {z39present $setNo $no $no display-$format} - buttons $setNo $no $format + eval {z39present $setNo $tno $no $no display-$format} + buttons $setNo $tno $no $format $count $host } diff --git a/www/wproto.c b/www/wproto.c index bc46653..6deb504 100644 --- a/www/wproto.c +++ b/www/wproto.c @@ -41,7 +41,12 @@ * USE OR PERFORMANCE OF THIS SOFTWARE. * * $Log: wproto.c,v $ - * Revision 1.6 1995/11/06 10:51:17 adam + * Revision 1.7 1995/11/10 14:47:32 adam + * Plus (+) characters automatically converted to space in forms. + * Work on search in multiple targets. Doesn't work well - yet. + * Presentation formats enhanced. + * + * Revision 1.6 1995/11/06 10:51:17 adam * End of response marker in response from wsh/wproto to wcgi. * Shells are respawned when necessary. * @@ -211,10 +216,21 @@ static void descramble(char *t, const char *o) { sscanf(o + 1, "%2x", &v); o += 3; - *(t++) = (char) v; + if (v == '+') + *t = ' '; + else + *t = (char) v; + t++; } else - *(t++) = *(o++); + { + if (*o == '+') + *t = ' '; + else + *t = *o; + t++; + o++; + } } *t = '\0'; } diff --git a/www/z39util.tcl b/www/z39util.tcl index 82380f1..4322d2c 100644 --- a/www/z39util.tcl +++ b/www/z39util.tcl @@ -1,5 +1,5 @@ # -# $Id: z39util.tcl,v 1.6 1995/11/09 15:24:37 adam Exp $ +# $Id: z39util.tcl,v 1.7 1995/11/10 14:47:32 adam Exp $ # proc saveState {} { uplevel #0 { @@ -52,7 +52,7 @@ proc fail-response {} { set sessionWait -1 } -proc display-brief {zset no} { +proc display-brief {zset no tno} { global env global setNo global sessionId @@ -70,7 +70,7 @@ proc display-brief {zset no} { if {$type != "DB"} { return } - html "${no} " + html "${no}" set rtype [$zset recordType $no] if {$rtype == "SUTRS"} { html [join [$zset getSutrs $no]] @@ -82,13 +82,13 @@ proc display-brief {zset no} { set year [lindex [$zset getMarc $no field 260 * c] 0] } ] } { html { } $title {} " ${year} " } html "
\n" } -proc display-raw {zset no} { +proc display-raw {zset no tno} { set type [$zset type $no] if {$type == "SD"} { set err [lindex [$zset diag $no] 1] @@ -224,7 +224,7 @@ proc dl-marc-field-rec {zset no tag lead start stop startid sep} { } } -proc display-full {zset no} { +proc display-full {zset no tno} { set type [$zset type $no] if {$type == "SD"} { set err [lindex [$zset diag $no] 1] @@ -269,14 +269,45 @@ proc display-full {zset no} { dl-marc-field $zset $no 260 * "Publisher" {} " " dl-marc-field $zset $no 300 * "Physical Description" {} " " - dl-marc-field $zset $no 500 a "Notes" {} ", " + dl-marc-field-rec $zset $no 500 "Notes" "" "
\n" "a" ", " dl-marc-field-rec $zset $no 510 "References" "" "
\n" "a" ", " + dl-marc-field-rec $zset $no 511 "Participant note" "" "
\n" "a" ", " + + dl-marc-field $zset $no 513 a "Report type" {} ", " + dl-marc-field $zset $no 513 b "Period covered" {} ", " + dl-marc-field-rec $zset $no 515 "Numbering notes" "" "
\n" "a" ", " + dl-marc-field-rec $zset $no 516 "Data notes" "" "
\n" "a" ", " + dl-marc-field-rec $zset $no 518 "Date/time notes" "" "
\n" "a" ", " + dl-marc-field $zset $no 350 a "Price" {} ", " dl-marc-field $zset $no 362 a "Dates of publication" {} ", " dl-marc-field $zset $no 850 a "Holdings" {} ", " + dl-marc-field-rec $zset $no 270 "Contact name" "" "
\n" p ", " + if {0} { + set n [dl-marc-field $zset $no 270 p "Contact name" {} ", "] + if {$n > 0} { + html "\n
\n" + + if {0} { + dl-marc-field $zset $no 270 a "Street" {} ", " + dl-marc-field $zset $no 270 b "City" {} ", " + dl-marc-field $zset $no 270 c "State" {} ", " + dl-marc-field $zset $no 270 e "Zip code" {} ", " + dl-marc-field $zset $no 270 d "Country" {} ", " + dl-marc-field $zset $no 270 m "Network address" {} ", " + dl-marc-field $zset $no 301 a "Service hours" {} ", " + dl-marc-field $zset $no 270 k "Phone" {} ", " + dl-marc-field $zset $no 270 l "Fax" {} ", " + } else { + dl-marc-field $zset $no 270 {[abcedmakl]} "Address" {} "
\n" + } + + html "\n
\n" + } + } dl-marc-field $zset $no 010 a "LC control number" {} ", " dl-marc-field $zset $no 010 b "NUCMC control number" {} ", " dl-marc-field $zset $no 020 a "ISBN" {} ", " @@ -290,19 +321,29 @@ proc display-full {zset no} { } html {
} [join $sp] "\n" } - dl-marc-field $zset $no 037 * "Acquisition" {} "
\n" + dl-marc-field $zset $no 037 {[abc]} "Acquisition" {} "
\n" + dl-marc-field $zset $no 037 {[f6]} "Form of issue" {} "
\n" + dl-marc-field $zset $no 537 * "Source of data" {} "
\n" + dl-marc-field $zset $no 538 * "System details" {} "
\n" dl-marc-field $zset $no 787 {[rstw6]} "Related information" {} "
\n" dl-marc-field $zset $no 001 * "Local control number" {} ", " html "\n" } -proc display-rec {from to dfunc zz} { +proc display-rec {from to dfunc tno} { global setNo - while {$from <= $to} { - eval "$dfunc $zz.$setNo $from" - incr from + if {$tno > 0} { + while {$from <= $to} { + eval "$dfunc z39${tno}.${setNo} $from $tno" + incr from + } + } else { + while {$from <= $to} { + eval "$dfunc z39.${setNo} $from 0" + incr from + } } } @@ -312,8 +353,7 @@ proc build-query {t} { set op {} set q {} for {set i 1} {$i < 4} {incr i} { - set term1 [wform entry$i] - regsub {\+} $term1 " " term + set term [wform entry$i] if {$term != ""} { set field [wform menu$i] foreach x [lindex $targets($t) 2] { @@ -337,25 +377,37 @@ proc build-query {t} { return $q } -proc z39search {setNo piggy} { +proc z39search {setNo piggy tno} { global hist global sessionWait - set host $hist($setNo,host) - if {[catch {z39 failback fail-response}]} { - ir z39 + if {$tno > 0} { + set zz z39$tno + set host $hist($setNo,$tno,host) + set idAuth $hist($setNo,$tno,idAuthentication) + set database $hist($setNo,$tno,database) + set query $hist($setNo,$tno,query) + } else { + set zz z39 + set host $hist($setNo,host) + set idAuth $hist($setNo,idAuthentication) + set database $hist($setNo,database) + set query $hist($setNo,query) } - if {[catch {set oldHost [z39 connect]}]} { + if {[catch [list $zz failback fail-response]]} { + ir $zz + } + if {[catch [list set oldHost [$zz connect]]]} { set oldHost "" } - z39 callback ok-response - z39 failback fail-response + $zz callback ok-response + $zz failback fail-response if {$oldHost != $host} { - catch {z39 disconnect} + catch [list $zz disconnect] html "Connecting to target " $host "
\n" set sessionWait 0 - if {[catch {z39 connect $host}]} { + if {[catch [list $zz connect $host]]} { html "Cannot connect to target ${host}
\n" return 0 } elseif {$sessionWait == 0} { @@ -365,56 +417,62 @@ proc z39search {setNo piggy} { return 0 } } - z39 idAuthentication $hist($setNo,idAuthentication) + $zz idAuthentication $idAuth set sessionWait 0 - if {[catch {z39 init}]} { + if {[catch [list $zz init]]} { html "Cannot initialize with target ${host}
\n" return 0 } if {[catch {zwait sessionWait 60}]} { html "Cannot initialize with target ${host}
\n" - z39 disconnect + $zz disconnect return 0 } if {$sessionWait != "1"} { html "Cannot initialize with target ${host}
\n" - z39 disconnect + $zz disconnect + return 0 + } + if {![$zz initResult]} { + set u [$zz userInformationField] + $zz disconnect + html "Connection rejected by target: $u
\n" return 0 } } - if {![catch {z39.$setNo smallSetUpperBound 0}]} { + if {![catch [list $zz.$setNo smallSetUpperBound 0]]} { return 1 } - ir-set z39.$setNo z39 - eval z39.$setNo databaseNames $hist($setNo,database) + ir-set $zz.$setNo $zz + eval $zz.$setNo databaseNames $database - z39.$setNo preferredRecordSyntax USMARC + $zz.$setNo preferredRecordSyntax USMARC - z39 callback search-response $setNo + $zz callback search-response $setNo if {$piggy} { - z39.$setNo largeSetLowerBound 999999 - z39.$setNo smallSetUpperBound 0 - z39.$setNo mediumSetPresentNumber $hist($setNo,maxPresent) + $zz.$setNo largeSetLowerBound 999999 + $zz.$setNo smallSetUpperBound 0 + $zz.$setNo mediumSetPresentNumber $hist($setNo,maxPresent) } else { - z39.$setNo largeSetLowerBound 2 - z39.$setNo smallSetUpperBound 0 - z39.$setNo mediumSetPresentNumber 0 + $zz.$setNo largeSetLowerBound 2 + $zz.$setNo smallSetUpperBound 0 + $zz.$setNo mediumSetPresentNumber 0 } set sessionWait 0 - z39.$setNo search $hist($setNo,query) + $zz.$setNo search $query if {[catch {zwait sessionWait 600}]} { html "\n" - z39 disconnect + $zz disconnect return 0 } if {$sessionWait != 1} { html "\n" - z39 disconnect + $zz disconnect return 0 } - set status [z39.$setNo responseStatus] + set status [$zz.$setNo responseStatus] if {[lindex $status 0] == "NSD"} { set code [lindex $status 1] set msg [lindex $status 2] @@ -422,7 +480,7 @@ proc z39search {setNo piggy} { html "

Error NSD$code: $msg: $addinfo


\n" return 0 } - set hist($setNo,hits) [z39.$setNo resultCount] + set hist($setNo,hits) [$zz.$setNo resultCount] return 1 } @@ -549,33 +607,39 @@ proc z39msearch {setNo piggy} { } } -proc z39present {setNo setOffset setMax dfunc} { +proc z39present {setNo tno setOffset setMax dfunc} { global hist global sessionWait + if {$tno > 0} { + set zz z39$tno + } else { + set zz z39 + } + set toGet [expr 1 + $setMax - $setOffset] while {$setMax > 0 && $toGet > 0} { for {set got 0} {$got < $toGet} {incr got} { - if {[z39.$setNo type [expr $setOffset + $got]] == ""} { + if {[$zz.$setNo type [expr $setOffset + $got]] == ""} { break } } if {$got < $toGet} { set sessionWait 0 - z39.$setNo present $setOffset $toGet + $zz.$setNo present $setOffset $toGet if {[catch {zwait sessionWait 300}]} { - z39 disconnect + $zz disconnect break } if {$sessionWait != "1"} { break } - set got [z39.$setNo numberOfRecordsReturned] + set got [$zz.$setNo numberOfRecordsReturned] if {$got <= 0} { break } } - display-rec $setOffset [expr $got + $setOffset - 1] $dfunc z39 + display-rec $setOffset [expr $got + $setOffset - 1] $dfunc $tno set setOffset [expr $got + $setOffset] set toGet [expr 1 + $setMax - $setOffset] wflush diff --git a/www/ztargets.conf b/www/ztargets.conf index b8ed1d6..b05f989 100644 --- a/www/ztargets.conf +++ b/www/ztargets.conf @@ -1,4 +1,4 @@ -# $Id: ztargets.conf,v 1.8 1995/11/08 18:07:23 adam Exp $ +# $Id: ztargets.conf,v 1.9 1995/11/10 14:47:33 adam Exp $ set commonFields { { Title {@attr 1=4} } { Author {@attr 1=1003} } @@ -68,7 +68,7 @@ set targets(localhost:9999) [list \ set targets(dtbsun.dtv.dk:9999) [list \ Zserver \ - {usgs esdd cd_rom unknown} \ + {usgs esdd cd_rom iah unknown} \ $commonFields \ {} \ {New Index Data Z39.50 Server in alpha-test} \ -- 1.7.10.4