From: Paul Hänsch Date: Thu, 4 Apr 2019 12:09:45 +0000 (+0200) Subject: Merge branch 'master' of plutz.net:cgilite X-Git-Url: http://git.plutz.net/?p=cgilite;a=commitdiff_plain;h=e2678dc719c2dcda2de9a6079ac63837681e1a26;hp=-c Merge branch 'master' of plutz.net:cgilite --- e2678dc719c2dcda2de9a6079ac63837681e1a26 diff --combined cgilite.sh index 8af3eb1,a84de14..7eab08a --- a/cgilite.sh +++ b/cgilite.sh @@@ -49,7 -49,7 +49,7 @@@ HEX_DECODE= ' HEX_DECODE(){ - printf "$(printf %s "$1" |sed -r "$HEX_DECODE")" + printf -- "$(printf %s "$1" |sed -r "$HEX_DECODE")" } if [ -z "$REQUEST_METHOD" ]; then @@@ -116,29 -116,17 +116,29 @@@ cgilite_value() str=${str#*&${name}=} cnt=$((cnt - 1)) done - printf "$(printf %s "${str%%&*}" |sed -r 's;\+; ;g;'"$HEX_DECODE")" + printf -- "$(printf %s "${str%%&*}" |sed -r 's;\+; ;g;'"$HEX_DECODE")" } +cgilite_keys(){ + local str="&$1" + while [ "${str#*&}" != "${str}" ]; do + str="${str#*&}" + printf '%s\n' "${str%%=*}" + done \ + | sort -u +} + GET(){ cgilite_value "${QUERY_STRING}" $@; } GET_COUNT(){ cgilite_count "${QUERY_STRING}" $1; } +GET_KEYS(){ cgilite_keys "${QUERY_STRING}"; } POST(){ cgilite_value "${cgilite_post}" $@; } POST_COUNT(){ cgilite_count "${cgilite_post}" $1; } +POST_KEYS(){ cgilite_keys "${cgilite_post}"; } REF(){ cgilite_value "${HTTP_REFERER#*\?}" $@; } REF_COUNT(){ cgilite_count "${HTTP_REFERER#*\?}" $1; } +REF_KEYS(){ cgilite_keys "${HTTP_REFERER#*\?}"; } COOKIE(){ HEX_DECODE "$( diff --combined html-sh.sed index cb1c613,3f63b3d..976d42e --- a/html-sh.sed +++ b/html-sh.sed @@@ -1,4 -1,12 +1,12 @@@ - #!/bin/sed -nrf + #!/bin/sed -nEf + + :Escapes + s,\\\\,\\,g; s,\\&,\&,g; + s,\\<,\<,g; s,\\>,\>,g; + s,\\",\",g; s,\\',\',g; + s,\\\[,\[,g; s,\\\],\],g; + s,\\\.,\.,g; s,\\#,\#,g; + s,\\,,g; :CommentHandle x; /^<\/!-->/{ @@@ -52,8 -60,7 +60,8 @@@ s;(]+)?)>[ \t]*multiple;\1 t attribs; s;(<[^/][^>]*>)[ \t]*;\1;g; -s;(<[^/][^>]*)>[ \t]*]+>;\1/>;g; +# s;(<[^/][^>]*)>[ \t]*]+>;\1/>;g; +s;(<(br|hr|img|input|link|meta|area|base|col|command|embed|keygen|param|source|track|wbr)[^>]*)>[ \t]*;\1>;g; s;;