/*	@(#)dirent.h	13.2 (RC International) 91/02/19 	*/

#ifndef _DIRENT_H
#define _DIRENT_H

#define DIRBLKSIZ	1024		/* size of directory block */
#define	MAXNAMLEN	255		/* max. filename len., from limits.h */
#define	DIRVALID	0x5551		/* magic number for valid dirp */

#include <sys/types.h>

struct dirent				/* data from readdir() */
{
	ino_t		d_ino;		/* inode number of entry */
	unsigned short	d_reclen;	/* length of this record */
	unsigned short	d_namlen;	/* length of string in d_name */
	char		d_name[MAXNAMLEN+1];	/* name of file */
};

typedef struct
{
	int	dd_fd;			/* file descriptor */
	int	dd_loc;			/* offset in block */
	int	dd_size;		/* amount of valid data */
	char	dd_buf[DIRBLKSIZ];	/* directory block */
	int	dd_magic;		/* magic number for valid struct */
}	DIR;				/* stream data from opendir() */

#if defined(__STDC__)

extern DIR		*opendir( char * );
extern struct dirent	*readdir( DIR * );
#if !defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE)
extern long		telldir( DIR * );
extern void		seekdir( DIR *, long );
#endif /* !defined(_POSIX_SOURCE) */ 
extern void		rewinddir( DIR * );
extern int		closedir( DIR * );

#else /* Not __STDC__ */

extern DIR		*opendir();
extern struct dirent	*readdir();
#if !defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE)
extern long		telldir();
extern void		seekdir();
#endif /* !defined(_POSIX_SOURCE) */ 
extern void		rewinddir();
extern int		closedir();

#endif /* __STDC__ */


#endif /* _DIRENT_H */
