From 56c196dc250f2d6e3ebcc66997bddb1e765784f8 Mon Sep 17 00:00:00 2001 From: jilles Date: Tue, 22 Nov 2016 22:30:55 +0000 Subject: [PATCH] open(2): Clarify non-POSIX error when opening a symlink with O_NOFOLLOW. We return [EMLINK] instead of [ELOOP] when trying to open a symlink with O_NOFOLLOW, so that the original case of [ELOOP] can be distinguished. Code like cmp -h and xz takes advantage of this. PR: 214633 Reviewed by: kib, imp MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D8586 --- lib/libc/sys/open.2 | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/libc/sys/open.2 b/lib/libc/sys/open.2 index 0562bfd4bb88..c1701188b49a 100644 --- a/lib/libc/sys/open.2 +++ b/lib/libc/sys/open.2 @@ -28,7 +28,7 @@ .\" @(#)open.2 8.2 (Berkeley) 11/16/93 .\" $FreeBSD$ .\" -.Dd September 30, 2016 +.Dd November 22, 2016 .Dt OPEN 2 .Os .Sh NAME @@ -503,6 +503,22 @@ The .Fn openat function was introduced in .Fx 8.0 . +.Sh STANDARDS +These functions are specified by +.St -p1003.1-2008 . +.Fx +sets +.Va errno +to +.Er EMLINK instead of +.Er ELOOP +as specified by +.Tn POSIX +when +.Dv O_NOFOLLOW +is set in flags and the final component of pathname is a symbolic link +to distinguish it from the case of too many symbolic link traversals +in one of its non-final components. .Sh BUGS The Open Group Extended API Set 2 specification requires that the test for whether