mirror of
https://github.com/jarun/nnn.git
synced 2024-11-18 08:59:14 +00:00
Refactor current directory removal
This commit is contained in:
parent
ae7a3fbdc1
commit
864273dd9b
52
src/nnn.c
52
src/nnn.c
|
@ -2971,6 +2971,34 @@ static char *visit_parent(char *path, char *newpath, int *presel)
|
|||
return dir;
|
||||
}
|
||||
|
||||
static void find_accessible_parent(char *path, char *newpath, char *lastname, int *presel)
|
||||
{
|
||||
char *dir;
|
||||
|
||||
/* Save history */
|
||||
xstrlcpy(lastname, xbasename(path), NAME_MAX + 1);
|
||||
|
||||
xstrlcpy(newpath, path, PATH_MAX);
|
||||
while (true) {
|
||||
dir = visit_parent(path, newpath, presel);
|
||||
if (istopdir(path) || istopdir(newpath)) {
|
||||
if (!dir)
|
||||
dir = dirname(newpath);
|
||||
break;
|
||||
}
|
||||
if (!dir) {
|
||||
xstrlcpy(path, newpath, PATH_MAX);
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
xstrlcpy(path, dir, PATH_MAX);
|
||||
|
||||
mvprintw(xlines - 1, 0, "cannot access dir\n");
|
||||
xdelay();
|
||||
}
|
||||
|
||||
static bool execute_file(int cur, char *path, char *newpath, int *presel)
|
||||
{
|
||||
if (!ndents)
|
||||
|
@ -3870,30 +3898,8 @@ nochange:
|
|||
/* If CWD is deleted or moved or perms changed, find an accessible parent */
|
||||
if (access(path, F_OK)) {
|
||||
DPRINTF_S("directory inaccessible");
|
||||
|
||||
/* Save history */
|
||||
xstrlcpy(lastname, xbasename(path), NAME_MAX + 1);
|
||||
|
||||
xstrlcpy(newpath, path, PATH_MAX);
|
||||
while (true) {
|
||||
dir = visit_parent(path, newpath, &presel);
|
||||
if (istopdir(path) || istopdir(newpath)) {
|
||||
if (!dir)
|
||||
dir = dirname(newpath);
|
||||
break;
|
||||
}
|
||||
if (!dir) {
|
||||
xstrlcpy(path, newpath, PATH_MAX);
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
xstrlcpy(path, dir, PATH_MAX);
|
||||
|
||||
find_accessible_parent(path, newpath, lastname, &presel);
|
||||
setdirwatch();
|
||||
mvprintw(xlines - 1, 0, "cannot access directory\n");
|
||||
xdelay();
|
||||
goto begin;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue