fitted editing to new card layout
[confetti] / cgi.sh
1 #!/bin/zsh
2
3 declare -A _GET
4 declare -A _POST
5
6 cgi_get() {  # parse HTTP GET string
7   echo "$QUERY_STRING" |tr '&' '\n' |while read query; do
8     key="$(echo "$query" |sed -r 's:^([a-zA-Z0-9_-]*)=(.*)$:\1:')"
9     val="$(echo "$query" |sed -r 's:^([a-zA-Z0-9_-]*)=(.*)$:\2:')"
10     _GET["$key"]="$(echo -e "$(echo "$val" |sed 's:+: :g;s:%:\\x:g')")"
11   done
12 }
13
14 cgi_post() {  # parse HTTP POST string
15   sed -u 1q |tr '&' '\n' |while read query; do
16     key="$(echo "$query" |sed -r 's:^([a-zA-Z0-9_-]*)=(.*)$:\1:')"
17     val="$(echo "$query" |sed -r 's:^([a-zA-Z0-9_-]*)=(.*)$:\2:')"
18     value="$(echo -e "$(echo "$val" |sed 's:+: :g;s:%:\\x:g')")"
19     if [ -n "$_POST[\"$key\"]" ]; then
20       n=0
21       while [ -n "$_POST[\"$key$n\"]" ]; do n=$(($n + 1)); done
22       _POST["$key$n"]="$value"
23     else
24       _POST["$key"]="$value"
25     fi
26   done
27 }