aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoremmett1 <emmett1.2miligrams@protonmail.com>2026-03-15 23:58:18 +0800
committeremmett1 <emmett1.2miligrams@protonmail.com>2026-03-15 23:58:18 +0800
commit7f41df91f18cb32a34d4cff2746e4344d8f7830d (patch)
tree846b7a67635f84f4655f9bed150ec44119c12f9a
parent8b9e5f19cdc509be44abe39ef0289c28739a2794 (diff)
downloadsfm-7f41df91f18cb32a34d4cff2746e4344d8f7830d.tar.gz
sfm-7f41df91f18cb32a34d4cff2746e4344d8f7830d.zip
fix symlink show twice, one as symlink, one as directory
-rwxr-xr-xsfm6
1 files changed, 4 insertions, 2 deletions
diff --git a/sfm b/sfm
index 744c98c..afc6575 100755
--- a/sfm
+++ b/sfm
@@ -94,17 +94,19 @@ load_entries() {
# 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 # skip dotdirs here, handle below
+ case "$name" in .*) continue ;; esac
ENTRIES="$ENTRIES
${name}/"
COUNT=$((COUNT + 1))
done
if [ "$SHOW_HIDDEN" = "1" ]; then
- for d in "$CWD"/./; do : ; done # no-op, just to avoid error
+ for d in "$CWD"/./; do : ; done
for d in "$CWD"/.*/; do
[ -d "$d" ] || continue
+ [ -L "${d%/}" ] && continue # symlinks handled separately
name="${d%/}"; name="${name##*/}"
[ "$name" = "." ] || [ "$name" = ".." ] && continue
[ "$name" = ".*" ] && continue