X-Git-Url: http://git.plutz.net/?p=serve0;a=blobdiff_plain;f=list.sh;h=b941aa7f246d32a3a9e5ff09c0ee509e9ebd2b30;hp=86b60fd55f3a0260fcf5c246db312d091f6f2fec;hb=HEAD;hpb=60dd8e3bc91ba3b54ee49d26ac36cdac0098b8bc diff --git a/list.sh b/list.sh index 86b60fd..94a9264 100755 --- a/list.sh +++ b/list.sh @@ -6,12 +6,6 @@ list_item() { local meta file link name - eval "$LOCAL_META" - meta="${1}"; - - read_meta <<-EOF - $meta - EOF if [ "${META_NAME%/}" != "${META_NAME}" ]; then printf '[a .list .dir href="%s?%s" . %s]' \ @@ -61,7 +55,7 @@ list_item() { )" list_fullname(){ - local short="$(UNSTRING "${1%${CR}}")" file + local short="$1" file file="$(printf %s\\n "$_DATA/$ITEM/$short".*)" file="${file%%${BR}*}" [ -e "$file" ] && printf %s\\n "${file#${_DATA}/${ITEM}/}" @@ -162,11 +156,20 @@ list_paginate() { local page i c n end qry page="$(GET p |grep -axE '[0-9]+' || printf 1)"; c=1 end=$((page + LISTSIZE)) + eval "$LOCAL_META" # localize vars from db_meta printf '[div .itemlist ' - while read -r i; do + while :; do + if [ $c -lt $page ]; then + read -r discard || break + elif [ $c -ge $end ]; then + c=$((c + $(wc -l) )) + break + else + read_meta || break + list_item + fi c=$((c + 1)) - [ $c -gt $page -a $c -le $end ] && list_item "$i" done printf ']'