diff options
author | Arun Prakash Jana <engineerarun@gmail.com> | 2019-01-21 02:16:06 +0530 |
---|---|---|
committer | Arun Prakash Jana <engineerarun@gmail.com> | 2019-01-21 02:22:09 +0530 |
commit | b6842d69c582e6e93b56987b17a34c22156f9157 (patch) | |
tree | 98044d1d43fc33c2a22cfeb56c3eeb7a3c650d84 /src | |
parent | 5301f78fa3ca01b9a425bd7c4757217d05c51207 (diff) | |
download | nnn-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.c | 34 |
1 files changed, 18 insertions, 16 deletions
@@ -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: |