57 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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}"
 | |
|     }
 | |
|   }
 |