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.
Anundelete function call first appeared in
  4.4BSD--Lite.