- mode="$(COOKIE mode |grep -m1 -xE 'index|browse' || printf browse )"
-
- [ "$mode" = browse -a "$ITEM" ] && printf '..\n'
-
- if [ "$mode" = browse -a "$ORDER" = Date ]; then
- list_fs_browse | sort -rn | cut -d/ -f2-
- elif [ "$mode" = browse -a "$ORDER" = Name ]; then
- list_fs_browse | sort -k 2 | cut -d/ -f2-
- elif [ "$mode" = index -a "$ORDER" = Date ]; then
- list_fs_index | sort -rn | cut -d/ -f2-
- elif [ "$mode" = index -a "$ORDER" = Name ]; then
- list_fs_index | sort -k 2 | cut -d/ -f2-
- elif [ "$mode" = browse -a "$ORDER" = Length ]; then
- list_browse
- elif [ "$mode" = index -a "$ORDER" = Length ]; then
- list_index
+ local mode meta
+ mode="$(COOKIE mode |grep -m1 -axE 'index|browse' || printf browse )"
+
+ if [ "$mode" = browse ]; then
+ [ "$ITEM" ] && printf 'dir\t..\n'
+ (cd "$_DATA/$ITEM";
+ find ./ -type d \! -name .index -mindepth 1 -maxdepth 1 \
+ ) | cut -d/ -f2- | sort |sed 's;^;dir\t;;'
+ list_filemeta .
+ elif [ "$mode" = index ]; then
+ (cd "$_DATA/$ITEM";
+ find ./ -path '*/.index/meta'
+ ) | while read -r meta; do
+ list_filemeta "${meta%/.index/meta}"
+ done