UNDELETE(2) | System Calls Manual | UNDELETE(2)

# NAME

`undelete` —
remove whiteout

# LIBRARY

Standard C Library (libc, -lc)

# SYNOPSIS

`#include <unistd.h>`

int
`undelete`(const char *path);

# DESCRIPTION

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.

# RETURN VALUES

Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and errno is set to indicate the error.

# ERRORS

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.

# SEE ALSO

unlink(2), mount_union(8)

# HISTORY

An `undelete` function call first appeared in 4.4BSD--Lite.

November 28, 2008 | NetBSD 9.5