From 6cefb9f21a74428fc818ce655ecf89cdf396ceee Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey Date: Fri, 30 Jun 2006 07:03:42 +0000 Subject: [PATCH] in do_browser(), display an error messsage on the statusbar if we try to 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 | 3 +++ src/browser.c | 13 ++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 94ab5ded..a31cc226 100644 --- 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 diff --git a/src/browser.c b/src/browser.c index 270fd0b8..4de69a4e 100644 --- a/src/browser.c +++ b/src/browser.c @@ -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( -- 2.39.5