From 630b6a491f5edce285be39209065eff2c60ad6fa Mon Sep 17 00:00:00 2001 From: Slava Zanko Date: Fri, 23 Mar 2012 13:40:25 +0300 Subject: [PATCH] Ticket #2761: save file on top of existing directory changes dir's permissions Steps to reproduce: mkdir foo chmod 0700 foo mcedit bar ls -ld foo drw-r--r-- 1 slyfox users 0 Mar 22 22:10 foo We've lost dir's permissions. Signed-off-by: Slava Zanko --- src/editor/editcmd.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/editor/editcmd.c b/src/editor/editcmd.c index f2335c8cd..d0c665f35 100644 --- a/src/editor/editcmd.c +++ b/src/editor/editcmd.c @@ -1490,6 +1490,18 @@ edit_save_as_cmd (WEdit * edit) if (strcmp (edit->filename, exp)) { int file; + struct stat sb; + + if (mc_stat (exp, &sb) == 0 && !S_ISREG (sb.st_mode)) + { + edit_error_dialog (_("Save as"), + get_sys_error (_ + ("Cannot save: destination is not a regular file"))); + g_free (exp); + edit->force |= REDRAW_COMPLETELY; + return 0; + } + different_filename = 1; file = mc_open (exp, O_RDONLY | O_BINARY); if (file != -1) -- 2.11.4.GIT