#include "buffer.h"
#include "coding.h"
#include "regex.h"
-#include "blockinput.h"
#ifdef MSDOS
#include "msdos.h" /* for fstatat */
#endif
+#ifdef WINDOWSNT
+extern int is_slow_fs (const char *);
+#endif
+
static ptrdiff_t scmp (const char *, const char *, ptrdiff_t);
static Lisp_Object file_attributes (int, char const *, Lisp_Object);
\f
DIR *d;
int fd, opendir_errno;
- block_input ();
-
#ifdef DOS_NT
/* Directories cannot be opened. The emulation assumes that any
file descriptor other than AT_FDCWD corresponds to the most
}
#endif
- unblock_input ();
-
if (!d)
report_file_errno ("Opening directory", dirname, opendir_errno);
*fdp = fd;
}
#ifdef WINDOWSNT
-void
+static void
directory_files_internal_w32_unwind (Lisp_Object arg)
{
Vw32_get_true_file_attributes = arg;
#endif
static void
-directory_files_internal_unwind (void *dh)
+directory_files_internal_unwind (void *d)
{
- DIR *d = dh;
- block_input ();
closedir (d);
- unblock_input ();
}
/* Return the next directory entry from DIR; DIR's name is DIRNAME.
#ifdef WINDOWSNT
if (attrs)
{
- extern int is_slow_fs (const char *);
-
/* Do this only once to avoid doing it (in w32.c:stat) for each
file in the directory, when we call Ffile_attributes below. */
record_unwind_protect (directory_files_internal_w32_unwind,
{
/* w32.c:stat will notice these bindings and avoid calling
GetDriveType for each file. */
- if (is_slow_fs (SDATA (dirfilename)))
+ if (is_slow_fs (SSDATA (dirfilename)))
Vw32_get_true_file_attributes = Qnil;
else
Vw32_get_true_file_attributes = Qt;
}
}
- block_input ();
closedir (d);
- unblock_input ();
#ifdef WINDOWSNT
if (attrs)
Vw32_get_true_file_attributes = w32_save;
default, but we plan to change that, so you should specify a non-nil value
for ID-FORMAT if you use the returned uid or gid.
+To access the elements returned, the following access functions are
+provided: `file-attribute-type', `file-attribute-link-number',
+`file-attribute-user-id', `file-attribute-group-id',
+`file-attribute-access-time', `file-attribute-modification-time',
+`file-attribute-status-change-time', `file-attribute-size',
+`file-attribute-modes', `file-attribute-inode-number', and
+`file-attribute-device-number'.
+
Elements of the attribute list are:
0. t for directory, string (name linked to) for symbolic link, or nil.
1. Number of links to file.
if (!(NILP (id_format) || EQ (id_format, Qinteger)))
{
- block_input ();
uname = stat_uname (&s);
gname = stat_gname (&s);
- unblock_input ();
}
filemodestring (&s, modes);