3 [ "$include_tools" ] && return 0
6 # Copyright 2022 - 2023 Paul Hänsch
8 # Permission to use, copy, modify, and/or distribute this software for any
9 # purpose with or without fee is hereby granted, provided that the above
10 # copyright notice and this permission notice appear in all copies.
12 # THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES
13 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
14 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
15 # SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
18 # IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
24 md "${_EXEC}"/parsers/*
25 elif [ "$#" = 1 ]; then
35 # Check if page exists, if possible fall
36 # back to default page from installation
37 local page="$(PATH "$1")"
40 # Regular processing, keep in sync with tools.sh
41 if [ -f "$_DATA/pages/$page/:$LANGUAGE/#page.md" ]; then
42 printf %s\\n "$_DATA/pages/$page/:$LANGUAGE/#page.md"
43 elif [ -f "$_DATA/pages/$page/#page.md" ]; then
44 printf %s\\n "$_DATA/pages/$page/#page.md"
45 elif [ -f "$_EXEC/pages/$page/:$LANGUAGE/#page.md" ]; then
46 printf %s\\n "$_EXEC/pages/$page/:$LANGUAGE/#page.md"
47 elif [ -f "$_EXEC/pages/$page/#page.md" ]; then
48 printf %s\\n "$_EXEC/pages/$page/#page.md"
52 # ^^ suppress error messages produced
53 # by printf when stdout was closed
61 if [ $size -gt $((1024 * 1024 * 1024)) ]; then
62 size=$((size / 1024 / 1024 / 1024 * 10 + size / 1024 / 1024 % 1024 / 100))
63 printf "%i.%i GB" "$((size / 10))" "$((size % 10))"
65 elif [ $size -gt $((1024 * 1024)) ]; then
66 size=$((size / 1024 / 1024 * 10 + size / 1024 % 1024 / 100))
67 printf "%i.%i MB" "$((size / 10))" "$((size % 10))"
69 elif [ $size -gt $((1024)) ]; then
70 size=$((size / 1024 * 10 + size % 1024 / 100))
71 printf "%i.%i KB" "$((size / 10))" "$((size % 10))"
79 local pattern="${1%/}" IFS=''
80 local glob page pagedir
83 [ "$page" = "$pattern" ] && page=.
84 [ ! "$page" ] && page=/
85 pattern="${pattern##*/}"
86 [ ! "$pattern" ] && pattern="*"
90 for glob in "$_DATA/pages/$page/#attachments"/$pattern; do printf '%s\n' "${glob#"$_DATA/pages"}"; done
91 for glob in "$_EXEC/pages/$page/#attachments"/$pattern; do printf '%s\n' "${glob#"$_EXEC/pages"}"; done
94 for glob in "$_DATA/pages/$PATH_INFO/$page/#attachments"/$pattern; do printf '%s\n' "${glob#"$_DATA/pages/$PATH_INFO/"}"; done
95 for glob in "$_EXEC/pages/$PATH_INFO/$page/#attachments"/$pattern; do printf '%s\n' "${glob#"$_EXEC/pages/$PATH_INFO/"}"; done
99 | while read -r glob; do
100 [ -e "$glob" ] || continue
101 pagedir="$(page_abs "${glob%%/#attachments/*}/")"
102 [ -d "$_DATA/pages/$pagedir" -o -d "$_EXEC/pages/$pagedir" ] \
103 && printf '%s\n' "${glob%%/#attachments/*}/${glob#*/#attachments/}"
108 local pattern="${1%/}/" depth="${2:-0}" IFS=''
109 local glob page pagedir
113 for glob in "$_DATA/pages"$pattern; do printf '%s\n' "${glob#"$_DATA/pages"}"; done
114 for glob in "$_EXEC/pages"$pattern; do printf '%s\n' "${glob#"$_EXEC/pages"}"; done
117 for glob in "$_DATA/pages/$PATH_INFO"/$pattern; do printf '%s\n' "${glob#"$_DATA/pages/$PATH_INFO/"}"; done
118 for glob in "$_EXEC/pages/$PATH_INFO"/$pattern; do printf '%s\n' "${glob#"$_EXEC/pages/$PATH_INFO/"}"; done
122 | while read -r page; do
123 # Not a page directory (just a metadata dir)
124 [ ! "${page%%#*}" -o ! "${page%%*/#*}" ] && continue
126 # Omit "system" pages unless explicitly wanted
127 [ ! "${page%%\[*\]/*}" -o ! "${page%%*/\[*\]/*}" ] && [ "$glob_system_pages" != true ] && continue
129 # Omit translation pages if translations are enabled
130 [ ! "${page%%:*}" -o ! "${page%%*/:*}" ] && [ "$LANGUAGE_DEFAULT" ] && continue
132 pagedir="$(page_abs "$page")"
134 if [ -d "$_DATA/pages/$pagedir" -o -d "$_EXEC/pages/$pagedir" ]; then
135 printf '%s\n' "$page"
136 if ! [ "$depth" -eq 0 ]; then
137 PATH_INFO="$pagedir" page_glob "*" "$((depth - 1))" \
138 | while read -r glob; do printf %s%s\\n "$page" "$glob"; done
147 *) PATH "${PATH_INFO%/*}/${1%/}/";;