diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nnn.c | 27 |
1 files changed, 10 insertions, 17 deletions
@@ -4515,6 +4515,15 @@ static bool browse(char *ipath, const char *session) errexit(); begin: + /* 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) { + DPRINTF_S("directory inaccessible"); + find_accessible_parent(path, newpath, lastname, &presel); + setdirwatch(); + } + if (cfg.selmode && lastdir[0]) lastappendpos = selbufpos; @@ -4538,12 +4547,6 @@ begin: } #endif - /* 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(&presel); - populate(path, lastname); if (g_states & STATE_INTERRUPTED) { g_states &= ~STATE_INTERRUPTED; @@ -4581,12 +4584,8 @@ nochange: } /* If CWD is deleted or moved or perms changed, find an accessible parent */ - if (access(path, F_OK)) { - DPRINTF_S("directory inaccessible"); - find_accessible_parent(path, newpath, lastname, &presel); - setdirwatch(); + if (access(path, F_OK)) goto begin; - } /* If STDIN is no longer a tty (closed) we should exit */ if (!isatty(STDIN_FILENO) && !cfg.picker) { @@ -6156,12 +6155,6 @@ int main(int argc, char *argv[]) } signal(SIGQUIT, SIG_IGN); - /* Test initial path */ - if (!xdiraccess(initpath)) { - xerror(); - return _FAILURE; - } - #ifndef NOLOCALE /* Set locale */ setlocale(LC_ALL, ""); |