mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-28 21:41:08 +00:00
24906b43b9
Merge new message handling code from GNU gettext, by Drepper. * intl: New directory. * Makefile (subdirs): Add intl. * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Return USER_ENTRY instead of storing it on our stack. * elf/rtld.c (rtld_command): Variable removed. (_dl_skip_args): New variable. (dl_main): Increment _dl_skip_args instead of setting rtld_command. If the link_map for the executable itself is not first in the chain, make it so. * sysdeps/i386/dl-machine.h (RTLD_START): Use _dl_skip_args as count of args to skip. Thu Sep 28 09:20:04 1995 Ulrich Drepper <drepper@gnu.ai.mit.edu> * stdlib/strtod.c (STRTOF): Fix handling of numbers with lots of leading zeroes.
57 lines
1.6 KiB
C
57 lines
1.6 KiB
C
/* hash-string - Implements a string hashing function.
|
|
Copyright (C) 1995 Software Foundation, Inc.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2, or (at your option)
|
|
any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|
|
|
#ifdef HAVE_VALUES_H
|
|
# include <values.h>
|
|
#endif
|
|
|
|
/* @@ end of prolog @@ */
|
|
|
|
#ifndef BITSPERBYTE
|
|
# define BITSPERBYTE 8
|
|
#endif
|
|
|
|
#ifndef LONGBITS
|
|
# define LONGBITS (sizeof (long) * BITSPERBYTE)
|
|
#endif /* LONGBITS */
|
|
|
|
/* Defines the so called `hashpjw' function by P.J. Weinberger
|
|
[see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
|
|
1986, 1987 Bell Telephone Laboratories, Inc.] */
|
|
static inline unsigned long
|
|
hash_string (str_param)
|
|
const char *str_param;
|
|
{
|
|
unsigned long hval, g;
|
|
const char *str = str_param;
|
|
|
|
/* Compute the hash value for the given string. */
|
|
hval = 0;
|
|
while (*str != '\0')
|
|
{
|
|
hval <<= 4;
|
|
hval += (unsigned long) *str++;
|
|
g = hval & ((unsigned long) 0xf << (LONGBITS - 4));
|
|
if (g != 0)
|
|
{
|
|
hval ^= g >> (LONGBITS - 8);
|
|
hval ^= g;
|
|
}
|
|
}
|
|
return hval;
|
|
}
|