#!/bin/ksh
#
# CGI parser in PURE ksh
#
# Phil Ehrens <pehrens@ligo.caltech.edu>
#
typeset -A htmlesc
typeset -A params
htmlesc['%3D']='='
htmlesc['%2A']='*'
htmlesc['%2B']='+'
htmlesc['%28']='('
htmlesc['%29']=')'
htmlesc['%5E']='^'
htmlesc['%22']='"'
htmlesc['%5B']='['
htmlesc['%5D']=']'
htmlesc['%3A']=':'
htmlesc['%7B']='{'
htmlesc['%7D']='}'
htmlesc['%24']='$'
htmlesc['%26']='&'
htmlesc['%27']="'"
htmlesc['%21']='!'
htmlesc['%3F']='?'
htmlesc['%7C']='|'
htmlesc['%7E']='~'
htmlesc['%3B']=';'
htmlesc['%3C']='<'
htmlesc['%3E']='>'
htmlesc['%2F']='/'
htmlesc['%23']='#'
htmlesc['%40']='@'
htmlesc['%60']='`'
htmlesc['%5C']="\\"
_parse_() {
typeset item key val esc
OIFS="$IFS"
IFS='&'
[ "$REQUEST_METHOD" = "POST" ] && read QUERY_STRING
for item in $QUERY_STRING
do
key=${item%%=*}
val=${item#*=}
val=${val//+/ }
for esc in ${!htmlesc[*]}
do
val=${val//$esc/${htmlesc[$esc]}}
done
val=${val//%25/%}
val=${val%"%0A"}
params[$key]=$val
done
IFS="$OIFS"
}
_respond_() {
typeset header
header="Content-Type: text/html\n\n"
print -n $header$*
}