]> git.wh0rd.org Git - nano.git/commitdiff
in do_browser(), display an error messsage on the statusbar if we try to
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Fri, 30 Jun 2006 07:03:42 +0000 (07:03 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Fri, 30 Jun 2006 07:03:42 +0000 (07:03 +0000)
move up from "/" via the "Go to Directory" prompt, for consistency

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3699 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/browser.c

index 94ab5ded30c131846132acb9011951c7249d22fc..a31cc226f36e8b983d467c166441bab855ab7b45 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -16,6 +16,9 @@ CVS code -
        - Remove unneeded call to blank_edit(). (DLR)
        - After entering "..", select the directory we were in before
          instead of the first filename in the list, as Pico does. (DLR)
+       - Display an error messsage on the statusbar if we try to move
+         up from "/" via the "Go to Directory" prompt, for consistency.
+         (DLR)
   browser_refresh()
        - Simplify. (DLR)
        - Fix problems where translated versions of "(dir)" could be
index 270fd0b8b38306b7b58e6211ee49f34e00ca8d04..4de69a4e5d3c8600733421ab559aa20924dc7f5e 100644 (file)
@@ -107,7 +107,7 @@ char *do_browser(char *path, DIR *dir)
        int i;
        size_t fileline;
        char *new_path;
-           /* Used by the "Go To Directory" prompt. */
+       size_t new_path_len;
 
        /* Compute the line number we're on now, so that we don't divide
         * by zero. */
@@ -243,6 +243,7 @@ char *do_browser(char *path, DIR *dir)
                ans = mallocstrcpy(ans, "");
 
                new_path = real_dir_from_tilde(answer);
+               new_path_len = strlen(new_path) + 1;
 
                if (new_path[0] != '/') {
                    new_path = charealloc(new_path, strlen(path) +
@@ -250,6 +251,16 @@ char *do_browser(char *path, DIR *dir)
                    sprintf(new_path, "%s%s", path, answer);
                }
 
+               if (new_path[new_path_len - 1] == '/')
+                   null_at(&new_path, new_path_len - 1);
+
+               /* We can't move up from "/". */
+               if (strcmp(new_path, "/..") == 0) {
+                   statusbar(_("Can't move up a directory"));
+                   beep();
+                   break;
+               }
+
 #ifndef DISABLE_OPERATINGDIR
                if (check_operating_dir(new_path, FALSE)) {
                    statusbar(