summaryrefslogtreecommitdiff
path: root/usr/src/man/man3c/opendir.3c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/man/man3c/opendir.3c')
-rw-r--r--usr/src/man/man3c/opendir.3c331
1 files changed, 162 insertions, 169 deletions
diff --git a/usr/src/man/man3c/opendir.3c b/usr/src/man/man3c/opendir.3c
index fa35c1aca9..a03928c9c7 100644
--- a/usr/src/man/man3c/opendir.3c
+++ b/usr/src/man/man3c/opendir.3c
@@ -42,175 +42,168 @@
.\"
.\" Portions Copyright (c) 1992, X/Open Company Limited. All Rights Reserved.
.\" Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
+.\" Copyright 2021 Oxide Computer Company
.\"
-.TH OPENDIR 3C "Jun 26, 2007"
-.SH NAME
-opendir, fdopendir \- open directory
-.SH SYNOPSIS
-.LP
-.nf
-#include <sys/types.h>
-#include <dirent.h>
-
-\fBDIR *\fR\fBopendir\fR(\fBconst char *\fR\fIdirname\fR);
-.fi
-
-.LP
-.nf
-\fBDIR *\fR\fBfdopendir\fR(\fBint\fR \fIfildes\fR);
-.fi
-
-.SH DESCRIPTION
-.sp
-.LP
-The \fBopendir()\fR function opens a directory stream corresponding to the
-directory named by the \fIdirname\fR argument.
-.sp
-.LP
-The \fBfdopendir()\fR function opens a directory stream for the directory file
-descriptor \fIfildes\fR. The directory file descriptor should not be used or
-closed following a successful function call, as this might cause undefined
-results from future operations on the directory stream obtained from the call.
-Use \fBclosedir\fR(3C) to close a directory stream.
-.sp
-.LP
-The directory stream is positioned at the first entry. If the type \fBDIR\fR is
-implemented using a file descriptor, applications will only be able to open up
-to a total of {\fBOPEN_MAX\fR} files and directories. A successful call to any
-of the \fBexec\fR functions will close any directory streams that are open in
-the calling process. See \fBexec\fR(2).
-.SH RETURN VALUES
-.sp
-.LP
-Upon successful completion, \fBopendir()\fR and \fBfdopendir()\fR return a
-pointer to an object of type \fBDIR\fR. Otherwise, a null pointer is returned
-and \fBerrno\fR is set to indicate the error.
-.SH ERRORS
-.sp
-.LP
-The \fBopendir()\fR function will fail if:
-.sp
-.ne 2
-.na
-\fB\fBEACCES\fR\fR
-.ad
-.RS 16n
-Search permission is denied for the component of the path prefix of
-\fIdirname\fR or read permission is denied for \fIdirname\fR.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBELOOP\fR\fR
-.ad
-.RS 16n
-Too many symbolic links were encountered in resolving \fIpath\fR.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBENAMETOOLONG\fR\fR
-.ad
-.RS 16n
-The length of the \fIdirname\fR argument exceeds {\fBPATH_MAX\fR}, or a path
-name component is longer than {\fBNAME_MAX\fR} while {\fB_POSIX_NO_TRUNC\fR} is
-in effect.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBENOENT\fR\fR
-.ad
-.RS 16n
-A component of \fIdirname\fR does not name an existing directory or
-\fIdirname\fR is an empty string.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBENOTDIR\fR\fR
-.ad
-.RS 16n
-A component of \fIdirname\fR is not a directory.
-.RE
-
-.sp
-.LP
-The \fBfdopendir()\fR function will fail if:
-.sp
-.ne 2
-.na
-\fB\fBENOTDIR\fR\fR
-.ad
-.RS 11n
-The file descriptor \fIfildes\fR does not reference a directory.
-.RE
-
-.sp
-.LP
-The \fBopendir()\fR function may fail if:
-.sp
-.ne 2
-.na
-\fB\fBEMFILE\fR\fR
-.ad
-.RS 16n
-There are {\fBOPEN_MAX\fR} file descriptors currently open in the calling
-process.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBENAMETOOLONG\fR\fR
-.ad
-.RS 16n
+.Dd February 25, 2021
+.Dt OPENDIR 3C
+.Os
+.Sh NAME
+.Nm opendir ,
+.Nm fdopendir
+.Nd open directory stream
+.Sh SYNOPSIS
+.In sys/types.h
+.In dirent.h
+.Ft "DIR *"
+.Fo opendir
+.Fa "dirname"
+.Fc
+.Ft "DIR *"
+.Fo fdopendir
+.Fa "int filedes"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn opendir
+and
+.Fn fdopendir
+functions are used to create seekable directory streams that can be used
+to iterate over the contents of a directory, most commonly with
+.Xr readdir 3C .
+One can traverse and seek the stream with functions such as
+.Xr seekdir 3C ,
+.Xr telldir 3C ,
+and
+.Xr rewinddir 3C .
+.Pp
+The
+.Fn opendir
+function creates a directory stream from the path named by
+.Fa dirname .
+The
+.Fn fdopendir
+function creates a directory stream from an already opened file
+descriptor,
+.Fa filedes ,
+that refers to a directory.
+After successfully calling
+.Fn fdopendir ,
+.Fa filedes
+belongs to the system and the application must not modify or close it in
+any way.
+.Pp
+The new directory stream is positioned at the first entry.
+When finished with the directory stream, the caller is responsible for
+releasing its resources by calling the
+.Xr closedir 3C
+function.
+This will close the directory stream's underlying file descriptor,
+including
+.Fa filedes
+if
+.Fn fdopendir
+was used to create it.
+In addition, memory associated with the directory stream, such as the
+.Ft struct dirent
+returned from
+.Xr readdir 3C
+will be invalid once a call to
+.Xr closedir 3C
+is completed.
+.Pp
+All directory streams are closed upon a successful call to any of the
+.Xr exec 2
+family of functions.
+The underlying file descriptors behave as though the
+.Dv FD_CLOEXEC
+flag was set upon them.
+.Pp
+Directory streams created by the
+.Fn opendir
+function require an underlying file descriptor.
+As a result, applications are only able to open up to a total of
+.Brq Dv OPEN_MAX
+files and directories.
+.Sh RETURN VALUES
+Upon successful completion, the
+.Fn opendir
+and
+.Fn fdopendir
+functions return a pointer to an object of type
+Ft DIR .
+Otherwise, a null pointer is returned and
+.Va errno
+is set to indicate the error.
+.Sh ERRORS
+The
+.Fn opendir
+function will fail if:
+.Bl -tag -width Er
+.It Er EACCES
+Search permission is denied for any component of the path prefix of
+.Fa dirname
+or read permission is denied for
+.Fa Idirname .
+.It Er ELOOP
+Too many symbolic links were encountered in resolving
+.Fa path .
+.It Er ENAMETOOLONG
+The length of the
+.Fa dirname
+argument exceeds
+.Brq Dv PATH_MAX ,
+or a path name component is longer than
+.Brq Dv NAME_MAX
+while
+.Brq Dv _POSIX_NO_TRUNC
+is in effect.
+.It Er ENOENT
+A component of
+.Fa dirname
+does not name an existing directory or
+.Fa dirname
+is an empty string.
+.It Er ENOTDIR
+A component of
+.Fa dirname
+is not a directory.
+.El
+.Pp
+The
+.Fn fdopendir
+function will fail if:
+.Bl -tag -width Er
+.It Er ENOTDIR
+The file descriptor
+.Fa filedes
+does not reference a directory.
+.El
+.Pp
+The
+.Fn opendir
+function may fail if:
+.Bl -tag -width Er
+.It Er EMFILE
+There are already
+.Brq Dv OPEN_MAX
+file descriptors currently open in the calling process.
+.It Er ENAMETOOLONG
Pathname resolution of a symbolic link produced an intermediate result whose
-length exceeds \fBPATH_MAX\fR.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBENFILE\fR\fR
-.ad
-.RS 16n
+length exceeds
+.Dv PATH_MAX .
+.It Er ENFILE
Too many files are currently open on the system.
-.RE
-
-.SH USAGE
-.sp
-.LP
-The \fBopendir()\fR and \fBfdopendir()\fR functions should be used in
-conjunction with \fBreaddir\fR(3C), \fBclosedir\fR(3C) and \fBrewinddir\fR(3C)
-to examine the contents of the directory (see the \fBEXAMPLES\fR section in
-\fBreaddir\fR(3C)). This method is recommended for portability.
-.SH ATTRIBUTES
-.sp
-.LP
-See \fBattributes\fR(5) for descriptions of the following attributes:
-.sp
-
-.sp
-.TS
-box;
-c | c
-l | l .
-ATTRIBUTE TYPE ATTRIBUTE VALUE
-_
-Interface Stability T{
-\fBopendir()\fR is Standard; \fBfdopendir()\fR is Evolving
-T}
-_
-MT-Level Safe
-.TE
-
-.SH SEE ALSO
-.sp
-.LP
-\fBlstat\fR(2), \fBsymlink\fR(2), \fBclosedir\fR(3C), \fBreaddir\fR(3C),
-\fBrewinddir\fR(3C), \fBscandir\fR(3C), \fBattributes\fR(5)
+.El
+.Sh INTERFACE STABILITY
+.Sy Committed
+.Sh MT-LEVEL
+.Sy Safe
+.Sh SEE ALSO
+.Xr lstat 2 ,
+.Xr symlink 2 ,
+.Xr closedir 3C ,
+.Xr readdir 3C ,
+.Xr rewinddir 3C ,
+.Xr seekdir 3C ,
+.Xr telldir 3C ,
+.Xr attributes 5