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
12typedef 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	char			d_name[1];	/* name of the entry (null byte terminated) */
19} dirent_t;
20
21typedef struct __DIR DIR;
22
23#ifndef MAXNAMLEN
24#	ifdef  NAME_MAX
25#		define MAXNAMLEN NAME_MAX
26#	else
27#		define MAXNAMLEN 256
28#	endif
29#endif
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
35DIR*			fdopendir(int fd);
36DIR*			opendir(const char* dirName);
37struct dirent*	readdir(DIR* dir);
38int				readdir_r(DIR* dir, struct dirent* entry,
39					struct dirent** _result);
40int				closedir(DIR* dir);
41void			rewinddir(DIR* dir);
42void 			seekdir(DIR* dir, long int position);
43long int		telldir(DIR* dir);
44int				dirfd(DIR* dir);
45
46int				alphasort(const struct dirent** entry1,
47					const struct dirent** entry2);
48int				scandir(const char* dir, struct dirent*** _entryArray,
49					int (*selectFunc)(const struct dirent*),
50					int (*compareFunc)(const struct dirent** entry1,
51						const struct dirent** entry2));
52
53#ifdef __cplusplus
54}
55#endif
56
57#endif	/* _DIRENT_H */
58