Bring up to date with getdents(2) reality.

This commit is contained in:
soren 2002-08-12 20:49:33 +00:00
parent 28b7728edf
commit e471d531a0
1 changed files with 37 additions and 62 deletions

View File

@ -1,4 +1,4 @@
.\" $NetBSD: dir.5,v 1.9 2002/02/13 08:18:10 ross Exp $
.\" $NetBSD: dir.5,v 1.10 2002/08/12 20:49:33 soren Exp $
.\"
.\" Copyright (c) 1983, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
@ -33,16 +33,15 @@
.\"
.\" @(#)dir.5 8.3 (Berkeley) 4/19/94
.\"
.Dd April 19, 1994
.Dt DIR 5
.Dd August 12, 2002
.Dt DIRENT 5
.Os
.Sh NAME
.Nm dir ,
.Nm dirent
.Nd directory file format
.Sh SYNOPSIS
.Fd #include \*[Lt]sys/types.h\*[Gt]
.Fd #include \*[Lt]sys/dir.h\*[Gt]
.Fd #include \*[Lt]sys/dirent.h\*[Gt]
.Sh DESCRIPTION
Directories provide a convenient hierarchical method of grouping
files while obscuring the underlying details of the storage medium.
@ -77,77 +76,53 @@ File system nodes are ordinary directory files on which has
been grafted a file system object, such as a physical disk or a
partitioned area of such a disk.
(See
.\" .Xr mount 1
.\" and
.Xr mount 8 . )
.Pp
The directory entry format is defined in the file
.Aq dirent.h :
.Aq Pa sys/dirent.h :
.Bd -literal
#ifndef _DIRENT_H_
#define _DIRENT_H_
/*
* A directory entry has a struct dirent at the front of it, containing its
* inode number, the length of the entry, and the length of the name
* contained in the entry. These are followed by the name padded to a 4
* byte boundary with null bytes. All names are guaranteed null terminated.
* The maximum length of a name in a directory is MAXNAMLEN.
*/
* A directory entry has a struct dirent at the front of it, containing
* its inode number, the length of the entry, and the length of the name
* contained in the entry. These are followed by the name padded to a
* 4 byte boundary with null bytes. All names are guaranteed null
* terminated. The maximum length of a name in a directory is MAXNAMLEN.
*/
struct dirent {
u_long d_fileno; /* file number of entry */
u_short d_reclen; /* length of this record */
u_short d_namlen; /* length of string in d_name */
#ifdef _POSIX_SOURCE
char d_name[MAXNAMLEN + 1]; /* maximum name length */
#else
u_int32_t d_fileno; /* file number of entry */
u_int16_t d_reclen; /* length of this record */
u_int8_t d_type; /* file type, see below */
u_int8_t d_namlen; /* length of string in d_name */
#define MAXNAMLEN 255
char d_name[MAXNAMLEN + 1]; /* maximum name length */
#endif
char d_name[MAXNAMLEN + 1]; /* name must be no longer than this */
};
#ifdef _POSIX_SOURCE
typedef void * DIR;
#else
#define d_ino d_fileno /* backward compatibility */
/* definitions for library routines operating on directories. */
#define DIRBLKSIZ 1024
/* structure describing an open directory. */
typedef struct _dirdesc {
int dd_fd; /* file descriptor associated with directory */
long dd_loc; /* offset in current buffer */
long dd_size; /* amount of data returned by getdirentries */
char *dd_buf; /* data buffer */
int dd_len; /* size of data buffer */
long dd_seek; /* magic cookie returned by getdirentries */
} DIR;
#define dirfd(dirp) ((dirp)-\*[Gt]dd_fd)
#ifndef NULL
#define NULL 0
#endif
#endif /* _POSIX_SOURCE */
#ifndef _KERNEL
#include \*[Lt]sys/cdefs.h\*[Gt]
#endif /* !_KERNEL */
#endif /* !_DIRENT_H_ */
/*
* File types
*/
#define DT_UNKNOWN 0
#define DT_FIFO 1
#define DT_CHR 2
#define DT_DIR 4
#define DT_BLK 6
#define DT_REG 8
#define DT_LNK 10
#define DT_SOCK 12
#define DT_WHT 14
#define DT_SOCK 12
#define DT_WHT 14
.Ed
.Sh SEE ALSO
.Xr getdents 5 ,
.Xr getdirentries 5 ,
.Xr fs 5 ,
.Xr inode 5
.Sh HISTORY
A
.Nm
file format appeared in
dir structure appeared in
.At v7 .
The
.Nm
structure appeared in
.Nx 1.3 .