mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 17:53:37 +08:00
Update.
2001-09-04 Jakub Jelinek <jakub@redhat.com> * iconv/strtab.c (strtabinit): Initialize null Strent. (newstring): Move len == 0 handling... (strtabadd): ...here. If len == 1, return null Strent. When inserting a suffix of an existing string, check if it is not equal to some suffix already recorded. Copy left and right members over if adding longer string. 2001-09-04 Jakub Jelinek <jakub@redhat.com> * sunrpc/rpc_cout.c (upcase): Account for trailing '\0'. * sysdeps/unix/sysv/linux/alpha/gethostname.c: Include <errno.h>. (__syscall_gethostname): Add prototype.
This commit is contained in:
parent
903244ac3c
commit
71ce28fd1a
17
ChangeLog
17
ChangeLog
@ -1,3 +1,20 @@
|
|||||||
|
2001-09-04 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* iconv/strtab.c (strtabinit): Initialize null Strent.
|
||||||
|
(newstring): Move len == 0 handling...
|
||||||
|
(strtabadd): ...here.
|
||||||
|
If len == 1, return null Strent.
|
||||||
|
When inserting a suffix of an existing string, check if
|
||||||
|
it is not equal to some suffix already recorded.
|
||||||
|
Copy left and right members over if adding longer string.
|
||||||
|
|
||||||
|
2001-09-04 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* sunrpc/rpc_cout.c (upcase): Account for trailing '\0'.
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/alpha/gethostname.c: Include <errno.h>.
|
||||||
|
(__syscall_gethostname): Add prototype.
|
||||||
|
|
||||||
2001-09-04 Ulrich Drepper <drepper@redhat.com>
|
2001-09-04 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* elf/dl-object.c (_dl_new_object): Remove unnecessary if.
|
* elf/dl-object.c (_dl_new_object): Remove unnecessary if.
|
||||||
|
@ -90,13 +90,21 @@ extern size_t strtaboffset (struct Strent *se);
|
|||||||
struct Strtab *
|
struct Strtab *
|
||||||
strtabinit (void)
|
strtabinit (void)
|
||||||
{
|
{
|
||||||
|
struct Strtab *ret;
|
||||||
|
|
||||||
if (ps == 0)
|
if (ps == 0)
|
||||||
{
|
{
|
||||||
ps = sysconf (_SC_PAGESIZE) - 2 * sizeof (void *);
|
ps = sysconf (_SC_PAGESIZE) - 2 * sizeof (void *);
|
||||||
assert (sizeof (struct memoryblock) < ps);
|
assert (sizeof (struct memoryblock) < ps);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (struct Strtab *) calloc (1, sizeof (struct Strtab));
|
ret = (struct Strtab *) calloc (1, sizeof (struct Strtab));
|
||||||
|
if (ret != NULL)
|
||||||
|
{
|
||||||
|
ret->null.len = 1;
|
||||||
|
ret->null.string = "";
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -141,10 +149,6 @@ newstring (struct Strtab *st, const char *str, size_t len)
|
|||||||
size_t align;
|
size_t align;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* Compute the string length if the caller doesn't know it. */
|
|
||||||
if (len == 0)
|
|
||||||
len = strlen (str) + 1;
|
|
||||||
|
|
||||||
/* Compute the amount of padding needed to make the structure aligned. */
|
/* Compute the amount of padding needed to make the structure aligned. */
|
||||||
align = ((__alignof__ (struct Strent)
|
align = ((__alignof__ (struct Strent)
|
||||||
- (((uintptr_t) st->backp)
|
- (((uintptr_t) st->backp)
|
||||||
@ -211,6 +215,14 @@ strtabadd (struct Strtab *st, const char *str, size_t len)
|
|||||||
struct Strent *newstr;
|
struct Strent *newstr;
|
||||||
struct Strent **sep;
|
struct Strent **sep;
|
||||||
|
|
||||||
|
/* Compute the string length if the caller doesn't know it. */
|
||||||
|
if (len == 0)
|
||||||
|
len = strlen (str) + 1;
|
||||||
|
|
||||||
|
/* Make sure all "" strings get offset 0. */
|
||||||
|
if (len == 1)
|
||||||
|
return &st->null;
|
||||||
|
|
||||||
/* Allocate memory for the new string and its associated information. */
|
/* Allocate memory for the new string and its associated information. */
|
||||||
newstr = newstring (st, str, len);
|
newstr = newstring (st, str, len);
|
||||||
|
|
||||||
@ -223,6 +235,19 @@ strtabadd (struct Strtab *st, const char *str, size_t len)
|
|||||||
/* This is not the same entry. This means we have a prefix match. */
|
/* This is not the same entry. This means we have a prefix match. */
|
||||||
if ((*sep)->len > newstr->len)
|
if ((*sep)->len > newstr->len)
|
||||||
{
|
{
|
||||||
|
struct Strent *subs;
|
||||||
|
|
||||||
|
for (subs = (*sep)->next; subs; subs = subs->next)
|
||||||
|
if (subs->len == newstr->len)
|
||||||
|
{
|
||||||
|
/* We have an exact match with a substring. Free the memory
|
||||||
|
we allocated. */
|
||||||
|
st->left += st->backp - (char *) newstr;
|
||||||
|
st->backp = (char *) newstr;
|
||||||
|
|
||||||
|
return subs;
|
||||||
|
}
|
||||||
|
|
||||||
/* We have a new substring. This means we don't need the reverse
|
/* We have a new substring. This means we don't need the reverse
|
||||||
string of this entry anymore. */
|
string of this entry anymore. */
|
||||||
st->backp -= newstr->len;
|
st->backp -= newstr->len;
|
||||||
@ -238,6 +263,8 @@ strtabadd (struct Strtab *st, const char *str, size_t len)
|
|||||||
it is longer. In this case we have to put it first. */
|
it is longer. In this case we have to put it first. */
|
||||||
st->total += newstr->len - (*sep)->len;
|
st->total += newstr->len - (*sep)->len;
|
||||||
newstr->next = *sep;
|
newstr->next = *sep;
|
||||||
|
newstr->left = (*sep)->left;
|
||||||
|
newstr->right = (*sep)->right;
|
||||||
*sep = newstr;
|
*sep = newstr;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -801,7 +801,7 @@ static char *
|
|||||||
upcase (const char *str)
|
upcase (const char *str)
|
||||||
{
|
{
|
||||||
char *ptr, *hptr;
|
char *ptr, *hptr;
|
||||||
ptr = malloc (strlen (str));
|
ptr = malloc (strlen (str) + 1);
|
||||||
if (ptr == NULL)
|
if (ptr == NULL)
|
||||||
{
|
{
|
||||||
f_print (stderr, "malloc failed\n");
|
f_print (stderr, "malloc failed\n");
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||||
02111-1307 USA. */
|
02111-1307 USA. */
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
@ -24,6 +25,8 @@
|
|||||||
#include <sys/syscall.h>
|
#include <sys/syscall.h>
|
||||||
#include <bp-checks.h>
|
#include <bp-checks.h>
|
||||||
|
|
||||||
|
extern int __syscall_gethostname (char *name, size_t len);
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
__gethostname (char *name, size_t len)
|
__gethostname (char *name, size_t len)
|
||||||
|
Loading…
Reference in New Issue
Block a user