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