swerc

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

commit c88d99d6ee29de88454a4d9faa03f92c9b96a07a
parent 0a14f39cbf7236e475e3c707b5b585dbf03ed426
Author: uriel@engel.se.cat-v.org <unknown>
Date:   Thu, 22 Jan 2009 09:22:15 +0100

Change app loading to be done in two passes, first source app files, then call init for enabled apps.
This makes it possible to call app functions at config time.
Provide $conf_wd variable at config time, which can in turn be used by apps to determine where in the tree we are at config/setup time.
Diffstat:
Mbin/werc.rc | 19++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/bin/werc.rc b/bin/werc.rc @@ -99,13 +99,10 @@ fn setup_handlers { if not if(test -f $local_path.txt) handler_body_main=(txt_handler $local_path.txt) - # Apps - if(! ~ $#enabled_apps 0) { - for(a in $enabled_apps) { - . ./apps/$a/app.rc + # Apps, XXX: Maybe we should check that $enabled_apps exist in $werc_apps. + if(! ~ $#enabled_apps 0) + for(a in $enabled_apps) $a^'_init' - } - } if(! ~ $#handler_body_main 0) { } # We are done @@ -138,6 +135,7 @@ headers=lib/headers.tpl master_template=default_master.tpl res_tail='</body></html>' ll_add handlers_bar_left nav_tree +werc_apps=( apps/* ) werc_root=`{pwd} for(i in siteTitle siteSubTitle pageTitle extraHeaders) $i = '' @@ -154,6 +152,9 @@ current_date_time=`{date} if(test -f etc/initrc.local) . ./etc/initrc.local +for(a in $werc_apps) + . ./$a/app.rc + # Parse request URL # NOTE: $REQUEST_URI is not officially in CGI 1.1, but seems to be de-facto req_path=`{echo -n $REQUEST_URI | sed 's/\?.*//; s/'^$forbidden_uri_chars^'//g; s/\.\.*/./g; 1q'} @@ -181,13 +182,13 @@ if(~ $local_path */) { if not if(test -d $local_path) perm_redirect $req_path^'/' -p=() cd $sitedir if(test -f _werc/config) . _werc/config +conf_wd='' # This can be used inside config files to know where we are in the document tree. for(i in ('' $args)) { - p=($"p^/^$i) - req_paths_list=($req_paths_list $p) + config_wd=($"config_wd^/^$i) + req_paths_list=($req_paths_list $config_wd) if(test -d $i) { cd $i if(test -f _werc/config)