From: Nicolás Bértolo Date: Thu, 13 May 2021 11:30:29 +0000 (+0200) Subject: Make searching for files faster under Windows X-Git-Tag: emacs-28.0.90~2486 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0e69c85d7d6d46ab9c0d10051066a365e76a901f;p=emacs.git 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. --- diff --git a/src/lread.c b/src/lread.c index d2e6323cb14..bca53a9a37a 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))