Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/cmd/3d/dir_3d.h
1808 views
1
/***********************************************************************
2
* *
3
* This software is part of the ast package *
4
* Copyright (c) 1989-2011 AT&T Intellectual Property *
5
* and is licensed under the *
6
* Eclipse Public License, Version 1.0 *
7
* by AT&T Intellectual Property *
8
* *
9
* A copy of the License is available at *
10
* http://www.eclipse.org/org/documents/epl-v10.html *
11
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
12
* *
13
* Information and Software Systems Research *
14
* AT&T Research *
15
* Florham Park NJ *
16
* *
17
* Glenn Fowler <[email protected]> *
18
* David Korn <[email protected]> *
19
* Eduardo Krell <[email protected]> *
20
* *
21
***********************************************************************/
22
#pragma prototyped
23
/*
24
* AT&T Research
25
*
26
* directory stream access library private definitions
27
* handles 3d file system
28
*/
29
30
#ifndef _DIR3D_H
31
#define _DIR3D_H
32
33
#include "3d.h"
34
35
#if !_mem_DIR
36
#undef _lib_opendir
37
#endif
38
39
#define DIRENT_ILLEGAL_ACCESS 1
40
#define DIR DIRDIR
41
42
#if defined(__STDPP__directive) && defined(__STDPP__hide)
43
__STDPP__directive pragma pp:hide opendir _opendir __opendir
44
__STDPP__directive pragma pp:hide readdir _readdir __readdir readdir64 _readdir64 __readdir64
45
__STDPP__directive pragma pp:hide rewinddir _rewinddir __rewinddir rewinddir64 _rewinddir64 __rewinddir64
46
__STDPP__directive pragma pp:hide seekdir _seekdir __seekdir seekdir64 _seekdir64 __seekdir64
47
__STDPP__directive pragma pp:hide telldir _telldir __telldir telldir64 _telldir64 __telldir64
48
__STDPP__directive pragma pp:hide closedir _closedir __closedir
49
__STDPP__directive pragma pp:hide _getdents __getdents getdents64 _getdents64 __getdents64 getdirentries
50
#else
51
#define opendir DIRopendir
52
#define _opendir _DIRopendir
53
#define __opendir __DIRopendir
54
#define readdir DIRreaddir
55
#define _readdir _DIRreaddir
56
#define __readdir __DIRreaddir
57
#define readdir64 DIRreaddir64
58
#define _readdir64 _DIRreaddir64
59
#define __readdir64 __DIRreaddir64
60
#if _lib_rewinddir
61
#define rewinddir DIRrewinddir
62
#define _rewinddir _DIRrewinddir
63
#define __rewinddir __DIRrewinddir
64
#define rewinddir64 DIRrewinddir64
65
#define _rewinddir64 _DIRrewinddir64
66
#define __rewinddir64 __DIRrewinddir64
67
#endif
68
#define seekdir DIRseekdir
69
#define _seekdir _DIRseekdir
70
#define __seekdir __DIRseekdir
71
#define seekdir64 DIRseekdir64
72
#define _seekdir64 _DIRseekdir64
73
#define __seekdir64 __DIRseekdir64
74
#if _lib_telldir
75
#define telldir DIRtelldir
76
#define _telldir _DIRtelldir
77
#define __telldir __DIRtelldir
78
#define telldir64 DIRtelldir64
79
#define _telldir64 _DIRtelldir64
80
#define __telldir64 __DIRtelldir64
81
#endif
82
#define closedir DIRclosedir
83
#define _closedir _DIRclosedir
84
#define __closedir __DIRclosedir
85
#define _getdents _DIRgetdents
86
#define __getdents __DIRgetdents
87
#define getdents64 DIRgetdents64
88
#define _getdents64 _DIRgetdents64
89
#define __getdents64 __DIRgetdents64
90
#define getdirentries DIRgetdirentries
91
#endif
92
93
#define _BLD_ast 1
94
#include <ast_dir.h>
95
#undef _BLD_ast
96
97
#if _lib_readdir64 && _typ_struct_dirent64
98
#undef dirent
99
#undef DIRdirent
100
#define DIRdirent dirent
101
#endif
102
103
#include <hash.h>
104
105
#if !defined(SYS3D_opendir)
106
extern DIR* OPENDIR(const char*);
107
#endif
108
#if !defined(SYS3D_readdir)
109
extern struct dirent* READDIR(DIR*);
110
#endif
111
#if !defined(SYS3D_seekdir)
112
extern void SEEKDIR(DIR*, long);
113
#endif
114
#if !defined(SYS3D_telldir)
115
extern long TELLDIR(DIR*);
116
#endif
117
#if !defined(SYS3D_rewinddir)
118
extern void REWINDDIR(DIR*);
119
#endif
120
#if !defined(SYS3D_closedir)
121
extern void CLOSEDIR(DIR*);
122
#endif
123
124
#undef DIR
125
126
#if defined(__STDPP__directive) && defined(__STDPP__hide)
127
__STDPP__directive pragma pp:nohide opendir _opendir __opendir
128
__STDPP__directive pragma pp:nohide readdir _readdir __readdir readdir64 _readdir64 __readdir64
129
__STDPP__directive pragma pp:nohide rewinddir _rewinddir __rewinddir rewinddir64 _rewinddir64 __rewinddir64
130
__STDPP__directive pragma pp:nohide seekdir _seekdir __seekdir seekdir64 _seekdir64 __seekdir64
131
__STDPP__directive pragma pp:nohide telldir _telldir __telldir telldir64 _telldir64 __telldir64
132
__STDPP__directive pragma pp:nohide closedir _closedir __closedir
133
__STDPP__directive pragma pp:nohide _getdents __getdents getdents64 _getdents64 __getdents64 getdirentries
134
#else
135
#undef opendir
136
#undef _opendir
137
#undef __opendir
138
#undef readdir
139
#undef _readdir
140
#undef __readdir
141
#undef readdir64
142
#undef _readdir64
143
#undef __readdir64
144
#ifndef REWINDDIR
145
#if _lib_rewinddir
146
#undef rewinddir
147
#undef _rewinddir
148
#undef __rewinddir
149
#undef rewinddir64
150
#undef _rewinddir64
151
#undef __rewinddir64
152
#else
153
#define REWINDDIR(p) rewinddir(p)
154
#define REWINDDIR64(p) rewinddir64(p)
155
#endif
156
#endif
157
#undef seekdir
158
#undef _seekdir
159
#undef __seekdir
160
#undef seekdir64
161
#undef _seekdir64
162
#undef __seekdir64
163
#ifndef TELLDIR
164
#if _lib_telldir
165
#undef telldir
166
#undef _telldir
167
#undef __telldir
168
#undef telldir64
169
#undef _telldir64
170
#undef __telldir64
171
#else
172
#define TELLDIR64(p) telldir64(p)
173
#endif
174
#endif
175
#undef closedir
176
#undef _closedir
177
#undef __closedir
178
#undef _getdents
179
#undef __getdents
180
#undef getdents64
181
#undef _getdents64
182
#undef __getdents64
183
#undef getdirentries
184
#endif
185
186
#if _mem_DIR
187
#define CHEATDIR(p) ((p)->dir = *(p)->viewp->dirp)
188
#else
189
#define CHEATDIR(p)
190
#endif
191
192
typedef struct
193
{
194
DIRDIR* dirp; /* system stream pointer */
195
ino_t opaque; /* opaque inode number */
196
int level; /* view level */
197
} Dir_physical_t;
198
199
typedef struct
200
{
201
int fd; /* placeholder for dirfd() */
202
#if _mem_DIR
203
DIRDIR dir; /* in case user checks *DIRDIR */
204
#endif
205
Dir_physical_t* viewp; /* current directory in view */
206
Dir_physical_t view[TABSIZE]; /* dirp's in view */
207
Hash_table_t* overlay; /* directory overlay hash */
208
int boundary; /* return . at each view level */
209
} DIR; /* directory stream descriptor */
210
211
extern int closedir(DIR*);
212
extern DIR* opendir(const char*);
213
#if _HUH_2008_11_21
214
extern struct dirent* readdir(DIR*);
215
#endif
216
#if _lib_rewinddir && !defined(rewinddir)
217
extern void rewinddir(DIR*);
218
#endif
219
extern void seekdir(DIR*, long);
220
#if _lib_telldir && !defined(telldir)
221
extern long telldir(DIR*);
222
#endif
223
224
#endif
225
226