diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2015-01-30 23:11:55 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2015-01-30 23:12:18 -0800 |
commit | 512cdb9f2ba6dde0c24bfed13d095ea37e38a6ec (patch) | |
tree | 194a692680b2083dfc4b065cd17115a2ab0873d0 /src/dired.c | |
parent | e0be229d5f5e790338a71617a1c244029da4c75b (diff) | |
download | emacs-512cdb9f2ba6dde0c24bfed13d095ea37e38a6ec.tar.gz emacs-512cdb9f2ba6dde0c24bfed13d095ea37e38a6ec.tar.bz2 emacs-512cdb9f2ba6dde0c24bfed13d095ea37e38a6ec.zip |
Simplify read_dirent's MSDOS hacks
* dired.c (read_dirent): Simplify by removing the need for the
DIR_ENTRY argument. All callers changed. This separates the
MS-DOS idiosyncrasies better from the rest of the code.
Diffstat (limited to 'src/dired.c')
-rw-r--r-- | src/dired.c | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/src/dired.c b/src/dired.c index 56d6de2d352..931279a0764 100644 --- a/src/dired.c +++ b/src/dired.c @@ -124,11 +124,10 @@ directory_files_internal_unwind (void *dh) /* Return the next directory entry from DIR; DIR's name is DIRNAME. If there are no more directory entries, return a null pointer. - Signal any unrecoverable errors. FIRST_ENTRY true means this is - the first call after open_directory. */ + Signal any unrecoverable errors. */ static struct dirent * -read_dirent (DIR *dir, Lisp_Object dirname, bool first_entry) +read_dirent (DIR *dir, Lisp_Object dirname) { while (true) { @@ -138,14 +137,15 @@ read_dirent (DIR *dir, Lisp_Object dirname, bool first_entry) return dp; if (! (errno == EAGAIN || errno == EINTR)) { +#ifdef MSDOS /* The MS-Windows implementation of 'opendir' doesn't actually open a directory until the first call to 'readdir'. If 'readdir' fails to open the directory, it sets errno to ENOENT or EACCES, see w32.c. */ - if (first_entry && (errno == ENOENT || errno == EACCES)) + if (errno == ENOENT || errno == EACCES) report_file_error ("Opening directory", dirname); - else - report_file_error ("Reading directory", dirname); +#endif + report_file_error ("Reading directory", dirname); } QUIT; } @@ -249,8 +249,7 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full, needsep = 1; /* Loop reading directory entries. */ - bool first_entry = true; - for (struct dirent *dp; (dp = read_dirent (d, directory, first_entry)); ) + for (struct dirent *dp; (dp = read_dirent (d, directory)); ) { ptrdiff_t len = dirent_namelen (dp); Lisp_Object name = make_unibyte_string (dp->d_name, len); @@ -258,8 +257,6 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full, struct gcpro gcpro1, gcpro2; GCPRO2 (finalname, name); - first_entry = false; - /* Note: DECODE_FILE can GC; it should protect its argument, though. */ name = DECODE_FILE (name); @@ -499,13 +496,11 @@ file_name_completion (Lisp_Object file, Lisp_Object dirname, bool all_flag, record_unwind_protect_ptr (directory_files_internal_unwind, d); /* Loop reading directory entries. */ - bool first_entry = true; - for (struct dirent *dp; (dp = read_dirent (d, dirname, first_entry)); ) + for (struct dirent *dp; (dp = read_dirent (d, dirname)); ) { ptrdiff_t len = dirent_namelen (dp); bool canexclude = 0; - first_entry = false; QUIT; if (len < SCHARS (encoded_file) || (scmp (dp->d_name, SSDATA (encoded_file), |