xref: /haiku/headers/posix/dirent.h (revision 4c8e85b316c35a9161f5a1c50ad70bc91c83a76f)
1 /*
2  * Copyright 2002-2012 Haiku, Inc. All Rights Reserved.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef _DIRENT_H
6 #define _DIRENT_H
7 
8 
9 #include <sys/types.h>
10 
11 
12 typedef struct dirent {
13 	dev_t			d_dev;		/* device */
14 	dev_t			d_pdev;		/* parent device (only for queries) */
15 	ino_t			d_ino;		/* inode number */
16 	ino_t			d_pino;		/* parent inode (only for queries) */
17 	unsigned short	d_reclen;	/* length of this record, not the name */
18 #if __GNUC__ == 2
19 	char			d_name[0];	/* name of the entry (null byte terminated) */
20 #else
21 	char			d_name[];	/* name of the entry (null byte terminated) */
22 #endif
23 } dirent_t;
24 
25 typedef struct __DIR DIR;
26 
27 #ifndef MAXNAMLEN
28 #	ifdef  NAME_MAX
29 #		define MAXNAMLEN NAME_MAX
30 #	else
31 #		define MAXNAMLEN 256
32 #	endif
33 #endif
34 
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38 
39 DIR*			fdopendir(int fd);
40 DIR*			opendir(const char* dirName);
41 struct dirent*	readdir(DIR* dir);
42 int				readdir_r(DIR* dir, struct dirent* entry,
43 					struct dirent** _result);
44 int				closedir(DIR* dir);
45 void			rewinddir(DIR* dir);
46 void 			seekdir(DIR* dir, long int position);
47 long int		telldir(DIR* dir);
48 int				dirfd(DIR* dir);
49 
50 int				alphasort(const struct dirent** entry1,
51 					const struct dirent** entry2);
52 int				scandir(const char* dir, struct dirent*** _entryArray,
53 					int (*selectFunc)(const struct dirent*),
54 					int (*compareFunc)(const struct dirent** entry1,
55 						const struct dirent** entry2));
56 
57 #ifdef __cplusplus
58 }
59 #endif
60 
61 #endif	/* _DIRENT_H */
62