[BZ #368]
* SUPPORTED (SUPPORTED-LOCALES): Add dz_BT.UTF-8. [BZ #368] * locales/dz_BT: New file.
This commit is contained in:
parent
daa226125c
commit
7d4722e3fd
@ -265,7 +265,7 @@
|
||||
#endif
|
||||
|
||||
#if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \
|
||||
&& __GNUC_PREREQ (4, 0) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
|
||||
&& __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
|
||||
# if _FORTIFY_SOURCE > 1
|
||||
# define __USE_FORTIFY_LEVEL 2
|
||||
# else
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Declarations for internal libc locale interfaces
|
||||
Copyright (C) 1995-2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995-2001, 2002, 2003, 2005 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
|
||||
@ -31,7 +31,10 @@
|
||||
#include <intl/loadinfo.h> /* For loaded_l10nfile definition. */
|
||||
|
||||
/* Magic number at the beginning of a locale data file for CATEGORY. */
|
||||
#define LIMAGIC(category) ((unsigned int) (0x20031115 ^ (category)))
|
||||
#define LIMAGIC(category) \
|
||||
(category == LC_COLLATE \
|
||||
? ((unsigned int) (0x20051014 ^ (category))) \
|
||||
: ((unsigned int) (0x20031115 ^ (category))))
|
||||
|
||||
/* Two special weight constants for the collation data. */
|
||||
#define IGNORE_CHAR 2
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1995-2002, 2003, 2005 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
|
||||
|
||||
@ -2469,14 +2469,14 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap,
|
||||
runp = collate->start;
|
||||
while (runp != NULL)
|
||||
{
|
||||
if (runp->mbs != NULL && runp->weights != NULL)
|
||||
if (runp->mbs != NULL && runp->weights != NULL && !runp->is_character)
|
||||
/* Yep, the element really counts. */
|
||||
++elem_size;
|
||||
|
||||
runp = runp->next;
|
||||
}
|
||||
/* Add 40% and find the next prime number. */
|
||||
elem_size = MIN (next_prime (elem_size * 1.4), 257);
|
||||
elem_size = next_prime (elem_size * 1.4);
|
||||
|
||||
/* Allocate the table. Each entry consists of two words: the hash
|
||||
value and an index in a secondary table which provides the index
|
||||
@ -2496,18 +2496,20 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap,
|
||||
uint32_t namelen = strlen (runp->name);
|
||||
uint32_t hash = elem_hash (runp->name, namelen);
|
||||
size_t idx = hash % elem_size;
|
||||
size_t start_idx = idx;
|
||||
|
||||
if (elem_table[idx * 2] != 0)
|
||||
{
|
||||
/* The spot is already take. Try iterating using the value
|
||||
/* The spot is already taken. Try iterating using the value
|
||||
from the secondary hashing function. */
|
||||
size_t iter = hash % (elem_size - 2);
|
||||
size_t iter = hash % (elem_size - 2) + 1;
|
||||
|
||||
do
|
||||
{
|
||||
idx += iter;
|
||||
if (idx >= elem_size)
|
||||
idx -= elem_size;
|
||||
assert (idx != start_idx);
|
||||
}
|
||||
while (elem_table[idx * 2] != 0);
|
||||
}
|
||||
|
@ -1,5 +1,10 @@
|
||||
2005-10-14 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* SUPPORTED (SUPPORTED-LOCALES): Add dz_BT.UTF-8.
|
||||
|
||||
[BZ #368]
|
||||
* locales/dz_BT: New file.
|
||||
|
||||
[BZ #195]
|
||||
* locales/hu_HU: Add some transliterations.
|
||||
|
||||
|
@ -83,6 +83,7 @@ de_DE@euro/ISO-8859-15 \
|
||||
de_LU.UTF-8/UTF-8 \
|
||||
de_LU/ISO-8859-1 \
|
||||
de_LU@euro/ISO-8859-15 \
|
||||
dz_BT/UTF-8 \
|
||||
el_GR.UTF-8/UTF-8 \
|
||||
el_GR/ISO-8859-7 \
|
||||
en_AU.UTF-8/UTF-8 \
|
||||
|
1360
localedata/locales/dz_BT
Normal file
1360
localedata/locales/dz_BT
Normal file
File diff suppressed because it is too large
Load Diff
@ -6,6 +6,10 @@
|
||||
- a new attribute for mutexes: number of times we spin before calling
|
||||
sys_futex
|
||||
|
||||
- for adaptive mutexes: when releasing, determine whether somebody spins.
|
||||
If yes, for a short time release lock. If someone else locks no wakeup
|
||||
syscall needed.
|
||||
|
||||
|
||||
|
||||
- test with threaded process terminating and semadj (?) being applied
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,2000,2001,2003,2004
|
||||
Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,2000,2001,2003,2004,2005
|
||||
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
|
||||
@ -502,24 +502,31 @@ FCT (pattern, string, string_end, no_leading_period, flags)
|
||||
|
||||
idx = 0;
|
||||
elem = hash % table_size;
|
||||
second = hash % (table_size - 2);
|
||||
while (symb_table[2 * elem] != 0)
|
||||
if (symb_table[2 * elem] != 0)
|
||||
{
|
||||
/* First compare the hashing value. */
|
||||
if (symb_table[2 * elem] == hash
|
||||
&& c1 == extra[symb_table[2 * elem + 1]]
|
||||
&& memcmp (str,
|
||||
&extra[symb_table[2 * elem + 1]
|
||||
+ 1], c1) == 0)
|
||||
{
|
||||
/* Yep, this is the entry. */
|
||||
idx = symb_table[2 * elem + 1];
|
||||
idx += 1 + extra[idx];
|
||||
break;
|
||||
}
|
||||
second = hash % (table_size - 2) + 1;
|
||||
|
||||
/* Next entry. */
|
||||
elem += second;
|
||||
do
|
||||
{
|
||||
/* First compare the hashing value. */
|
||||
if (symb_table[2 * elem] == hash
|
||||
&& (c1
|
||||
== extra[symb_table[2 * elem + 1]])
|
||||
&& memcmp (str,
|
||||
&extra[symb_table[2 * elem
|
||||
+ 1]
|
||||
+ 1], c1) == 0)
|
||||
{
|
||||
/* Yep, this is the entry. */
|
||||
idx = symb_table[2 * elem + 1];
|
||||
idx += 1 + extra[idx];
|
||||
break;
|
||||
}
|
||||
|
||||
/* Next entry. */
|
||||
elem += second;
|
||||
}
|
||||
while (symb_table[2 * elem] != 0);
|
||||
}
|
||||
|
||||
if (symb_table[2 * elem] != 0)
|
||||
@ -714,25 +721,30 @@ FCT (pattern, string, string_end, no_leading_period, flags)
|
||||
|
||||
idx = 0;
|
||||
elem = hash % table_size;
|
||||
second = hash % (table_size - 2);
|
||||
while (symb_table[2 * elem] != 0)
|
||||
if (symb_table[2 * elem] != 0)
|
||||
{
|
||||
/* First compare the hashing value. */
|
||||
if (symb_table[2 * elem] == hash
|
||||
&& (c1
|
||||
== extra[symb_table[2 * elem + 1]])
|
||||
&& memcmp (str,
|
||||
&extra[symb_table[2 * elem + 1]
|
||||
+ 1], c1) == 0)
|
||||
{
|
||||
/* Yep, this is the entry. */
|
||||
idx = symb_table[2 * elem + 1];
|
||||
idx += 1 + extra[idx];
|
||||
break;
|
||||
}
|
||||
second = hash % (table_size - 2) + 1;
|
||||
|
||||
/* Next entry. */
|
||||
elem += second;
|
||||
do
|
||||
{
|
||||
/* First compare the hashing value. */
|
||||
if (symb_table[2 * elem] == hash
|
||||
&& (c1
|
||||
== extra[symb_table[2 * elem + 1]])
|
||||
&& memcmp (str,
|
||||
&extra[symb_table[2 * elem + 1]
|
||||
+ 1], c1) == 0)
|
||||
{
|
||||
/* Yep, this is the entry. */
|
||||
idx = symb_table[2 * elem + 1];
|
||||
idx += 1 + extra[idx];
|
||||
break;
|
||||
}
|
||||
|
||||
/* Next entry. */
|
||||
elem += second;
|
||||
}
|
||||
while (symb_table[2 * elem] != 0);
|
||||
}
|
||||
|
||||
if (symb_table[2 * elem] != 0)
|
||||
|
@ -2742,23 +2742,28 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
|
||||
{
|
||||
int32_t hash = elem_hash ((const char *) name, name_len);
|
||||
int32_t elem = hash % table_size;
|
||||
int32_t second = hash % (table_size - 2);
|
||||
while (symb_table[2 * elem] != 0)
|
||||
if (symb_table[2 * elem] != 0)
|
||||
{
|
||||
/* First compare the hashing value. */
|
||||
if (symb_table[2 * elem] == hash
|
||||
/* Compare the length of the name. */
|
||||
&& name_len == extra[symb_table[2 * elem + 1]]
|
||||
/* Compare the name. */
|
||||
&& memcmp (name, &extra[symb_table[2 * elem + 1] + 1],
|
||||
name_len) == 0)
|
||||
{
|
||||
/* Yep, this is the entry. */
|
||||
break;
|
||||
}
|
||||
int32_t second = hash % (table_size - 2) + 1;
|
||||
|
||||
/* Next entry. */
|
||||
elem += second;
|
||||
do
|
||||
{
|
||||
/* First compare the hashing value. */
|
||||
if (symb_table[2 * elem] == hash
|
||||
/* Compare the length of the name. */
|
||||
&& name_len == extra[symb_table[2 * elem + 1]]
|
||||
/* Compare the name. */
|
||||
&& memcmp (name, &extra[symb_table[2 * elem + 1] + 1],
|
||||
name_len) == 0)
|
||||
{
|
||||
/* Yep, this is the entry. */
|
||||
break;
|
||||
}
|
||||
|
||||
/* Next entry. */
|
||||
elem += second;
|
||||
}
|
||||
while (symb_table[2 * elem] != 0);
|
||||
}
|
||||
return elem;
|
||||
}
|
||||
@ -3000,7 +3005,7 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
|
||||
/*
|
||||
if (MB_CUR_MAX > 1)
|
||||
*/
|
||||
collseqwc = _NL_CURRENT (LC_COLLATE, _NL_COLLATE_COLLSEQWC);
|
||||
collseqwc = _NL_CURRENT (LC_COLLATE, _NL_COLLATE_COLLSEQWC);
|
||||
table_size = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_SYMB_HASH_SIZEMB);
|
||||
symb_table = (const int32_t *) _NL_CURRENT (LC_COLLATE,
|
||||
_NL_COLLATE_SYMB_TABLEMB);
|
||||
|
Loading…
Reference in New Issue
Block a user