-list_files(){
- (cd "$_DATA/$ITEM";
- find ./ -type f -mindepth 1 -maxdepth 1 \
- -exec stat -c '%Y %n' "${f#./}" '{}' + 2>&-
- ) \
- | { [ "$(GET o)" = Date ] && sort -rn || sort -k 2; } \
+list_items() {
+ mode="$(COOKIE mode |grep -m1 -xE 'index|browse' || printf browse )"
+
+ [ "$mode" = browse -a "$ITEM" ] && printf '..\n'
+ if [ "$mode" = browse ]; then
+ [ -d "$_DATA/$ITEM/.index" -a \! "$_DATA/$ITEM" -ot "$_DATA/$ITEM/.index/meta" ] \
+ && dir="$_DATA/$ITEM" . "$_EXEC/update_meta.sh"
+ (cd "$_DATA/$ITEM";
+ find ./ -type d \! -name .index -mindepth 1 -maxdepth 1 \
+ -exec stat -c '%Y %n' '{}' +
+ find ./ -type f -mindepth 1 -maxdepth 1 \
+ -exec stat -c '%Y %n' '{}' +
+ )
+ elif [ "$mode" = index ]; then
+ find "$_DATA/$ITEM" -type d -name .index \
+ | while d="$(line)"; do
+ [ ! "${d%/.index}" -ot "$d/meta" ] \
+ && dir="${d%/.index}" . "$_EXEC/update_meta.sh"
+ done
+ (cd "$_DATA/$ITEM";
+ find ./ -type f \
+ -exec stat -c '%Y %n' '{}' +
+ )
+ fi \
+ | case $ORDER in
+ Date) sort -rn;;
+ Name) sort -k 2;;
+ esac \