undelete
—
remove whiteout
Standard C Library (libc, -lc)
#include <unistd.h>
int
undelete
(const
char *path);
Currently undelete
works only when the named object is a
whiteout in a union file system. The system call removes the whiteout causing
any objects in a lower layer of the union stack to become visible once more.
Upon successful completion, a value of 0 is returned. Otherwise, a value of -1
is returned and errno is set to indicate the error.
The undelete
() succeeds unless:
- [
EACCES
]
- Search permission is denied for a component of the path prefix, or write
permission is denied on the directory containing the name to be
undeleted.
- [
EEXIST
]
- The path does not reference a whiteout.
- [
EFAULT
]
- path points outside the process's allocated address
space.
- [
EINVAL
]
- The pathname contains a character with the high-order bit set.
- [
EIO
]
- An I/O error occurred while updating the directory entry.
- [
ELOOP
]
- Too many symbolic links were encountered in translating the pathname.
- [
ENAMETOOLONG
]
- A component of a pathname exceeded {
NAME_MAX
}
characters, or an entire path name exceeded
{PATH_MAX
} characters.
- [
ENOENT
]
- The named whiteout does not exist.
- [
ENOTDIR
]
- A component of the path prefix is not a directory.
- [
EPERM
]
- The directory containing the name is marked sticky, and the containing
directory is not owned by the effective user ID.
- [
EROFS
]
- The name resides on a read-only file system.
An undelete
function call first appeared in
4.4BSD--Lite.