| 227 |
dpurdie |
1 |
#ifndef DIRENT_H_INCLUDED
|
|
|
2 |
#define DIRENT_H_INCLUDED
|
|
|
3 |
/* Filename: dirent.h
|
|
|
4 |
*
|
|
|
5 |
* Purpose: UNIX directory services
|
|
|
6 |
*
|
|
|
7 |
* Note: dirfd() not supported
|
|
|
8 |
*/
|
|
|
9 |
#if !defined(WIN32)
|
|
|
10 |
#error Target not WIN32 ...
|
|
|
11 |
#endif
|
|
|
12 |
#include <unistd.h> /* UNIX types */
|
|
|
13 |
#if !defined(_POSIX_)
|
|
|
14 |
#define _POSIX_
|
|
|
15 |
#endif
|
|
|
16 |
#include <limits.h> /* PATH_MAX, NAME_MAX */
|
|
|
17 |
|
|
|
18 |
#define DIRBLKSIZ 1024
|
|
|
19 |
|
|
|
20 |
#if !defined(MAXPATHLEN)
|
|
|
21 |
#define MAXPATHLEN PATH_MAX
|
|
|
22 |
#endif
|
|
|
23 |
#if !defined(MAXNAMLEN)
|
|
|
24 |
#define MAXNAMLEN NAME_MAX
|
|
|
25 |
#endif
|
|
|
26 |
|
|
|
27 |
struct dirent {
|
|
|
28 |
#define d_ino d_fileno /* Backward compatibility */
|
|
|
29 |
u_long d_fileno; /* File number directory */
|
|
|
30 |
u_short d_reclen; /* Length of this record */
|
|
|
31 |
u_short d_namlen; /* Length of string in d_name */
|
|
|
32 |
#if defined(_POSIX_SOURCE) && !defined(_DIRENT_SOURCE)
|
|
|
33 |
long d_reserved1;
|
|
|
34 |
long d_reserved2;
|
|
|
35 |
u_long d_reserved3;
|
|
|
36 |
u_long d_reserved4;
|
|
|
37 |
#else
|
|
|
38 |
long d_ctime; /* Creation time */
|
|
|
39 |
long d_mtime; /* Modification time */
|
|
|
40 |
u_long d_size; /* File size */
|
|
|
41 |
u_long d_attr; /* File attributes */
|
|
|
42 |
#endif /*_POSIX_SOURCE*/
|
|
|
43 |
char d_name[ MAXNAMLEN+1 ];
|
|
|
44 |
};
|
|
|
45 |
|
|
|
46 |
|
|
|
47 |
#if defined(_POSIX_SOURCE) && !defined(_DIRENT_SOURCE)
|
|
|
48 |
typedef void *DIR;
|
|
|
49 |
#else
|
|
|
50 |
#if defined(_DIRENT_SOURCE) || defined(DEBUG)
|
|
|
51 |
/* _dirlist, linked list of directory entries
|
|
|
52 |
* only required within 'dirent.c'.
|
|
|
53 |
*/
|
|
|
54 |
struct _dirlist {
|
|
|
55 |
long dl_ctime;
|
|
|
56 |
long dl_mtime;
|
|
|
57 |
u_long dl_size;
|
|
|
58 |
u_long dl_size2;
|
|
|
59 |
u_long dl_attr;
|
|
|
60 |
char *dl_entry;
|
|
|
61 |
struct _dirlist *dl_next;
|
|
|
62 |
};
|
|
|
63 |
#endif /*_DIRENT_SOURCE*/
|
|
|
64 |
|
|
|
65 |
typedef struct _dirdesc {
|
|
|
66 |
int dd_fd; /* File descriptor associated with directory */
|
|
|
67 |
int dd_id; /* Uniquely identify open dir */
|
|
|
68 |
long dd_loc; /* Offset in current buffer */
|
|
|
69 |
long dd_size; /* Amount of data returned by getdirentries */
|
|
|
70 |
char *dd_buf; /* Data buffer */
|
|
|
71 |
int dd_len; /* Size of data buffer */
|
|
|
72 |
long dd_seek; /* Magic cookie returned by getdirentries */
|
|
|
73 |
void *dd_ddloc; /* Linked list of ddloc structs for telldir/seekdir */
|
|
|
74 |
/* Extensions, USE AT OWN RISK */
|
|
|
75 |
struct _dirlist *dd_contents;
|
|
|
76 |
struct _dirlist *dd_current;
|
|
|
77 |
/* End of extensions */
|
|
|
78 |
} DIR;
|
|
|
79 |
#endif /* _POSIX_SOURCE */
|
|
|
80 |
|
|
|
81 |
#include <cdefs.h>
|
|
|
82 |
|
|
|
83 |
__BEGIN_DECLS
|
|
|
84 |
extern DIR *opendir __P((char *));
|
|
|
85 |
extern int closedir __P((DIR *));
|
|
|
86 |
extern struct dirent *readdir __P((DIR *));
|
|
|
87 |
extern void rewinddir __P((DIR *));
|
|
|
88 |
#ifndef _POSIX_SOURCE
|
|
|
89 |
extern void seekdir __P((DIR *, long));
|
|
|
90 |
extern long telldir __P((DIR *));
|
|
|
91 |
extern void rewinddir __P((DIR *));
|
|
|
92 |
extern int alphasort __P((const void *, const void *));
|
|
|
93 |
extern int scandir __P(());
|
|
|
94 |
extern int getdirentries __P((int, char *, int, long *));
|
|
|
95 |
#endif /*_POSIX_SOURCE*/
|
|
|
96 |
extern int IsHPFSFileSystem __P((const char *name));
|
|
|
97 |
__END_DECLS
|
|
|
98 |
|
|
|
99 |
#endif /*DIRENT_H_INCLUDED*/
|