cgiparse
Korn Shell 93 function to parse CGI variables
containing encoded HEX characters.
################################################################
####
#### Program: cgiparse
####
#### Description: Korn Shell 93 function to parse CGI variables
#### containing encoded HEX characters. Initializes CGI
#### variables with their assigned values into the current
#### shell environment. If no CGI variable is passed, then
#### the parsed CGI string is sent to standard output.
####
#### Description: Version 0.2
####
#### Author: Dana French (dfrench@mtxia.com)
#### 615.556.0456
####
#### Date: 20061024
####
#### Usage:
####
#### IFS="&" PARSED=( ${QUERY_STRING} )
#### for VAR in "${PARSED[@]}"
#### do
#### print "${VAR}" | cgiparse
#### done
####
################################################################
function cgiparse_k93
{
typeset CGILINE
typeset CGITMP
typeset CGIVAR
typeset CGIVAL
CGIIFS="${IFS}"
IFS=''
while read -r -- CGILINE
do
CGITMP="${CGILINE//+/ }"
CGITMP="${CGITMP//%([A-Za-z0-9][A-Za-z0-9])/\$( printf "'\\\0%o'" 0x\1 )}"
CGIVAR="${CGITMP%%=*}"
CGIVAL="${CGITMP#*=}"
CGITMP="${CGIVAR}=\"\\\"${CGIVAL}\\\"\""
[[ "${CGITMP}" = *=* ]] &&
eval $( eval print -- "${CGITMP}" ) ||
eval print -- "${CGITMP}"
done
IFS="${CGIIFS}"
}
################################################################