################################################################ #### #### 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}" } ################################################################