summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2010-04-17 15:52:50 +0000
committerjilles <jilles@FreeBSD.org>2010-04-17 15:52:50 +0000
commite3a8d034ba069ba5a7dad2818a3994f2e52c5dff (patch)
tree64ac6f861971c8770b677048060a38143ba9b897
parent286029c47836178eb034bb3cff6b884f0a4ed74d (diff)
downloadFreeBSD-src-e3a8d034ba069ba5a7dad2818a3994f2e52c5dff.zip
FreeBSD-src-e3a8d034ba069ba5a7dad2818a3994f2e52c5dff.tar.gz
getcwd(3): Clarify that EACCES may or may not be checked.
POSIX permits but does not require checking access on the current and parent directories. Because various programs do not like it if getcwd(3) fails, it seems best to avoid checking access as much as possible. There are various reports in GNATS about this (search for getcwd). Our getcwd(3) implementation first queries the kernel for the pathname directly, which does not check any permissions but sometimes fails, and then falls back to reading all parent directories for the names. PR: standards/44425 MFC after: 2 weeks
-rw-r--r--lib/libc/gen/getcwd.314
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/libc/gen/getcwd.3 b/lib/libc/gen/getcwd.3
index 12a2bd6..88291c3 100644
--- a/lib/libc/gen/getcwd.3
+++ b/lib/libc/gen/getcwd.3
@@ -28,7 +28,7 @@
.\" @(#)getcwd.3 8.2 (Berkeley) 12/11/93
.\" $FreeBSD$
.\"
-.Dd November 24, 1997
+.Dd April 17, 2010
.Dt GETCWD 3
.Os
.Sh NAME
@@ -108,8 +108,6 @@ The
function
will fail if:
.Bl -tag -width Er
-.It Bq Er EACCES
-Read or search permission was denied for a component of the pathname.
.It Bq Er EINVAL
The
.Fa size
@@ -124,6 +122,16 @@ The
argument is greater than zero but smaller than the length of the pathname
plus 1.
.El
+.Pp
+The
+.Fn getcwd
+function
+may fail if:
+.Bl -tag -width Er
+.It Bq Er EACCES
+Read or search permission was denied for a component of the pathname.
+This is only checked in limited cases, depending on implementation details.
+.El
.Sh SEE ALSO
.Xr chdir 2 ,
.Xr fchdir 2 ,
OpenPOWER on IntegriCloud