This is the mail archive of the mailing list for the glibc project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Correct ttyslot header declaration conditions (bug 20051)

Here is an updated version of this patch, with an XFAIL removal moved here 
from the gethostname patch (which has been committed without the XFAIL 
removal that depended on this patch).

Correct ttyslot header declaration conditions (bug 20051).

UNIX98 and XPG4 have ttyslot in <stdlib.h>.  glibc, however, has it in
<unistd.h>, for __USE_MISC || (__USE_XOPEN_EXTENDED && !__USE_UNIX98),
but no supported standard has it in <unistd.h>.

This patch adds a properly conditioned declaration to <stdlib.h> (only
enabled for the relevant standards, not for __USE_MISC or __USE_GNU).
The <unistd.h> declaration is restricted to __USE_MISC.  The
conformtest expectation is adjusted not to expect it for XPG3, only
for XPG4 and UNIX98.  Some relevant XFAILs are removed.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).

2016-05-12  Joseph Myers  <>

	[BZ #20051]
	* posix/unistd.h [__USE_XOPEN_EXTENDED && !__USE_UNIX98]
	(ttyslot): Do not declare.
	* stdlib/stdlib.h [__USE_XOPEN_EXTENDED && !__USE_XOPEN2K]
	(ttyslot): New prototype.
	* conform/data/stdlib.h-data (ttyslot): Do not expect for [XPG3].
	* conform/Makefile (test-xfail-XPG4/unistd.h/conform): Remove
	(test-xfail-UNIX98/stdlib.h/conform): Likewise.

diff --git a/conform/Makefile b/conform/Makefile
index b5a1ee8..a11642f 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -181,13 +181,11 @@ test-xfail-XPG4/stdlib.h/conform = yes
 test-xfail-XPG4/sys/stat.h/conform = yes
 test-xfail-XPG4/sys/wait.h/conform = yes
 test-xfail-XPG4/ucontext.h/conform = yes
-test-xfail-XPG4/unistd.h/conform = yes
 test-xfail-POSIX/sys/wait.h/conform = yes
 test-xfail-UNIX98/arpa/inet.h/conform = yes
 test-xfail-UNIX98/netdb.h/conform = yes
 test-xfail-UNIX98/netinet/in.h/conform = yes
 test-xfail-UNIX98/signal.h/conform = yes
-test-xfail-UNIX98/stdlib.h/conform = yes
 test-xfail-UNIX98/sys/wait.h/conform = yes
 test-xfail-UNIX98/ucontext.h/conform = yes
 test-xfail-XOPEN2K/semaphore.h/conform = yes
diff --git a/conform/data/stdlib.h-data b/conform/data/stdlib.h-data
index abe296a..423358d 100644
--- a/conform/data/stdlib.h-data
+++ b/conform/data/stdlib.h-data
@@ -162,7 +162,7 @@ function {long long int} strtoll (const char*, char**, int)
 function {unsigned long long int} strtoull (const char*, char**, int)
 function int system (const char*)
-#if defined XPG3 || defined XPG4 || defined UNIX98
+#if defined XPG4 || defined UNIX98
 function int ttyslot (void)
 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
diff --git a/posix/unistd.h b/posix/unistd.h
index 98ffcea..625ba77 100644
--- a/posix/unistd.h
+++ b/posix/unistd.h
@@ -781,8 +781,7 @@ extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
    with a terminal, zero if not.  */
 extern int isatty (int __fd) __THROW;
-#if defined __USE_MISC \
-    || (defined __USE_XOPEN_EXTENDED && !defined __USE_UNIX98)
+#ifdef __USE_MISC
 /* Return the index into the active-logins file (utmp) for
    the controlling terminal.  */
 extern int ttyslot (void) __THROW;
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
index d0c78fa..5c0c982 100644
--- a/stdlib/stdlib.h
+++ b/stdlib/stdlib.h
@@ -912,6 +912,12 @@ extern int getloadavg (double __loadavg[], int __nelem)
      __THROW __nonnull ((1));
+#if defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K
+/* Return the index into the active-logins file (utmp) for
+   the controlling terminal.  */
+extern int ttyslot (void) __THROW;
 #include <bits/stdlib-float.h>
 /* Define some macros helping to catch buffer overflows.  */

Joseph S. Myers

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]