URL: <http://savannah.gnu.org/bugs/?func=detailitem&item_id=13143>
Summary: "quick save" may clobber files Project: GNU Midnight Commander Submitted by: ossi Submitted on: Sat 05/21/2005 at 17:24 Category: Editor Severity: 3 - Normal Status: None Privacy: Public Assigned to: None Open/Closed: Open Release: current (CVS or snapshot) Platform Version: All _______________________________________________________ Details: if we run out of disk space, some i/o error occurs, or we are just killed while saving a file, the old contents will be lost. that's because the old file is opened with O_TRUNC and rewritten. the "solution" would be not to use O_TRUNC at all. instead, first write the part that extends beyond the end of the old file (note that we cannot just seek to the new end and write one byte because of sparse files) - if that fails to complete, truncate to the old length (if we crash in between, the old file will have garbage appended, but at least it's not clobbered alltogether). after the "extension" was written, overwrite the start of the file with the new content (if we crash in during this, the file is clobbered, but that's what you get for using "quick save") and possibly truncate the file to the new length. some VFS inherently don't support seeking, so this "slightly safer" mode is not universally applicable. a related note: for non-local files, "quick save" is used independently of the configured save mode. i think the VFS should tell the editor whether it can do remote renames, so the safe save modes we can be used in as many cases as possible. _______________________________________________________ Reply to this item at: <http://savannah.gnu.org/bugs/?func=detailitem&item_id=13143> _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ _______________________________________________ Mc-devel mailing list http://mail.gnome.org/mailman/listinfo/mc-devel