2010-04-14 Chris Allegretta <chrisa@asty.org>

* files.c (wirte_file): Don't set current_stat when tmp == TRUE, check
          whether current_stat is set when trying to use it, and don't do the
          modification check if the filename changed, since we have no way
          of knowing about it in that case.  Fixes Savannah bug 29392, reported
          by Mike Frysinger.



git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4500 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
master
Chris Allegretta 2010-04-14 06:03:12 +00:00
parent 181c4a999b
commit db9d983646
2 changed files with 15 additions and 9 deletions

View File

@ -1,6 +1,11 @@
2010-04-09 Chris Allegretta <chrisa@asty.org>
2010-04-14 Chris Allegretta <chrisa@asty.org>
* text.c (do_alt_speller): Skip invoking the alt speller if the file size
is 0 bytes. Fixes Savannah bug 29393 reported by Mike Frysinger.
* files.c (wirte_file): Don't set current_stat when tmp == TRUE, check
whether current_stat is set when trying to use it, and don't do the
modification check if the filename changed, since we have no way
of knowing about it in that case. Fixes Savannah bug 29392, reported
by Mike Frysinger.
2010-04-13 Felipe Bugno <necron@bol.com.br>
* doc/syntax/cmake.nanorc: Added cmake syntax highlighting file.

View File

@ -1501,11 +1501,11 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
#ifndef NANO_TINY
/* if we have not stat()d this file before (say, the user just
* specified it interactively), use the info we just got from
* stat()ing or else we will chase null pointers when we do
* specified it interactively), stat and save the value
* or else we will chase null pointers when we do
* modtime checks, preserve file times, etc. during backup */
if (openfile->current_stat == NULL && realexists)
openfile->current_stat = &st;
if (openfile->current_stat == NULL && !tmp && realexists)
stat(realname, openfile->current_stat);
/* We backup only if the backup toggle is set, the file isn't
* temporary, and the file already exists. Furthermore, if we
@ -1513,8 +1513,8 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
* only if the file has not been modified by someone else since nano
* opened it. */
if (ISSET(BACKUP_FILE) && !tmp && realexists && ((append !=
OVERWRITE || openfile->mark_set) ||
openfile->current_stat->st_mtime == st.st_mtime)) {
OVERWRITE || openfile->mark_set) || (openfile->current_stat &&
openfile->current_stat->st_mtime == st.st_mtime))) {
int backup_fd;
FILE *backup_file;
char *backupname;
@ -2141,8 +2141,9 @@ bool do_writeout(bool exiting)
}
}
#ifndef NANO_TINY
if (name_exists && openfile->current_stat && (openfile->current_stat->st_mtime < st.st_mtime ||
/* Complain if the file exists, the name hasn't changed, and the
stat information we had before does not match what we have now */
else if (name_exists && openfile->current_stat && (openfile->current_stat->st_mtime < st.st_mtime ||
openfile->current_stat->st_dev != st.st_dev || openfile->current_stat->st_ino != st.st_ino)) {
i = do_yesno_prompt(FALSE,
_("File was modified since you opened it, continue saving ? "));