Fix grp.h endgrent, getgrent namespace (bug 18528).
authorJoseph Myers <joseph@codesourcery.com>
Fri, 12 Jun 2015 22:29:19 +0000 (22:29 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Fri, 12 Jun 2015 22:29:19 +0000 (22:29 +0000)
grp.h declares endgrent and getgrent if __USE_XOPEN2K8 (i.e. 2008
edition of POSIX, non-XSI).  However, the 2013 Technical Corrigendum
corrected the grp.h specification to XSI-shade these functions as in
previous editions (see <http://austingroupbugs.net/view.php?id=24>),
so they should not be declared for non-XSI POSIX.  This patch corrects
the conditions - using __USE_MISC || __USE_XOPEN_EXTENDED to match
setgrent - and the conform/ test expectations for this header, thereby
fixing the conform tests for this header for XPG3 (where the
expectations were wrong) and the linknamespace tests for it for
POSIX2008 (where the header bug meant it was wrongly considered a
problem for endgrent to bring in a reference to setgrent).

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

[BZ #18528]
* grp/grp.h (endgrent): Condition on [__USE_MISC ||
__USE_XOPEN_EXTENDED], not [__USE_XOPEN_EXTENDED ||
__USE_XOPEN2K8].
(getgrent): Likewise.
* conform/data/grp.h-data [XPG3 || POSIX2008] (getgrent): Do not
expect.
[XPG3 || POSIX2008] (endgrent): Likewise.
[XPG3] (setgrent): Likewise.
* conform/Makefile (test-xfail-XPG3/grp.h/conform): Remove
variable.
(test-xfail-POSIX2008/grp.h/linknamespace): Likewise.

ChangeLog
NEWS
conform/Makefile
conform/data/grp.h-data
grp/grp.h

index 9403f2883c4c64be71d43eac16744f34ba88226b..fa596163b381663563098baf3d7e09fbf40321ce 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
 2015-06-12  Joseph Myers  <joseph@codesourcery.com>
 
+       [BZ #18528]
+       * grp/grp.h (endgrent): Condition on [__USE_MISC ||
+       __USE_XOPEN_EXTENDED], not [__USE_XOPEN_EXTENDED ||
+       __USE_XOPEN2K8].
+       (getgrent): Likewise.
+       * conform/data/grp.h-data [XPG3 || POSIX2008] (getgrent): Do not
+       expect.
+       [XPG3 || POSIX2008] (endgrent): Likewise.
+       [XPG3] (setgrent): Likewise.
+       * conform/Makefile (test-xfail-XPG3/grp.h/conform): Remove
+       variable.
+       (test-xfail-POSIX2008/grp.h/linknamespace): Likewise.
+
        [BZ #18527]
        * login/getlogin_r.c (getlogin_r): Rename to __getlogin_r and
        define as weak alias of __getlogin_r.  Use libc_hidden_weak.
diff --git a/NEWS b/NEWS
index b9b4ce2a3c7b8aa9cb10644e4fb36795547f6061..75bddc113418b000a226ef98d828d3b94818ec19 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -21,7 +21,7 @@ Version 2.22
   18211, 18217, 18220, 18221, 18234, 18244, 18247, 18287, 18319, 18324,
   18333, 18346, 18397, 18409, 18410, 18412, 18418, 18422, 18434, 18444,
   18468, 18469, 18470, 18479, 18483, 18495, 18496, 18497, 18498, 18507,
-  18512, 18519, 18520, 18522, 18527.
+  18512, 18519, 18520, 18522, 18527, 18528.
 
 * Cache information can be queried via sysconf() function on s390 e.g. with
   _SC_LEVEL1_ICACHE_SIZE as argument.
index 57dbc9225e38f61aeafef2df4c038d419d200ba3..ea7a6b4b3356c6305245ced7b904ab282114721a 100644 (file)
@@ -170,7 +170,6 @@ test-xfail-XOPEN2K8/ndbm.h/conform = yes
 # Unsorted expected failures.
 test-xfail-XPG3/fcntl.h/conform = yes
 test-xfail-XPG3/ftw.h/conform = yes
-test-xfail-XPG3/grp.h/conform = yes
 test-xfail-XPG3/langinfo.h/conform = yes
 test-xfail-XPG3/limits.h/conform = yes
 test-xfail-XPG3/pwd.h/conform = yes
@@ -361,7 +360,6 @@ test-xfail-UNIX98/wchar.h/linknamespace = yes
 test-xfail-XOPEN2K/fmtmsg.h/linknamespace = yes
 test-xfail-XOPEN2K/netdb.h/linknamespace = yes
 test-xfail-XOPEN2K/syslog.h/linknamespace = yes
-test-xfail-POSIX2008/grp.h/linknamespace = yes
 test-xfail-POSIX2008/netdb.h/linknamespace = yes
 test-xfail-POSIX2008/semaphore.h/linknamespace = yes
 test-xfail-XOPEN2K8/fmtmsg.h/linknamespace = yes
index 1edba738bb4445f667b7a13d573d989b2cb93add..53e880d418558c09d6c6e1f9943e016db426f519 100644 (file)
@@ -19,12 +19,10 @@ function {struct group*} getgrgid (gid_t)
 function {struct group*} getgrnam (const char*)
 function int getgrgid_r (gid_t, struct group*, char *, size_t, struct group**)
 function int getgrnam_r (const char *, struct group *, char *, size_t, struct group**)
-# ifndef POSIX
+# if !defined XPG3 && !defined POSIX && !defined POSIX2008
 function {struct group*} getgrent (void)
 function void endgrent (void)
-#  ifndef POSIX2008
 function void setgrent (void)
-#  endif
 # endif
 
 allow gr_*
index c593eb5e9bbb635036532b2e0634a1f31516b4cb..ff0ad026650eca964d071bd115caf74c6309f239 100644 (file)
--- a/grp/grp.h
+++ b/grp/grp.h
@@ -60,9 +60,7 @@ struct group
    This function is a possible cancellation point and therefore not
    marked with __THROW.  */
 extern void setgrent (void);
-#endif
 
-#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
 /* Close the group-file stream.
 
    This function is a possible cancellation point and therefore not