1 /* Include file to use opendir/closedir/readdir */
13 /* Replacement for permission bits missing in sys/stat.h */
19 # define S_ISLNK(x) (((x) & S_IFLNK) == S_IFLNK)
27 # define S_ISSOCK(x) (((x) & S_IFSOCK) == S_IFSOCK)
35 # define S_ISFIFO(x) (((x) & S_IFFIFO) == S_IFFIFO)
43 # define S_ISCHR(x) (((x) & S_IFCHR) == S_IFCHR)
51 # define S_ISBLK(x) (((x) & S_IFBLK) == S_IFBLK)
56 # define MC_MAXPATHLEN 4096
58 # define MC_MAXPATHLEN MAXPATHLEN
61 /* unistd.h defines _POSIX_VERSION on POSIX.1 systems. */
64 # define NLENGTH(dirent) (strlen ((dirent)->d_name))
65 # define DIRENT_LENGTH_COMPUTED 1
66 #elif defined(_MSC_VER)
67 /* dirent provided by glib */
68 # define NLENGTH(dirent) (strlen ((dirent)->d_name))
69 # define DIRENT_LENGTH_COMPUTED 1
71 # define dirent direct
72 # define NLENGTH(dirent) ((dirent)->d_namlen)
74 # ifdef HAVE_SYS_NDIR_H
75 # include <sys/ndir.h>
76 # endif /* HAVE_SYS_NDIR_H */
78 # ifdef HAVE_SYS_DIR_H
80 # endif /* HAVE_SYS_DIR_H */
84 # endif /* HAVE_NDIR_H */
85 #endif /* not (HAVE_DIRENT_H or _POSIX_VERSION) */
87 static inline void compute_namelen(struct dirent
* dent
) {
88 #ifdef DIRENT_LENGTH_COMPUTED
91 dent
->d_namlen
= strlen (dent
);