annotate dirent.h @ 5:958f33b039ae

new user: nuke
author ktk@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 03 Jul 2001 08:00:26 +0000
parents 67a643a734d9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1 #ifdef OS2
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2 #ifndef __DIRENT_H__
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3 #define __DIRENT_H__
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5 #ifdef __EMX__
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6 #include <sys/param.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8 #if defined(__IBMC__) || defined(__IBMCPP__) || defined(XP_W32_MSVC)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9 #include <stdio.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10 #ifdef MAXPATHLEN
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11 #undef MAXPATHLEN
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
12 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
13 #define MAXPATHLEN (FILENAME_MAX*4)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
14 #define MAXNAMLEN FILENAME_MAX
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
15
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
16 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
17 #include <param.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
18 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
19 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
20
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
21 #ifdef __cplusplus
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
22 extern "C" {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
23 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
24
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
25 /* attribute stuff */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
26 #ifndef A_RONLY
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
27 # define A_RONLY 0x01
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
28 # define A_HIDDEN 0x02
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
29 # define A_SYSTEM 0x04
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
30 # define A_LABEL 0x08
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
31 # define A_DIR 0x10
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
32 # define A_ARCHIVE 0x20
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
33 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
34
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
35 struct dirent {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
36 #if defined(OS2) || defined(WIN32) /* use the layout of EMX to avoid trouble */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
37 int d_ino; /* Dummy */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
38 int d_reclen; /* Dummy, same as d_namlen */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
39 int d_namlen; /* length of name */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
40 char d_name[MAXNAMLEN + 1];
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
41 unsigned long d_size;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
42 unsigned short d_attribute; /* attributes (see above) */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
43 unsigned short d_time; /* modification time */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
44 unsigned short d_date; /* modification date */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
45 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
46 char d_name[MAXNAMLEN + 1]; /* garentee null termination */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
47 char d_attribute; /* .. extension .. */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
48 unsigned long d_size; /* .. extension .. */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
49 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
50 };
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
51
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
52 typedef struct _dirdescr DIR;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
53 /* the structs do not have to be defined here */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
54
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
55 extern DIR *opendir(const char *);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
56 extern DIR *openxdir(const char *, unsigned);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
57 extern struct dirent *readdir(DIR *);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
58 extern void seekdir(DIR *, long);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
59 extern long telldir(DIR *);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
60 extern void closedir(DIR *);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
61 #define rewinddir(dirp) seekdir(dirp, 0L)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
62
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
63 extern char * abs_path(const char *name, char *buffer, int len);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
64
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
65 #ifndef S_IFMT
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
66 #define S_IFMT ( S_IFDIR | S_IFREG )
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
67 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
68
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
69 #ifndef S_ISDIR
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
70 #define S_ISDIR( m ) (((m) & S_IFMT) == S_IFDIR)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
71 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
72
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
73 #ifndef S_ISREG
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
74 #define S_ISREG( m ) (((m) & S_IFMT) == S_IFREG)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
75 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
76
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
77 #ifdef __cplusplus
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
78 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
79 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
80
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
81 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
82 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
83
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
84 #ifdef WIN32
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
85 #ifndef __DIRENT_H__
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
86 #define __DIRENT_H__
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
87 /*
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
88 * @(#)msd_dir.h 1.4 87/11/06 Public Domain.
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
89 *
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
90 * A public domain implementation of BSD directory routines for
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
91 * MS-DOS. Written by Michael Rendell ({uunet,utai}michael@garfield),
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
92 * August 1897
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
93 *
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
94 * Extended by Peter Lim (lim@mullian.oz) to overcome some MS DOS quirks
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
95 * and returns 2 more pieces of information - file size & attribute.
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
96 * Plus a little reshuffling of some #define's positions December 1987
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
97 *
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
98 * Some modifications by Martin Junius 02-14-89
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
99 *
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
100 * AK900712
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
101 * AK910410 abs_path - make absolute path
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
102 *
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
103 */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
104
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
105 #ifdef __EMX__
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
106 #include <sys/param.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
107 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
108 #if defined(__IBMC__) || defined(__IBMCPP__) || defined(MSVC)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
109 #include <stdio.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
110 #ifdef MAXPATHLEN
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
111 #undef MAXPATHLEN
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
112 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
113 #define MAXPATHLEN (FILENAME_MAX*4)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
114 #define MAXNAMLEN FILENAME_MAX
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
115 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
116 #include <param.h>
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
117 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
118 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
119
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
120 #ifdef __cplusplus
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
121 extern "C" {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
122 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
123
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
124 /* attribute stuff */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
125 #ifndef A_RONLY
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
126 # define A_RONLY 0x01
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
127 # define A_HIDDEN 0x02
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
128 # define A_SYSTEM 0x04
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
129 # define A_LABEL 0x08
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
130 # define A_DIR 0x10
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
131 # define A_ARCHIVE 0x20
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
132 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
133
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
134 struct dirent {
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
135 #if defined(OS2) || defined(WIN32) /* use the layout of EMX to avoid trouble */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
136 int d_ino; /* Dummy */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
137 int d_reclen; /* Dummy, same as d_namlen */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
138 int d_namlen; /* length of name */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
139 char d_name[MAXNAMLEN + 1];
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
140 unsigned long d_size;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
141 unsigned short d_attribute; /* attributes (see above) */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
142 unsigned short d_time; /* modification time */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
143 unsigned short d_date; /* modification date */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
144 #else
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
145 char d_name[MAXNAMLEN + 1]; /* garentee null termination */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
146 char d_attribute; /* .. extension .. */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
147 unsigned long d_size; /* .. extension .. */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
148 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
149 };
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
150
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
151 typedef struct _dirdescr DIR;
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
152 /* the structs do not have to be defined here */
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
153
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
154 extern DIR *opendir(const char *);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
155 extern DIR *openxdir(const char *, unsigned);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
156 extern struct dirent *readdir(DIR *);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
157 extern void seekdir(DIR *, long);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
158 extern long telldir(DIR *);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
159 extern void closedir(DIR *);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
160 #define rewinddir(dirp) seekdir(dirp, 0L)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
161
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
162 extern char * abs_path(const char *name, char *buffer, int len);
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
163
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
164 #ifndef S_IFMT
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
165 #define S_IFMT ( S_IFDIR | S_IFREG )
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
166 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
167
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
168 #ifndef S_ISDIR
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
169 #define S_ISDIR( m ) (((m) & S_IFMT) == S_IFDIR)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
170 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
171
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
172 #ifndef S_ISREG
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
173 #define S_ISREG( m ) (((m) & S_IFMT) == S_IFREG)
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
174 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
175
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
176 #ifdef __cplusplus
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
177 }
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
178 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
179
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
180 #endif
ktk@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
181 #endif