fix when browse into empty directory

This commit is contained in:
emmett1
2026-03-16 00:21:22 +08:00
parent 1e6fdd9e29
commit 02a8adadc4
+11 -7
View File
@@ -1,6 +1,5 @@
#!/bin/sh #!/bin/sh
# sfm - Simple File Manager in POSIX sh (flicker-free) # sfm - Simple File Manager in POSIX sh
# version 0.3
# --- terminal control --- # --- terminal control ---
tput_cmd() { command -v tput >/dev/null 2>&1 && tput "$@"; } tput_cmd() { command -v tput >/dev/null 2>&1 && tput "$@"; }
@@ -443,7 +442,7 @@ draw_topbar() {
draw_botbar() { draw_botbar() {
_rows=$1; _cols=$2 _rows=$1; _cols=$2
if [ "$SEARCHING" = "1" ]; then if [ "$SEARCHING" = "1" ]; then
info=" $((SEL + 1))/${COUNT} ${CWD}" info=" $([ "$COUNT" -eq 0 ] && echo 0 || echo $((SEL + 1)))/${COUNT} ${CWD}"
keys=" search: ${FILTER} " keys=" search: ${FILTER} "
maxk=$((_cols - ${#info} - 1)) maxk=$((_cols - ${#info} - 1))
[ "${#keys}" -gt "$maxk" ] && keys=$(printf '%s' "$keys" | cut -c1-"$maxk") [ "${#keys}" -gt "$maxk" ] && keys=$(printf '%s' "$keys" | cut -c1-"$maxk")
@@ -457,9 +456,8 @@ draw_botbar() {
"${YELLOW}${keys}" \ "${YELLOW}${keys}" \
"${RESET}" "${RESET}"
elif [ -n "$INFO_MSG" ]; then elif [ -n "$INFO_MSG" ]; then
info=" $((SEL + 1))/${COUNT} ${CWD}" info=" $([ "$COUNT" -eq 0 ] && echo 0 || echo $((SEL + 1)))/${COUNT} ${CWD}"
msg=" ${INFO_MSG} " msg=" ${INFO_MSG} " padlen=$((_cols - ${#info} - ${#msg}))
padlen=$((_cols - ${#info} - ${#msg}))
[ "$padlen" -lt 0 ] && padlen=0 [ "$padlen" -lt 0 ] && padlen=0
pad=$(printf '%*s' "$padlen" '') pad=$(printf '%*s' "$padlen" '')
goto "$_rows" 1 goto "$_rows" 1
@@ -478,7 +476,7 @@ draw_botbar() {
[ "$SORT_MODE" != "name" ] && _ind="${_ind} [sort:${SORT_MODE}]" [ "$SORT_MODE" != "name" ] && _ind="${_ind} [sort:${SORT_MODE}]"
[ "$SHOW_DETAILS" = "1" ] && _ind="${_ind} [details]" [ "$SHOW_DETAILS" = "1" ] && _ind="${_ind} [details]"
hint=" press ? for help " 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=$((_cols - ${#info} - ${#hint}))
[ "$padlen" -lt 0 ] && padlen=0 [ "$padlen" -lt 0 ] && padlen=0
pad=$(printf '%*s' "$padlen" '') pad=$(printf '%*s' "$padlen" '')
@@ -523,6 +521,12 @@ draw() {
row=$((row + 1)) row=$((row + 1))
idx=$((idx + 1)) idx=$((idx + 1))
done 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) # blank leftover rows (e.g. after entering a smaller directory)
while [ "$row" -le $((LIST_ROWS + 1)) ]; do while [ "$row" -le $((LIST_ROWS + 1)) ]; do
goto "$row" 1 goto "$row" 1