xref: /plan9/sys/src/ape/cmd/pax/paxdir.h (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
1 /*
2 	<dirent.h> -- definitions for SVR3 directory access routines
3 
4 	last edit:	25-Apr-1987	D A Gwyn
5 
6 	Prerequisite:	<sys/types.h>
7 */
8 
9 #ifndef _PAX_DIRENT_H
10 #define _PAX_DIRENT_H
11 
12 #include "config.h"
13 #ifdef USG
14 #define UFS
15 #else
16 #ifdef BSD
17 #define BFS
18 #endif
19 #endif
20 
21 struct dirent { 			/* data from getdents()/readdir() */
22     long		d_ino;		/* inode number of entry */
23     off_t		d_off;		/* offset of disk directory entry */
24     unsigned short	d_reclen;	/* length of this record */
25     char		d_name[1];	/* name of file (non-POSIX) */
26 };
27 
28 typedef struct {
29     int		dd_fd;			/* file descriptor */
30     int		dd_loc;			/* offset in block */
31     int		dd_size;		/* amount of valid data */
32     char	*dd_buf;		/* -> directory block */
33 } DIR;					/* stream data from opendir() */
34 
35 
36 /*
37  * The following nonportable ugliness could have been avoided by defining
38  * DIRENTSIZ and DIRENTBASESIZ to also have (struct dirent *) arguments.
39  */
40 #define	DIRENTBASESIZ		(((struct dirent *)0)->d_name \
41 				- (char *)&((struct dirent *)0)->d_ino)
42 #define	DIRENTSIZ( namlen )	((DIRENTBASESIZ + sizeof(long) + (namlen)) \
43 				/ sizeof(long) * sizeof(long))
44 
45 #define	MAXNAMLEN 512			/* maximum filename length */
46 
47 #ifndef NAME_MAX
48 #define	NAME_MAX (MAXNAMLEN - 1)	/* DAG -- added for POSIX */
49 #endif
50 
51 #define	DIRBUF	 8192			/* buffer size for fs-indep. dirs */
52 		/* must in general be larger than the filesystem buffer size */
53 
54 extern DIR		*opendir();
55 extern struct dirent	*readdir();
56 extern OFFSET		telldir();
57 extern void		seekdir();
58 extern int		closedir();
59 
60 #endif /* _PAX_DIRENT_H */
61