FreeBSD man pages : readlink (2) READLINK(2) FreeBSD System
Calls Manual READLINK(2) readlink - read value of a symbolic
link Standard C Library (libc, -lc) readlink(const char *path,
char *buf, int bufsiz); Readlink() places the contents of the
symbolic link path in the buffer buf, which has size bufsiz. The
readlink() function does not append a NUL character to buf. The
call returns the count of characters placed in the buffer if it
suc- ceeds, or a -1 if an error occurs, placing the error code
in the global Readlink() will fail if: [ENOTDIR] A component of
the path prefix is not a directory. [ENAMETOOLONG] A component
of a pathname exceeded 255 characters, or an entire path name
exceeded 1023 characters. [ENOENT] The named file does not
exist. [EACCES] Search permission is denied for a component of
the [ELOOP] Too many symbolic links were encountered in
translat- ing the pathname. [EINVAL] The named file is not a
symbolic link. [EIO] An I/O error occurred while reading from
the file sys- [EFAULT] Buf exten