VSF Documented
dirent.h
Go to the documentation of this file.
1#ifndef __VSF_LINUX_DIRENT_H__
2#define __VSF_LINUX_DIRENT_H__
3
5
6#if VSF_LINUX_CFG_RELATIVE_PATH == ENABLED
7# include "./sys/types.h"
8#else
9# include <sys/types.h>
10#endif
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16#if VSF_LINUX_CFG_WRAPPER == ENABLED
17#define opendir VSF_LINUX_WRAPPER(opendir)
18#define fdopendir VSF_LINUX_WRAPPER(fdopendir)
19#define readdir VSF_LINUX_WRAPPER(readdir)
20#define readdir64 VSF_LINUX_WRAPPER(readdir64)
21#define readdir_r VSF_LINUX_WRAPPER(readdir_r)
22#define readdir64_r VSF_LINUX_WRAPPER(readdir64_r)
23#define rewinddir VSF_LINUX_WRAPPER(rewinddir)
24#define telldir VSF_LINUX_WRAPPER(telldir)
25#define seekdir VSF_LINUX_WRAPPER(seekdir)
26#define closedir VSF_LINUX_WRAPPER(closedir)
27#define scandir VSF_LINUX_WRAPPER(scandir)
28#define alphasort VSF_LINUX_WRAPPER(alphasort)
29#define versionsort VSF_LINUX_WRAPPER(versionsort)
30#define scandir64 VSF_LINUX_WRAPPER(scandir64)
31#define alphasort64 VSF_LINUX_WRAPPER(alphasort64)
32#define versionsort64 VSF_LINUX_WRAPPER(versionsort64)
33#endif
34
35struct dirent {
38 unsigned short d_reclen;
39 unsigned char d_type;
40 char d_name[256];
41};
42struct dirent64 {
45 unsigned short d_reclen;
46 unsigned char d_type;
47 char d_name[256];
48};
49typedef struct vsf_linux_fd_t DIR;
50
51#if VSF_LINUX_APPLET_USE_DIRENT == ENABLED
70# ifndef __VSF_APPLET__
72# endif
73#endif
74
75#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_DIRENT_LIB__))\
76 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_DIRENT == ENABLED
77
78#ifndef VSF_LINUX_APPLET_DIRENT_VPLT
79# if VSF_LINUX_USE_APPLET == ENABLED
80# define VSF_LINUX_APPLET_DIRENT_VPLT \
81 ((vsf_linux_dirent_vplt_t *)(VSF_LINUX_APPLET_VPLT->dirent_vplt))
82# else
83# define VSF_LINUX_APPLET_DIRENT_VPLT \
84 ((vsf_linux_dirent_vplt_t *)vsf_vplt((void *)0))
85# endif
86#endif
87
88#define VSF_LINUX_APPLET_DIRENT_ENTRY(__NAME) \
89 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_DIRENT_VPLT, __NAME)
90#define VSF_LINUX_APPLET_DIRENT_IMP(...) \
91 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_DIRENT_VPLT, __VA_ARGS__)
92
93VSF_LINUX_APPLET_DIRENT_IMP(opendir, DIR *, const char *name) {
95 return VSF_LINUX_APPLET_DIRENT_ENTRY(opendir)(name);
96}
97VSF_LINUX_APPLET_DIRENT_IMP(fdopendir, DIR *, int fd) {
99 return VSF_LINUX_APPLET_DIRENT_ENTRY(fdopendir)(fd);
100}
101VSF_LINUX_APPLET_DIRENT_IMP(readdir, struct dirent *, DIR *dir) {
103 return VSF_LINUX_APPLET_DIRENT_ENTRY(readdir)(dir);
104}
105VSF_LINUX_APPLET_DIRENT_IMP(readdir64, struct dirent64 *, DIR *dir) {
107 return VSF_LINUX_APPLET_DIRENT_ENTRY(readdir64)(dir);
108}
109VSF_LINUX_APPLET_DIRENT_IMP(readdir_r, int, DIR *dirp, struct dirent *entry, struct dirent **result) {
111 return VSF_LINUX_APPLET_DIRENT_ENTRY(readdir_r)(dirp, entry, result);
112}
113VSF_LINUX_APPLET_DIRENT_IMP(readdir64_r, int, DIR *dirp, struct dirent64 *entry, struct dirent64 **result) {
115 return VSF_LINUX_APPLET_DIRENT_ENTRY(readdir64_r)(dirp, entry, result);
116}
117VSF_LINUX_APPLET_DIRENT_IMP(rewinddir, void, DIR *dir) {
119 VSF_LINUX_APPLET_DIRENT_ENTRY(rewinddir)(dir);
120}
121VSF_LINUX_APPLET_DIRENT_IMP(telldir, long, DIR *dir) {
123 return VSF_LINUX_APPLET_DIRENT_ENTRY(telldir)(dir);
124}
125VSF_LINUX_APPLET_DIRENT_IMP(seekdir, void, DIR *dir, long loc) {
127 VSF_LINUX_APPLET_DIRENT_ENTRY(seekdir)(dir, loc);
128}
129VSF_LINUX_APPLET_DIRENT_IMP(closedir, int, DIR *dir) {
131 return VSF_LINUX_APPLET_DIRENT_ENTRY(closedir)(dir);
132}
133VSF_LINUX_APPLET_DIRENT_IMP(scandir, int, const char *dir, struct dirent ***namelist, int (*filter)(const struct dirent *), int (*compare)(const struct dirent **, const struct dirent **)) {
135 return VSF_LINUX_APPLET_DIRENT_ENTRY(scandir)(dir, namelist, filter, compare);
136}
137VSF_LINUX_APPLET_DIRENT_IMP(alphasort, int, const struct dirent **a, const struct dirent **b) {
139 return VSF_LINUX_APPLET_DIRENT_ENTRY(alphasort)(a, b);
140}
141VSF_LINUX_APPLET_DIRENT_IMP(versionsort, int, const struct dirent **a, const struct dirent **b) {
143 return VSF_LINUX_APPLET_DIRENT_ENTRY(versionsort)(a, b);
144}
145
146#else // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_DIRENT
147
148DIR * opendir(const char *name);
149DIR * fdopendir(int fd);
150struct dirent * readdir(DIR *dir);
151struct dirent64 * readdir64(DIR *dir);
152int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
153int readdir64_r(DIR *dirp, struct dirent64 *entry, struct dirent64 **result);
154void rewinddir(DIR *dir);
155long telldir(DIR *dir);
156void seekdir(DIR *dir, long loc);
157int closedir(DIR *dir);
158int scandir(const char *dir, struct dirent ***namelist,
159 int (*filter)(const struct dirent *),
160 int (*compare)(const struct dirent **, const struct dirent **));
161int alphasort(const struct dirent **a, const struct dirent **b);
162int versionsort(const struct dirent **a, const struct dirent **b);
163
164int scandir64(const char *dir, struct dirent64 ***namelist,
165 int (*filter)(const struct dirent64 *),
166 int (*compare)(const struct dirent64 **, const struct dirent64 **));
167int alphasort64(const struct dirent64 **a, const struct dirent64 **b);
168int versionsort64(const struct dirent64 **a, const struct dirent64 **b);
169
170#endif // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_DIRENT
171
172#ifdef __cplusplus
173}
174#endif
175
176#endif
Definition vsf_linux_fs.h:116
__VSF_VPLT_DECORATOR__ vsf_linux_dirent_vplt_t vsf_linux_dirent_vplt
Definition vsf_linux_fs.c:3945
#define rewinddir
Definition dirent.h:23
#define readdir64_r
Definition dirent.h:22
#define readdir
Definition dirent.h:19
#define scandir64
Definition dirent.h:30
#define readdir64
Definition dirent.h:20
#define alphasort64
Definition dirent.h:31
#define versionsort
Definition dirent.h:29
#define alphasort
Definition dirent.h:28
struct vsf_linux_dirent_vplt_t vsf_linux_dirent_vplt_t
#define scandir
Definition dirent.h:27
#define readdir_r
Definition dirent.h:21
#define fdopendir
Definition dirent.h:18
#define seekdir
Definition dirent.h:25
#define versionsort64
Definition dirent.h:32
#define opendir
Definition dirent.h:17
#define telldir
Definition dirent.h:24
#define closedir
Definition dirent.h:26
unsigned long long ino64_t
Definition types.h:128
long long off64_t
Definition types.h:125
long off_t
Definition types.h:123
unsigned long ino_t
Definition types.h:127
Definition dirent.h:42
char d_name[256]
Definition dirent.h:47
off64_t d_off
Definition dirent.h:44
unsigned char d_type
Definition dirent.h:46
unsigned short d_reclen
Definition dirent.h:45
ino64_t d_ino
Definition dirent.h:43
Definition dirent.h:35
unsigned short d_reclen
Definition dirent.h:38
ino_t d_ino
Definition dirent.h:36
unsigned char d_type
Definition dirent.h:39
char d_name[256]
Definition dirent.h:40
off_t d_off
Definition dirent.h:37
Definition dirent.h:52
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(scandir)
VSF_APPLET_VPLT_ENTRY_MOD_DEF(libdirent)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(alphasort)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(versionsort)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(fdopendir)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(readdir64_r)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(readdir)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(seekdir)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(opendir)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(closedir)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(readdir_r)
vsf_vplt_info_t info
Definition dirent.h:53
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(rewinddir)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(telldir)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(readdir64)
Definition vsf_cfg.h:95
#define __VSF_VPLT_DECORATOR__
Definition vsf_cfg.h:93
#define VSF_APPLET_VPLT_ENTRY_FUNC_TRACE()
Definition vsf_cfg.h:165
Generated from commit: vsfteam/vsf@ed71743