emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 0e69c85: Make searching for files faster under Windows


From: Lars Ingebrigtsen
Subject: master 0e69c85: Make searching for files faster under Windows
Date: Thu, 13 May 2021 07:31:37 -0400 (EDT)

branch: master
commit 0e69c85d7d6d46ab9c0d10051066a365e76a901f
Author: Nicolás Bértolo <nicolasbertolo@gmail.com>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Make searching for files faster under Windows
    
    * src/lread.c (openp): Use faccessat to check that a file exists
    before opening it on Windows (bug#41646).  This speeds up
    searching for files.
---
 src/lread.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/lread.c b/src/lread.c
index d2e6323..bca53a9 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1945,7 +1945,17 @@ openp (Lisp_Object path, Lisp_Object str, Lisp_Object 
suffixes,
              }
            else
              {
-               fd = emacs_open (pfn, O_RDONLY, 0);
+                /*  In some systems (like Windows) finding out if a
+                    file exists is cheaper to do than actually opening
+                    it.  Only open the file when we are sure that it
+                    exists.  */
+#ifdef WINDOWSNT
+                if (faccessat (AT_FDCWD, pfn, R_OK, AT_EACCESS))
+                  fd = -1;
+                else
+#endif
+                  fd = emacs_open (pfn, O_RDONLY, 0);
+
                if (fd < 0)
                  {
                    if (! (errno == ENOENT || errno == ENOTDIR))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]