aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2019-01-21 02:16:06 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2019-01-21 02:22:09 +0530
commitb6842d69c582e6e93b56987b17a34c22156f9157 (patch)
tree98044d1d43fc33c2a22cfeb56c3eeb7a3c650d84 /src
parent5301f78fa3ca01b9a425bd7c4757217d05c51207 (diff)
downloadnnn-b6842d69c582e6e93b56987b17a34c22156f9157.tar.gz
Use early error checks
Early check for empty file name in populate(). Check access before calling populate(). Drop populate() return type.
Diffstat (limited to 'src')
-rw-r--r--src/nnn.c34
1 files changed, 18 insertions, 16 deletions
diff --git a/src/nnn.c b/src/nnn.c
index bf4189d..4faad91 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -2480,14 +2480,14 @@ static int dentfill(char *path, struct entry **dents)
return n;
}
-/* Return the position of the matching entry or 0 otherwise */
+/*
+ * Return the position of the matching entry or 0 otherwise
+ * Note there's no NULL check for fname
+ */
static int dentfind(const char *fname, int n)
{
static int i;
- if (!fname)
- return 0;
-
DPRINTF_S(fname);
for (i = 0; i < n; ++i)
@@ -2497,14 +2497,8 @@ static int dentfind(const char *fname, int n)
return 0;
}
-static bool populate(char *path, char *lastname)
+static void populate(char *path, char *lastname)
{
- /* Can fail when permissions change while browsing.
- * It's assumed that path IS a directory when we are here.
- */
- if (access(path, R_OK) == -1)
- return FALSE;
-
if (cfg.blkorder) {
printmsg("calculating...");
refresh();
@@ -2518,7 +2512,7 @@ static bool populate(char *path, char *lastname)
ndents = dentfill(path, &dents);
if (!ndents)
- return TRUE;
+ return;
qsort(dents, ndents, sizeof(*dents), entrycmp);
@@ -2528,8 +2522,11 @@ static bool populate(char *path, char *lastname)
#endif
/* Find cur from history */
- cur = dentfind(lastname, ndents);
- return TRUE;
+ /* No NULL check for lastname, always points to an array */
+ if (!*lastname)
+ cur = 0;
+ else
+ dentfind(lastname, ndents);
}
static void redraw(char *path)
@@ -2749,11 +2746,16 @@ begin:
}
#endif
- if (!populate(path, lastname)) {
+ /* Can fail when permissions change while browsing.
+ * It's assumed that path IS a directory when we are here.
+ */
+ if (access(path, R_OK) == -1) {
printwarn();
goto nochange;
}
+ populate(path, lastname);
+
#ifdef LINUX_INOTIFY
if (inotify_wd == -1)
inotify_wd = inotify_add_watch(inotify_fd, path, INOTIFY_MASK);
@@ -3659,7 +3661,7 @@ nochange:
if (ndents)
copycurname();
- /* Re-populate as directory content may have changed */
+ /* Repopulate as directory content may have changed */
goto begin;
case SEL_QUITCD: // fallthrough
case SEL_QUIT: