commit adfecd24b4627819db41869f0c8c3fcabbcc6505
parent 242079435575fcdaa110791eac58598144fef9e3
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date: Fri, 7 Apr 2006 04:37:14 +0000
simplify the previous fix; also, in write_file(), clarify the error
message when writing a temporary file for prepending fails
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3361 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
2 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -24,6 +24,8 @@ CVS code -
save the original file, if possible, since that's better than
saving nothing. (DLR, problem found by Bill Marcum, solution
suggested by Jordi)
+ - Clarify the error message when writing a temporary file for
+ prepending fails. (DLR)
- rcfile.c:
parse_argument()
- Rename variable ptr_bak to ptr_save, for consistency. (DLR)
diff --git a/src/files.c b/src/files.c
@@ -1336,15 +1336,10 @@ int write_file(const char *name, FILE *f_open, bool tmp, append_type
statusbar(_("Error reading %s: %s"), realname,
strerror(errno));
beep();
- /* If we can't read from the original file, and we're
- * prepending, get out, since we won't be able to save
- * either the backup or the original file. If we're not
- * prepending, go on, since only saving the original
- * file is better than saving nothing. */
- if (append == PREPEND)
- goto cleanup_and_exit;
- else
- goto skip_backup;
+ /* If we can't read from the original file, go on, since
+ * only saving the original file is better than saving
+ * nothing. */
+ goto skip_backup;
}
}
@@ -1468,10 +1463,21 @@ int write_file(const char *name, FILE *f_open, bool tmp, append_type
int fd_source;
FILE *f_source = NULL;
+ if (f == NULL) {
+ f = fopen(realname, "rb");
+
+ if (f == NULL) {
+ statusbar(_("Error reading %s: %s"), realname,
+ strerror(errno));
+ beep();
+ goto cleanup_and_exit;
+ }
+ }
+
tempname = safe_tempfile(&f);
if (tempname == NULL) {
- statusbar(_("Prepending to %s failed: %s"), realname,
+ statusbar(_("Could not create temp file: %s"),
strerror(errno));
goto cleanup_and_exit;
}