1da2e3ebdSchin /***********************************************************************
2da2e3ebdSchin *                                                                      *
3da2e3ebdSchin *               This software is part of the ast package               *
4*b30d1939SAndy Fiddaman *          Copyright (c) 1985-2011 AT&T Intellectual Property          *
5da2e3ebdSchin *                      and is licensed under the                       *
6*b30d1939SAndy Fiddaman *                 Eclipse Public License, Version 1.0                  *
77c2fbfb3SApril Chin *                    by AT&T Intellectual Property                     *
8da2e3ebdSchin *                                                                      *
9da2e3ebdSchin *                A copy of the License is available at                 *
10*b30d1939SAndy Fiddaman *          http://www.eclipse.org/org/documents/epl-v10.html           *
11*b30d1939SAndy Fiddaman *         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
12da2e3ebdSchin *                                                                      *
13da2e3ebdSchin *              Information and Software Systems Research               *
14da2e3ebdSchin *                            AT&T Research                             *
15da2e3ebdSchin *                           Florham Park NJ                            *
16da2e3ebdSchin *                                                                      *
17da2e3ebdSchin *                 Glenn Fowler <gsf@research.att.com>                  *
18da2e3ebdSchin *                  David Korn <dgk@research.att.com>                   *
19da2e3ebdSchin *                   Phong Vo <kpv@research.att.com>                    *
20da2e3ebdSchin *                                                                      *
21da2e3ebdSchin ***********************************************************************/
22da2e3ebdSchin #pragma prototyped
23da2e3ebdSchin /*
24da2e3ebdSchin  * AT&T Research
25da2e3ebdSchin  *
26da2e3ebdSchin  * directory stream access library private definitions
27da2e3ebdSchin  * library routines should include this file rather than <dirent.h>
28da2e3ebdSchin  */
29da2e3ebdSchin 
30da2e3ebdSchin #ifndef _DIRLIB_H
31da2e3ebdSchin #define _DIRLIB_H
32da2e3ebdSchin 
33da2e3ebdSchin #if defined(__STDPP__directive) && defined(__STDPP__hide)
34da2e3ebdSchin __STDPP__directive pragma pp:hide getdents getdirentries
35da2e3ebdSchin #else
36da2e3ebdSchin #undef	getdents
37da2e3ebdSchin #define getdents	______getdents
38da2e3ebdSchin #undef	getdirentries
39da2e3ebdSchin #define getdirentries	______getdirentries
40da2e3ebdSchin #endif
41da2e3ebdSchin 
42da2e3ebdSchin #include <ast.h>
43da2e3ebdSchin #include <errno.h>
44da2e3ebdSchin 
45da2e3ebdSchin #if _lib_opendir && ( _hdr_dirent || _hdr_ndir || _sys_dir )
46da2e3ebdSchin 
47da2e3ebdSchin #define _dir_ok		1
48da2e3ebdSchin 
49da2e3ebdSchin #include <ls.h>
50da2e3ebdSchin 
51da2e3ebdSchin #ifndef _DIRENT_H
52da2e3ebdSchin #if _hdr_dirent
53da2e3ebdSchin #if _typ_off64_t
54da2e3ebdSchin #undef	off_t
55da2e3ebdSchin #endif
56da2e3ebdSchin #include <dirent.h>
57da2e3ebdSchin #if _typ_off64_t
58da2e3ebdSchin #define off_t	off64_t
59da2e3ebdSchin #endif
60da2e3ebdSchin #else
61da2e3ebdSchin #if _hdr_ndir
62da2e3ebdSchin #include <ndir.h>
63da2e3ebdSchin #else
64da2e3ebdSchin #include <sys/dir.h>
65da2e3ebdSchin #endif
66da2e3ebdSchin #ifndef dirent
67da2e3ebdSchin #define dirent	direct
68da2e3ebdSchin #endif
69da2e3ebdSchin #endif
70da2e3ebdSchin #endif
71da2e3ebdSchin 
72da2e3ebdSchin #define DIRdirent	dirent
73da2e3ebdSchin 
74da2e3ebdSchin #else
75da2e3ebdSchin 
76da2e3ebdSchin #define dirent	DIRdirent
77da2e3ebdSchin 
78da2e3ebdSchin #if defined(__STDPP__directive) && defined(__STDPP__hide)
79da2e3ebdSchin __STDPP__directive pragma pp:hide DIR closedir opendir readdir seekdir telldir
80da2e3ebdSchin #else
81da2e3ebdSchin #undef	DIR
82da2e3ebdSchin #define DIR		______DIR
83da2e3ebdSchin #undef	closedir
84da2e3ebdSchin #define closedir	______closedir
85da2e3ebdSchin #undef	opendir
86da2e3ebdSchin #define opendir		______opendir
87da2e3ebdSchin #undef	readdir
88da2e3ebdSchin #define readdir		______readdir
89da2e3ebdSchin #undef	seekdir
90da2e3ebdSchin #define seekdir		______seekdir
91da2e3ebdSchin #undef	telldir
92da2e3ebdSchin #define telldir		______telldir
93da2e3ebdSchin #endif
94da2e3ebdSchin 
95da2e3ebdSchin #include <ast_param.h>
96da2e3ebdSchin 
97da2e3ebdSchin #include <ls.h>
98da2e3ebdSchin #include <limits.h>
99da2e3ebdSchin 
100da2e3ebdSchin #ifndef _DIRENT_H
101da2e3ebdSchin #if _hdr_dirent
102da2e3ebdSchin #if _typ_off64_t
103da2e3ebdSchin #undef	off_t
104da2e3ebdSchin #endif
105da2e3ebdSchin #include <dirent.h>
106da2e3ebdSchin #if _typ_off64_t
107da2e3ebdSchin #define off_t	off64_t
108da2e3ebdSchin #endif
109da2e3ebdSchin #else
110da2e3ebdSchin #if _hdr_direntry
111da2e3ebdSchin #include <direntry.h>
112da2e3ebdSchin #else
113da2e3ebdSchin #include <sys/dir.h>
114da2e3ebdSchin #endif
115da2e3ebdSchin #endif
116da2e3ebdSchin #endif
117da2e3ebdSchin 
118da2e3ebdSchin #undef	dirent
119da2e3ebdSchin #if defined(__STDPP__directive) && defined(__STDPP__hide)
120da2e3ebdSchin __STDPP__directive pragma pp:nohide DIR closedir opendir readdir seekdir telldir
121da2e3ebdSchin #else
122da2e3ebdSchin #undef	DIR
123da2e3ebdSchin #undef	closedir
124da2e3ebdSchin #undef	opendir
125da2e3ebdSchin #undef	readdir
126da2e3ebdSchin #undef	seekdir
127da2e3ebdSchin #undef	telldir
128da2e3ebdSchin #endif
129da2e3ebdSchin 
130da2e3ebdSchin #define _DIR_PRIVATE_ \
131da2e3ebdSchin 	int		dd_loc;		/* offset in block		*/ \
132da2e3ebdSchin 	int		dd_size;	/* valid data in block		*/ \
133da2e3ebdSchin 	char*		dd_buf;		/* directory block		*/
134da2e3ebdSchin 
135da2e3ebdSchin #ifdef _BLD_3d
136da2e3ebdSchin #define DIR		DIRDIR
137da2e3ebdSchin #endif
138da2e3ebdSchin #undef	_DIRENT_H
139da2e3ebdSchin #include "dirstd.h"
140da2e3ebdSchin #ifndef _DIRENT_H
141da2e3ebdSchin #define _DIRENT_H	1
142da2e3ebdSchin #endif
143da2e3ebdSchin #ifdef _BLD_3d
144da2e3ebdSchin #undef	DIR
145da2e3ebdSchin #endif
146da2e3ebdSchin 
147da2e3ebdSchin #ifndef	DIRBLKSIZ
148da2e3ebdSchin #ifdef	DIRBLK
149da2e3ebdSchin #define DIRBLKSIZ	DIRBLK
150da2e3ebdSchin #else
151da2e3ebdSchin #ifdef	DIRBUF
152da2e3ebdSchin #define DIRBLKSIZ	DIRBUF
153da2e3ebdSchin #else
154da2e3ebdSchin #define DIRBLKSIZ	8192
155da2e3ebdSchin #endif
156da2e3ebdSchin #endif
157da2e3ebdSchin #endif
158da2e3ebdSchin 
159da2e3ebdSchin #endif
160da2e3ebdSchin 
161da2e3ebdSchin #if defined(__STDPP__directive) && defined(__STDPP__hide)
162da2e3ebdSchin __STDPP__directive pragma pp:nohide getdents getdirentries
163da2e3ebdSchin #else
164da2e3ebdSchin #undef	getdents
165da2e3ebdSchin #undef	getdirentries
166da2e3ebdSchin #endif
167da2e3ebdSchin 
168da2e3ebdSchin #ifndef errno
169da2e3ebdSchin extern int	errno;
170da2e3ebdSchin #endif
171da2e3ebdSchin 
172da2e3ebdSchin extern ssize_t		getdents(int, void*, size_t);
173da2e3ebdSchin 
174da2e3ebdSchin #endif
175