mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 10:50:07 +00:00
Update.
* config.h.in: Add entry for HAVE_LIBIDN. * configure.in: If libidn add-on present define HAVE_LIBIDN. * Versions.def: Add entry for libcidn. 2004-03-07 Simon Josefsson <jas@extundo.com> * resolv/netdb.h [__USE_GNU]: Add new AI_IDN ai_flags for addrinfo. [__USE_GNU]: Add new error code EAI_IDN_ENCODE for getaddrinfo. * sysdeps/posix/getaddrinfo.c: Add prototype for __idna_to_ascii_lz and define IDNA_SUCCESS. (gaih_inet): If ai_flags have AI_IDN, invoke __idna_to_ascii_lz. (getaddrinfo): Fix EAI_BADFLAGS test to include AI_IDN. All changes only applicable when glibc is compiled with the libidn add-on. 2004-03-07 Ulrich Drepper <drepper@redhat.com>
This commit is contained in:
parent
01859b1c24
commit
e2fd3cbe08
17
ChangeLog
17
ChangeLog
@ -1,3 +1,20 @@
|
||||
2004-03-07 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* config.h.in: Add entry for HAVE_LIBIDN.
|
||||
* configure.in: If libidn add-on present define HAVE_LIBIDN.
|
||||
* Versions.def: Add entry for libcidn.
|
||||
|
||||
2004-03-07 Simon Josefsson <jas@extundo.com>
|
||||
|
||||
* resolv/netdb.h [__USE_GNU]: Add new AI_IDN ai_flags for addrinfo.
|
||||
[__USE_GNU]: Add new error code EAI_IDN_ENCODE for getaddrinfo.
|
||||
* sysdeps/posix/getaddrinfo.c: Add prototype for __idna_to_ascii_lz
|
||||
and define IDNA_SUCCESS.
|
||||
(gaih_inet): If ai_flags have AI_IDN, invoke __idna_to_ascii_lz.
|
||||
(getaddrinfo): Fix EAI_BADFLAGS test to include AI_IDN.
|
||||
All changes only applicable when glibc is compiled with the libidn
|
||||
add-on.
|
||||
|
||||
2004-03-07 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/ia64/dl-static.c (_dl_static_init): Call
|
||||
|
@ -108,3 +108,6 @@ libthread_db {
|
||||
libanl {
|
||||
GLIBC_2.2.3
|
||||
}
|
||||
libcidn {
|
||||
GLIBC_PRIVATE
|
||||
}
|
||||
|
@ -205,6 +205,9 @@
|
||||
/* Defined if the linker supports the -z relro option. */
|
||||
#undef HAVE_Z_RELRO
|
||||
|
||||
/* Defined of libidn is available. */
|
||||
#undef HAVE_LIBIDN
|
||||
|
||||
/*
|
||||
*/
|
||||
|
||||
|
8
configure
vendored
8
configure
vendored
@ -7293,6 +7293,7 @@ use_ldconfig=no
|
||||
ldd_rewrite_script=no
|
||||
libc_cv_sysconfdir=$sysconfdir
|
||||
libc_cv_gcc_unwind_find_fde=no
|
||||
libc_cv_idn=no
|
||||
|
||||
# Iterate over all the sysdep directories we will use, running their
|
||||
# configure fragments, and looking for a uname implementation.
|
||||
@ -7467,6 +7468,13 @@ if test $shared = default; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if test x"$libc_cv_idn" = xyes; then
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_LIBIDN 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
|
||||
echo "$as_me:$LINENO: checking whether -fPIC is default" >&5
|
||||
echo $ECHO_N "checking whether -fPIC is default... $ECHO_C" >&6
|
||||
if test "${pic_default+set}" = set; then
|
||||
|
@ -1903,6 +1903,7 @@ use_ldconfig=no
|
||||
ldd_rewrite_script=no
|
||||
libc_cv_sysconfdir=$sysconfdir
|
||||
libc_cv_gcc_unwind_find_fde=no
|
||||
libc_cv_idn=no
|
||||
|
||||
# Iterate over all the sysdep directories we will use, running their
|
||||
# configure fragments, and looking for a uname implementation.
|
||||
@ -2045,6 +2046,10 @@ if test $shared = default; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if test x"$libc_cv_idn" = xyes; then
|
||||
AC_DEFINE(HAVE_LIBIDN)
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([whether -fPIC is default], pic_default,
|
||||
[pic_default=yes
|
||||
cat > conftest.c <<EOF
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1996-2002, 2003 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996-2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -573,6 +573,11 @@ struct gaicb
|
||||
# define AI_ALL 0x0010 /* Return IPv4 mapped and IPv6 addresses. */
|
||||
# define AI_ADDRCONFIG 0x0020 /* Use configuration of this host to choose
|
||||
returned address type.. */
|
||||
# ifdef __USE_GNU
|
||||
# define AI_IDN 0x0040 /* IDN encode input (assuming it is encoded
|
||||
in the current locale's character set)
|
||||
before looking it up. */
|
||||
# endif
|
||||
|
||||
/* Error values for `getaddrinfo' function. */
|
||||
# define EAI_BADFLAGS -1 /* Invalid value for `ai_flags' field. */
|
||||
@ -592,6 +597,7 @@ struct gaicb
|
||||
# define EAI_NOTCANCELED -102 /* Request not canceled. */
|
||||
# define EAI_ALLDONE -103 /* All requests done. */
|
||||
# define EAI_INTR -104 /* Interrupted by a signal. */
|
||||
# define EAI_IDN_ENCODE -105 /* IDN encoding failed. */
|
||||
# endif
|
||||
|
||||
# define NI_MAXHOST 1025
|
||||
|
@ -55,6 +55,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#include <nsswitch.h>
|
||||
#include <not-cancel.h>
|
||||
|
||||
extern int __idna_to_ascii_lz (const char *input, char **output, int flags);
|
||||
#define IDNA_SUCCESS 0
|
||||
|
||||
#define GAIH_OKIFUNSPEC 0x0100
|
||||
#define GAIH_EAI ~(GAIH_OKIFUNSPEC)
|
||||
|
||||
@ -539,6 +542,18 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
at->scopeid = 0;
|
||||
at->next = NULL;
|
||||
|
||||
#ifdef HAVE_LIBIDN
|
||||
if (req->ai_flags & AI_IDN)
|
||||
{
|
||||
char *p = NULL;
|
||||
rc = __idna_to_ascii_lz (name, &p, 0);
|
||||
if (rc != IDNA_SUCCESS)
|
||||
return -EAI_IDN_ENCODE;
|
||||
name = strdupa (p);
|
||||
free (p);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (inet_pton (AF_INET, name, at->addr) > 0)
|
||||
{
|
||||
if (req->ai_family == AF_UNSPEC || req->ai_family == AF_INET)
|
||||
@ -1252,6 +1267,9 @@ getaddrinfo (const char *name, const char *service,
|
||||
|
||||
if (hints->ai_flags
|
||||
& ~(AI_PASSIVE|AI_CANONNAME|AI_NUMERICHOST|AI_ADDRCONFIG|AI_V4MAPPED
|
||||
#ifdef HAVE_LIBIDN
|
||||
|AI_IDN
|
||||
#endif
|
||||
|AI_ALL))
|
||||
return EAI_BADFLAGS;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user