READCLINK(2)

NAME
readclink - read value of a conditional symbolic link

SYNOPSIS
#include <sys/universe.h>
cc = readclink(path, buf, bufsiz, uflag)
int cc;
char *path, *buf;
int bufsiz;
int uflag;

DESCRIPTION
Readclink places the contents of one of the components of the conditional symbolic link path in the buffer buf which has size bufsiz. The contents of the link are not null terminated when returned. The component returned depends on the value of uflag: if uflag is U_UCB (U_ATT), the value of the link in the U_UCB (U_ATT) universe is returned.

RETURN VALUE
The call returns the count of characters placed in the buffer if it succeeds, or a -1 if an error occurs, placing the error code in the global variable errno.

ERRORS
Readclink will fail if:

[EPERM]
    The path argument contained a byte with the high-order bit set.

[ENOENT]
    The pathname was too long.

[ENOTDIR]
    A component of the path prefix is not a directory.

[ENOENT]
    The named file does not exist.

[ENXIO]
    The named file is not a conditional symbolic link.

[EACCES]
    Search permission is denied on a component of the path prefix.

[EPERM]
    The effective user ID does not match the owner of the file and the effective user ID is not the super-user.

[EINVAL]
    The named file is not a conditional symbolic link, or uflag is not U_UCB or U_ATT.

[EFAULT]
    Buf extends outside the process's allocated address space.

[ELOOP]
    Too many symbolic links were encountered in translating the pathname.

[EIO]
    An I/O error occurred while reading from or writing to the file system.

SEE ALSO
csymlink(2), lstat(2), readlink(2), stat(2), symlink(2), universe(2)