summaryrefslogtreecommitdiff
path: root/intl
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-06-11 21:57:23 +0000
committerUlrich Drepper <drepper@redhat.com>2003-06-11 21:57:23 +0000
commitdd9423a67a7650a9b0f50d8151e4f3797c5a14f8 (patch)
tree2b796d5a03925d5782c12a7844c54f631f7d789c /intl
parentc98d505c4dd96f7a58a3434fadbe4f6c30c29b08 (diff)
Update.
2003-06-11 Ulrich Drepper <drepper@redhat.com> * allocatestack.c (queue_stack): Always inline. * ptreadhP.h (__do_cancel): Likewise.
Diffstat (limited to 'intl')
-rw-r--r--intl/Makefile4
-rw-r--r--intl/dcigettext.c4
-rw-r--r--intl/hash-string.c47
-rw-r--r--intl/hash-string.h28
-rw-r--r--intl/loadmsgcat.c4
5 files changed, 56 insertions, 31 deletions
diff --git a/intl/Makefile b/intl/Makefile
index ad38e263f9..32212c0e29 100644
--- a/intl/Makefile
+++ b/intl/Makefile
@@ -22,8 +22,8 @@ subdir = intl
headers = libintl.h
routines = bindtextdom dcgettext dgettext gettext \
dcigettext dcngettext dngettext ngettext \
- finddomain loadmsgcat localealias textdomain \
- l10nflist explodename plural plural-exp
+ finddomain loadmsgcat localealias textdomain
+aux = l10nflist explodename plural plural-exp hash-string
distribute = gmo.h gettextP.h hash-string.h loadinfo.h locale.alias \
plural.y plural-exp.h po2test.sed tst-gettext.sh tst-translit.sh \
translit.po tst-gettext2.sh tstlang1.po tstlang2.po tstcodeset.po\
diff --git a/intl/dcigettext.c b/intl/dcigettext.c
index 9118dbdda9..fa53b7c574 100644
--- a/intl/dcigettext.c
+++ b/intl/dcigettext.c
@@ -1,5 +1,5 @@
/* Implementation of the internal dcigettext function.
- Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1995-2002, 2003 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
@@ -695,7 +695,7 @@ _nl_find_msg (domain_file, domainbinding, msgid, lengthp)
{
/* Use the hashing table. */
nls_uint32 len = strlen (msgid);
- nls_uint32 hash_val = hash_string (msgid);
+ nls_uint32 hash_val = __hash_string (msgid);
nls_uint32 idx = hash_val % domain->hash_size;
nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
diff --git a/intl/hash-string.c b/intl/hash-string.c
new file mode 100644
index 0000000000..e4b0f8fe57
--- /dev/null
+++ b/intl/hash-string.c
@@ -0,0 +1,47 @@
+/* Implements a string hashing function.
+ Copyright (C) 1995, 1997, 1998, 2000, 2003 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
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include "hash-string.h"
+
+
+/* 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.] */
+unsigned long int
+__hash_string (str_param)
+ const char *str_param;
+{
+ unsigned long int 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 int) *str++;
+ g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
+ if (g != 0)
+ {
+ hval ^= g >> (HASHWORDBITS - 8);
+ hval ^= g;
+ }
+ }
+ return hval;
+}
diff --git a/intl/hash-string.h b/intl/hash-string.h
index ae515a7655..578a329e7d 100644
--- a/intl/hash-string.h
+++ b/intl/hash-string.h
@@ -1,5 +1,5 @@
/* Implements a string hashing function.
- Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1997, 1998, 2000, 2003 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
@@ -34,27 +34,5 @@
/* 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 unsigned long int hash_string PARAMS ((const char *__str_param));
-
-static inline unsigned long int
-hash_string (str_param)
- const char *str_param;
-{
- unsigned long int 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 int) *str++;
- g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
- if (g != 0)
- {
- hval ^= g >> (HASHWORDBITS - 8);
- hval ^= g;
- }
- }
- return hval;
-}
+extern unsigned long int __hash_string PARAMS ((const char *__str_param))
+ attribute_hidden;
diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c
index afcbd3c9fb..55dab143d3 100644
--- a/intl/loadmsgcat.c
+++ b/intl/loadmsgcat.c
@@ -1,5 +1,5 @@
/* Load needed message catalogs.
- Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1995-2002, 2003 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
@@ -1209,7 +1209,7 @@ _nl_load_domain (domain_file, domainbinding)
for (i = 0; i < n_sysdep_strings; i++)
{
const char *msgid = inmem_orig_sysdep_tab[i].pointer;
- nls_uint32 hash_val = hash_string (msgid);
+ nls_uint32 hash_val = __hash_string (msgid);
nls_uint32 idx = hash_val % domain->hash_size;
nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));