--- /dev/null
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" This manpage is Copyright (C) 2006, Michael Kerrisk
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date. The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein. The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"
+.TH READLINKAT 2 2006-07-21 "Linux 2.6.16" "Linux Programmer's Manual"
+.SH NAME
+readlinkat \- read value of a symbolic link relative to a directory file descriptor
+.SH SYNOPSIS
+.nf
+.B #include <unistd.h>
+.sp
+.BI "int readlinkat(int " dirfd ", const char *" path \
+", char *" buf ", size_t " bufsiz );
+.fi
+.SH DESCRIPTION
+The
+.BR readlinkat ()
+system call operates in exactly the same way as
+.BR readlink (2),
+except for the differences described in this manual page.
+
+If the pathname given in
+.I path
+is relative, then it is interpreted relative to the directory
+referred to by the file descriptor
+.IR dirfd
+(rather than relative to the current working directory of
+the calling process, as is done by
+.BR readlink (2)
+for a relative pathname).
+
+If the pathname given in
+.I path
+is relative and
+.I dirfd
+is the special value
+.BR AT_FDCWD ,
+then
+.I path
+is interpreted relative to the current working
+directory of the calling process (like
+.BR readlink (2)).
+
+If the pathname given in
+.IR path
+is absolute, then
+.I dirfd
+is ignored.
+.SH "RETURN VALUE"
+On success,
+.BR readlinkat ()
+returns 0.
+On error, \-1 is returned and
+.I errno
+is set to indicate the error.
+.SH ERRORS
+The same errors that occur for
+.BR readlink (2)
+can also occur for
+.BR readlinkat ().
+The following additional errors can occur for
+.BR readlinkat ():
+.TP
+.B EBADF
+.I dirfd
+is not a valid file descriptor.
+.TP
+.B ENOTDIR
+.I path
+is a relative path and
+.I dirfd
+is a file descriptor referring to a file other than a directory.
+.SH NOTES
+See
+.BR openat (2)
+for an explanation of the need for
+.BR readlinkat ().
+.SH "CONFORMING TO"
+This system call is non-standard but is proposed
+for inclusion in a future revision of POSIX.1.
+.SH VERSIONS
+.BR readlinkat ()
+was added to Linux in kernel 2.6.16.
+.SH "SEE ALSO"
+.BR openat (2),
+.BR path_resolution (2),
+.BR readlink (2)