mirror of git://git.sv.gnu.org/nano.git
* files.c: Do not go on and attempt to write the main file if writing the backup file failed,
related to Savannah bug 24000. git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4297 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
This commit is contained in:
parent
6f681c1be2
commit
447f1b4b75
|
@ -1,3 +1,7 @@
|
|||
2008-08-08 Chris Allegretta <chrisa@asty.org>
|
||||
* files.c: Do not go on and attempt to write the main file if writing the backup file failed,
|
||||
related to Savannah bug 24000.
|
||||
|
||||
2008-07-23 Chris Allegretta <chrisa@asty.org>
|
||||
* text.c: Reset openfile-> to OTHER after an undo or redo so we don't mistakenly
|
||||
mistakenly think this is an update when it's really an add. Also
|
||||
|
|
31
src/files.c
31
src/files.c
|
@ -1474,14 +1474,15 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
|
|||
free(backuptemp);
|
||||
backuptemp = get_next_filename(backupname, "~");
|
||||
if (*backuptemp == '\0') {
|
||||
statusbar(_("Error writing %s: %s"), backupname,
|
||||
statusbar(_("Error writing backup file %s: %s"), backupname,
|
||||
_("Too many backup files?"));
|
||||
free(backuptemp);
|
||||
free(backupname);
|
||||
/* If we can't write to the backup, go on, since only
|
||||
* saving the original file is better than saving
|
||||
* nothing. */
|
||||
goto skip_backup;
|
||||
/* If we can't write to the backup, DONT go on, since
|
||||
whatever caused the backup file to fail (e.g. disk
|
||||
full may well cause the real file write to fail, which
|
||||
means we could lose both the backup and the original! */
|
||||
goto cleanup_and_exit;
|
||||
} else {
|
||||
free(backupname);
|
||||
backupname = backuptemp;
|
||||
|
@ -1498,14 +1499,16 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
|
|||
|
||||
if (backup_file == NULL || chmod(backupname,
|
||||
openfile->current_stat->st_mode) == -1) {
|
||||
statusbar(_("Error writing %s: %s"), backupname,
|
||||
statusbar(_("Error writing backup file %s: %s"), backupname,
|
||||
strerror(errno));
|
||||
free(backupname);
|
||||
if (backup_file != NULL)
|
||||
fclose(backup_file);
|
||||
/* If we can't write to the backup, go on, since only saving
|
||||
* the original file is better than saving nothing. */
|
||||
goto skip_backup;
|
||||
/* If we can't write to the backup, DONT go on, since
|
||||
whatever caused the backup file to fail (e.g. disk
|
||||
full may well cause the real file write to fail, which
|
||||
means we could lose both the backup and the original! */
|
||||
goto cleanup_and_exit;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
|
@ -1525,11 +1528,13 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
|
|||
strerror(errno));
|
||||
beep();
|
||||
} else
|
||||
statusbar(_("Error writing %s: %s"), backupname,
|
||||
statusbar(_("Error writing backup file %s: %s"), backupname,
|
||||
strerror(errno));
|
||||
/* If we can't read from or write to the backup, go on,
|
||||
* since only saving the original file is better than saving
|
||||
* nothing. */
|
||||
/* If we can't write to the backup, DONT go on, since
|
||||
whatever caused the backup file to fail (e.g. disk
|
||||
full may well cause the real file write to fail, which
|
||||
means we could lose both the backup and the original! */
|
||||
goto cleanup_and_exit;
|
||||
}
|
||||
|
||||
free(backupname);
|
||||
|
|
Loading…
Reference in New Issue