aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/w3mdict.cgi
diff options
context:
space:
mode:
authorTatsuya Kinoshita <tats@debian.org>2021-01-02 00:20:37 +0000
committerTatsuya Kinoshita <tats@debian.org>2021-01-02 00:20:37 +0000
commit1d0ba25a660483da1272a31dd077ed94441e3d9f (patch)
tree1d8dee52cd1e3d340fe178a8193dc96c4496db84 /scripts/w3mdict.cgi
parentMerge branch 'cvstrunk' into upstream (diff)
downloadw3m-upstream/0.5.3+git20210102.tar.gz
w3m-upstream/0.5.3+git20210102.zip
New upstream version 0.5.3+git20210102upstream/0.5.3+git20210102upstream
Diffstat (limited to 'scripts/w3mdict.cgi')
-rwxr-xr-xscripts/w3mdict.cgi56
1 files changed, 56 insertions, 0 deletions
diff --git a/scripts/w3mdict.cgi b/scripts/w3mdict.cgi
new file mode 100755
index 0000000..6b0e62e
--- /dev/null
+++ b/scripts/w3mdict.cgi
@@ -0,0 +1,56 @@
+#!/bin/sh
+# w3mdict.cgi - A dictd dictionary query cgi for w3m
+#
+# REQUIREMENTS:
+# + dict client software
+# + an address of a dict server, for variable ${DICT_SERVER}
+# + a name of a favorite database on that server, for variable
+# ${FAVORITE_DATABASE}
+# OPTIONALLY:
+# + locally install a dict server (eg. dictd) and a collection
+# of dict databases (eg. wordnet, aka "wn")
+
+DICT_SERVER="localhost"
+FAVORITE_DATABASE="wn"
+RETURN_MESSAGE="\n\nPress 'B' to return to the previous page."
+printf "Content-type: text/plain\n"
+type dict \
+|| {
+ # Originally, we inconsiderately failed silently ...
+ # printf "W3m-control: BACK\n\n"
+ printf "\n\nERROR: dict client software not found${RETURN_MESSAGE}"
+ exit
+ }
+# First, we check only our best and favorite database. This is most
+# likely to give us a best defintion, and avoids displaying a long and
+# cluttered page with entries from many databases.
+dict --host "${DICT_SERVER}" \
+ --database "${FAVORITE_DATABASE}" \
+ "${QUERY_STRING}" 2>&1 \
+&& {
+ printf "${RETURN_MESSAGE}"
+ } \
+|| {
+ # The initial attempt failed, so let's search ALL databases
+ # available on the server.
+ dict --host "${DICT_SERVER}" \
+ "${QUERY_STRING}" 2>&1 \
+ && {
+ printf "${RETURN_MESSAGE}"
+ } \
+ || {
+ # No defintions were found in any of the server's databases, so
+ # let's return to the favorite database in order to retrieve its
+ # guess of what we meant to type. Originally, for this case, we
+ # pushed the user's default action to be entering another word for
+ # a dict defintion, so the print command was:
+ # printf "W3m-control: DICT_WORD\n\n"
+ # Now, we need only print a blank line to separate the cgi header
+ # from the page content.
+ printf "\n"
+ dict --host "${DICT_SERVER}" \
+ --database "${FAVORITE_DATABASE}" \
+ "${QUERY_STRING}" 2>&1
+ printf "${RETURN_MESSAGE}"
+ }
+ }