Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 1 Feb 2015 22:50:34 +0000 (UTC)
From:      Jilles Tjoelker <jilles@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r278038 - in head: contrib/netbsd-tests/lib/libc/gen lib/libc/gen
Message-ID:  <201502012250.t11MoYMh054980@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jilles
Date: Sun Feb  1 22:50:33 2015
New Revision: 278038
URL: https://svnweb.freebsd.org/changeset/base/278038

Log:
  ttyname_r(): Return actual error, not always [ENOTTY].
  
  Adjust the test that used to fail because of this bug.
  
  PR:		191936
  MFC after:	1 week

Modified:
  head/contrib/netbsd-tests/lib/libc/gen/t_ttyname.c
  head/lib/libc/gen/ttyname.c

Modified: head/contrib/netbsd-tests/lib/libc/gen/t_ttyname.c
==============================================================================
--- head/contrib/netbsd-tests/lib/libc/gen/t_ttyname.c	Sun Feb  1 21:50:28 2015	(r278037)
+++ head/contrib/netbsd-tests/lib/libc/gen/t_ttyname.c	Sun Feb  1 22:50:33 2015	(r278038)
@@ -107,9 +107,6 @@ ATF_TC_BODY(ttyname_r_err, tc)
 		ATF_REQUIRE(rv == ERANGE);
 	}
 
-#ifdef __FreeBSD__
-	atf_tc_expect_fail("FreeBSD returns ENOTTY instead of EBADF; see bin/191936");
-#endif
 	rv = ttyname_r(-1, buf, ttymax);
 	ATF_REQUIRE(rv == EBADF);
 

Modified: head/lib/libc/gen/ttyname.c
==============================================================================
--- head/lib/libc/gen/ttyname.c	Sun Feb  1 21:50:28 2015	(r278037)
+++ head/lib/libc/gen/ttyname.c	Sun Feb  1 22:50:33 2015	(r278038)
@@ -65,7 +65,7 @@ ttyname_r(int fd, char *buf, size_t len)
 
 	/* Must be a terminal. */
 	if (!isatty(fd))
-		return (ENOTTY);
+		return (errno);
 	/* Must have enough room */
 	if (len <= sizeof(_PATH_DEV))
 		return (ERANGE);
@@ -73,7 +73,7 @@ ttyname_r(int fd, char *buf, size_t len)
 	strcpy(buf, _PATH_DEV);
 	used = strlen(buf);
 	if (fdevname_r(fd, buf + used, len - used) == NULL)
-		return (ENOTTY);
+		return (errno == EINVAL ? ERANGE : errno);
 	return (0);
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201502012250.t11MoYMh054980>