swerc

anselm's simpler werc fork
git clone git://git.suckless.org/swerc
Log | Files | Refs | README

commit a1562f1eeedb8005546fac95dc00ced7b4c1fb33
parent 98eb91c434b78b7daf1dea5ae370f30bc04223aa
Author: uriel@engel.se.cat-v.org <unknown>
Date:   Sat, 14 Mar 2009 00:28:34 +0100

Rewrite redirect handling code with nested lists.
New ll_addh to add items to the head of a nested list (use with care!).
Diffstat:
Mbin/cgilib.rc | 7+++++++
Mbin/werc.rc | 24++++++++++--------------
Mbin/wercconf.rc | 2+-
3 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/bin/cgilib.rc b/bin/cgilib.rc @@ -157,6 +157,13 @@ fn ll_add { $_l=$*(2-) $1=( $$1 $_l ) } +# Add to the head: dangerous if you shrink list by hand! +fn ll_addh { + _l=$1^_^$#$1 + $_l=$*(2-) + $1=( $_l $$1 ) +} + NEW_LINE=' ' diff --git a/bin/werc.rc b/bin/werc.rc @@ -89,20 +89,16 @@ fn werc_exec_request { if(~ $#perm_redir_to 1) perm_redirect $perm_redir_to - p=(); - for(i in $perm_redir_patterns) { - if(~ $#p 0) - p=$i - if not { - # If target is absolute, require patern matches whole string - if(~ $i http://* https://) - p='^'$p - t=`{ echo $req_path | sed 's!'$p'!'$i'!' } - - if(! ~ $"t '' && ! ~ $t $req_path) - perm_redirect $t - p=() - } + for(l in $perm_redir_patterns) { + p=$$l + r=$p(1) + # If target is absolute, then patern must match whole string + if(~ $p(2) http://* https://) + r='^'$r + t=`{ echo $req_path | sed 's!'^$r^'!'^$p(2)^'!' } # Malicious danger! + + if(! ~ $"t '' $req_path) + perm_redirect $t } # Set Page title diff --git a/bin/wercconf.rc b/bin/wercconf.rc @@ -3,7 +3,7 @@ fn conf_perm_redirect { if(~ $#* 1) perm_redir_to=$1 if not - perm_redir_patterns=($1 $2 $perm_redir_patterns) + ll_addh perm_redir_patterns $1 $2 } fn conf_hide_paths {