blob: 726067f6afa49f4c856e6647e346b2a011c134fa [file] [log] [blame]
Rich Felker0b44a032011-02-12 00:22:29 -05001#ifndef _DIRENT_H
2#define _DIRENT_H
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
Rich Felkerc1a96582012-09-07 23:13:55 -04008#include <features.h>
Rich Felker400c5e52012-09-06 22:44:55 -04009
Rich Felker0b44a032011-02-12 00:22:29 -050010#define __NEED_ino_t
11#define __NEED_off_t
Rich Felker9a470b02012-08-24 14:23:16 -040012#ifdef _BSD_SOURCE
13#define __NEED_size_t
14#endif
Rich Felker0b44a032011-02-12 00:22:29 -050015
16#include <bits/alltypes.h>
17
18typedef struct __DIR_s DIR;
19
20struct dirent
21{
22 ino_t d_ino;
23 off_t d_off;
24 unsigned short d_reclen;
25 unsigned char d_type;
Rich Felkerda88b162011-06-06 18:04:28 -040026 char d_name[256];
Rich Felker0b44a032011-02-12 00:22:29 -050027};
28
Rich Felker06baa2b2011-04-03 10:24:59 -040029#define d_fileno d_ino
30
Rich Felker0b44a032011-02-12 00:22:29 -050031int closedir(DIR *);
32DIR *fdopendir(int);
33DIR *opendir(const char *);
34struct dirent *readdir(DIR *);
Rich Felker400c5e52012-09-06 22:44:55 -040035int readdir_r(DIR *__restrict, struct dirent *__restrict, struct dirent **__restrict);
Rich Felker0b44a032011-02-12 00:22:29 -050036void rewinddir(DIR *);
37void seekdir(DIR *, long);
38long telldir(DIR *);
39int dirfd(DIR *);
40
41int alphasort(const struct dirent **, const struct dirent **);
42int scandir(const char *, struct dirent ***, int (*)(const struct dirent *), int (*)(const struct dirent **, const struct dirent **));
43
Rich Felker419ae6d2012-05-22 21:52:08 -040044#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
Rich Felker5d0d6d92011-03-07 18:32:36 -050045#define DT_UNKNOWN 0
46#define DT_FIFO 1
47#define DT_CHR 2
48#define DT_DIR 4
49#define DT_BLK 6
50#define DT_REG 8
51#define DT_LNK 10
52#define DT_SOCK 12
53#define DT_WHT 14
54#define IFTODT(x) ((x)>>12 & 017)
55#define DTTOIF(x) ((x)<<12)
Rich Felker91f7db22011-03-08 17:34:26 -050056#endif
Rich Felker5d0d6d92011-03-07 18:32:36 -050057
Rich Felkerfbffcee2012-06-13 11:14:38 -040058#ifdef _GNU_SOURCE
59int versionsort(const struct dirent **, const struct dirent **);
60#endif
61
Rich Felker0c42beb2012-08-13 14:50:30 -040062#ifdef _BSD_SOURCE
63int getdents(int, struct dirent *, size_t);
64#endif
65
Rich Felker3b94dab2012-06-04 08:03:56 -040066#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
Rich Felker2dd8d5e2012-05-04 00:13:23 -040067#define dirent64 dirent
68#define readdir64 readdir
69#define readdir64_r readdir_r
70#define scandir64 scandir
71#define alphasort64 alphasort
Rich Felkerfbffcee2012-06-13 11:14:38 -040072#define versionsort64 versionsort
Rich Felker2dd8d5e2012-05-04 00:13:23 -040073#define off64_t off_t
74#define ino64_t ino_t
Rich Felker0c42beb2012-08-13 14:50:30 -040075#ifdef _BSD_SOURCE
76#define getdents64 getdents
77#endif
Rich Felker2dd8d5e2012-05-04 00:13:23 -040078#endif
79
Rich Felker0b44a032011-02-12 00:22:29 -050080#ifdef __cplusplus
Rich Felker91f7db22011-03-08 17:34:26 -050081}
Rich Felker0b44a032011-02-12 00:22:29 -050082#endif
83
84#endif