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 <unistd.h> 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 <grobian@gentoo.org> Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
aabe244176
commit
0aeb57aca3
13
configure.ac
13
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 <crypt.h>
|
||||
#else
|
||||
#define _XOPEN_SOURCE
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
]], [[
|
||||
char *c = crypt("abc","pw");
|
||||
]])],[],[
|
||||
LIBS="$LIBS -lcrypt"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#ifdef HAVE_CRYPT_H
|
||||
#include <crypt.h>
|
||||
#else
|
||||
#define _XOPEN_SOURCE
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
]], [[
|
||||
char *c = crypt("abc","pw");
|
||||
]])],[
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -34,7 +34,10 @@
|
|||
#include <ctype.h>
|
||||
#include <getopt.h>
|
||||
|
||||
#include "my_crypt.h"
|
||||
#ifdef HAVE_CRYPT_H
|
||||
#include <crypt.h>
|
||||
#endif
|
||||
|
||||
#include "islocal.h"
|
||||
#include "setpwnam.h"
|
||||
#include "strutils.h"
|
||||
|
|
|
@ -33,8 +33,11 @@
|
|||
#include <ctype.h>
|
||||
#include <getopt.h>
|
||||
|
||||
#ifdef HAVE_CRYPT_H
|
||||
#include <crypt.h>
|
||||
#endif
|
||||
|
||||
#include "c.h"
|
||||
#include "my_crypt.h"
|
||||
#include "islocal.h"
|
||||
#include "setpwnam.h"
|
||||
#include "nls.h"
|
||||
|
|
|
@ -111,8 +111,11 @@
|
|||
# include <libaudit.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CRYPT_H
|
||||
#include <crypt.h>
|
||||
#endif
|
||||
|
||||
#include "pathnames.h"
|
||||
#include "my_crypt.h"
|
||||
#include "login.h"
|
||||
#include "strutils.h"
|
||||
#include "nls.h"
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
#if defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1
|
||||
#include <crypt.h>
|
||||
#endif
|
|
@ -16,9 +16,12 @@
|
|||
#include <errno.h>
|
||||
#include <err.h>
|
||||
|
||||
#ifdef HAVE_CRYPT_H
|
||||
#include <crypt.h>
|
||||
#endif
|
||||
|
||||
#include "c.h"
|
||||
#include "pathnames.h"
|
||||
#include "my_crypt.h"
|
||||
#include "nls.h"
|
||||
|
||||
/* try to read password from gshadow */
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
# include <shadow.h>
|
||||
#endif
|
||||
|
||||
#if defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1
|
||||
#ifdef HAVE_CRYPT_H
|
||||
#include <crypt.h>
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue