aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog45
-rw-r--r--elf/dl-addr.c32
-rw-r--r--iconv/gconv_open.c20
-rw-r--r--intl/dcigettext.c21
-rw-r--r--locale/langinfo.h3
-rw-r--r--malloc/malloc.c4
-rw-r--r--nscd/nscd.c2
-rw-r--r--nss/getXXent_r.c10
-rw-r--r--nss/getent.c3
-rw-r--r--resolv/netdb.h12
10 files changed, 100 insertions, 52 deletions
diff --git a/ChangeLog b/ChangeLog
index b4ccb45..6f52f34 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,48 @@
+2000-07-17 Bruno Haible <haible@clisp.cons.org>
+
+ * iconv/gconv_open.c (__gconv_open): Initialize the __data
+ field of struct __gconv_trans_data differently. Don't pass NULL to
+ trans_init_fct. Simplify list append operation.
+
+2000-07-14 Bruno Haible <haible@clisp.cons.org>
+
+ * intl/dcigettext.c (dcigettext): Call plural_eval on all platforms,
+ not only those having tsearch.
+
+2000-07-17 Ulrich Drepper <drepper@redhat.com>
+
+ * locale/langinfo.h: Add placeholder values in enum for removed
+ LC_CTYPE entries.
+
+2000-07-17 Jakub Jelinek <jakub@redhat.com>
+
+ * elf/dl-addr.c (_dl_addr): Keep searching in the _dl_loaded
+ chain if the PHDR check fails.
+
+2000-07-17 Mark Kettenis <kettenis@gnu.org>
+
+ * nss/getent.c (print_hosts): Make sure we always print a space
+ between numeric addresses and hostnames.
+
+2000-07-17 Wolfram Gloger <wg@malloc.de>
+
+ * malloc/malloc.c (chunk_alloc): Use mmap_chunk() only if allowed,
+ i.e. if n_mmaps_max>0.
+
+2000-07-16 Mark Kettenis <kettenis@gnu.org>
+
+ * resolv/netdb.h (AI_V4MAPPED, AI_ALL, AI_ADDRCONFIG): Adjust
+ values to remove possible clash with other AI_* constants.
+ (AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST): Define as
+ hexadecimal constants to stress the fact they're in fact
+ bit flags.
+
+2000-07-15 Mark Kettenis <kettenis@gnu.org>
+
+ * nss/getXXent_r.c [NEED__RES]: Include <resolv.h>.
+ (SETFUNC_NAME, ENDFUNC_NAME, REENTRANT_GETNAME): Use res_ninit
+ instead of res_init.
+
2000-07-16 Ulrich Drepper <drepper@redhat.com>
* crypt/md5-crypt.c (__md5_crypt_r): Add casts for first
diff --git a/elf/dl-addr.c b/elf/dl-addr.c
index d3adf12..2fda238 100644
--- a/elf/dl-addr.c
+++ b/elf/dl-addr.c
@@ -36,27 +36,25 @@ _dl_addr (const void *address, Dl_info *info)
for (l = _dl_loaded; l; l = l->l_next)
if (addr >= l->l_map_start && addr < l->l_map_end)
{
+ /* We know ADDRESS lies within L if in any shared object.
+ Make sure it isn't past the end of L's segments. */
+ size_t n = l->l_phnum;
+ if (n > 0)
+ {
+ do
+ --n;
+ while (l->l_phdr[n].p_type != PT_LOAD);
+ if (addr >= (l->l_addr +
+ l->l_phdr[n].p_vaddr + l->l_phdr[n].p_memsz))
+ /* Off the end of the highest-addressed shared object. */
+ continue;
+ }
+
match = l;
break;
}
- if (__builtin_expect (match != NULL, 1))
- {
- /* We know ADDRESS lies within MATCH if in any shared object.
- Make sure it isn't past the end of MATCH's segments. */
- size_t n = match->l_phnum;
- if (n > 0)
- {
- do
- --n;
- while (match->l_phdr[n].p_type != PT_LOAD);
- if (addr >= (match->l_addr +
- match->l_phdr[n].p_vaddr + match->l_phdr[n].p_memsz))
- /* Off the end of the highest-addressed shared object. */
- return 0;
- }
- }
- else
+ if (match == NULL)
return 0;
/* Now we know what object the address lies in. */
diff --git a/iconv/gconv_open.c b/iconv/gconv_open.c
index bbe732c..842bf73 100644
--- a/iconv/gconv_open.c
+++ b/iconv/gconv_open.c
@@ -212,13 +212,13 @@ __gconv_open (const char *toset, const char *fromset, __gconv_t *handle,
/* Match! Now try the initializer. */
if (runp->trans_init_fct == NULL
- || (runp->trans_init_fct (data, steps[cnt].__to_name)
+ || (runp->trans_init_fct (&data,
+ steps[cnt].__to_name)
== __GCONV_OK))
{
/* Append at the end of the list. */
struct __gconv_trans_data *newp;
- struct __gconv_trans_data *endp;
- struct __gconv_trans_data *lastp;
+ struct __gconv_trans_data **lastp;
newp = (struct __gconv_trans_data *)
malloc (sizeof (struct __gconv_trans_data));
@@ -228,18 +228,14 @@ __gconv_open (const char *toset, const char *fromset, __gconv_t *handle,
newp->__trans_fct = runp->trans_fct;
newp->__trans_context_fct = runp->trans_context_fct;
newp->__trans_end_fct = runp->trans_end_fct;
- newp->__data = NULL;
+ newp->__data = data;
newp->__next = NULL;
- lastp = NULL;
- for (endp = result->__data[cnt].__trans;
- endp != NULL; endp = endp->__next)
- lastp = endp;
+ lastp = &result->__data[cnt].__trans;
+ while (*lastp != NULL)
+ lastp = &(*lastp)->__next;
- if (lastp == NULL)
- result->__data[cnt].__trans = newp;
- else
- lastp->__next = newp;
+ *lastp = newp;
}
break;
}
diff --git a/intl/dcigettext.c b/intl/dcigettext.c
index ed470b4..fcbc130 100644
--- a/intl/dcigettext.c
+++ b/intl/dcigettext.c
@@ -553,24 +553,25 @@ DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category)
if (domain != NULL)
{
unsigned long int index = 0;
-#if defined HAVE_TSEARCH || defined _LIBC
- struct loaded_domain *domaindata =
- (struct loaded_domain *) domain->data;
if (plural != 0)
{
+ struct loaded_domain *domaindata =
+ (struct loaded_domain *) domain->data;
+ index = plural_eval (domaindata->plural, n);
+ if (index >= domaindata->nplurals)
+ /* This should never happen. It means the plural expression
+ and the given maximum value do not match. */
+ index = 0;
+
+#if defined HAVE_TSEARCH || defined _LIBC
/* Try to find the translation among those which we
found at some time. */
search = (struct known_translation_t *) alloca (sizeof (*search)
+ msgid_len);
memcpy (search->msgid, msgid1, msgid_len);
search->domain = (char *) domainname;
- search->plindex = plural_eval (domaindata->plural, n);
- if (search->plindex >= domaindata->nplurals)
- /* This should never happen. It means the plural expression
- and the given maximum value do not match. */
- search->plindex = 0;
- index = search->plindex;
+ search->plindex = index;
search->category = category;
foundp = (struct known_translation_t **) tfind (search, &root,
@@ -580,8 +581,8 @@ DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category)
__libc_rwlock_unlock (_nl_state_lock);
return (char *) (*foundp)->translation;
}
- }
#endif
+ }
retval = _nl_find_msg (domain, msgid1, index);
diff --git a/locale/langinfo.h b/locale/langinfo.h
index 6425dec..d2cc2a8 100644
--- a/locale/langinfo.h
+++ b/locale/langinfo.h
@@ -257,9 +257,12 @@ enum
These `nl_langinfo' names are used only internally. */
_NL_CTYPE_CLASS = _NL_ITEM (LC_CTYPE, 0),
_NL_CTYPE_TOUPPER,
+ _NL_CTYPE_GAP1,
_NL_CTYPE_TOLOWER,
+ _NL_CTYPE_GAP2,
_NL_CTYPE_CLASS32,
_NL_CTYPE_NAMES,
+ _NL_CTYPE_GAP3,
_NL_CTYPE_HASH_SIZE,
_NL_CTYPE_HASH_LAYERS,
_NL_CTYPE_CLASS_NAMES,
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 8eed746..f2246f6 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -2942,8 +2942,8 @@ chunk_alloc(ar_ptr, nb) arena *ar_ptr; INTERNAL_SIZE_T nb;
{
#if HAVE_MMAP
/* A last attempt: when we are out of address space in the arena,
- try mmap anyway, disregarding n_mmaps_max. */
- if((victim = mmap_chunk(nb)) != 0)
+ try mmap anyway, as long as it is allowed at all. */
+ if (n_mmaps_max > 0 && (victim = mmap_chunk(nb)) != 0)
return victim;
#endif
return 0; /* propagate failure */
diff --git a/nscd/nscd.c b/nscd/nscd.c
index 1269a91..409f9c1 100644
--- a/nscd/nscd.c
+++ b/nscd/nscd.c
@@ -288,7 +288,7 @@ print_version (FILE *stream, struct argp_state *state)
Copyright (C) %s Free Software Foundation, Inc.\n\
This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "1999");
+"), "2000");
fprintf (stream, gettext ("Written by %s.\n"),
"Thorsten Kukuk and Ulrich Drepper");
}
diff --git a/nss/getXXent_r.c b/nss/getXXent_r.c
index e0ba98b..4e45ec1 100644
--- a/nss/getXXent_r.c
+++ b/nss/getXXent_r.c
@@ -22,6 +22,10 @@
#include "nsswitch.h"
+#ifdef NEED__RES
+# include <resolv.h>
+#endif
+
/*******************************************************************\
|* Here we assume several symbols to be defined: *|
|* *|
@@ -149,7 +153,7 @@ SETFUNC_NAME (STAYOPEN)
int no_more;
#ifdef NEED__RES
- if ((_res.options & RES_INIT) == 0 && res_init () == -1)
+ if ((_res.options & RES_INIT) == 0 && __res_ninit (&_res) == -1)
{
__set_h_errno (NETDB_INTERNAL);
return;
@@ -187,7 +191,7 @@ ENDFUNC_NAME (void)
int no_more;
#ifdef NEED__RES
- if ((_res.options & RES_INIT) == 0 && res_init () == -1)
+ if ((_res.options & RES_INIT) == 0 && __res_ninit (&_res) == -1)
{
__set_h_errno (NETDB_INTERNAL);
return;
@@ -224,7 +228,7 @@ INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer, size_t buflen,
enum nss_status status;
#ifdef NEED__RES
- if ((_res.options & RES_INIT) == 0 && res_init () == -1)
+ if ((_res.options & RES_INIT) == 0 && __res_ninit (&_res) == -1)
{
__set_h_errno (NETDB_INTERNAL);
*result = NULL;
diff --git a/nss/getent.c b/nss/getent.c
index d3a9fde..5834d79 100644
--- a/nss/getent.c
+++ b/nss/getent.c
@@ -257,8 +257,9 @@ print_hosts (struct hostent *host)
buf, sizeof (buf));
fputs (ip, stdout);
- for (i = strlen (ip); i < 16; ++i)
+ for (i = strlen (ip); i < 15; ++i)
fputs (" ", stdout);
+ fputs (" ", stdout);
fputs (host->h_name, stdout);
i = 0;
diff --git a/resolv/netdb.h b/resolv/netdb.h
index f8ae4f2..e0331db 100644
--- a/resolv/netdb.h
+++ b/resolv/netdb.h
@@ -149,9 +149,9 @@ extern struct hostent *getipnodebyaddr (__const void *__addr, socklen_t __len,
extern struct hostent *getipnodebyname (__const char *__name, int __type,
int __flags, int *__error_num) __THROW;
-# define AI_V4MAPPED 1 /* IPv4-mapped addresses are acceptable. */
-# define AI_ALL 2 /* Return both IPv4 and IPv6 addresses. */
-# define AI_ADDRCONFIG 4 /* Use configuration of this host to choose
+# define AI_V4MAPPED 0x0008 /* IPv4-mapped addresses are acceptable. */
+# define AI_ALL 0x0010 /* Return both IPv4 and IPv6 addresses. */
+# define AI_ADDRCONFIG 0x0020 /* Use configuration of this host to choose
returned address type. */
# define AI_DEFAULT (AI_V4MAPPED | AI_ADDRCONFIG)
@@ -437,9 +437,9 @@ struct addrinfo
};
/* Possible values for `ai_flags' field in `addrinfo' structure. */
-# define AI_PASSIVE 1 /* Socket address is intended for `bind'. */
-# define AI_CANONNAME 2 /* Request for canonical name. */
-# define AI_NUMERICHOST 4 /* Don't use name resolution. */
+# define AI_PASSIVE 0x0001 /* Socket address is intended for `bind'. */
+# define AI_CANONNAME 0x0002 /* Request for canonical name. */
+# define AI_NUMERICHOST 0x0004 /* Don't use name resolution. */
/* Error values for `getaddrinfo' function. */
# define EAI_BADFLAGS -1 /* Invalid value for `ai_flags' field. */