1
1

in write_file(), if we can't save the backup file for some reason, at

least save the original file, if possible, since that's better than
saving nothing


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3355 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Этот коммит содержится в:
David Lawrence Ramsey 2006-04-06 05:18:23 +00:00
родитель 9308e5210b
Коммит e5af25baef
2 изменённых файлов: 17 добавлений и 6 удалений

Просмотреть файл

@ -14,6 +14,9 @@ CVS code -
write_file() write_file()
- Don't free backupname before displaying it in a statusbar error - Don't free backupname before displaying it in a statusbar error
message. (DLR, found by Bill Marcum) message. (DLR, found by Bill Marcum)
- If we can't save the backup file for some reason, at least
save the original file, if possible, since that's better than
saving nothing. (DLR, suggested by Jordi)
- rcfile.c: - rcfile.c:
parse_argument() parse_argument()
- Rename variable ptr_bak to ptr_save, for consistency. (DLR) - Rename variable ptr_bak to ptr_save, for consistency. (DLR)

Просмотреть файл

@ -1336,6 +1336,8 @@ int write_file(const char *name, FILE *f_open, bool tmp, append_type
statusbar(_("Error reading %s: %s"), realname, statusbar(_("Error reading %s: %s"), realname,
strerror(errno)); strerror(errno));
beep(); beep();
/* If we can't open the original file, we won't be able
* to save it, so get out. */
goto cleanup_and_exit; goto cleanup_and_exit;
} }
} }
@ -1375,8 +1377,10 @@ int write_file(const char *name, FILE *f_open, bool tmp, append_type
_("Too many backup files?")); _("Too many backup files?"));
free(backuptemp); free(backuptemp);
free(backupname); free(backupname);
fclose(f); /* If we can't write to the backup, go on, since only
goto cleanup_and_exit; * saving the original file is better than saving
* nothing. */
goto skip_backup;
} else { } else {
free(backupname); free(backupname);
backupname = backuptemp; backupname = backuptemp;
@ -1398,8 +1402,9 @@ int write_file(const char *name, FILE *f_open, bool tmp, append_type
free(backupname); free(backupname);
if (backup_file != NULL) if (backup_file != NULL)
fclose(backup_file); fclose(backup_file);
fclose(f); /* If we can't write to the backup, go on, since only saving
goto cleanup_and_exit; * the original file is better than saving nothing. */
goto skip_backup;
} }
#ifdef DEBUG #ifdef DEBUG
@ -1421,12 +1426,15 @@ int write_file(const char *name, FILE *f_open, bool tmp, append_type
} else } else
statusbar(_("Error writing %s: %s"), backupname, statusbar(_("Error writing %s: %s"), backupname,
strerror(errno)); strerror(errno));
free(backupname); /* If we can't read from or write to the backup, go on,
goto cleanup_and_exit; * since only saving the original file is better than saving
* nothing. */
} }
free(backupname); free(backupname);
} }
skip_backup:
#endif /* !NANO_TINY */ #endif /* !NANO_TINY */
/* If NOFOLLOW_SYMLINKS is set and the file is a link, we aren't /* If NOFOLLOW_SYMLINKS is set and the file is a link, we aren't