#!/bin/sh . "$_EXEC/cgilite/cgilite.sh" . "$_EXEC/cgilite/users.sh" . "$_EXEC/acl.sh" . "$_EXEC/tools.sh" from=1 to=\$ rev='' items=\$ path_info="$PATH_INFO" while [ $# -gt 0 ]; do case $1 in --from) from="$2"; shift 2;; from=*) from="${1#*=}"; shift 1;; --to) to="$2"; shift 2;; to=*) to="${1#*=}"; shift 1;; --items) items="$2"; shift 2;; items=*) items="${1#*=}"; shift 1;; --rev|--reverse) rev="-r"; shift 1;; *) page="$1"; shift 1;; esac; done if ! printf %s\\n "$from" |grep -qEx '[0-9]+|/([^/\\]|\\/|\\.)*/'; then debug 'Include macro invalid argument: "from"' exit 1 fi if ! printf %s\\n "$to" |grep -qEx '[0-9]+|/([^/\\]|\\/|\\.)*/'; then debug 'Include macro Invalid argument: "to"' exit 1 fi if ! printf %s\\n "$items" |grep -qEx '\$|[0-9]+'; then debug 'Include macro Invalid argument: "items"' exit 1 fi page_glob "$page" \ | sort $rev \ | sed "${items}q" \ | while read glob; do case $glob in /*) export PATH_INFO="$(PATH "$glob")";; *) export PATH_INFO="$(PATH "$path_info/$glob")";; esac acl_read || continue if [ -f "$_DATA/pages/$PATH_INFO/#page.md" ]; then mdfile="$_DATA/pages/$PATH_INFO/#page.md" elif [ -f "$_EXEC/pages/$PATH_INFO/#page.md" ]; then mdfile="$_EXEC/pages/$PATH_INFO/#page.md" else continue fi printf '
' "$(HTML "$glob")" ( cd -- "${mdfile%/*}" sed -n "${from},${to}p" <"$mdfile" \ | md \ | grep -vx '' ) | sed -E ' s;(<[^>]+ )(href|src)="([^#/"][^"]*)"([^>]*>);\1\2="'"$(HTML "$glob")"'\3"\4;g ' printf '
' done