/* * dirent.h */ #ifndef _DIRENT_H # define _DIRENT_H # include # include #define MAXNAMLEN 255 /* maximum filename length */ #ifndef NAME_MAX #define NAME_MAX (MAXNAMLEN - 1) #endif struct dirent /* data from getdents()/readdir() */ { ino_t d_ino; /* inode number of entry */ off_t d_off; /* offset of disk directory entry */ wchar_t d_reclen; /* length of this record */ char d_name[MAXNAMLEN + 1]; }; /* The following nonportable ugliness could have been avoided by defining * DIRENTSIZ and DIRENTBASESIZ to also have (struct dirent *) arguments. * There shouldn't be any problem if you avoid using the DIRENTSIZ() macro. */ #define DIRENTBASESIZ (((struct dirent *)0)->d_name \ - (char *)&((struct dirent *)0)->d_ino) #define DIRENTSIZ(namlen) ((DIRENTBASESIZ + sizeof(long) + (namlen)) \ / sizeof(long) * sizeof(long)) # ifndef _BOOL_T_DEFINED typedef unsigned char bool; # define _BOOL_T_DEFINED # endif # define DIRBUF 8192 /* buffer size for fs-indep. dirs */ /* must in general be larger than the */ /* filesystem buffer size */ struct _dircontents { char *_d_entry; struct _dircontents *_d_next; }; typedef struct _dirdesc { int dd_id; /* uniquely identify each open directory */ long dd_loc; /* where we are in directory entry is this */ struct _dircontents *dd_contents; /* pointer to contents of dir */ struct _dircontents *dd_cp; /* pointer to current position */ } DIR; #if defined (__STDC__) # define _PROTO(p) p #else # define _PROTO(p) () # undef const # undef volatile #endif /* Functions */ extern DIR * opendir _PROTO ((const char *)); extern struct dirent * readdir _PROTO ((DIR *)); extern void rewinddir _PROTO ((DIR *)); extern int closedir _PROTO ((DIR *)); extern void seekdir _PROTO ((DIR *, off_t)); extern off_t telldir _PROTO ((DIR *)); extern int chdir _PROTO ((const char *)); extern char * getcwd _PROTO ((char *, size_t)); extern int mkdir _PROTO ((const char *)); extern int rmdir _PROTO ((const char *)); extern int scandir _PROTO ((char *, struct dirent ***, int (*)(const void *, const void *), int (*)(const void *, const void *))); extern int _chdrive _PROTO ((int)); extern int _getdrive _PROTO ((void)); extern char * _getdcwd _PROTO ((int, char *, int)); extern bool IsHPFSFileSystem _PROTO ((char *)); #endif