Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
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*/