readlink does not include a null terminator in buf.
ENODEV The device prefix of filename did not exist. ENOTDIR A non-final component of path was not a directory. ENOENT The named file does not exist. EINVAL The named file is not a symlink. EIO A hard I/O error occurred. EFAULT buf or path points to an invalid address.