readlink - read value of a symbolic link
int readlink(const char *path, char *buf, size_t bufsiz);
readlink places the contents of the symbolic link path in the buffer
buf, which has size bufsiz. readlink does not append a NUL character
to buf. It will truncate the contents (to a length of bufsiz charac-
ters), in case the buffer is too small to hold all of the contents.
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 errno.
A component of the path prefix is not a directory.
EINVAL bufsiz is not positive.
A pathname, or a component of a pathname, was too long.
ENOENT The named file does not exist.
EACCES Search permission is denied for a component of the path prefix.
ELOOP Too many symbolic links were encountered in translating the
EINVAL The named file is not a symbolic link.
EIO An I/O error occurred while reading from the file system.
EFAULT buf extends outside the process's allocated address space.
ENOMEM Insufficient kernel memory was available.
X/OPEN, 4.4BSD (the readlink function call appeared in 4.2BSD).
stat(2), lstat(2), symlink(2)
Linux 2.0.30 1997-08-21 readlink(2)