From 6fcc6834ff98651a9601b2e307fc9ae56a3b4b6f Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Mon, 9 Dec 2019 22:20:46 +0530 Subject: [PATCH] Show symlink even if target cannot be stat-ed --- src/dbg.h | 8 ++++---- src/nnn.c | 9 +++------ 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/dbg.h b/src/dbg.h index 7bd757a4..28f41181 100644 --- a/src/dbg.h +++ b/src/dbg.h @@ -76,10 +76,10 @@ static void disabledbg(void) close(DEBUG_FD); } -#define DPRINTF_D(x) xprintf(DEBUG_FD, #x "=%d\n", x) -#define DPRINTF_U(x) xprintf(DEBUG_FD, #x "=%u\n", x) -#define DPRINTF_S(x) xprintf(DEBUG_FD, #x "=%s\n", x) -#define DPRINTF_P(x) xprintf(DEBUG_FD, #x "=%p\n", x) +#define DPRINTF_D(x) xprintf(DEBUG_FD, #x "=%d [ln %d]\n", x, __LINE__) +#define DPRINTF_U(x) xprintf(DEBUG_FD, #x "=%u [ln %d]\n", x, __LINE__) +#define DPRINTF_S(x) xprintf(DEBUG_FD, #x "=%s [ln %d]\n", x, __LINE__) +#define DPRINTF_P(x) xprintf(DEBUG_FD, #x "=%p [ln %d]\n", x, __LINE__) #else #define DPRINTF_D(x) #define DPRINTF_U(x) diff --git a/src/nnn.c b/src/nnn.c index e7e3ecdc..a1cc4449 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -3756,15 +3756,12 @@ static int dentfill(char *path, struct entry **dents) if (fstatat(fd, namep, &sb, flags) == -1) { /* List a symlink with target missing */ - if (!flags && errno == ENOENT) { - if (fstatat(fd, namep, &sb, AT_SYMLINK_NOFOLLOW) == -1) { + if (flags || (!flags && fstatat(fd, namep, &sb, AT_SYMLINK_NOFOLLOW) == -1)) { + DPRINTF_U(flags); + if (!flags) { DPRINTF_S(namep); DPRINTF_S(strerror(errno)); - continue; } - } else { - DPRINTF_S(namep); - DPRINTF_S(strerror(errno)); continue; } }