Add --disable-nls flag and improve checks for gettext.

This commit is contained in:
Todd C. Miller
2011-05-09 10:58:52 -04:00
parent 411737cf25
commit 1994db70da
3 changed files with 108 additions and 11 deletions

View File

@@ -638,6 +638,12 @@ The following options are also configurable at runtime:
Disable environment resetting. This sets the default value Disable environment resetting. This sets the default value
of the "env_reset" Defaults option in sudoers to false. of the "env_reset" Defaults option in sudoers to false.
--disable-nls
Disable natural language support. By default, sudo will
use the gettext() family of functions, if available, to
implement messages in the invoking user's native language.
Note that translations do not exist for all languages.
Shadow password and C2 support Shadow password and C2 support
============================== ==============================

82
configure vendored
View File

@@ -862,6 +862,7 @@ enable_zlib
enable_env_reset enable_env_reset
enable_warnings enable_warnings
enable_admin_flag enable_admin_flag
enable_nls
with_selinux with_selinux
enable_gss_krb5_ccache_name enable_gss_krb5_ccache_name
enable_shared enable_shared
@@ -1519,6 +1520,7 @@ Optional Features:
--enable-env-reset Whether to enable environment resetting by default. --enable-env-reset Whether to enable environment resetting by default.
--enable-warnings Whether to enable compiler warnings --enable-warnings Whether to enable compiler warnings
--enable-admin-flag Whether to create a Ubuntu-style admin flag file --enable-admin-flag Whether to create a Ubuntu-style admin flag file
--disable-nls Disable natural language support using gettext
--enable-gss-krb5-ccache-name --enable-gss-krb5-ccache-name
Use GSS-API to set the Kerberos V cred cache name Use GSS-API to set the Kerberos V cred cache name
--enable-shared[=PKGS] build shared libraries [default=yes] --enable-shared[=PKGS] build shared libraries [default=yes]
@@ -5489,6 +5491,21 @@ $as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-admin-flag: $en
fi fi
# Check whether --enable-nls was given.
if test "${enable_nls+set}" = set; then :
enableval=$enable_nls; case "$enableval" in
yes|no) enable_nls=$enableval
;;
*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-nls: $enableval" >&5
$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-nls: $enableval" >&2;}
;;
esac
else
enable_nls=yes
fi
# Check whether --with-selinux was given. # Check whether --with-selinux was given.
if test "${with_selinux+set}" = set; then : if test "${with_selinux+set}" = set; then :
@@ -16691,22 +16708,28 @@ done
# Since gcc prefers /usr/local/include to /usr/include, we need to # Since gcc prefers /usr/local/include to /usr/include, we need to
# make sure we use the gettext() that matches the include file. # make sure we use the gettext() that matches the include file.
# First check that it links w/o additional libs, then try with -lintl. # First check that it links w/o additional libs, then try with -lintl.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext if test "$enable_nls" = "yes"; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */ /* end confdefs.h. */
#include <libintl.h>
#include <libintl.h>
int int
main () main ()
{ {
(void)gettext((char *)0, (char *)0); (void)gettext((char *)0);
; ;
return 0; return 0;
} }
_ACEOF _ACEOF
if ac_fn_c_try_link "$LINENO"; then : if ac_fn_c_try_link "$LINENO"; then :
$as_echo "#define HAVE_LIBINTL_H 1" >>confdefs.h
$as_echo "#define HAVE_LIBINTL_H 1" >>confdefs.h
else else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettext in -lintl" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettext in -lintl" >&5
$as_echo_n "checking for gettext in -lintl... " >&6; } $as_echo_n "checking for gettext in -lintl... " >&6; }
if test "${ac_cv_lib_intl_gettext+set}" = set; then : if test "${ac_cv_lib_intl_gettext+set}" = set; then :
$as_echo_n "(cached) " >&6 $as_echo_n "(cached) " >&6
@@ -16744,13 +16767,60 @@ fi
$as_echo "$ac_cv_lib_intl_gettext" >&6; } $as_echo "$ac_cv_lib_intl_gettext" >&6; }
if test "x$ac_cv_lib_intl_gettext" = x""yes; then : if test "x$ac_cv_lib_intl_gettext" = x""yes; then :
LIBS="${LIBS} -lintl" LIBS="${LIBS} -lintl"
$as_echo "#define HAVE_LIBINTL_H 1" >>confdefs.h $as_echo "#define HAVE_LIBINTL_H 1" >>confdefs.h
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettext in -lintl" >&5
$as_echo_n "checking for gettext in -lintl... " >&6; }
if test "${ac_cv_lib_intl_gettext_liconv+set}" = set; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lintl -liconv $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char gettext ();
int
main ()
{
return gettext ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_intl_gettext_liconv=yes
else
ac_cv_lib_intl_gettext_liconv=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_gettext_liconv" >&5
$as_echo "$ac_cv_lib_intl_gettext_liconv" >&6; }
if test "x$ac_cv_lib_intl_gettext_liconv" = x""yes; then :
LIBS="${LIBS} -lintl -liconv"
$as_echo "#define HAVE_LIBINTL_H 1" >>confdefs.h
fi fi
fi
fi fi
rm -f core conftest.err conftest.$ac_objext \ rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext conftest$ac_exeext conftest.$ac_ext
fi
case ${enable_zlib-"yes"} in case ${enable_zlib-"yes"} in
yes) yes)

View File

@@ -1311,6 +1311,16 @@ AC_ARG_ENABLE(admin-flag,
esac esac
]) ])
AC_ARG_ENABLE(nls,
[AS_HELP_STRING([--disable-nls], [Disable natural language support using gettext])],
[ case "$enableval" in
yes|no) enable_nls=$enableval
;;
*) AC_MSG_WARN([Ignoring unknown argument to --enable-nls: $enableval])
;;
esac
], [enable_nls=yes])
AC_ARG_WITH(selinux, [AS_HELP_STRING([--with-selinux], [enable SELinux support])], AC_ARG_WITH(selinux, [AS_HELP_STRING([--with-selinux], [enable SELinux support])],
[case $with_selinux in [case $with_selinux in
yes) SELINUX_USAGE="[[-r role]] [[-t type]] " yes) SELINUX_USAGE="[[-r role]] [[-t type]] "
@@ -2140,11 +2150,22 @@ AC_CHECK_FUNCS(getprogname, , [
# Since gcc prefers /usr/local/include to /usr/include, we need to # Since gcc prefers /usr/local/include to /usr/include, we need to
# make sure we use the gettext() that matches the include file. # make sure we use the gettext() that matches the include file.
# First check that it links w/o additional libs, then try with -lintl. # First check that it links w/o additional libs, then try with -lintl.
AC_LINK_IFELSE([AC_LANG_PROGRAM( if test "$enable_nls" = "yes"; then
[[#include <libintl.h>]], [(void)gettext((char *)0, (char *)0);])], AC_LINK_IFELSE(
[AC_DEFINE(HAVE_LIBINTL_H)], [
[AC_CHECK_LIB(intl, gettext, [LIBS="${LIBS} -lintl"] AC_LANG_PROGRAM([[#include <libintl.h>]], [(void)gettext((char *)0);])
[AC_DEFINE(HAVE_LIBINTL_H)])]) ], [
AC_DEFINE(HAVE_LIBINTL_H)
], [
AC_CHECK_LIB(intl, gettext,
[LIBS="${LIBS} -lintl"]
[AC_DEFINE(HAVE_LIBINTL_H)],
[
AC_CHECK_LIB(intl, gettext, [LIBS="${LIBS} -lintl -liconv"]
AC_DEFINE(HAVE_LIBINTL_H), [], [-liconv])
])
])
fi
dnl dnl
dnl Deferred zlib option processing. dnl Deferred zlib option processing.