79 lines
2.2 KiB
Diff
79 lines
2.2 KiB
Diff
|
--- glibc-2.3.2-net/iconv/iconvconfig.c 12 Jun 2003 09:48:20 -0000 1.1.1.10
|
||
|
+++ glibc-2.3.2-redhat/iconv/iconvconfig.c 12 Jun 2003 09:55:36 -0000 1.14
|
||
|
@@ -988,6 +988,34 @@ next_prime (uint32_t seed)
|
||
|
module name offset
|
||
|
(following last entry with step count 0)
|
||
|
*/
|
||
|
+
|
||
|
+static struct hash_entry *hash_table;
|
||
|
+static size_t hash_size;
|
||
|
+
|
||
|
+/* Function to insert the names. */
|
||
|
+static void name_insert (const void *nodep, VISIT value, int level)
|
||
|
+{
|
||
|
+ struct name *name;
|
||
|
+ unsigned int idx;
|
||
|
+ unsigned int hval2;
|
||
|
+
|
||
|
+ if (value != leaf && value != postorder)
|
||
|
+ return;
|
||
|
+
|
||
|
+ name = *(struct name **) nodep;
|
||
|
+ idx = name->hashval % hash_size;
|
||
|
+ hval2 = 1 + name->hashval % (hash_size - 2);
|
||
|
+
|
||
|
+ while (hash_table[idx].string_offset != 0)
|
||
|
+ if ((idx += hval2) >= hash_size)
|
||
|
+ idx -= hash_size;
|
||
|
+
|
||
|
+ hash_table[idx].string_offset = strtaboffset (name->strent);
|
||
|
+
|
||
|
+ assert (name->module_idx != -1);
|
||
|
+ hash_table[idx].module_idx = name->module_idx;
|
||
|
+}
|
||
|
+
|
||
|
static int
|
||
|
write_output (void)
|
||
|
{
|
||
|
@@ -995,8 +1023,6 @@ write_output (void)
|
||
|
char *string_table;
|
||
|
size_t string_table_size;
|
||
|
struct gconvcache_header header;
|
||
|
- struct hash_entry *hash_table;
|
||
|
- size_t hash_size;
|
||
|
struct module_entry *module_table;
|
||
|
char *extra_table;
|
||
|
char *cur_extra_table;
|
||
|
@@ -1008,30 +1034,6 @@ write_output (void)
|
||
|
char tmpfname[prefix_len + sizeof (GCONV_MODULES_CACHE)
|
||
|
+ strlen (".XXXXXX")];
|
||
|
char finalname[prefix_len + sizeof (GCONV_MODULES_CACHE)];
|
||
|
-
|
||
|
- /* Function to insert the names. */
|
||
|
- static void name_insert (const void *nodep, VISIT value, int level)
|
||
|
- {
|
||
|
- struct name *name;
|
||
|
- unsigned int idx;
|
||
|
- unsigned int hval2;
|
||
|
-
|
||
|
- if (value != leaf && value != postorder)
|
||
|
- return;
|
||
|
-
|
||
|
- name = *(struct name **) nodep;
|
||
|
- idx = name->hashval % hash_size;
|
||
|
- hval2 = 1 + name->hashval % (hash_size - 2);
|
||
|
-
|
||
|
- while (hash_table[idx].string_offset != 0)
|
||
|
- if ((idx += hval2) >= hash_size)
|
||
|
- idx -= hash_size;
|
||
|
-
|
||
|
- hash_table[idx].string_offset = strtaboffset (name->strent);
|
||
|
-
|
||
|
- assert (name->module_idx != -1);
|
||
|
- hash_table[idx].module_idx = name->module_idx;
|
||
|
- }
|
||
|
|
||
|
/* Open the output file. */
|
||
|
assert (GCONV_MODULES_CACHE[0] == '/');
|
||
|
|