From: lostd <lostd@2f30.org>
Date: Fri, 10 Oct 2014 10:14:55 +0000 (+0300)
Subject: Handle the root path case correctly
X-Git-Tag: v1.0~92^2~230
X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=327720107565e730a15b8d16351c8c4efd34a471;p=nnn.git

Handle the root path case correctly
---

diff --git a/noice.c b/noice.c
index 4c88701e..d03400e9 100644
--- a/noice.c
+++ b/noice.c
@@ -374,8 +374,12 @@ begin:
 		dents[n].name = strdup(dp->d_name);
 		if (dents[n].name == NULL)
 			printerr(1, "strdup");
+		/* Handle root case */
+		if (strcmp(path, "/") == 0)
+			asprintf(&name, "/%s", dents[n].name);
+		else
+			asprintf(&name, "%s/%s", path, dents[n].name);
 		/* Get mode flags */
-		asprintf(&name, "%s/%s", path, dents[n].name);
 		r = lstat(name, &sb);
 		free(name);
 		if (r == -1)
@@ -406,7 +410,7 @@ redraw:
 		erase();
 
 		/* Strip trailing slashes */
-		for (i = strlen(path) - 1; i > -1; i--)
+		for (i = strlen(path) - 1; i > 0; i--)
 			if (path[i] == '/')
 				path[i] = '\0';
 			else
@@ -420,12 +424,7 @@ redraw:
 		strlcpy(cwd, path, COLS * sizeof(char));
 		cwd[COLS - strlen(CWD) - 1] = '\0';
 
-		/* Print cwd.  If empty we are on the root.  We store it
-		 * as an empty string so that when we navigate in /mnt
-		 * is doesn't come up as //mnt. */
-		printw(CWD "%s%s\n\n",
-		    strcmp(cwd, "") == 0 ? "/" : "",
-		    cwd);
+		printw(CWD "%s\n\n", cwd);
 
 		/* Print listing */
 		odd = ISODD(nlines);
@@ -449,8 +448,8 @@ nochange:
 			free(filter);
 			return;
 		case SEL_BACK:
-			/* Handle root case */
-			if (strcmp(path, "") == 0) {
+			/* There is no going back */
+			if (strcmp(path, "/") == 0) {
 				goto nochange;
 			} else {
 				dir = dirname(path);