summaryrefslogtreecommitdiffstats
path: root/man3p/rmdir.3p
diff options
context:
space:
mode:
Diffstat (limited to 'man3p/rmdir.3p')
-rw-r--r--man3p/rmdir.3p187
1 files changed, 187 insertions, 0 deletions
diff --git a/man3p/rmdir.3p b/man3p/rmdir.3p
new file mode 100644
index 000000000..9c0c19726
--- /dev/null
+++ b/man3p/rmdir.3p
@@ -0,0 +1,187 @@
+.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
+.TH "RMDIR" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
+.\" rmdir
+.SH NAME
+rmdir \- remove a directory
+.SH SYNOPSIS
+.LP
+\fB#include <unistd.h>
+.br
+.sp
+int rmdir(const char *\fP\fIpath\fP\fB);
+.br
+\fP
+.SH DESCRIPTION
+.LP
+The \fIrmdir\fP() function shall remove a directory whose name is
+given by \fIpath\fP. The directory shall be removed only if
+it is an empty directory.
+.LP
+If the directory is the root directory or the current working directory
+of any process, it is unspecified whether the function
+succeeds, or whether it shall fail and set \fIerrno\fP to [EBUSY].
+.LP
+If \fIpath\fP names a symbolic link, then \fIrmdir\fP() shall fail
+and set \fIerrno\fP to [ENOTDIR].
+.LP
+If the \fIpath\fP argument refers to a path whose final component
+is either dot or dot-dot, \fIrmdir\fP() shall fail.
+.LP
+If the directory's link count becomes 0 and no process has the directory
+open, the space occupied by the directory shall be
+freed and the directory shall no longer be accessible. If one or more
+processes have the directory open when the last link is
+removed, the dot and dot-dot entries, if present, shall be removed
+before \fIrmdir\fP() returns and no new entries may be created
+in the directory, but the directory shall not be removed until all
+references to the directory are closed.
+.LP
+If the directory is not an empty directory, \fIrmdir\fP() shall fail
+and set \fIerrno\fP to [EEXIST] or [ENOTEMPTY].
+.LP
+Upon successful completion, the \fIrmdir\fP() function shall mark
+for update the \fIst_ctime\fP and \fIst_mtime\fP fields of
+the parent directory.
+.SH RETURN VALUE
+.LP
+Upon successful completion, the function \fIrmdir\fP() shall return
+0. Otherwise, -1 shall be returned, and \fIerrno\fP set to
+indicate the error. If -1 is returned, the named directory shall not
+be changed.
+.SH ERRORS
+.LP
+The \fIrmdir\fP() function shall fail if:
+.TP 7
+.B EACCES
+Search permission is denied on a component of the path prefix, or
+write permission is denied on the parent directory of the
+directory to be removed.
+.TP 7
+.B EBUSY
+The directory to be removed is currently in use by the system or some
+process and the implementation considers this to be an
+error.
+.TP 7
+.B EEXIST \fRor\fP ENOTEMPTY
+The \fIpath\fP argument names a directory that is not an empty directory,
+or there are hard links to the directory other than dot
+or a single entry in dot-dot.
+.TP 7
+.B EINVAL
+The \fIpath\fP argument contains a last component that is dot.
+.TP 7
+.B EIO
+A physical I/O error has occurred.
+.TP 7
+.B ELOOP
+A loop exists in symbolic links encountered during resolution of the
+\fIpath\fP argument.
+.TP 7
+.B ENAMETOOLONG
+The length of the \fIpath\fP argument exceeds {PATH_MAX} or a pathname
+component is longer than {NAME_MAX}.
+.TP 7
+.B ENOENT
+A component of \fIpath\fP does not name an existing file, or the \fIpath\fP
+argument names a nonexistent directory or points
+to an empty string.
+.TP 7
+.B ENOTDIR
+A component of \fIpath\fP is not a directory.
+.TP 7
+.B EPERM \fRor\fP EACCES
+.sp
+The S_ISVTX flag is set on the parent directory of the directory to
+be removed and the caller is not the owner of the directory to
+be removed, nor is the caller the owner of the parent directory, nor
+does the caller have the appropriate privileges.
+.TP 7
+.B EROFS
+The directory entry to be removed resides on a read-only file system.
+.sp
+.LP
+The \fIrmdir\fP() function may fail if:
+.TP 7
+.B ELOOP
+More than {SYMLOOP_MAX} symbolic links were encountered during resolution
+of the \fIpath\fP argument.
+.TP 7
+.B ENAMETOOLONG
+As a result of encountering a symbolic link in resolution of the \fIpath\fP
+argument, the length of the substituted pathname
+string exceeded {PATH_MAX}.
+.sp
+.LP
+\fIThe following sections are informative.\fP
+.SH EXAMPLES
+.SS Removing a Directory
+.LP
+The following example shows how to remove a directory named \fB/home/cnd/mod1\fP.
+.sp
+.RS
+.nf
+
+\fB#include <unistd.h>
+.sp
+
+int status;
+\&...
+status = rmdir("/home/cnd/mod1");
+\fP
+.fi
+.RE
+.SH APPLICATION USAGE
+.LP
+None.
+.SH RATIONALE
+.LP
+The \fIrmdir\fP() and \fIrename\fP() functions originated in 4.2 BSD,
+and they used
+[ENOTEMPTY] for the condition when the directory to be removed does
+not exist or \fInew\fP already exists. When the 1984
+/usr/group standard was published, it contained [EEXIST] instead.
+When these functions were adopted into System V, the 1984
+/usr/group standard was used as a reference. Therefore, several existing
+applications and implementations support/use both forms,
+and no agreement could be reached on either value. All implementations
+are required to supply both [EEXIST] and [ENOTEMPTY] in \fI<errno.h>\fP
+with distinct values, so that applications can use both values in
+C-language \fBcase\fP statements.
+.LP
+The meaning of deleting \fIpathname\fP \fB/dot\fP is unclear, because
+the name of the file (directory) in the parent directory
+to be removed is not clear, particularly in the presence of multiple
+links to a directory.
+.LP
+The POSIX.1-1990 standard was silent with regard to the behavior of
+\fIrmdir\fP() when there are multiple hard links to the
+directory being removed. The requirement to set \fIerrno\fP to [EEXIST]
+or [ENOTEMPTY] clarifies the behavior in this case.
+.LP
+If the process' current working directory is being removed, that should
+be an allowed error.
+.LP
+Virtually all existing implementations detect [ENOTEMPTY] or the case
+of dot-dot. The text in \fIError Numbers\fP about returning any one
+of the possible errors permits that behavior to
+continue. The [ELOOP] error may be returned if more than {SYMLOOP_MAX}
+symbolic links are encountered during resolution of the
+\fIpath\fP argument.
+.SH FUTURE DIRECTIONS
+.LP
+None.
+.SH SEE ALSO
+.LP
+\fIError Numbers\fP , \fImkdir\fP() , \fIremove\fP() , \fIunlink\fP()
+, the Base Definitions volume of
+IEEE\ Std\ 1003.1-2001, \fI<unistd.h>\fP
+.SH COPYRIGHT
+Portions of this text are reprinted and reproduced in electronic form
+from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
+-- Portable Operating System Interface (POSIX), The Open Group Base
+Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
+Electrical and Electronics Engineers, Inc and The Open Group. In the
+event of any discrepancy between this version and the original IEEE and
+The Open Group Standard, the original IEEE and The Open Group Standard
+is the referee document. The original Standard can be obtained online at
+http://www.opengroup.org/unix/online.html .