ref: c194c149b38be2ae3c047ed13f49866d01d833bb
parent: 76e8e46c46f9df6b92fd71fa286d93d113a95128
author: uriel <uriel@engel.se.cat-v.org>
date: Fri Mar 13 20:28:34 EDT 2009
Rewrite redirect handling code with nested lists. New ll_addh to add items to the head of a nested list (use with care!).
--- a/bin/cgilib.rc
+++ b/bin/cgilib.rc
@@ -157,6 +157,13 @@
$_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='
'
--- a/bin/werc.rc
+++ b/bin/werc.rc
@@ -89,20 +89,16 @@
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'!' }
+ 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 '' && ! ~ $t $req_path)
- perm_redirect $t
- p=()
- }
+ if(! ~ $"t '' $req_path)
+ perm_redirect $t
}
# Set Page title
--- a/bin/wercconf.rc
+++ b/bin/wercconf.rc
@@ -3,7 +3,7 @@
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 {