moin, in quick-save mode the editor just overwrites the existing file. this is all fine ... except when you cloned a source tree with "cp -al" and want to patch one copy. this patch adds a check whether the file has multiple hard links and asks whether the file should be "detached" before saving. not sure the dialog looks 100% right, but you get the idea. :)
-- Hi! I'm a .signature virus! Copy me into your ~/.signature, please! -- Chaos, panic, and disorder - my work here is done.
Index: edit/edit-widget.h =================================================================== RCS file: /cvsroot/mc/mc/edit/edit-widget.h,v retrieving revision 1.24 diff -U2 -r1.24 edit-widget.h --- edit/edit-widget.h 3 Dec 2004 17:09:27 -0000 1.24 +++ edit/edit-widget.h 7 Feb 2005 17:32:40 -0000 @@ -90,4 +90,5 @@ struct stat stat1; /* Result of mc_fstat() on the file */ + int skip_ask_if_detach:1; /* Already asked whether to detach file */ /* syntax higlighting */ Index: edit/editcmd.c =================================================================== RCS file: /cvsroot/mc/mc/edit/editcmd.c,v retrieving revision 1.128 diff -U2 -r1.128 editcmd.c --- edit/editcmd.c 7 Feb 2005 07:31:19 -0000 1.128 +++ edit/editcmd.c 7 Feb 2005 17:32:41 -0000 @@ -262,6 +262,23 @@ savename = g_strdup (filename); - mc_chown (savename, edit->stat1.st_uid, edit->stat1.st_gid); - mc_chmod (savename, edit->stat1.st_mode); + if (this_save_mode == EDIT_QUICK_SAVE && + edit->stat1.st_nlink > 1 && + !edit->skip_ask_if_detach) + { + switch (query_dialog (_(" File has hard-links "), + _("Detach before saving?"), 0, + 3, _("&Yes"), _("&No"), _("&Cancel"))) + { + case 0: + mc_unlink (savename); + /* fallthrough */ + case 1: + edit->skip_ask_if_detach = 1; + break; + default: + g_free (savename); + return 1; + } + } if ((fd = @@ -270,4 +287,7 @@ goto error_save; + mc_chown (savename, edit->stat1.st_uid, edit->stat1.st_gid); + mc_chmod (savename, edit->stat1.st_mode); + /* pipe save */ if ((p = edit_get_write_filter (savename, filename))) {
_______________________________________________ Mc-devel mailing list http://mail.gnome.org/mailman/listinfo/mc-devel