From 4abcd9fe5ba1575a811fd2485922e2a7e16337e5 Mon Sep 17 00:00:00 2001 From: uriel Date: Fri, 6 Mar 2009 16:32:33 +0000 Subject: [PATCH] First draft of wman app to browse and display manpages. --- apps/wman/app.rc | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ bin/werc.rc | 3 ++- 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 apps/wman/app.rc diff --git a/apps/wman/app.rc b/apps/wman/app.rc new file mode 100644 index 0000000..50a3e53 --- /dev/null +++ b/apps/wman/app.rc @@ -0,0 +1,49 @@ +fn conf_enable_wman { + wman_base_uri=$conf_wd + wman_man_path=$* + if(~ $#wman_man_path 0) + wman_man_path=$wman_base_uri + conf_enable_app wman +} + +fn wman_init { + ifs='/' { p=`{echo $req_path | sed 's!^'^$wman_base_uri^'!!'} } + m=$args($#args) + + if(~ $req_path $wman_base_uri) + handler_body_main=wman_list_secs_handler + if not if(~ $req_path $wman_base_uri^*) { + if(~ $req_path $wman_base_uri^*/[a-z0-9]*) + handler_body_main=(wman_page_handler $wman_man_path $p(1) $m) + if not if(~ $req_path $wman_base_uri^*/) + handler_body_main=(wman_sec_list_handler $wman_man_path/$m) + if not if(~ $m [A-Z]*) # Correct badly capitalized links + perm_redirect $wman_base_uri$p/^`{echo $m |tr 'A-Z' 'a-z'} + } +} + +fn wman_sec_list_handler { + ls -F $* | sed $dirfilter^' /\.html$/d' | awk -F/ ' +BEGIN { print "

Manual pages

" }' +} + +fn wman_list_secs_handler { + ls -F $wman_man_path | awk -F/ ' +BEGIN { print "

Manual Sections

" }' +} + +fn wman_page_handler { + #troff -manhtml $1 | troff2html -t 'Plan 9 from User Space' + p='../\2/\1' + if(~ $2 man[0-9]) + p='../man\2/\1.\2' + nroff -man $1/$2/$3 | sed 's!([\-a-zA-Z0-9]+)\(([0-9])\)!&!g' | awk ' BEGIN { print "
" } /^$/ {if(n != 1) print; n=1; next} /./ {n=0; print} END { print "
" }' +} diff --git a/bin/werc.rc b/bin/werc.rc index 82ba813..e8bba9f 100755 --- a/bin/werc.rc +++ b/bin/werc.rc @@ -57,7 +57,8 @@ fn werc_exec_request { if(~ $local_path */) { if(test -d $local_path) local_path=$local_path^'index' - if not # XXX: This redir might step on apps with synthetic dirs. + # XXX: This redir might step on apps with synthetic dirs. + if not if(ls `{basename -d $local_path}^* >/dev/null >[2]/dev/null) perm_redirect `{echo $req_path|sed 's,/+$,,'} } if not if(~ $req_path *'.' *',' *';' *':')