From 02a8adadc48bc5b8c28a617d619b6f4a9403a387 Mon Sep 17 00:00:00 2001 From: emmett1 Date: Mon, 16 Mar 2026 00:21:22 +0800 Subject: fix when browse into empty directory --- sfm | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/sfm b/sfm index f08a055..104fc2b 100755 --- a/sfm +++ b/sfm @@ -1,6 +1,5 @@ #!/bin/sh -# sfm - Simple File Manager in POSIX sh (flicker-free) -# version 0.3 +# sfm - Simple File Manager in POSIX sh # --- terminal control --- tput_cmd() { command -v tput >/dev/null 2>&1 && tput "$@"; } @@ -443,7 +442,7 @@ draw_topbar() { draw_botbar() { _rows=$1; _cols=$2 if [ "$SEARCHING" = "1" ]; then - info=" $((SEL + 1))/${COUNT} ${CWD}" + info=" $([ "$COUNT" -eq 0 ] && echo 0 || echo $((SEL + 1)))/${COUNT} ${CWD}" keys=" search: ${FILTER} " maxk=$((_cols - ${#info} - 1)) [ "${#keys}" -gt "$maxk" ] && keys=$(printf '%s' "$keys" | cut -c1-"$maxk") @@ -457,9 +456,8 @@ draw_botbar() { "${YELLOW}${keys}" \ "${RESET}" elif [ -n "$INFO_MSG" ]; then - info=" $((SEL + 1))/${COUNT} ${CWD}" - msg=" ${INFO_MSG} " - padlen=$((_cols - ${#info} - ${#msg})) + info=" $([ "$COUNT" -eq 0 ] && echo 0 || echo $((SEL + 1)))/${COUNT} ${CWD}" + msg=" ${INFO_MSG} " padlen=$((_cols - ${#info} - ${#msg})) [ "$padlen" -lt 0 ] && padlen=0 pad=$(printf '%*s' "$padlen" '') goto "$_rows" 1 @@ -478,7 +476,7 @@ draw_botbar() { [ "$SORT_MODE" != "name" ] && _ind="${_ind} [sort:${SORT_MODE}]" [ "$SHOW_DETAILS" = "1" ] && _ind="${_ind} [details]" hint=" press ? for help " - info=" $((SEL + 1))/${COUNT} ${CWD}${_ind}" + info=" $([ "$COUNT" -eq 0 ] && echo 0 || echo $((SEL + 1)))/${COUNT} ${CWD}${_ind}" padlen=$((_cols - ${#info} - ${#hint})) [ "$padlen" -lt 0 ] && padlen=0 pad=$(printf '%*s' "$padlen" '') @@ -523,6 +521,12 @@ draw() { row=$((row + 1)) idx=$((idx + 1)) done + # show (empty) if directory has no entries + if [ "$COUNT" -eq 0 ]; then + goto 2 1 + printf '%s (empty)%s%s' "${WHITE}" "${ERASE_LINE}" "${RESET}" + row=3 + fi # blank leftover rows (e.g. after entering a smaller directory) while [ "$row" -le $((LIST_ROWS + 1)) ]; do goto "$row" 1 -- cgit v1.2.3