From: Fabian Groffen Date: Wed, 12 Jan 2011 20:01:07 +0000 (+0100) Subject: build-sys: improve check for crypt X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0aeb57aca31816ca5b93cc10ad0fb9d62ad805de;p=util-linux build-sys: improve check for crypt Check for crypt.h existence, and use it if available over using unistd.h for which a certain feature level has to be set to export a definition for crypt. On Solaris this set causes a standards conflict in the headers, because at the time of this check C99 mode is already enabled, which implies certain standards non-compatible with _XOPEN_SOURCE. 92 #define _XOPEN_SOURCE 93 #include configure:16259: gcc -std=gnu99 -c -g -O2 conftest.c >&5 In file included from /usr/include/unistd.h:18, from conftest.c:93: /prefix/gentoo/usr/lib/gcc/i386-pc-solaris2.10/4.4.5/include-fixed/sys/feature_tests.h:341:2: error: #error "Compiler or options invalid for pre-UNIX 03 X/Open applications and pre-2001 POSIX applications" configure.ac: improve crypt check login-utils/my_crypt.h: replace old GNU_LIBRARY check with autoconf define for crypt.h [kzak@redhat.com: - remove my_crypt.h] Signed-off-by: Fabian Groffen Signed-off-by: Karel Zak --- diff --git a/configure.ac b/configure.ac index f68d7907..8922d1f6 100644 --- a/configure.ac +++ b/configure.ac @@ -520,17 +520,28 @@ else AM_CONDITIONAL(HAVE_UTEMPTER, false) fi - +# on Solaris, you can't mix and match standards, since we use c99 +# aparently at this stage, XOPEN_SOURCE will conflict. As workaround, +# check for crypt.h and use that without XOPEN_SOURCE. +AC_CHECK_HEADERS([crypt.h]) AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#ifdef HAVE_CRYPT_H +#include +#else #define _XOPEN_SOURCE #include +#endif ]], [[ char *c = crypt("abc","pw"); ]])],[],[ LIBS="$LIBS -lcrypt" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #ifdef HAVE_CRYPT_H + #include + #else #define _XOPEN_SOURCE #include + #endif ]], [[ char *c = crypt("abc","pw"); ]])],[ diff --git a/login-utils/Makefile.am b/login-utils/Makefile.am index c490999d..9c64149f 100644 --- a/login-utils/Makefile.am +++ b/login-utils/Makefile.am @@ -34,10 +34,9 @@ login_ldadd_common = chfn_SOURCES = chfn.c $(chfn_chsh_common) chsh_SOURCES = chsh.c $(chfn_chsh_common) -chfn_chsh_common = islocal.c setpwnam.c islocal.h my_crypt.h setpwnam.h \ +chfn_chsh_common = islocal.c setpwnam.c islocal.h setpwnam.h \ $(top_srcdir)/lib/env.c -login_SOURCES = login.c login.h my_crypt.h $(top_srcdir)/lib/setproctitle.c -newgrp_SOURCES = newgrp.c my_crypt.h +login_SOURCES = login.c login.h $(top_srcdir)/lib/setproctitle.c vipw_SOURCES = vipw.c setpwnam.h chfn_LDADD = $(login_ldadd_common) diff --git a/login-utils/chfn.c b/login-utils/chfn.c index 2e0c82b1..64f4ac42 100644 --- a/login-utils/chfn.c +++ b/login-utils/chfn.c @@ -34,7 +34,10 @@ #include #include -#include "my_crypt.h" +#ifdef HAVE_CRYPT_H +#include +#endif + #include "islocal.h" #include "setpwnam.h" #include "strutils.h" diff --git a/login-utils/chsh.c b/login-utils/chsh.c index 22b33506..778c4578 100644 --- a/login-utils/chsh.c +++ b/login-utils/chsh.c @@ -33,8 +33,11 @@ #include #include +#ifdef HAVE_CRYPT_H +#include +#endif + #include "c.h" -#include "my_crypt.h" #include "islocal.h" #include "setpwnam.h" #include "nls.h" diff --git a/login-utils/login.c b/login-utils/login.c index ad2932d0..5584c320 100644 --- a/login-utils/login.c +++ b/login-utils/login.c @@ -111,8 +111,11 @@ # include #endif +#ifdef HAVE_CRYPT_H +#include +#endif + #include "pathnames.h" -#include "my_crypt.h" #include "login.h" #include "strutils.h" #include "nls.h" diff --git a/login-utils/my_crypt.h b/login-utils/my_crypt.h deleted file mode 100644 index efb1a66f..00000000 --- a/login-utils/my_crypt.h +++ /dev/null @@ -1,3 +0,0 @@ -#if defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1 -#include -#endif diff --git a/login-utils/newgrp.c b/login-utils/newgrp.c index 6323af19..2ffe3873 100644 --- a/login-utils/newgrp.c +++ b/login-utils/newgrp.c @@ -16,9 +16,12 @@ #include #include +#ifdef HAVE_CRYPT_H +#include +#endif + #include "c.h" #include "pathnames.h" -#include "my_crypt.h" #include "nls.h" /* try to read password from gshadow */ diff --git a/simpleinit/simpleinit.c b/simpleinit/simpleinit.c index 5d627c0d..d7f9655e 100644 --- a/simpleinit/simpleinit.c +++ b/simpleinit/simpleinit.c @@ -43,7 +43,7 @@ # include #endif -#if defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1 +#ifdef HAVE_CRYPT_H #include #endif