Commit 2f0d03b4 authored by David Lawrence Ramsey's avatar David Lawrence Ramsey
Browse files

make write_marked() always call write_file() with nonamechange set to

TRUE (and hence no longer take a namechange parameter itself) to fix a
bug where writing a selection would change the current filename, and
make die_save_file() do the same since we don't need to change the
current filename if we're writing emergency backup files


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1770 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
parent 228148b8
No related merge requests found
Showing with 22 additions and 14 deletions
+22 -14
...@@ -70,6 +70,11 @@ CVS code - ...@@ -70,6 +70,11 @@ CVS code -
- Rearrange the NANO_SMALL #ifdef so that the code to set the - Rearrange the NANO_SMALL #ifdef so that the code to set the
MODIFIED flag in open_files->flags is included only once. MODIFIED flag in open_files->flags is included only once.
(DLR) (DLR)
write_marked()
- Call write_file() with nonamechange set to TRUE so that we
don't erroneously change the current filename when writing a
selection, and don't take a nonamechange parameter anymore
since we don't use it. (DLR)
do_writeout() do_writeout()
- Refactor so that no recursion is needed if we try to exit with - Refactor so that no recursion is needed if we try to exit with
a modified file that has no name when TEMP_OPT is set. (DLR) a modified file that has no name when TEMP_OPT is set. (DLR)
...@@ -86,6 +91,10 @@ CVS code - ...@@ -86,6 +91,10 @@ CVS code -
- Since all of the calls to finish() use 0 for the value of - Since all of the calls to finish() use 0 for the value of
sigage, and the return value of finish() is never used, make sigage, and the return value of finish() is never used, make
it accept and return void. (David Benbennick) it accept and return void. (David Benbennick)
die_save_file()
- Call write_file() with nonamechange set to TRUE since we don't
need to change the current filename if we're writing emergency
backup files. (DLR)
do_early_abort() do_early_abort()
- Removed, as it's no longer called anywhere. (David Benbennick) - Removed, as it's no longer called anywhere. (David Benbennick)
open_pipe() open_pipe()
......
...@@ -1395,8 +1395,8 @@ int copy_file(FILE *inn, FILE *out) ...@@ -1395,8 +1395,8 @@ int copy_file(FILE *inn, FILE *out)
* append == 1 means we are appending instead of overwriting. * append == 1 means we are appending instead of overwriting.
* append == 2 means we are prepending instead of overwriting. * append == 2 means we are prepending instead of overwriting.
* *
* nonamechange means don't change the current filename, it is ignored * nonamechange means don't change the current filename. It is ignored
* if tmp is nonzero or if we're appending/prepending. * if tmp is FALSE or if we're appending/prepending.
* *
* Return -1 on error, 1 on success. */ * Return -1 on error, 1 on success. */
int write_file(const char *name, int tmp, int append, int nonamechange) int write_file(const char *name, int tmp, int append, int nonamechange)
...@@ -1737,11 +1737,11 @@ int write_file(const char *name, int tmp, int append, int nonamechange) ...@@ -1737,11 +1737,11 @@ int write_file(const char *name, int tmp, int append, int nonamechange)
#ifndef NANO_SMALL #ifndef NANO_SMALL
/* Write a marked selection from a file out. First, set fileage and /* Write a marked selection from a file out. First, set fileage and
* filebot as the top and bottom of the mark, respectively. Then call * filebot as the top and bottom of the mark, respectively. Then call
* write_file() with the values of name, temp, append, and nonamechange. * write_file() with the values of name, temp, and append, and with
* Finally, set fileage and filebot back to their old values and * nonamechange set to TRUE so that we don't change the current
* return. */ * filename. Finally, set fileage and filebot back to their old values
int write_marked(const char *name, int tmp, int append, int * and return. */
nonamechange) int write_marked(const char *name, int tmp, int append)
{ {
int retval = -1; int retval = -1;
filestruct *fileagebak = fileage; filestruct *fileagebak = fileage;
...@@ -1783,7 +1783,7 @@ int write_marked(const char *name, int tmp, int append, int ...@@ -1783,7 +1783,7 @@ int write_marked(const char *name, int tmp, int append, int
if (filebot->data[0] != '\0' && filebot->next != NULL) if (filebot->data[0] != '\0' && filebot->next != NULL)
filebot = filebot->next; filebot = filebot->next;
retval = write_file(name, tmp, append, nonamechange); retval = write_file(name, tmp, append, TRUE);
/* Now restore everything. */ /* Now restore everything. */
fileage->data -= topx; fileage->data -= topx;
...@@ -1945,7 +1945,7 @@ int do_writeout(int exiting) ...@@ -1945,7 +1945,7 @@ int do_writeout(int exiting)
/* Here's where we allow the selected text to be written to /* Here's where we allow the selected text to be written to
* a separate file. */ * a separate file. */
if (!ISSET(RESTRICTED) && !exiting && ISSET(MARK_ISSET)) if (!ISSET(RESTRICTED) && !exiting && ISSET(MARK_ISSET))
i = write_marked(answer, FALSE, append, FALSE); i = write_marked(answer, FALSE, append);
else else
#endif /* !NANO_SMALL */ #endif /* !NANO_SMALL */
i = write_file(answer, FALSE, append, FALSE); i = write_file(answer, FALSE, append, FALSE);
......
...@@ -172,7 +172,7 @@ void die_save_file(const char *die_filename) ...@@ -172,7 +172,7 @@ void die_save_file(const char *die_filename)
free(buf); free(buf);
} }
if (ret[0] != '\0') if (ret[0] != '\0')
i = write_file(ret, 1, 0, 0); i = write_file(ret, TRUE, FALSE, TRUE);
if (i != -1) if (i != -1)
fprintf(stderr, _("\nBuffer written to %s\n"), ret); fprintf(stderr, _("\nBuffer written to %s\n"), ret);
...@@ -1808,10 +1808,10 @@ int do_spell(void) ...@@ -1808,10 +1808,10 @@ int do_spell(void)
#ifndef NANO_SMALL #ifndef NANO_SMALL
if (ISSET(MARK_ISSET)) if (ISSET(MARK_ISSET))
i = write_marked(temp, 1, 0, 0); i = write_marked(temp, TRUE, FALSE);
else else
#endif #endif
i = write_file(temp, 1, 0, 0); i = write_file(temp, TRUE, FALSE, FALSE);
if (i == -1) { if (i == -1) {
statusbar(_("Unable to write temp file: %s"), strerror(errno)); statusbar(_("Unable to write temp file: %s"), strerror(errno));
......
...@@ -188,8 +188,7 @@ void init_backup_dir(void); ...@@ -188,8 +188,7 @@ void init_backup_dir(void);
#endif #endif
int write_file(const char *name, int tmp, int append, int nonamechange); int write_file(const char *name, int tmp, int append, int nonamechange);
#ifndef NANO_SMALL #ifndef NANO_SMALL
int write_marked(const char *name, int tmp, int append, int int write_marked(const char *name, int tmp, int append);
nonamechange);
#endif #endif
int do_writeout(int exiting); int do_writeout(int exiting);
int do_writeout_void(void); int do_writeout_void(void);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment