show hidden files first when enabled hidden
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
#!/bin/sh
|
||||
# sfm - Simple File Manager in POSIX sh (flicker-free)
|
||||
# version 0.4
|
||||
# sfm - Simple File Manager in POSIX sh
|
||||
|
||||
# --- terminal control ---
|
||||
tput_cmd() { command -v tput >/dev/null 2>&1 && tput "$@"; }
|
||||
@@ -107,22 +106,11 @@ load_entries() {
|
||||
ENTRIES=""
|
||||
COUNT=0
|
||||
|
||||
# build list of dir names then file names, including dotfiles if enabled
|
||||
for d in "$CWD"/*/; do
|
||||
[ -d "$d" ] || continue
|
||||
[ -L "${d%/}" ] && continue # symlinks handled separately
|
||||
name="${d%/}"; name="${name##*/}"
|
||||
[ "$name" = "*" ] && continue
|
||||
case "$name" in .*) continue ;; esac
|
||||
ENTRIES="$ENTRIES
|
||||
${name}/"
|
||||
COUNT=$((COUNT + 1))
|
||||
done
|
||||
# hidden dirs first
|
||||
if [ "$SHOW_HIDDEN" = "1" ]; then
|
||||
for d in "$CWD"/./; do : ; done
|
||||
for d in "$CWD"/.*/; do
|
||||
[ -d "$d" ] || continue
|
||||
[ -L "${d%/}" ] && continue # symlinks handled separately
|
||||
[ -L "${d%/}" ] && continue
|
||||
name="${d%/}"; name="${name##*/}"
|
||||
[ "$name" = "." ] || [ "$name" = ".." ] && continue
|
||||
[ "$name" = ".*" ] && continue
|
||||
@@ -132,21 +120,19 @@ ${name}/"
|
||||
done
|
||||
fi
|
||||
|
||||
for f in "$CWD"/*; do
|
||||
[ -e "$f" ] || [ -L "$f" ] || continue
|
||||
[ -d "$f" ] && ! [ -L "$f" ] && continue
|
||||
name="${f##*/}"
|
||||
# regular dirs
|
||||
for d in "$CWD"/*/; do
|
||||
[ -d "$d" ] || continue
|
||||
[ -L "${d%/}" ] && continue
|
||||
name="${d%/}"; name="${name##*/}"
|
||||
[ "$name" = "*" ] && continue
|
||||
case "$name" in .*) continue ;; esac
|
||||
if [ -L "$f" ]; then
|
||||
ENTRIES="$ENTRIES
|
||||
${name}@"
|
||||
else
|
||||
ENTRIES="$ENTRIES
|
||||
${name}"
|
||||
fi
|
||||
ENTRIES="$ENTRIES
|
||||
${name}/"
|
||||
COUNT=$((COUNT + 1))
|
||||
done
|
||||
|
||||
# hidden files first
|
||||
if [ "$SHOW_HIDDEN" = "1" ]; then
|
||||
for f in "$CWD"/.*; do
|
||||
[ -e "$f" ] || [ -L "$f" ] || continue
|
||||
@@ -164,6 +150,23 @@ ${name}"
|
||||
done
|
||||
fi
|
||||
|
||||
# regular files
|
||||
for f in "$CWD"/*; do
|
||||
[ -e "$f" ] || [ -L "$f" ] || continue
|
||||
[ -d "$f" ] && ! [ -L "$f" ] && continue
|
||||
name="${f##*/}"
|
||||
[ "$name" = "*" ] && continue
|
||||
case "$name" in .*) continue ;; esac
|
||||
if [ -L "$f" ]; then
|
||||
ENTRIES="$ENTRIES
|
||||
${name}@"
|
||||
else
|
||||
ENTRIES="$ENTRIES
|
||||
${name}"
|
||||
fi
|
||||
COUNT=$((COUNT + 1))
|
||||
done
|
||||
|
||||
ENTRIES="${ENTRIES#
|
||||
}"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user