commit a2251757cc07c5152f2b13afd45e64194fc7f1d9
parent 69c661aeade7c49c98256b2282257d384f50ef4e
Author: uriel@engel.se.cat-v.org <unknown>
Date: Thu, 22 Jan 2009 14:21:40 +0100
Rewrite http post parsing code, this should be faster and cleaner, added a
get_post_args function to keep backwards compat but it is not really needed.
Fix a silly bug in urldecode.
Diffstat:
2 files changed, 22 insertions(+), 21 deletions(-)
diff --git a/bin/cgilib.rc b/bin/cgilib.rc
@@ -25,34 +25,33 @@ fn static_file {
# Status is () if at least one arg is found.
-fn get_post_args {
- _status='Args not found'
- if(! ~ $REQUEST_METHOD POST)
- _status='No http post!'
- if not if(~ $#POST_ARGS 0) {
+# Note: should check if content type is application/x-www-form-urlencoded?
+fn load_post_args {
+ if(~ $REQUEST_METHOD POST && ~ $#post_args 0) {
ifs='&
' for(pair in `{cat}) {
- pair=`{echo -n $pair | sed 's/=/\&/'}
- # Maybe we should urldecode on the first pass?
- POST_ARGS=( $POST_ARGS $pair )
- _get_post_args_set_var $pair $*
+ ifs='=' { pair=`{echo -n $pair} }
+ n='post_arg_'^`{echo $pair(1)|tr -cd 'a-zA-Z0-9_'}
+ post_args=( $post_args $n )
+ $n=`{echo -n $pair(2) | urldecode}
}
+ pair=()
}
- if not {
- pair=$POST_ARGS
- while(! ~ $#pair 0) {
- _get_post_args_set_var $pair $*
- pair=$pair(3-)
+ if not
+ status='No POST or post args already loaded'
+}
+fn get_post_args {
+ load_post_args
+ _status='No post arg matches'
+ for(n in $*) {
+ v=post_arg_$n
+ if(! ~ $#$v 0) {
+ $n=$$v
+ _status=()
}
}
status=$_status
}
-fn _get_post_args_set_var {
- if(~ $1 $*(3-)) {
- ifs=() { $1=`{echo -n $2 | urldecode | tr -d '
'} }
- _status=()
- }
-}
# This seems slightly improve performance, but might depend on httpd buffering behavior.
fn awk_buffer {
@@ -104,7 +103,7 @@ BEGIN {
decoded = decoded c
++i
}
- printf decoded
+ printf "%s", decoded
}
'
}
diff --git a/sites/werc.cat-v.org/_werc/config b/sites/werc.cat-v.org/_werc/config
@@ -1,3 +1,5 @@
siteTitle='werc'
siteSubTitle=' Bringing minimalism and sanity to the web'
+enable_comments=yes
+enabled_apps=($enabled_apps hello dirdir bridge)