#ifndef DIRENT_H_INCLUDED #define DIRENT_H_INCLUDED /* Filename: dirent.h * * Purpose: UNIX directory services * * Note: dirfd() not supported */ #if !defined(WIN32) #error Target not WIN32 ... #endif #include /* UNIX types */ #if !defined(_POSIX_) #define _POSIX_ #endif #include /* PATH_MAX, NAME_MAX */ #define DIRBLKSIZ 1024 #if !defined(MAXPATHLEN) #define MAXPATHLEN PATH_MAX #endif #if !defined(MAXNAMLEN) #define MAXNAMLEN NAME_MAX #endif struct dirent { #define d_ino d_fileno /* Backward compatibility */ u_long d_fileno; /* File number directory */ u_short d_reclen; /* Length of this record */ u_short d_namlen; /* Length of string in d_name */ #if defined(_POSIX_SOURCE) && !defined(_DIRENT_SOURCE) long d_reserved1; long d_reserved2; u_long d_reserved3; u_long d_reserved4; #else long d_ctime; /* Creation time */ long d_mtime; /* Modification time */ u_long d_size; /* File size */ u_long d_attr; /* File attributes */ #endif /*_POSIX_SOURCE*/ char d_name[ MAXNAMLEN+1 ]; }; #if defined(_POSIX_SOURCE) && !defined(_DIRENT_SOURCE) typedef void *DIR; #else #if defined(_DIRENT_SOURCE) || defined(DEBUG) /* _dirlist, linked list of directory entries * only required within 'dirent.c'. */ struct _dirlist { long dl_ctime; long dl_mtime; u_long dl_size; u_long dl_size2; u_long dl_attr; char *dl_entry; struct _dirlist *dl_next; }; #endif /*_DIRENT_SOURCE*/ typedef struct _dirdesc { int dd_fd; /* File descriptor associated with directory */ int dd_id; /* Uniquely identify open dir */ long dd_loc; /* Offset in current buffer */ long dd_size; /* Amount of data returned by getdirentries */ char *dd_buf; /* Data buffer */ int dd_len; /* Size of data buffer */ long dd_seek; /* Magic cookie returned by getdirentries */ void *dd_ddloc; /* Linked list of ddloc structs for telldir/seekdir */ /* Extensions, USE AT OWN RISK */ struct _dirlist *dd_contents; struct _dirlist *dd_current; /* End of extensions */ } DIR; #endif /* _POSIX_SOURCE */ #include __BEGIN_DECLS extern DIR *opendir __P((char *)); extern int closedir __P((DIR *)); extern struct dirent *readdir __P((DIR *)); extern void rewinddir __P((DIR *)); #ifndef _POSIX_SOURCE extern void seekdir __P((DIR *, long)); extern long telldir __P((DIR *)); extern void rewinddir __P((DIR *)); extern int alphasort __P((const void *, const void *)); extern int scandir __P(()); extern int getdirentries __P((int, char *, int, long *)); #endif /*_POSIX_SOURCE*/ extern int IsHPFSFileSystem __P((const char *name)); __END_DECLS #endif /*DIRENT_H_INCLUDED*/