# Makefile for www gateway utility
# Europagate, 1995
#
-# $Id: Makefile,v 1.31 1996/02/20 16:07:39 adam Exp $
+# $Id: Makefile,v 1.32 1996/02/29 15:41:38 adam Exp $
#
SHELL=/bin/sh
-#
-ZDEFS=
-#ZINC=-I../../yaz/include
+
ZLIB=../../yaz/lib/libyaz.a
-#ZLIB=-lyaz
+
+IRTCLDIR=../../ir-tcl
+IRTCLLIB=$(IRTCLDIR)/libirtcl.a
+IRTCLINC=-I$(IRTCLDIR)
+
#MOSILIB=../../xtimosi/src/libmosi.a ../../yaz/lib/librfc.a
-LIBIRTCL=../../ir-tcl/libirtcl.a $(ZLIB) $(MOSILIB)
#NETLIB=-lnsl -lsocket
-#
+
OLIB=../lib/util.a ../lib/libres+log.a
TCLLIB=/usr/local/lib/libtcl7.5.a
-TCLINC=-I../../ir-tcl
-#
+TCLINC=
+
WSCRIPTS=egwscript targets.egw query.egw search.egw showfull.egw z39util.tcl \
mtargets.egw mquery.egw msearch.egw history.egw tform.egw tdefine.egw
HSCRIPTS=egwindex.html
TPROG1=egwcgi
TPROG2=egwsh
TPROG3=wtest
+TPROG4=egwwais
P1=wcgi.o
-P2=wproto.o winterp.o wsh.o wtcl.o whtml.o wirtcl.o
+P2=wproto.o winterp.o wsh.o wtcl.o whtml.o wirtcl.o wshmain.o
P3=wproto.o wtest.o
+P4=wproto.o winterp.o waissh.o wtcl.o wirtcl.o wshmain.o wwaistcl.o
CPP=$(CC) -E
HTTPDDIR=/usr/local/etc/httpd
#LOGDIR=/data2/html/egw/logs
#GIFDIR=/data2/html/egw/gif
-INCLUDE=-I../include $(ZINC) $(TCLINC)
-DEFS=$(INCLUDE) $(ZDEFS) -DEGWDIR=\"$(EGWDIR)\"
+INCLUDE=-I../include $(TCLINC) $(IRTCLINC)
+DEFS=$(INCLUDE) $(ZDEFS) -DEGWDIR=\"$(EGWDIR)\"
all: $(TPROG1) $(TPROG2)
$(TPROG1): $(P1) $(OLIB)
- $(CC) $(CFLAGS) -o $(TPROG1) $(P1) $(OLIB) $(ZLIB)
+ $(CC) $(CFLAGS) -o $(TPROG1) $(P1) $(OLIB)
$(TPROG2): $(P2) $(OLIB)
- $(CC) $(CFLAGS) -o $(TPROG2) $(P2) $(OLIB) $(LIBIRTCL) \
- $(NETLIB) $(TCLLIB) -lm
+ $(CC) $(CFLAGS) -o $(TPROG2) $(P2) $(OLIB) $(IRTCLLIB) \
+ $(ZLIB) $(MOSILIB) $(NETLIB) $(TCLLIB) -lm
$(TPROG3): $(P3) $(OLIB)
- $(CC) $(CFLAGS) -o $(TPROG3) $(P3) $(OLIB) $(ZLIB)
+ $(CC) $(CFLAGS) -o $(TPROG3) $(P3) $(OLIB)
+
+
+WAISDIR=../../freeWAIS-sf-2.0
+WAISLIB=$(IRTCLDIR)/wais-tcl.o $(WAISDIR)/ir/libwais.a
+
+$(TPROG4): $(P4) $(OLIB)
+ $(CC) $(CFLAGS) -o $(TPROG4) $(P4) $(OLIB) $(IRTCLLIB) \
+ $(WAISLIB) $(ZLIB) $(MOSILIB) $(NETLIB) $(TCLLIB) -lm
install: install.prog install.script install.gif
#
-# $Id: z39util.tcl,v 1.33 1996/02/21 16:57:39 adam Exp $
+# $Id: z39util.tcl,v 1.34 1996/02/29 15:41:40 adam Exp $
#
proc saveState {} {
uplevel #0 {
global setNo
global sessionId
-
html {<li>}
set type [$zset type $no]
if {$type == "SD"} {
html [join [$zset getSutrs $no]]
html "<br>\n"
return
- }
+ }
+ if {$rtype == "WAIS"} {
+ html { <a href="http:} $env(SCRIPT_NAME) /
+ html $sessionId {/showfull.egw/} $setNo + $tno + $no + full {">}
+ html [join [$zset getWAIS $no headline]]
+ html {</a>}
+ html "<br>\n"
+ return
+ }
if {![catch {
set author [$zset getMarc $no field 100 * a]
set corp [$zset getMarc $no field 110 * a]
}
}
+proc display-full-wais {zset no} {
+ set i0 0
+ set i1 0
+ set refNo 0
+ set body [$zset getWAIS $no text]
+
+ while {[string length [set c [string index $body $i1]]]} {
+ if {[string compare $c \n]} {
+ incr i1
+ continue
+ }
+ set l [string trim [string range $body $i0 $i1]]
+ egw_log debug "line=$l"
+ incr i1
+ set i0 $i1
+ if {[string compare [string index $l 0] {<}]} {
+ egw_log "xxxxxxxxxxxxxxxx"
+ continue
+ }
+ if {[set mark [string first > $l ]] < 1} {
+ egw_log "yyyyyyyyyyyyyyyy"
+ continue
+ }
+ set data [string trim [string range $l [expr $mark +1] end]]
+ incr mark -1
+ set sw [string range $l 1 $mark]
+ egw_log debug "sw=$sw"
+ egw_log debug "data=$data"
+ switch -exact $sw {
+ ti {
+ set title $data
+ }
+ dm {
+ set dateOfLastModification $data
+ }
+ ci {
+ set controlIdentifier $data
+ }
+ lc {
+ set lastChecked $data
+ }
+ by {
+ set bytes $data
+ }
+ avli {
+ set linkage $data
+ }
+ cr {
+ incr refNo
+ }
+ li {
+ set crossRef($refNo,linkage) $data
+ }
+ cp {
+ set crossRef($refNo,title) $data
+ }
+ }
+ }
+ html {Title: } {<a href="} $linkage {">} $title "</a><br>\n"
+ html {URL: } $linkage "<br>\n"
+ if {[info exists bytes]} {
+ html {Bytes: } $bytes "<br>\n"
+ }
+ if {[info exists dateOfLastModification]} {
+ html {Last modified: } $dateOfLastModification "<br>\n"
+ }
+ if {[info exists lastChecked]} {
+ html {Last checked: } $lastChecked "<br>\n"
+ }
+ html "<ul>\n"
+ for {set i 1} {$i <= $refNo} {incr i} {
+ html {<li><a href="} $crossRef($i,linkage) {">}
+ html $crossRef($i,title) "</a><br>\n"
+ html "URL: " $crossRef($i,linkage)
+ }
+ html "</ul>\n"
+}
+
proc display-full {zset no tno} {
set type [$zset type $no]
if {$type == "SD"} {
if {$rtype == "SUTRS"} {
html [join [$zset getSutrs $no]] "<br>\n"
return
- }
+ }
+ if {$rtype == "WAIS"} {
+ display-full-wais $zset $no
+ return
+ }
if {[catch {set r [$zset getMarc $no line * * *]}]} {
html "Unknown record type: $rtype <br>\n"
return
set q {}
for {set i 1} {$i <= $ilines} {incr i} {
set term [join [egw_form entry$i]]
+ if {[lindex $targets($t) 6] == "1"} {
+ if {[string length $op] == 0} {
+ set q $term
+ } else {
+ set q "$term $q"
+ }
+ set op [egw_form logic$i]
+ continue
+ }
if {[string length $term] > 0} {
set field [join [egw_form menu$i]]
foreach x [lindex $targets($t) 2] {
set scanAttr $hist($setNo,scanAttr)
set scanTerm $hist($setNo,$scanNo,scanTerm)
}
- if {[catch [list $zz failback fail-response]]} {
- ir $zz
- }
+ mkAssoc $zz $host
if {[catch [list set oldHost [$zz connect]]]} {
set oldHost ""
}
set database $hist($setNo,database)
set query $hist($setNo,query)
}
- if {[catch [list $zz failback fail-response]]} {
- ir $zz
- }
+ mkAssoc $zz $host
if {[catch [list set oldHost [$zz connect]]]} {
set oldHost ""
}
$zz disconnect
return 0
}
- if {[catch {egw_wait sessionWait 60}]} {
+ if {$sessionWait == 0 && [catch {egw_wait sessionWait 60}]} {
displayError "Cannot initialize target" $thisHost
$zz disconnect
return 0
}
}
}
- ir-set $zz.$setNo $zz
-
+
+ if {[lindex $targets($host) 6] == "1"} {
+ wais-set $zz.$setNo $zz
+ } else {
+ ir-set $zz.$setNo $zz
+ }
if {![lindex $targets($host) 5]} {
set elements {}
}
egw_log debug "z39msearch start=$start number=$number elements=$elements"
for {set i 1} {$i <= $not} {incr i} {
set host $hist($setNo,$i,host)
- if {[catch [list z39$i failback fail-m-response $i]]} {
- ir z39$i
- }
+ mkAssoc z39$i $host
set oldHost [z39$i connect]
set thisHost [splitHostSpec $host]
if {[string compare $oldHost $thisHost]} {
set oldHost [z39$i connect]
set host $hist($setNo,$i,host)
set thisHost [splitHostSpec $host]
- if {![string compare $oldhost $thisHost]} {
+ if {![string compare $oldHost $thisHost]} {
continue
}
egw_log debug "old=$oldHost this=$thisHost"
}
set zleft 0
for {set i 1} {$i <= $not} {incr i} {
+ set host $hist($setNo,$i,host)
if {$debug} {
- html "host " [splitHostSpec $hist($setNo,$i,host)] ": "
+ html "host " [splitHostSpec $host] ": "
}
egw_log debug "i=$i zstatus=$zstatus($i)"
if {$zstatus($i) < 1} {
if {$debug} {
html "ok<br>\n"
}
- ir-set z39$i.$setNo z39$i
+
+ if {[lindex $targets($host) 6] == "1"} {
+ wais-set z39$i.$setNo z39$i
+ } else {
+ ir-set z39$i.$setNo z39$i
+ }
set hist($setNo,$i,offset) 0
eval z39$i.$setNo databaseNames $hist($setNo,$i,database)
proc mergeHostSpec {host databases} {
return ${host}.[join $databases -]
}
+
+proc mkAssoc {assoc host} {
+ global targets
+
+ if {[catch {$assoc failback fail-response}]} {
+ if {[lindex $targets($host) 6] == "1"} {
+ wais $assoc
+ } else {
+ ir $assoc
+ }
+ } else {
+ if {[lindex $targets($host) 6] == "1"} {
+ if {[$assoc comstack] == "wais"} return
+ wais $assoc
+ } else {
+ if {[$assoc comstack] == "tcpip"} return
+ ir $assoc
+ }
+ }
+}
\ No newline at end of file