1/*
2 * dirent.h
3 */
4
5#ifndef _DIRENT_H
6#  define _DIRENT_H
7
8#  include <sys/types.h>
9#  include <limits.h>
10
11#define MAXNAMLEN	255	/* maximum filename length		*/
12
13#ifndef NAME_MAX
14#define	NAME_MAX	(MAXNAMLEN - 1)
15#endif
16
17struct dirent			/* data from getdents()/readdir()	*/
18{
19    ino_t	d_ino;		/* inode number of entry		*/
20    off_t	d_off;		/* offset of disk directory entry	*/
21    wchar_t	d_reclen;	/* length of this record		*/
22    char	d_name[MAXNAMLEN + 1];
23};
24
25
26/* The following nonportable ugliness could have been avoided by defining
27 * DIRENTSIZ and DIRENTBASESIZ to also have (struct dirent *) arguments.
28 * There shouldn't be any problem if you avoid using the DIRENTSIZ() macro.
29 */
30
31#define	DIRENTBASESIZ		(((struct dirent *)0)->d_name \
32				- (char *)&((struct dirent *)0)->d_ino)
33
34#define	DIRENTSIZ(namlen)	((DIRENTBASESIZ + sizeof(long) + (namlen)) \
35				/ sizeof(long) * sizeof(long))
36
37
38
39#  ifndef _BOOL_T_DEFINED
40typedef unsigned char	bool;
41#  define _BOOL_T_DEFINED
42#  endif
43
44#  define DIRBUF	8192	/* buffer size for fs-indep. dirs	*/
45				/* must in general be larger than the	*/
46				/* filesystem buffer size		*/
47
48struct _dircontents {
49    char		*_d_entry;
50    struct _dircontents	*_d_next;
51};
52
53typedef struct _dirdesc {
54    int			dd_id;	/* uniquely identify each open directory */
55    long		dd_loc;	/* where we are in directory entry is this */
56    struct _dircontents	*dd_contents;	/* pointer to contents of dir	*/
57    struct _dircontents	*dd_cp;		/* pointer to current position	*/
58} DIR;
59
60
61#if defined (__STDC__)
62#  define _PROTO(p)	p
63#else
64#  define _PROTO(p)	()
65#  undef  const
66#  undef  volatile
67#endif
68
69/* Functions */
70
71extern DIR *		opendir	_PROTO ((const char *));
72extern struct dirent * 	readdir _PROTO ((DIR *));
73extern void		rewinddir _PROTO ((DIR *));
74
75extern int		closedir _PROTO ((DIR *));
76extern void		seekdir	_PROTO ((DIR *, off_t));
77extern off_t		telldir	_PROTO ((DIR *));
78
79extern int		chdir _PROTO ((const char *));
80extern char * 		getcwd _PROTO ((char *, size_t));
81
82extern int		mkdir _PROTO ((const char *));
83
84extern int		rmdir _PROTO ((const char *));
85extern int		scandir _PROTO ((char *,
86			 struct dirent ***,
87			 int (*)(const void *, const void *),
88			 int (*)(const void *, const void *)));
89
90extern int		_chdrive _PROTO ((int));
91extern int		_getdrive _PROTO ((void));
92extern char * 		_getdcwd _PROTO ((int, char *, int));
93
94extern bool		IsHPFSFileSystem _PROTO ((char *));
95
96#endif
97