1/*
2** Distributed under the terms of the MIT License.
3*/
4#ifndef _FSSH_DIRENT_H
5#define _FSSH_DIRENT_H
6
7
8#include "fssh_defs.h"
9
10
11typedef struct fssh_dirent {
12	fssh_dev_t			d_dev;		/* device */
13	fssh_dev_t			d_pdev;		/* parent device (only for queries) */
14	fssh_ino_t			d_ino;		/* inode number */
15	fssh_ino_t			d_pino;		/* parent inode (only for queries) */
16	unsigned short		d_reclen;	/* length of this record, not the name */
17#if __GNUC__ == 2
18	char			d_name[0];	/* name of the entry (null byte terminated) */
19#else
20	char			d_name[];	/* name of the entry (null byte terminated) */
21#endif
22} fssh_dirent_t;
23
24typedef struct {
25	int					fd;
26	struct fssh_dirent	ent;
27} fssh_DIR;
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
33fssh_DIR			*fssh_opendir(const char *dirname);
34struct fssh_dirent	*fssh_readdir(fssh_DIR *dir);
35int					fssh_readdir_r(fssh_DIR *dir, struct fssh_dirent *entry,
36						struct fssh_dirent **_result);
37int					fssh_closedir(fssh_DIR *dir);
38void				fssh_rewinddir(fssh_DIR *dir);
39void 				fssh_seekdir(fssh_DIR *dir, long int loc);
40long int			fssh_telldir(fssh_DIR *);
41
42#ifdef __cplusplus
43}
44#endif
45
46#endif	/* _FSSH_DIRENT_H */
47