commit 12f27299f19543f95191e7a15d7eb95df33e70a1
parent 05334a2b3cba9e94239e35e3b4bae21640e09009
Author: Benno Schulenberg <bensberg@justemail.net>
Date: Sun, 7 Feb 2016 13:03:48 +0000
Avoiding a pointless lstat() when not writing to a temporary file.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5616 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
2 files changed, 4 insertions(+), 9 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,6 +1,8 @@
2016-02-07 Benno Schulenberg <bensberg@justemail.net>
* src/files.c (update_poshistory): Don't put files in the history list
when they have the default cursor position (line 1, column 1).
+ * src/files.c (write_file): Avoid a pointless lstat() when not writing
+ to a temp file, and in the bargain elide two variables.
2016-02-06 Benno Schulenberg <bensberg@justemail.net>
* src/files.c (write_file): Remove the --nofollow option that hasn't
diff --git a/src/files.c b/src/files.c
@@ -1760,14 +1760,9 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
/* The result of stat(). TRUE if the file exists, FALSE
* otherwise. If name is a link that points nowhere, realexists
* is FALSE. */
+#endif
struct stat st;
/* The status fields filled in by stat(). */
-#endif
- bool anyexists;
- /* The result of lstat(). The same as realexists, unless name
- * is a link. */
- struct stat lst;
- /* The status fields filled in by lstat(). */
char *realname;
/* name after tilde expansion. */
FILE *f = NULL;
@@ -1797,10 +1792,8 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
}
#endif
- anyexists = (lstat(realname, &lst) != -1);
-
/* If the temp file exists and isn't already open, give up. */
- if (tmp && anyexists && f_open == NULL)
+ if (tmp && (lstat(realname, &st) != -1) && f_open == NULL)
goto cleanup_and_exit;
#ifndef NANO_TINY