summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2016-05-10 21:52:08 +0000
committerJoseph Myers <joseph@codesourcery.com>2016-05-10 21:52:08 +0000
commit8da7d8f877d1eeb02cd00dd3ce1f13da951e72b0 (patch)
tree1a4b514a5945c016451818a4ddc13dec4d6b608d
parent23f3a3b5d4f1f1fb77c82899787d69812bd21cf9 (diff)
downloadglibc-8da7d8f877d1eeb02cd00dd3ce1f13da951e72b0.tar.gz
glibc-8da7d8f877d1eeb02cd00dd3ce1f13da951e72b0.tar.xz
glibc-8da7d8f877d1eeb02cd00dd3ce1f13da951e72b0.zip
Fix sys/stat.h fchmod namespace (bug 20073).
sys/stat.h declares fchmod if __USE_POSIX (i.e. POSIX.1:1990).  But it
was actually added in 1993 and also in XPG4.  This patch changes the
conditions to the correct __USE_POSIX199309 || __USE_XOPEN_EXTENDED.

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

	[BZ #20073]
	* io/sys/stat.h (fchmod): Declare for
	[__USE_POSIX199309 || __USE_XOPEN_EXTENDED], not [__USE_POSIX].
	* conform/Makefile (test-xfail-XPG3/sys/stat.h/conform): Remove
	variable.
-rw-r--r--ChangeLog6
-rw-r--r--conform/Makefile1
-rw-r--r--io/sys/stat.h2
3 files changed, 7 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index c66244413c..2baca396c8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2016-05-10  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #20073]
+	* io/sys/stat.h (fchmod): Declare for
+	[__USE_POSIX199309 || __USE_XOPEN_EXTENDED], not [__USE_POSIX].
+	* conform/Makefile (test-xfail-XPG3/sys/stat.h/conform): Remove
+	variable.
+
 	* conform/data/sys/stat.h-data [XPG3] (S_IFLNK): Do not expect.
 	[XPG3] (S_IFSOCK): Likewise.
 	[XPG3] (S_ISVTX): Likewise.
diff --git a/conform/Makefile b/conform/Makefile
index c4412ef36f..6291ca9642 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -171,7 +171,6 @@ test-xfail-XPG3/search.h/conform = yes
 test-xfail-XPG3/signal.h/conform = yes
 test-xfail-XPG3/stdlib.h/conform = yes
 test-xfail-XPG3/string.h/conform = yes
-test-xfail-XPG3/sys/stat.h/conform = yes
 test-xfail-XPG3/sys/wait.h/conform = yes
 test-xfail-XPG3/termios.h/conform = yes
 test-xfail-XPG3/time.h/conform = yes
diff --git a/io/sys/stat.h b/io/sys/stat.h
index bf63882c7e..416d5647d4 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -292,7 +292,7 @@ extern int lchmod (const char *__file, __mode_t __mode)
 #endif
 
 /* Set file access permissions of the file FD is open on to MODE.  */
-#ifdef __USE_POSIX
+#if defined __USE_POSIX199309 || defined __USE_XOPEN_EXTENDED
 extern int fchmod (int __fd, __mode_t __mode) __THROW;
 #endif