X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=tools.sh;h=de055fe808049e2afbc3b925a1f19f1f06413d5f;hb=71152d935975fa673d7ad4398a1757228cab8b8c;hp=c88cc55c12bfdeaedf482d4dddcfed51941e7281;hpb=e80c289e4e82f70c9e7426c6c1d3c71c8a42046e;p=shellwiki diff --git a/tools.sh b/tools.sh old mode 100644 new mode 100755 index c88cc55..de055fe --- a/tools.sh +++ b/tools.sh @@ -1,5 +1,8 @@ #!/bin/sh +[ "$include_tools" ] && return 0 +include_tools="$0" + if [ "$(which awk)" ]; then md() { awk -f "$_EXEC/md_macros.awk" -f "$_EXEC/cgilite/markdown.awk"; } elif [ "$(which busybox)" ]; then @@ -9,15 +12,21 @@ else fi mdfile(){ + # Check if page exists, if possible fall + # back to default page from installation local page="$(PATH "$1")" if [ -f "$_DATA/pages/$page/#page.md" ]; then printf %s\\n "$_DATA/pages/$page/#page.md" + return 0 elif [ -f "$_EXEC/pages/$page/#page.md" ]; then printf %s\\n "$_EXEC/pages/$page/#page.md" + return 0 else return 1 - fi + fi 2>&- + # ^^ suppress error messages produced + # by printf when stdout was closed } size_human(){ @@ -58,8 +67,7 @@ page_glob(){ | while read -r page; do case $page in \#*|*/\#*) continue;; - /*) pagedir="$(PATH "$page")";; - *) pagedir="$(PATH "$PATH_INFO/$page")";; + *) pagedir="$(page_abs "$page")";; esac [ -d "$_DATA/pages/$pagedir" -o -d "$_EXEC/pages/$pagedir" ] \ && printf '%s\n' "$page" @@ -75,8 +83,8 @@ page_children(){ case $page in /*) - for glob in "$_DATA/pages/${page}"*/; do printf '%s\n' "${glob#"$_DATA/pages"}"; done - for glob in "$_EXEC/pages/${page}"*/; do printf '%s\n' "${glob#"$_EXEC/pages"}"; done + for glob in "$_DATA/pages/${page}"*/; do printf '%s\n' "${glob#"$_DATA/pages/"}"; done + for glob in "$_EXEC/pages/${page}"*/; do printf '%s\n' "${glob#"$_EXEC/pages/"}"; done ;; *) for glob in "$_DATA/pages/$PATH_INFO/${page}"*/; do printf '%s\n' "${glob#"$_DATA/pages/$PATH_INFO/"}"; done @@ -87,8 +95,7 @@ page_children(){ | while read -r page; do case $page in \#*|*/\#*) continue;; - /*) pagedir="$(PATH "$page")";; - *) pagedir="$(PATH "$PATH_INFO/$page")";; + *) pagedir="$(page_abs "$page")";; esac if [ -d "$_DATA/pages/$pagedir" -o -d "$_EXEC/pages/$pagedir" ]; then printf %s\\n "$page" @@ -96,3 +103,10 @@ page_children(){ fi done } + +page_abs(){ + case $1 in + /*) PATH "${1%/}/";; + *) PATH "${PATH_INFO%/*}/${1%/}/";; + esac +}