From: Arun Prakash Jana <engineerarun@gmail.com>
Date: Sun, 27 Jun 2021 18:46:32 +0000 (+0530)
Subject: Try to unmount hovered local dir
X-Git-Tag: v4.2~46
X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=1729a10ef427c5e3bee18164fec90076662f58e1;p=nnn.git

Try to unmount hovered local dir
---

diff --git a/src/nnn.c b/src/nnn.c
index 135ef480..fcea6c97 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -4518,7 +4518,7 @@ static bool unmount(char *name, char *newpath, int *presel, char *currentpath)
 	struct stat sb, psb;
 	bool child = FALSE;
 	bool parent = FALSE;
-	bool hovered = TRUE;
+	bool hovered = FALSE;
 	char mntpath[PATH_MAX];
 
 #if !defined(__APPLE__) && !defined(__FreeBSD__)
@@ -4545,11 +4545,15 @@ static bool unmount(char *name, char *newpath, int *presel, char *currentpath)
 		tmp = xreadline(NULL, messages[MSG_HOSTNAME]);
 		if (!tmp[0])
 			return FALSE;
-		hovered = FALSE;
+		if (name && (tmp[0] == '-') && (tmp[1] == '\0')) {
+			mkpath(currentpath, name, newpath);
+			hovered = TRUE;
+		}
 	}
 
-	/* Create the mount point */
-	mkpath(mntpath, tmp, newpath);
+	if (!hovered)
+		mkpath(mntpath, tmp, newpath);
+
 	if (!xdiraccess(newpath)) {
 		*presel = MSGWAIT;
 		return FALSE;
@@ -4558,7 +4562,7 @@ static bool unmount(char *name, char *newpath, int *presel, char *currentpath)
 #if defined(__APPLE__) || defined(__FreeBSD__)
 	if (spawn(cmd, newpath, NULL, NULL, F_NORMAL)) {
 #else
-	if (spawn(cmd, "-u", newpath, NULL, F_NORMAL)) {
+	if (spawn(cmd, "-qu", newpath, NULL, F_NORMAL)) {
 #endif
 		if (!xconfirm(get_input(messages[MSG_LAZY])))
 			return FALSE;
@@ -4568,7 +4572,7 @@ static bool unmount(char *name, char *newpath, int *presel, char *currentpath)
 #elif defined(__FreeBSD__)
 		if (spawn(cmd, "-f", newpath, NULL, F_NORMAL)) {
 #else
-		if (spawn(cmd, "-uz", newpath, NULL, F_NORMAL)) {
+		if (spawn(cmd, "-quz", newpath, NULL, F_NORMAL)) {
 #endif
 			printwait(messages[MSG_FAILED], presel);
 			return FALSE;
@@ -4580,7 +4584,7 @@ static bool unmount(char *name, char *newpath, int *presel, char *currentpath)
 		return FALSE;
 	}
 
-	return hovered;
+	return TRUE;
 }
 
 static void lock_terminal(void)