mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-24 07:20:37 +00:00
(file_name_completion): Set `stat' flags to avoid
computing expensive fields in struct stat (makes filename completion much faster).
This commit is contained in:
parent
34ead71a13
commit
33d5e9cc8f
19
src/dired.c
19
src/dired.c
@ -295,6 +295,19 @@ file_name_completion (file, dirname, all_flag, ver_flag)
|
||||
int count = specpdl_ptr - specpdl;
|
||||
struct gcpro gcpro1, gcpro2, gcpro3;
|
||||
|
||||
#ifdef MSDOS
|
||||
#if __DJGPP__ > 1
|
||||
/* Some fields of struct stat are *very* expensive to compute on MS-DOS,
|
||||
but aren't required here. Avoid computing the following fields:
|
||||
st_inode, st_size and st_nlink for directories, and the execute bits
|
||||
in st_mode for non-directory files with non-standard extensions. */
|
||||
|
||||
unsigned short save_djstat_flags = _djstat_flags;
|
||||
|
||||
_djstat_flags = _STAT_INODE | _STAT_EXEC_MAGIC | _STAT_DIRSIZE;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef VMS
|
||||
extern DIRENTRY * readdirver ();
|
||||
|
||||
@ -496,6 +509,12 @@ file_name_completion (file, dirname, all_flag, ver_flag)
|
||||
UNGCPRO;
|
||||
bestmatch = unbind_to (count, bestmatch);
|
||||
|
||||
#ifdef MSDOS
|
||||
#if __DJGPP__ > 1
|
||||
_djstat_flags = save_djstat_flags;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if (all_flag || NILP (bestmatch))
|
||||
return bestmatch;
|
||||
if (matchcount == 1 && bestmatchsize == XSTRING (file)->size)
|
||||
|
Loading…
Reference in New Issue
Block a user