From d06743d537b0b65feac8be553536f6fc5d608fdd Mon Sep 17 00:00:00 2001 From: Laurent Mazet Date: Sun, 19 Jan 2025 16:29:21 +0100 Subject: [PATCH] avoid rename .. --- fm.c | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/fm.c b/fm.c index 7ed2310..e41f3a3 100644 --- a/fm.c +++ b/fm.c @@ -401,27 +401,29 @@ int main (int argc, char *argv[]) break; case ALT_R: /* rename */ current = list[panel]->tab + windir[panel]->index; - len = (strlen (current->name) > MAXFNAME * 80 / 100) ? 2 * MAXFNAME + 1: MAXFNAME + 1; - string = getwindow ("Rename", winscreen, MAXFNAME / 2, len, current->name); - if (string) { - if (strchr (string, *SEPARATOR) != NULL) { - char *buf = strdupcat ("Can't rename file to '", string, "'", NULL); - errorwindow (buf, winscreen); - free (buf); - } else { - char *src = newfilename (dirname[panel], current->name); - char *dest = newfilename (dirname[panel], string); - char *msg = processmove (dest, src); - if (msg) { - errorwindow (msg, winscreen); - free (msg); + if (strcmp (current->name, "..") != 0) { + len = (strlen (current->name) > MAXFNAME * 80 / 100) ? 2 * MAXFNAME + 1: MAXFNAME + 1; + string = getwindow ("Rename", winscreen, MAXFNAME / 2, len, current->name); + if (string) { + if (strchr (string, *SEPARATOR) != NULL) { + char *buf = strdupcat ("Can't rename file to '", string, "'", NULL); + errorwindow (buf, winscreen); + free (buf); + } else { + char *src = newfilename (dirname[panel], current->name); + char *dest = newfilename (dirname[panel], string); + char *msg = processmove (dest, src); + if (msg) { + errorwindow (msg, winscreen); + free (msg); + } + free (src); + free (dest); + freelist (list[panel]); + list[panel] = NULL; } - free (src); - free (dest); - freelist (list[panel]); - list[panel] = NULL; + free (string); } - free (string); } break; case ALT_S: /* select */ -- 2.30.2