]> err.no Git - util-linux/commitdiff
build-sys: check for union semun instead of using _SEM_SEMUN_UNDEFINED
authorGuillem Jover <guillem@hadrons.org>
Thu, 8 Oct 2009 11:40:11 +0000 (13:40 +0200)
committerKarel Zak <kzak@redhat.com>
Fri, 9 Oct 2009 13:16:25 +0000 (15:16 +0200)
Older versions of glibc used to declare ‘union semun’ in <sys/sem.h>,
but POSIX.1-2001 requires the caller to declare it instead. Later
versions of glibc started defining _SEM_SEMUN_UNDEFINED to note that
the union was not being declared, but conforming systems are not
required to define that macro (e.g. FreeBSD). As a side effect we get
rid of some obsolete __GNU_LIBRARY__ macro usage.

[kzak@redhat.com: - use #ifndef]

Signed-off-by: Guillem Jover <guillem@hadrons.org>
Signed-off-by: Karel Zak <kzak@redhat.com>
configure.ac
sys-utils/ipcrm.c
sys-utils/ipcs.c

index ed3c3b07cbab2b4487c50a59abfda8c00054dfb6..7b11ab1fa2807edae91fbc06ef7817e66694f738 100644 (file)
@@ -469,6 +469,11 @@ printf(__progname);
 ])
 
 
+AC_CHECK_TYPES([union semun], [], [], [[
+#include <sys/sem.h>
+]])
+
+
 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 #include <wchar.h>
 #include <wctype.h>
index 11a5af2c563014ccc2e5bee083f391dd7ad9c54b..f07eac82657d019192213f9cbc4f5039ba10c638 100644 (file)
@@ -26,9 +26,7 @@
 /* for tolower and isupper */
 #include <ctype.h>
 
-#if defined (__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)
-/* union semun is defined by including <sys/sem.h> */
-#else
+#ifndef HAVE_UNION_SEMUN
 /* according to X/OPEN we have to define it ourselves */
 union semun {
        int val;
index 55d5c80f37fa29fc11c6327a13af92834cf95288..0e645d1384e86bc53169f895aff72c8767094748 100644 (file)
@@ -77,9 +77,7 @@ struct shm_info {
 /* The last arg of semctl is a union semun, but where is it defined?
    X/OPEN tells us to define it ourselves, but until recently
    Linux include files would also define it. */
-#if defined (__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)
-/* union semun is defined by including <sys/sem.h> */
-#else
+#ifndef HAVE_UNION_SEMUN
 /* according to X/OPEN we have to define it ourselves */
 union semun {
        int val;