diff options
author | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2007-10-11 11:59:55 +0000 |
---|---|---|
committer | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2007-10-11 11:59:55 +0000 |
commit | a6a5dd0d5b707d7da7fce387d68dfb5de2905978 (patch) | |
tree | a25f8b9e41cc36825f49f5d263fdd6059bc2a835 /libc | |
parent | 40520b2931f9d41ca4e3c2f3e8dea6578785624b (diff) | |
download | eglibc2-a6a5dd0d5b707d7da7fce387d68dfb5de2905978.tar.gz |
Merge changes between r3746 and r3777 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@3778 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc')
33 files changed, 741 insertions, 369 deletions
diff --git a/libc/ChangeLog b/libc/ChangeLog index e4ccedacc..7ca024625 100644 --- a/libc/ChangeLog +++ b/libc/ChangeLog @@ -1,3 +1,36 @@ +2007-10-10 Ulrich Drepper <drepper@redhat.com> + + * locale/programs/locfile-token.h: Remove tok_elif, add tok_elifdef + and tok_elifndef. + * locale/programs/locfile-kw.gperf: Likewise. + * locale/programs/ld-collate.c: Implement primitive preprocessor. + +2007-10-10 Jakub Jelinek <jakub@redhat.com> + + * stdio-common/printf-parse.h: Include string.h and wchar.h. + (__find_specwc): Change into __extern_always_inline function. + (__find_specmb): Likewise. Remove ps argument. Use __strchrnul. + (__parse_one_specmb): Remove ps argument. + * stdio-common/vfprintf.c (vfprintf): Remove mbstate variable. + Adjust __find_specmb and __parse_one_specmb callers. + * stdio-common/printf-prs.c (parse_printf_format): Likewise. + * stdio-common/printf-parsemb.c (__find_specwc, __find_specmb): + Removed. + (__parse_one_specmb): Remove ps argument, adjust __find_specmb + caller. + +2007-10-09 Ulrich Drepper <drepper@redhat.com> + + * sysdeps/x86_64/cacheinfo.c (init_cacheinfo): Work around problem + with some Pentium Ds. + +2007-10-08 Ulrich Drepper <drepper@redhat.com> + + * sysdeps/unix/sysv/linux/eventfd_read.c (eventfd_read): Use + __read not read. + * sysdeps/unix/sysv/linux/eventfd_write.c (eventfd_write): Use + __write not write. + 2007-10-07 Ulrich Drepper <drepper@redhat.com> [BZ #181] diff --git a/libc/locale/programs/ld-collate.c b/libc/locale/programs/ld-collate.c index 2aa9557c5..67eb2b21c 100644 --- a/libc/locale/programs/ld-collate.c +++ b/libc/locale/programs/ld-collate.c @@ -185,6 +185,14 @@ struct symbol_t #include "3level.h" +/* Simple name list for the preprocessor. */ +struct name_list +{ + struct name_list *next; + char str[0]; +}; + + /* The real definition of the struct for the LC_COLLATE locale. */ struct locale_collate_t { @@ -244,6 +252,15 @@ struct locale_collate_t /* The arrays with the collation sequence order. */ unsigned char mbseqorder[256]; struct collseq_table wcseqorder; + + /* State of the preprocessor. */ + enum + { + else_none = 0, + else_ignore, + else_seen + } + else_action; }; @@ -251,6 +268,9 @@ struct locale_collate_t LC_COLLATE category descriptions in all files. */ static uint32_t nrules; +/* List of defined preprocessor symbols. */ +static struct name_list *defined; + /* We need UTF-8 encoding of numbers. */ static inline int @@ -2478,6 +2498,43 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap, } +static enum token_t +skip_to (struct linereader *ldfile, struct locale_collate_t *collate, + const struct charmap_t *charmap, int to_endif) +{ + while (1) + { + struct token *now = lr_token (ldfile, charmap, NULL, NULL, 0); + enum token_t nowtok = now->tok; + + if (nowtok == tok_eof || nowtok == tok_end) + return nowtok; + + if (nowtok == tok_ifdef || nowtok == tok_ifndef) + { + lr_error (ldfile, _("%s: nested conditionals not supported"), + "LC_COLLATE"); + nowtok = skip_to (ldfile, collate, charmap, tok_endif); + if (nowtok == tok_eof || nowtok == tok_end) + return nowtok; + } + else if ((!to_endif && (nowtok == tok_else || nowtok == tok_elifdef + || nowtok == tok_elifndef)) + || nowtok == tok_endif) + { + lr_ignore_rest (ldfile, 1); + return nowtok; + } + else if (nowtok == tok_else) + { + lr_error (ldfile, _("%s: more then one 'else'"), "LC_COLLATE"); + } + + lr_ignore_rest (ldfile, 0); + } +} + + void collate_read (struct linereader *ldfile, struct localedef_t *result, const struct charmap_t *charmap, const char *repertoire_name, @@ -2515,6 +2572,38 @@ collate_read (struct linereader *ldfile, struct localedef_t *result, } while (nowtok == tok_eol); + while (nowtok == tok_define) + { + if (ignore_content) + { + lr_ignore_rest (ldfile, 0); + continue; + } + + arg = lr_token (ldfile, charmap, result, NULL, verbose); + if (arg->tok != tok_ident) + SYNTAX_ERROR (_("%s: syntax error"), "LC_COLLATE"); + else + { + /* Simply add the new symbol. */ + struct name_list *newsym = xmalloc (sizeof (*newsym) + + arg->val.str.lenmb + 1); + memcpy (newsym->str, arg->val.str.startmb, arg->val.str.lenmb); + newsym->str[arg->val.str.lenmb] = '\0'; + newsym->next = defined; + defined = newsym; + + lr_ignore_rest (ldfile, 1); + } + + do + { + now = lr_token (ldfile, charmap, result, NULL, verbose); + nowtok = now->tok; + } + while (nowtok == tok_eol); + } + if (nowtok == tok_copy) { now = lr_token (ldfile, charmap, result, NULL, verbose); @@ -3654,6 +3743,7 @@ error while adding equivalent collating symbol")); break; case tok_end: + seen_end: /* Next we assume `LC_COLLATE'. */ if (!ignore_content) { @@ -3694,6 +3784,180 @@ error while adding equivalent collating symbol")); lr_ignore_rest (ldfile, arg->tok == tok_lc_collate); return; + case tok_define: + if (ignore_content) + { + lr_ignore_rest (ldfile, 0); + break; + } + + arg = lr_token (ldfile, charmap, result, NULL, verbose); + if (arg->tok != tok_ident) + goto err_label; + + /* Simply add the new symbol. */ + struct name_list *newsym = xmalloc (sizeof (*newsym) + + arg->val.str.lenmb + 1); + memcpy (newsym->str, arg->val.str.startmb, arg->val.str.lenmb); + newsym->str[arg->val.str.lenmb] = '\0'; + newsym->next = defined; + defined = newsym; + + lr_ignore_rest (ldfile, 1); + break; + + case tok_undef: + if (ignore_content) + { + lr_ignore_rest (ldfile, 0); + break; + } + + arg = lr_token (ldfile, charmap, result, NULL, verbose); + if (arg->tok != tok_ident) + goto err_label; + + /* Remove _all_ occurrences of the symbol from the list. */ + struct name_list *prevdef = NULL; + struct name_list *curdef = defined; + while (curdef != NULL) + if (strncmp (arg->val.str.startmb, curdef->str, + arg->val.str.lenmb) == 0 + && curdef->str[arg->val.str.lenmb] == '\0') + { + if (prevdef == NULL) + defined = curdef->next; + else + prevdef->next = curdef->next; + + struct name_list *olddef = curdef; + curdef = curdef->next; + + free (olddef); + } + else + { + prevdef = curdef; + curdef = curdef->next; + } + + lr_ignore_rest (ldfile, 1); + break; + + case tok_ifdef: + case tok_ifndef: + if (ignore_content) + { + lr_ignore_rest (ldfile, 0); + break; + } + + found_ifdef: + arg = lr_token (ldfile, charmap, result, NULL, verbose); + if (arg->tok != tok_ident) + goto err_label; + lr_ignore_rest (ldfile, 1); + + if (collate->else_action == else_none) + { + curdef = defined; + while (curdef != NULL) + if (strncmp (arg->val.str.startmb, curdef->str, + arg->val.str.lenmb) == 0 + && curdef->str[arg->val.str.lenmb] == '\0') + break; + + if ((nowtok == tok_ifdef && curdef != NULL) + || (nowtok == tok_ifndef && curdef == NULL)) + { + /* We have to use the if-branch. */ + collate->else_action = else_ignore; + } + else + { + /* We have to use the else-branch, if there is one. */ + nowtok = skip_to (ldfile, collate, charmap, 0); + if (nowtok == tok_else) + collate->else_action = else_seen; + else if (nowtok == tok_elifdef) + { + nowtok = tok_ifdef; + goto found_ifdef; + } + else if (nowtok == tok_elifndef) + { + nowtok = tok_ifndef; + goto found_ifdef; + } + else if (nowtok == tok_eof) + goto seen_eof; + else if (nowtok == tok_end) + goto seen_end; + } + } + else + { + /* XXX Should it really become necessary to support nested + preprocessor handling we will push the state here. */ + lr_error (ldfile, _("%s: nested conditionals not supported"), + "LC_COLLATE"); + nowtok = skip_to (ldfile, collate, charmap, 1); + if (nowtok == tok_eof) + goto seen_eof; + else if (nowtok == tok_end) + goto seen_end; + } + break; + + case tok_elifdef: + case tok_elifndef: + case tok_else: + if (ignore_content) + { + lr_ignore_rest (ldfile, 0); + break; + } + + lr_ignore_rest (ldfile, 1); + + if (collate->else_action == else_ignore) + { + /* Ignore everything until the endif. */ + nowtok = skip_to (ldfile, collate, charmap, 1); + if (nowtok == tok_eof) + goto seen_eof; + else if (nowtok == tok_end) + goto seen_end; + } + else + { + assert (collate->else_action == else_none); + lr_error (ldfile, _("\ +%s: '%s' without matching 'ifdef' or 'ifndef'"), "LC_COLLATE", + nowtok == tok_else ? "else" + : nowtok == tok_elifdef ? "elifdef" : "elifndef"); + } + break; + + case tok_endif: + if (ignore_content) + { + lr_ignore_rest (ldfile, 0); + break; + } + + lr_ignore_rest (ldfile, 1); + + if (collate->else_action != else_ignore + && collate->else_action != else_seen) + lr_error (ldfile, _("\ +%s: 'endif' without matching 'ifdef' or 'ifndef'"), "LC_COLLATE"); + + /* XXX If we support nested preprocessor directives we pop + the state here. */ + collate->else_action = else_none; + break; + default: err_label: SYNTAX_ERROR (_("%s: syntax error"), "LC_COLLATE"); @@ -3704,6 +3968,7 @@ error while adding equivalent collating symbol")); nowtok = now->tok; } + seen_eof: /* When we come here we reached the end of the file. */ lr_error (ldfile, _("%s: premature end of file"), "LC_COLLATE"); } diff --git a/libc/locale/programs/locfile-kw.gperf b/libc/locale/programs/locfile-kw.gperf index 936256ab3..f0612e488 100644 --- a/libc/locale/programs/locfile-kw.gperf +++ b/libc/locale/programs/locfile-kw.gperf @@ -1,5 +1,5 @@ %{ -/* Copyright (C) 1996,1997,1998,1999,2000,2005 Free Software Foundation, Inc. +/* Copyright (C) 1996-2000,2005,2007 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@gnu.org>, 1996. @@ -76,7 +76,8 @@ define, tok_define, 0 undef, tok_undef, 0 ifdef, tok_ifdef, 0 else, tok_else, 0 -elif, tok_elif, 0 +elifdef, tok_elifdef, 0 +elifndef, tok_elifndef, 0 endif, tok_endif, 0 LC_MONETARY, tok_lc_monetary, 0 int_curr_symbol, tok_int_curr_symbol, 0 diff --git a/libc/locale/programs/locfile-kw.h b/libc/locale/programs/locfile-kw.h index c883842b3..c0f9ce781 100644 --- a/libc/locale/programs/locfile-kw.h +++ b/libc/locale/programs/locfile-kw.h @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.1 */ +/* ANSI-C code produced by gperf version 3.0.2 */ /* Command-line: gperf -acCgopt -k'1,2,5,9,$' -L ANSI-C -N locfile_hash locfile-kw.gperf */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -30,7 +30,7 @@ #line 1 "locfile-kw.gperf" -/* Copyright (C) 1996,1997,1998,1999,2000,2005 Free Software Foundation, Inc. +/* Copyright (C) 1996-2000,2005,2007 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@gnu.org>, 1996. @@ -51,15 +51,15 @@ #include <string.h> #include "locfile-token.h" -#line 23 "locfile-kw.gperf" +#line 24 "locfile-kw.gperf" struct keyword_t ; -#define TOTAL_KEYWORDS 175 +#define TOTAL_KEYWORDS 176 #define MIN_WORD_LENGTH 3 #define MAX_WORD_LENGTH 22 #define MIN_HASH_VALUE 3 -#define MAX_HASH_VALUE 610 -/* maximum key range = 608, duplicates = 0 */ +#define MAX_HASH_VALUE 630 +/* maximum key range = 628, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -73,32 +73,32 @@ hash (register const char *str, register unsigned int len) { static const unsigned short asso_values[] = { - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 5, 0, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 5, 611, 0, 0, 0, - 0, 0, 10, 0, 611, 611, 0, 611, 0, 5, - 611, 611, 0, 0, 0, 10, 611, 611, 611, 0, - 611, 611, 611, 611, 611, 0, 611, 145, 105, 25, - 15, 0, 190, 110, 10, 35, 611, 0, 80, 65, - 5, 130, 40, 50, 5, 0, 10, 35, 50, 20, - 5, 10, 0, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, - 611, 611, 611, 611, 611, 611 + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 5, 0, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 5, 631, 0, 0, 0, + 0, 0, 10, 0, 631, 631, 0, 631, 0, 5, + 631, 631, 0, 0, 0, 10, 631, 631, 631, 0, + 631, 631, 631, 631, 631, 0, 631, 145, 80, 25, + 15, 0, 180, 105, 10, 35, 631, 50, 80, 160, + 5, 130, 40, 45, 5, 0, 10, 35, 40, 35, + 5, 10, 0, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631 }; register int hval = len; @@ -134,470 +134,472 @@ locfile_hash (register const char *str, register unsigned int len) static const struct keyword_t wordlist[] = { {""}, {""}, {""}, -#line 30 "locfile-kw.gperf" +#line 31 "locfile-kw.gperf" {"END", tok_end, 0}, {""}, {""}, -#line 69 "locfile-kw.gperf" +#line 70 "locfile-kw.gperf" {"IGNORE", tok_ignore, 0}, -#line 127 "locfile-kw.gperf" +#line 129 "locfile-kw.gperf" {"LC_TIME", tok_lc_time, 0}, -#line 29 "locfile-kw.gperf" +#line 30 "locfile-kw.gperf" {"LC_CTYPE", tok_lc_ctype, 0}, {""}, -#line 164 "locfile-kw.gperf" +#line 166 "locfile-kw.gperf" {"LC_ADDRESS", tok_lc_address, 0}, -#line 149 "locfile-kw.gperf" +#line 151 "locfile-kw.gperf" {"LC_MESSAGES", tok_lc_messages, 0}, -#line 157 "locfile-kw.gperf" +#line 159 "locfile-kw.gperf" {"LC_NAME", tok_lc_name, 0}, -#line 154 "locfile-kw.gperf" +#line 156 "locfile-kw.gperf" {"LC_PAPER", tok_lc_paper, 0}, -#line 182 "locfile-kw.gperf" +#line 184 "locfile-kw.gperf" {"LC_MEASUREMENT", tok_lc_measurement, 0}, -#line 55 "locfile-kw.gperf" +#line 56 "locfile-kw.gperf" {"LC_COLLATE", tok_lc_collate, 0}, {""}, -#line 184 "locfile-kw.gperf" +#line 186 "locfile-kw.gperf" {"LC_IDENTIFICATION", tok_lc_identification, 0}, -#line 197 "locfile-kw.gperf" +#line 199 "locfile-kw.gperf" {"revision", tok_revision, 0}, -#line 68 "locfile-kw.gperf" +#line 69 "locfile-kw.gperf" {"UNDEFINED", tok_undefined, 0}, -#line 123 "locfile-kw.gperf" +#line 125 "locfile-kw.gperf" {"LC_NUMERIC", tok_lc_numeric, 0}, -#line 80 "locfile-kw.gperf" +#line 82 "locfile-kw.gperf" {"LC_MONETARY", tok_lc_monetary, 0}, -#line 177 "locfile-kw.gperf" +#line 179 "locfile-kw.gperf" {"LC_TELEPHONE", tok_lc_telephone, 0}, - {""}, -#line 130 "locfile-kw.gperf" - {"week", tok_week, 0}, - {""}, -#line 74 "locfile-kw.gperf" + {""}, {""}, {""}, +#line 75 "locfile-kw.gperf" {"define", tok_define, 0}, -#line 150 "locfile-kw.gperf" +#line 152 "locfile-kw.gperf" {"yesexpr", tok_yesexpr, 0}, -#line 139 "locfile-kw.gperf" +#line 141 "locfile-kw.gperf" {"era_year", tok_era_year, 0}, {""}, -#line 53 "locfile-kw.gperf" +#line 54 "locfile-kw.gperf" {"translit_ignore", tok_translit_ignore, 0}, -#line 152 "locfile-kw.gperf" +#line 154 "locfile-kw.gperf" {"yesstr", tok_yesstr, 0}, {""}, -#line 87 "locfile-kw.gperf" +#line 89 "locfile-kw.gperf" {"negative_sign", tok_negative_sign, 0}, {""}, -#line 135 "locfile-kw.gperf" +#line 137 "locfile-kw.gperf" {"t_fmt", tok_t_fmt, 0}, -#line 155 "locfile-kw.gperf" +#line 157 "locfile-kw.gperf" {"height", tok_height, 0}, {""}, {""}, -#line 51 "locfile-kw.gperf" +#line 52 "locfile-kw.gperf" {"translit_start", tok_translit_start, 0}, -#line 134 "locfile-kw.gperf" +#line 136 "locfile-kw.gperf" {"d_fmt", tok_d_fmt, 0}, {""}, -#line 52 "locfile-kw.gperf" +#line 53 "locfile-kw.gperf" {"translit_end", tok_translit_end, 0}, -#line 92 "locfile-kw.gperf" +#line 94 "locfile-kw.gperf" {"n_cs_precedes", tok_n_cs_precedes, 0}, -#line 142 "locfile-kw.gperf" +#line 144 "locfile-kw.gperf" {"era_t_fmt", tok_era_t_fmt, 0}, -#line 38 "locfile-kw.gperf" +#line 39 "locfile-kw.gperf" {"space", tok_space, 0}, -#line 71 "locfile-kw.gperf" - {"reorder-end", tok_reorder_end, 0}, #line 72 "locfile-kw.gperf" + {"reorder-end", tok_reorder_end, 0}, +#line 73 "locfile-kw.gperf" {"reorder-sections-after", tok_reorder_sections_after, 0}, {""}, -#line 140 "locfile-kw.gperf" +#line 142 "locfile-kw.gperf" {"era_d_fmt", tok_era_d_fmt, 0}, -#line 185 "locfile-kw.gperf" +#line 187 "locfile-kw.gperf" {"title", tok_title, 0}, {""}, {""}, -#line 147 "locfile-kw.gperf" +#line 149 "locfile-kw.gperf" {"timezone", tok_timezone, 0}, {""}, -#line 73 "locfile-kw.gperf" +#line 74 "locfile-kw.gperf" {"reorder-sections-end", tok_reorder_sections_end, 0}, {""}, {""}, {""}, -#line 93 "locfile-kw.gperf" +#line 95 "locfile-kw.gperf" {"n_sep_by_space", tok_n_sep_by_space, 0}, {""}, {""}, -#line 98 "locfile-kw.gperf" +#line 100 "locfile-kw.gperf" {"int_n_cs_precedes", tok_int_n_cs_precedes, 0}, {""}, {""}, {""}, -#line 25 "locfile-kw.gperf" +#line 26 "locfile-kw.gperf" {"escape_char", tok_escape_char, 0}, {""}, -#line 27 "locfile-kw.gperf" +#line 28 "locfile-kw.gperf" {"repertoiremap", tok_repertoiremap, 0}, -#line 45 "locfile-kw.gperf" +#line 46 "locfile-kw.gperf" {"charclass", tok_charclass, 0}, -#line 42 "locfile-kw.gperf" - {"print", tok_print, 0}, #line 43 "locfile-kw.gperf" + {"print", tok_print, 0}, +#line 44 "locfile-kw.gperf" {"xdigit", tok_xdigit, 0}, -#line 108 "locfile-kw.gperf" +#line 110 "locfile-kw.gperf" {"duo_n_cs_precedes", tok_duo_n_cs_precedes, 0}, -#line 125 "locfile-kw.gperf" +#line 127 "locfile-kw.gperf" {"thousands_sep", tok_thousands_sep, 0}, -#line 193 "locfile-kw.gperf" +#line 195 "locfile-kw.gperf" {"territory", tok_territory, 0}, -#line 35 "locfile-kw.gperf" +#line 36 "locfile-kw.gperf" {"digit", tok_digit, 0}, {""}, {""}, -#line 90 "locfile-kw.gperf" +#line 92 "locfile-kw.gperf" {"p_cs_precedes", tok_p_cs_precedes, 0}, - {""}, -#line 156 "locfile-kw.gperf" - {"width", tok_width, 0}, -#line 61 "locfile-kw.gperf" + {""}, {""}, +#line 62 "locfile-kw.gperf" {"script", tok_script, 0}, -#line 28 "locfile-kw.gperf" +#line 29 "locfile-kw.gperf" {"include", tok_include, 0}, {""}, -#line 77 "locfile-kw.gperf" +#line 78 "locfile-kw.gperf" {"else", tok_else, 0}, -#line 180 "locfile-kw.gperf" +#line 182 "locfile-kw.gperf" {"int_select", tok_int_select, 0}, - {""}, {""}, {""}, {""}, -#line 32 "locfile-kw.gperf" + {""}, {""}, {""}, +#line 132 "locfile-kw.gperf" + {"week", tok_week, 0}, +#line 33 "locfile-kw.gperf" {"upper", tok_upper, 0}, {""}, {""}, -#line 190 "locfile-kw.gperf" +#line 192 "locfile-kw.gperf" {"tel", tok_tel, 0}, -#line 91 "locfile-kw.gperf" +#line 93 "locfile-kw.gperf" {"p_sep_by_space", tok_p_sep_by_space, 0}, - {""}, {""}, -#line 96 "locfile-kw.gperf" +#line 158 "locfile-kw.gperf" + {"width", tok_width, 0}, + {""}, +#line 98 "locfile-kw.gperf" {"int_p_cs_precedes", tok_int_p_cs_precedes, 0}, {""}, {""}, -#line 40 "locfile-kw.gperf" +#line 41 "locfile-kw.gperf" {"punct", tok_punct, 0}, {""}, {""}, -#line 99 "locfile-kw.gperf" +#line 101 "locfile-kw.gperf" {"int_n_sep_by_space", tok_int_n_sep_by_space, 0}, {""}, {""}, {""}, -#line 106 "locfile-kw.gperf" +#line 108 "locfile-kw.gperf" {"duo_p_cs_precedes", tok_duo_p_cs_precedes, 0}, - {""}, {""}, -#line 46 "locfile-kw.gperf" +#line 48 "locfile-kw.gperf" + {"charconv", tok_charconv, 0}, + {""}, +#line 47 "locfile-kw.gperf" {"class", tok_class, 0}, -#line 112 "locfile-kw.gperf" +#line 114 "locfile-kw.gperf" {"duo_int_n_cs_precedes", tok_duo_int_n_cs_precedes, 0}, -#line 113 "locfile-kw.gperf" +#line 115 "locfile-kw.gperf" {"duo_int_n_sep_by_space", tok_duo_int_n_sep_by_space, 0}, -#line 109 "locfile-kw.gperf" +#line 111 "locfile-kw.gperf" {"duo_n_sep_by_space", tok_duo_n_sep_by_space, 0}, -#line 117 "locfile-kw.gperf" +#line 119 "locfile-kw.gperf" {"duo_int_n_sign_posn", tok_duo_int_n_sign_posn, 0}, - {""}, {""}, {""}, -#line 47 "locfile-kw.gperf" - {"charconv", tok_charconv, 0}, - {""}, {""}, -#line 183 "locfile-kw.gperf" - {"measurement", tok_measurement, 0}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 57 "locfile-kw.gperf" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, +#line 58 "locfile-kw.gperf" {"section-symbol", tok_section_symbol, 0}, -#line 181 "locfile-kw.gperf" +#line 183 "locfile-kw.gperf" {"int_prefix", tok_int_prefix, 0}, {""}, {""}, {""}, {""}, -#line 137 "locfile-kw.gperf" - {"t_fmt_ampm", tok_t_fmt_ampm, 0}, - {""}, {""}, -#line 97 "locfile-kw.gperf" - {"int_p_sep_by_space", tok_int_p_sep_by_space, 0}, - {""}, -#line 41 "locfile-kw.gperf" +#line 42 "locfile-kw.gperf" {"graph", tok_graph, 0}, {""}, {""}, -#line 124 "locfile-kw.gperf" - {"decimal_point", tok_decimal_point, 0}, - {""}, {""}, -#line 110 "locfile-kw.gperf" +#line 99 "locfile-kw.gperf" + {"int_p_sep_by_space", tok_int_p_sep_by_space, 0}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 112 "locfile-kw.gperf" {"duo_int_p_cs_precedes", tok_duo_int_p_cs_precedes, 0}, -#line 111 "locfile-kw.gperf" +#line 113 "locfile-kw.gperf" {"duo_int_p_sep_by_space", tok_duo_int_p_sep_by_space, 0}, -#line 107 "locfile-kw.gperf" +#line 109 "locfile-kw.gperf" {"duo_p_sep_by_space", tok_duo_p_sep_by_space, 0}, -#line 116 "locfile-kw.gperf" +#line 118 "locfile-kw.gperf" {"duo_int_p_sign_posn", tok_duo_int_p_sign_posn, 0}, -#line 153 "locfile-kw.gperf" +#line 155 "locfile-kw.gperf" {"nostr", tok_nostr, 0}, {""}, {""}, -#line 138 "locfile-kw.gperf" +#line 140 "locfile-kw.gperf" {"era", tok_era, 0}, {""}, -#line 82 "locfile-kw.gperf" +#line 84 "locfile-kw.gperf" {"currency_symbol", tok_currency_symbol, 0}, {""}, -#line 163 "locfile-kw.gperf" +#line 165 "locfile-kw.gperf" {"name_ms", tok_name_ms, 0}, -#line 161 "locfile-kw.gperf" +#line 163 "locfile-kw.gperf" {"name_mrs", tok_name_mrs, 0}, -#line 162 "locfile-kw.gperf" +#line 164 "locfile-kw.gperf" {"name_miss", tok_name_miss, 0}, -#line 81 "locfile-kw.gperf" +#line 83 "locfile-kw.gperf" {"int_curr_symbol", tok_int_curr_symbol, 0}, -#line 186 "locfile-kw.gperf" +#line 188 "locfile-kw.gperf" {"source", tok_source, 0}, -#line 160 "locfile-kw.gperf" +#line 162 "locfile-kw.gperf" {"name_mr", tok_name_mr, 0}, -#line 159 "locfile-kw.gperf" +#line 161 "locfile-kw.gperf" {"name_gen", tok_name_gen, 0}, -#line 198 "locfile-kw.gperf" +#line 200 "locfile-kw.gperf" {"date", tok_date, 0}, {""}, {""}, -#line 187 "locfile-kw.gperf" +#line 189 "locfile-kw.gperf" {"address", tok_address, 0}, -#line 158 "locfile-kw.gperf" +#line 160 "locfile-kw.gperf" {"name_fmt", tok_name_fmt, 0}, -#line 31 "locfile-kw.gperf" +#line 32 "locfile-kw.gperf" {"copy", tok_copy, 0}, - {""}, {""}, -#line 49 "locfile-kw.gperf" - {"tolower", tok_tolower, 0}, -#line 129 "locfile-kw.gperf" - {"day", tok_day, 0}, #line 103 "locfile-kw.gperf" - {"duo_currency_symbol", tok_duo_currency_symbol, 0}, -#line 101 "locfile-kw.gperf" {"int_n_sign_posn", tok_int_n_sign_posn, 0}, {""}, {""}, -#line 148 "locfile-kw.gperf" +#line 131 "locfile-kw.gperf" + {"day", tok_day, 0}, +#line 105 "locfile-kw.gperf" + {"duo_currency_symbol", tok_duo_currency_symbol, 0}, + {""}, {""}, {""}, +#line 150 "locfile-kw.gperf" {"date_fmt", tok_date_fmt, 0}, -#line 63 "locfile-kw.gperf" +#line 64 "locfile-kw.gperf" {"order_end", tok_order_end, 0}, - {""}, {""}, -#line 166 "locfile-kw.gperf" +#line 117 "locfile-kw.gperf" + {"duo_n_sign_posn", tok_duo_n_sign_posn, 0}, + {""}, +#line 168 "locfile-kw.gperf" {"country_name", tok_country_name, 0}, -#line 70 "locfile-kw.gperf" +#line 71 "locfile-kw.gperf" {"reorder-after", tok_reorder_after, 0}, -#line 118 "locfile-kw.gperf" - {"uno_valid_from", tok_uno_valid_from, 0}, -#line 115 "locfile-kw.gperf" - {"duo_n_sign_posn", tok_duo_n_sign_posn, 0}, -#line 151 "locfile-kw.gperf" + {""}, {""}, +#line 153 "locfile-kw.gperf" {"noexpr", tok_noexpr, 0}, - {""}, -#line 194 "locfile-kw.gperf" +#line 50 "locfile-kw.gperf" + {"tolower", tok_tolower, 0}, +#line 196 "locfile-kw.gperf" {"audience", tok_audience, 0}, - {""}, -#line 44 "locfile-kw.gperf" - {"blank", tok_blank, 0}, - {""}, -#line 48 "locfile-kw.gperf" + {""}, {""}, {""}, +#line 49 "locfile-kw.gperf" {"toupper", tok_toupper, 0}, -#line 67 "locfile-kw.gperf" +#line 68 "locfile-kw.gperf" {"position", tok_position, 0}, -#line 120 "locfile-kw.gperf" - {"duo_valid_from", tok_duo_valid_from, 0}, -#line 39 "locfile-kw.gperf" + {""}, +#line 40 "locfile-kw.gperf" {"cntrl", tok_cntrl, 0}, {""}, -#line 26 "locfile-kw.gperf" +#line 27 "locfile-kw.gperf" {"comment_char", tok_comment_char, 0}, -#line 86 "locfile-kw.gperf" +#line 88 "locfile-kw.gperf" {"positive_sign", tok_positive_sign, 0}, {""}, {""}, {""}, {""}, -#line 132 "locfile-kw.gperf" - {"mon", tok_mon, 0}, - {""}, {""}, -#line 171 "locfile-kw.gperf" - {"country_car", tok_country_car, 0}, - {""}, -#line 60 "locfile-kw.gperf" +#line 61 "locfile-kw.gperf" {"symbol-equivalence", tok_symbol_equivalence, 0}, + {""}, #line 102 "locfile-kw.gperf" - {"duo_int_curr_symbol", tok_duo_int_curr_symbol, 0}, -#line 100 "locfile-kw.gperf" {"int_p_sign_posn", tok_int_p_sign_posn, 0}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 172 "locfile-kw.gperf" +#line 173 "locfile-kw.gperf" + {"country_car", tok_country_car, 0}, + {""}, {""}, +#line 104 "locfile-kw.gperf" + {"duo_int_curr_symbol", tok_duo_int_curr_symbol, 0}, + {""}, {""}, +#line 135 "locfile-kw.gperf" + {"d_t_fmt", tok_d_t_fmt, 0}, + {""}, {""}, +#line 116 "locfile-kw.gperf" + {"duo_p_sign_posn", tok_duo_p_sign_posn, 0}, +#line 185 "locfile-kw.gperf" + {"measurement", tok_measurement, 0}, +#line 174 "locfile-kw.gperf" {"country_isbn", tok_country_isbn, 0}, -#line 36 "locfile-kw.gperf" +#line 37 "locfile-kw.gperf" {"outdigit", tok_outdigit, 0}, - {""}, -#line 114 "locfile-kw.gperf" - {"duo_p_sign_posn", tok_duo_p_sign_posn, 0}, - {""}, -#line 133 "locfile-kw.gperf" - {"d_t_fmt", tok_d_t_fmt, 0}, {""}, {""}, -#line 33 "locfile-kw.gperf" +#line 143 "locfile-kw.gperf" + {"era_d_t_fmt", tok_era_d_t_fmt, 0}, + {""}, {""}, {""}, +#line 34 "locfile-kw.gperf" {"lower", tok_lower, 0}, - {""}, -#line 167 "locfile-kw.gperf" +#line 181 "locfile-kw.gperf" + {"tel_dom_fmt", tok_tel_dom_fmt, 0}, +#line 169 "locfile-kw.gperf" {"country_post", tok_country_post, 0}, -#line 146 "locfile-kw.gperf" +#line 148 "locfile-kw.gperf" {"cal_direction", tok_cal_direction, 0}, {""}, -#line 189 "locfile-kw.gperf" - {"email", tok_email, 0}, -#line 141 "locfile-kw.gperf" - {"era_d_t_fmt", tok_era_d_t_fmt, 0}, +#line 139 "locfile-kw.gperf" + {"t_fmt_ampm", tok_t_fmt_ampm, 0}, +#line 91 "locfile-kw.gperf" + {"frac_digits", tok_frac_digits, 0}, {""}, {""}, -#line 173 "locfile-kw.gperf" +#line 175 "locfile-kw.gperf" {"lang_name", tok_lang_name, 0}, - {""}, -#line 179 "locfile-kw.gperf" - {"tel_dom_fmt", tok_tel_dom_fmt, 0}, - {""}, {""}, {""}, -#line 54 "locfile-kw.gperf" - {"default_missing", tok_default_missing, 0}, -#line 89 "locfile-kw.gperf" - {"frac_digits", tok_frac_digits, 0}, - {""}, {""}, {""}, -#line 88 "locfile-kw.gperf" +#line 90 "locfile-kw.gperf" {"int_frac_digits", tok_int_frac_digits, 0}, -#line 170 "locfile-kw.gperf" - {"country_num", tok_country_num, 0}, -#line 119 "locfile-kw.gperf" + {""}, +#line 121 "locfile-kw.gperf" {"uno_valid_to", tok_uno_valid_to, 0}, - {""}, {""}, {""}, {""}, {""}, -#line 50 "locfile-kw.gperf" - {"map", tok_map, 0}, +#line 126 "locfile-kw.gperf" + {"decimal_point", tok_decimal_point, 0}, {""}, -#line 105 "locfile-kw.gperf" +#line 133 "locfile-kw.gperf" + {"abmon", tok_abmon, 0}, + {""}, {""}, {""}, {""}, +#line 107 "locfile-kw.gperf" {"duo_frac_digits", tok_duo_frac_digits, 0}, -#line 178 "locfile-kw.gperf" +#line 180 "locfile-kw.gperf" {"tel_int_fmt", tok_tel_int_fmt, 0}, -#line 121 "locfile-kw.gperf" +#line 123 "locfile-kw.gperf" {"duo_valid_to", tok_duo_valid_to, 0}, -#line 144 "locfile-kw.gperf" +#line 146 "locfile-kw.gperf" {"first_weekday", tok_first_weekday, 0}, {""}, -#line 143 "locfile-kw.gperf" - {"alt_digits", tok_alt_digits, 0}, -#line 95 "locfile-kw.gperf" +#line 130 "locfile-kw.gperf" + {"abday", tok_abday, 0}, + {""}, +#line 198 "locfile-kw.gperf" + {"abbreviation", tok_abbreviation, 0}, +#line 147 "locfile-kw.gperf" + {"first_workday", tok_first_workday, 0}, + {""}, {""}, +#line 97 "locfile-kw.gperf" {"n_sign_posn", tok_n_sign_posn, 0}, -#line 84 "locfile-kw.gperf" - {"mon_thousands_sep", tok_mon_thousands_sep, 0}, + {""}, {""}, {""}, #line 145 "locfile-kw.gperf" - {"first_workday", tok_first_workday, 0}, -#line 64 "locfile-kw.gperf" - {"from", tok_from, 0}, -#line 131 "locfile-kw.gperf" - {"abmon", tok_abmon, 0}, + {"alt_digits", tok_alt_digits, 0}, {""}, {""}, -#line 192 "locfile-kw.gperf" - {"language", tok_language, 0}, +#line 128 "locfile-kw.gperf" + {"grouping", tok_grouping, 0}, + {""}, +#line 45 "locfile-kw.gperf" + {"blank", tok_blank, 0}, {""}, {""}, -#line 195 "locfile-kw.gperf" - {"application", tok_application, 0}, +#line 194 "locfile-kw.gperf" + {"language", tok_language, 0}, +#line 120 "locfile-kw.gperf" + {"uno_valid_from", tok_uno_valid_from, 0}, {""}, -#line 126 "locfile-kw.gperf" - {"grouping", tok_grouping, 0}, -#line 78 "locfile-kw.gperf" - {"elif", tok_elif, 0}, -#line 128 "locfile-kw.gperf" - {"abday", tok_abday, 0}, +#line 197 "locfile-kw.gperf" + {"application", tok_application, 0}, {""}, -#line 196 "locfile-kw.gperf" - {"abbreviation", tok_abbreviation, 0}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 56 "locfile-kw.gperf" +#line 80 "locfile-kw.gperf" + {"elifndef", tok_elifndef, 0}, + {""}, {""}, {""}, {""}, {""}, +#line 122 "locfile-kw.gperf" + {"duo_valid_from", tok_duo_valid_from, 0}, +#line 57 "locfile-kw.gperf" {"coll_weight_max", tok_coll_weight_max, 0}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 66 "locfile-kw.gperf" + {""}, +#line 79 "locfile-kw.gperf" + {"elifdef", tok_elifdef, 0}, +#line 67 "locfile-kw.gperf" {"backward", tok_backward, 0}, -#line 104 "locfile-kw.gperf" +#line 106 "locfile-kw.gperf" {"duo_int_frac_digits", tok_duo_int_frac_digits, 0}, - {""}, -#line 94 "locfile-kw.gperf" + {""}, {""}, {""}, {""}, {""}, {""}, +#line 96 "locfile-kw.gperf" {"p_sign_posn", tok_p_sign_posn, 0}, {""}, -#line 199 "locfile-kw.gperf" +#line 201 "locfile-kw.gperf" {"category", tok_category, 0}, + {""}, {""}, {""}, {""}, +#line 134 "locfile-kw.gperf" + {"mon", tok_mon, 0}, {""}, -#line 122 "locfile-kw.gperf" +#line 124 "locfile-kw.gperf" {"conversion_rate", tok_conversion_rate, 0}, - {""}, -#line 83 "locfile-kw.gperf" - {"mon_decimal_point", tok_mon_decimal_point, 0}, - {""}, {""}, {""}, -#line 62 "locfile-kw.gperf" + {""}, {""}, {""}, {""}, {""}, +#line 63 "locfile-kw.gperf" {"order_start", tok_order_start, 0}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 188 "locfile-kw.gperf" + {""}, {""}, {""}, {""}, {""}, +#line 176 "locfile-kw.gperf" + {"lang_ab", tok_lang_ab, 0}, +#line 178 "locfile-kw.gperf" + {"lang_lib", tok_lang_lib, 0}, + {""}, {""}, {""}, +#line 190 "locfile-kw.gperf" {"contact", tok_contact, 0}, {""}, {""}, {""}, -#line 169 "locfile-kw.gperf" +#line 171 "locfile-kw.gperf" {"country_ab3", tok_country_ab3, 0}, - {""}, {""}, {""}, {""}, -#line 168 "locfile-kw.gperf" - {"country_ab2", tok_country_ab2, 0}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 174 "locfile-kw.gperf" - {"lang_ab", tok_lang_ab, 0}, -#line 176 "locfile-kw.gperf" - {"lang_lib", tok_lang_lib, 0}, - {""}, {""}, {""}, {""}, + {""}, {""}, {""}, #line 191 "locfile-kw.gperf" + {"email", tok_email, 0}, +#line 170 "locfile-kw.gperf" + {"country_ab2", tok_country_ab2, 0}, + {""}, {""}, {""}, +#line 55 "locfile-kw.gperf" + {"default_missing", tok_default_missing, 0}, + {""}, {""}, +#line 193 "locfile-kw.gperf" {"fax", tok_fax, 0}, - {""}, -#line 136 "locfile-kw.gperf" - {"am_pm", tok_am_pm, 0}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 172 "locfile-kw.gperf" + {"country_num", tok_country_num, 0}, + {""}, {""}, {""}, {""}, {""}, {""}, +#line 51 "locfile-kw.gperf" + {"map", tok_map, 0}, +#line 65 "locfile-kw.gperf" + {"from", tok_from, 0}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 86 "locfile-kw.gperf" + {"mon_thousands_sep", tok_mon_thousands_sep, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, -#line 37 "locfile-kw.gperf" - {"alnum", tok_alnum, 0}, {""}, {""}, {""}, -#line 175 "locfile-kw.gperf" - {"lang_term", tok_lang_term, 0}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 79 "locfile-kw.gperf" +#line 81 "locfile-kw.gperf" {"endif", tok_endif, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 165 "locfile-kw.gperf" - {"postal_fmt", tok_postal_fmt, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, -#line 75 "locfile-kw.gperf" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 76 "locfile-kw.gperf" {"undef", tok_undef, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 58 "locfile-kw.gperf" - {"collating-element", tok_collating_element, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 59 "locfile-kw.gperf" + {"collating-element", tok_collating_element, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, -#line 85 "locfile-kw.gperf" - {"mon_grouping", tok_mon_grouping, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, -#line 65 "locfile-kw.gperf" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 66 "locfile-kw.gperf" {"forward", tok_forward, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 59 "locfile-kw.gperf" + {""}, {""}, {""}, {""}, {""}, +#line 85 "locfile-kw.gperf" + {"mon_decimal_point", tok_mon_decimal_point, 0}, + {""}, {""}, +#line 167 "locfile-kw.gperf" + {"postal_fmt", tok_postal_fmt, 0}, + {""}, {""}, {""}, {""}, {""}, +#line 60 "locfile-kw.gperf" {"collating-symbol", tok_collating_symbol, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, -#line 34 "locfile-kw.gperf" + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 35 "locfile-kw.gperf" {"alpha", tok_alpha, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, +#line 38 "locfile-kw.gperf" + {"alnum", tok_alnum, 0}, + {""}, +#line 87 "locfile-kw.gperf" + {"mon_grouping", tok_mon_grouping, 0}, + {""}, +#line 177 "locfile-kw.gperf" + {"lang_term", tok_lang_term, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, +#line 77 "locfile-kw.gperf" + {"ifdef", tok_ifdef, 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 76 "locfile-kw.gperf" - {"ifdef", tok_ifdef, 0} + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, +#line 138 "locfile-kw.gperf" + {"am_pm", tok_am_pm, 0} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) diff --git a/libc/locale/programs/locfile-token.h b/libc/locale/programs/locfile-token.h index d6db1a778..aba0c0ef6 100644 --- a/libc/locale/programs/locfile-token.h +++ b/libc/locale/programs/locfile-token.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1996,1997,1998,1999,2000,2005 Free Software Foundation, Inc. +/* Copyright (C) 1996-2000,2005,2007 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@gnu.org>, 1996. @@ -115,7 +115,8 @@ enum token_t tok_ifdef, tok_ifndef, tok_else, - tok_elif, + tok_elifdef, + tok_elifndef, tok_endif, tok_lc_monetary, tok_int_curr_symbol, diff --git a/libc/localedata/ChangeLog b/libc/localedata/ChangeLog index 89f46cf91..934f5d4ee 100644 --- a/libc/localedata/ChangeLog +++ b/libc/localedata/ChangeLog @@ -1,3 +1,31 @@ +2007-10-10 Ulrich Drepper <drepper@redhat.com> + + * locales/iso14651_t1_common: If DIACRIT_FORWARD is defined, define + second level of <LATIN> script as forward. + * locales/de_DE: Define DIACRIT_FORWARD. + * de_DE.in: Revert last change. + +2007-10-10 Jakub Jelinek <jakub@redhat.com> + + * locales/en_US: Add first_weekday and first_workday. + * locales/cs_CZ: Likewise. + * locales/fur_IT: Likewise. + * locales/fy_DE: Likewise. + * locales/hu_HU: Likewise. + * locales/i18n: Likewise. + * locales/li_BE: Likewise. + * locales/li_NL: Likewise. + * locales/nds_DE: Likewise. + * locales/nds_NL: Likewise. + * locales/pl_PL: Likewise. + * locales/sc_IT: Likewise. + * locales/sk_SK: Likewise. + +2007-10-09 Ulrich Drepper <drepper@redhat.com> + + * locales/de_DE: Set first week day to Monday. + * locales/fr_FR: Likewise. + 2007-10-07 Ulrich Drepper <drepper@redhat.com> [BZ #73] diff --git a/libc/localedata/de_DE.in b/libc/localedata/de_DE.in index b3b0dac29..c56f401f6 100644 --- a/libc/localedata/de_DE.in +++ b/libc/localedata/de_DE.in @@ -40,8 +40,8 @@ Füße (pl. of "Fuß") : feet Fussel : fluff fusseln : to wear of fluff füßeln : play footsie [under the table] -Füssen : Füssen (town) fußen : to be based [on] +Füssen : Füssen (town) Füßen (dat. pl. of "Fuß") : [to the] feet in Massen : in large numbers in Maßen : moderately @@ -49,9 +49,9 @@ Masern : measels Mass. (Massachusetts) : Massachusetts (state) Maß : measure Masse : mass +Massé : (particular billard stroke) Maße (pl. of "Maß") : measures mäße (pres. conj. of "messen") : take measure (e.g. in indirect speech) -Massé : (particular billard stroke) Massen- : mass; wholesale; bulk (in compound nouns) massig : massive mäßig : moderate; modest @@ -60,8 +60,8 @@ Miß : Miss Passe : yoke (of dress) passé : over, gone Schlagerforderung : claim, demanded in a pop song -Schlägerforderung : demand of a hooligan Schlagerförderung : promotion of pop music +Schlägerforderung : demand of a hooligan Schlägerförderung : promotion of hooliganism :-) Schurz : apron Schürze : apron diff --git a/libc/localedata/locales/cs_CZ b/libc/localedata/locales/cs_CZ index 059776a05..cb2323123 100644 --- a/libc/localedata/locales/cs_CZ +++ b/libc/localedata/locales/cs_CZ @@ -2439,6 +2439,8 @@ abmon "<U006C><U0065><U0064>";/ % "<U0044><U0065><U0063>" week 7;19971201;4 +first_weekday 1 +first_workday 1 d_t_fmt "<U0025><U0061><U00A0><U0025><U002D><U0064><U002E><U00A0><U0025><U0042><U00A0><U0025><U0059><U002C><U00A0><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U00A0><U0025><U005A>" diff --git a/libc/localedata/locales/de_DE b/libc/localedata/locales/de_DE index 8c6fe41eb..a694dc288 100644 --- a/libc/localedata/locales/de_DE +++ b/libc/localedata/locales/de_DE @@ -76,6 +76,8 @@ END LC_CTYPE LC_COLLATE +define DIACRIT_FORWARD + % Copy the template from ISO/IEC 14651 copy "iso14651_t1" @@ -118,7 +120,6 @@ day "<U0053><U006F><U006E><U006E><U0074><U0061><U0067>";/ "<U0044><U006F><U006E><U006E><U0065><U0072><U0073><U0074><U0061><U0067>";/ "<U0046><U0072><U0065><U0069><U0074><U0061><U0067>";/ "<U0053><U0061><U006D><U0073><U0074><U0061><U0067>" -week 7;19971201;4 abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/ "<U004D><U00E4><U0072>";"<U0041><U0070><U0072>";/ "<U004D><U0061><U0069>";"<U004A><U0075><U006E>";/ @@ -153,6 +154,10 @@ t_fmt_ampm "" date_fmt "<U0025><U0061><U0020><U0025><U002D><U0064><U002E><U0020>/ <U0025><U0062><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>/ <U0020><U0025><U005A><U0020><U0025><U0059>" + +week 7;19971201;4 +first_weekday 1 +first_workday 1 END LC_TIME LC_MESSAGES diff --git a/libc/localedata/locales/en_US b/libc/localedata/locales/en_US index 1a97aa7aa..38425e815 100644 --- a/libc/localedata/locales/en_US +++ b/libc/localedata/locales/en_US @@ -82,6 +82,8 @@ day "<U0053><U0075><U006E><U0064><U0061><U0079>";/ "<U0053><U0061><U0074><U0075><U0072><U0064><U0061><U0079>" week 7;19971130;7 +first_weekday 1 +first_workday 2 abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/ "<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/ "<U004D><U0061><U0079>";"<U004A><U0075><U006E>";/ diff --git a/libc/localedata/locales/fr_FR b/libc/localedata/locales/fr_FR index a9845fda1..8bae00565 100644 --- a/libc/localedata/locales/fr_FR +++ b/libc/localedata/locales/fr_FR @@ -129,6 +129,10 @@ t_fmt_ampm "" date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/ <U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/ <U0025><U005A><U0020><U0025><U0059>" + +week 7;19971201;4 +first_weekday 1 +first_workday 1 END LC_TIME LC_PAPER diff --git a/libc/localedata/locales/fur_IT b/libc/localedata/locales/fur_IT index f9c4bd3fc..35da38ca9 100644 --- a/libc/localedata/locales/fur_IT +++ b/libc/localedata/locales/fur_IT @@ -111,6 +111,8 @@ date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/ <U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/ <U0025><U005A><U0020><U0025><U0059>" week 7;19971201;4 +first_weekday 1 +first_workday 1 END LC_TIME LC_PAPER diff --git a/libc/localedata/locales/fy_DE b/libc/localedata/locales/fy_DE index ec37f2f77..cad33aa51 100644 --- a/libc/localedata/locales/fy_DE +++ b/libc/localedata/locales/fy_DE @@ -128,4 +128,6 @@ t_fmt "<U0025><U0054>" am_pm "";"" t_fmt_ampm "" week 7;19971201;4 +first_weekday 1 +first_workday 1 END LC_TIME diff --git a/libc/localedata/locales/hu_HU b/libc/localedata/locales/hu_HU index ce878e9d7..95be95b0a 100644 --- a/libc/localedata/locales/hu_HU +++ b/libc/localedata/locales/hu_HU @@ -521,6 +521,8 @@ t_fmt_ampm "<U0025><U0048><U002E><U0025><U004D><U002E><U0025><U0053>" date_fmt "<U0025><U0059><U002E><U0020><U0025><U0062><U002E><U0020><U0025><U0065><U002E><U002C>/ <U0020><U0025><U0041><U002C><U0020><U0025><U0048><U002E><U0025><U004D><U002E><U0025><U0053><U0020><U0025><U005A>" week 7;19971201;4 +first_weekday 1 +first_workday 1 END LC_TIME LC_PAPER diff --git a/libc/localedata/locales/i18n b/libc/localedata/locales/i18n index ce16afbe0..93ffe90e7 100644 --- a/libc/localedata/locales/i18n +++ b/libc/localedata/locales/i18n @@ -1943,6 +1943,8 @@ LC_TIME abday "<U0031>";"<U0032>";"<U0033>";"<U0034>";"<U0035>";"<U0036>";"<U0037>" day "<U0031>";"<U0032>";"<U0033>";"<U0034>";"<U0035>";"<U0036>";"<U0037>" week 7;19971201;4 +first_weekday 1 +first_workday 1 abmon "<U0030><U0031>";"<U0030><U0032>";"<U0030><U0033>";"<U0030><U0034>";/ "<U0030><U0035>";"<U0030><U0036>";"<U0030><U0037>";"<U0030><U0038>";/ "<U0030><U0039>";"<U0031><U0030>";"<U0031><U0031>";"<U0031><U0032>" diff --git a/libc/localedata/locales/iso14651_t1_common b/libc/localedata/locales/iso14651_t1_common index 14b290c66..b5951f9e8 100644 --- a/libc/localedata/locales/iso14651_t1_common +++ b/libc/localedata/locales/iso14651_t1_common @@ -1121,7 +1121,11 @@ order_start <SPECIAL>;forward;backward;forward;forward,position <U009E> IGNORE;IGNORE;IGNORE;<U009E> <U009F> IGNORE;IGNORE;IGNORE;<U009F> +ifdef DIACRIT_FORWARD +order_start <LATIN>;forward;forward;forward;forward,position +else order_start <LATIN>;forward;backward;forward;forward,position +endif # <U00A0> <U0020>;<BAS>;<MIN>;IGNORE # 170<NBSP> # diff --git a/libc/localedata/locales/li_BE b/libc/localedata/locales/li_BE index 7de99170c..f0a6fc19f 100644 --- a/libc/localedata/locales/li_BE +++ b/libc/localedata/locales/li_BE @@ -127,4 +127,6 @@ t_fmt "<U0025><U0054>" am_pm "";"" t_fmt_ampm "" week 7;19971201;4 +first_weekday 1 +first_workday 1 END LC_TIME diff --git a/libc/localedata/locales/li_NL b/libc/localedata/locales/li_NL index 016e283cd..3f4d021f4 100644 --- a/libc/localedata/locales/li_NL +++ b/libc/localedata/locales/li_NL @@ -128,4 +128,6 @@ t_fmt "<U0025><U0054>" am_pm "";"" t_fmt_ampm "" week 7;19971201;4 +first_weekday 1 +first_workday 1 END LC_TIME diff --git a/libc/localedata/locales/nds_DE b/libc/localedata/locales/nds_DE index 179f05280..10310cf07 100644 --- a/libc/localedata/locales/nds_DE +++ b/libc/localedata/locales/nds_DE @@ -126,4 +126,6 @@ t_fmt "<U0025><U0054>" am_pm "";"" t_fmt_ampm "" week 7;19971201;4 +first_weekday 1 +first_workday 1 END LC_TIME diff --git a/libc/localedata/locales/nds_NL b/libc/localedata/locales/nds_NL index aaccb6845..54792ca65 100644 --- a/libc/localedata/locales/nds_NL +++ b/libc/localedata/locales/nds_NL @@ -125,4 +125,6 @@ t_fmt "<U0025><U0054>" am_pm "";"" t_fmt_ampm "" week 7;19971201;4 +first_weekday 1 +first_workday 1 END LC_TIME diff --git a/libc/localedata/locales/pl_PL b/libc/localedata/locales/pl_PL index 213284f0d..2f17b364f 100644 --- a/libc/localedata/locales/pl_PL +++ b/libc/localedata/locales/pl_PL @@ -2199,6 +2199,8 @@ date_fmt "<U0025><U0061><U002C><U0020>/ <U0025><U002D><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U002C><U0020>/ <U0025><U0054><U0020><U0025><U005A>" week 7;19971201;4 +first_weekday 1 +first_workday 1 END LC_TIME LC_PAPER diff --git a/libc/localedata/locales/sc_IT b/libc/localedata/locales/sc_IT index dd38cac62..0309d56f6 100644 --- a/libc/localedata/locales/sc_IT +++ b/libc/localedata/locales/sc_IT @@ -111,6 +111,8 @@ date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/ <U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/ <U0025><U005A><U0020><U0025><U0059>" week 7;19971201;4 +first_weekday 1 +first_workday 1 END LC_TIME LC_PAPER diff --git a/libc/localedata/locales/sk_SK b/libc/localedata/locales/sk_SK index afcca128b..57e832751 100644 --- a/libc/localedata/locales/sk_SK +++ b/libc/localedata/locales/sk_SK @@ -184,6 +184,8 @@ date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/ <U0025><U005A><U0020><U0025><U0059>" week 7;19971201;4 +first_weekday 1 +first_workday 1 END LC_TIME diff --git a/libc/nptl/ChangeLog b/libc/nptl/ChangeLog index 5d11b6ab7..b7c03dc33 100644 --- a/libc/nptl/ChangeLog +++ b/libc/nptl/ChangeLog @@ -1,3 +1,11 @@ +2007-10-10 Jakub Jelinek <jakub@redhat.com> + + * sysdeps/pthread/bits/libc-lock.h (__libc_rwlock_init): Inside of + libc.so just clear NAME. + (__libc_rwlock_fini): Nop inside of libc.so. + * tst-initializers1.c (main): Test if PTHREAD_RWLOCK_INITIALIZER is + all zeros. + 2007-09-02 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S diff --git a/libc/nptl/sysdeps/pthread/bits/libc-lock.h b/libc/nptl/sysdeps/pthread/bits/libc-lock.h index 45eba0613..a597f3b5a 100644 --- a/libc/nptl/sysdeps/pthread/bits/libc-lock.h +++ b/libc/nptl/sysdeps/pthread/bits/libc-lock.h @@ -172,8 +172,15 @@ typedef pthread_key_t __libc_key_t; # define __libc_lock_init(NAME) \ __libc_maybe_call (__pthread_mutex_init, (&(NAME), NULL), 0) #endif -#define __libc_rwlock_init(NAME) \ +#if defined SHARED && !defined NOT_IN_libc +/* ((NAME) = (__libc_rwlock_t) PTHREAD_RWLOCK_INITIALIZER, 0) is + inefficient. */ +# define __libc_rwlock_init(NAME) \ + (__builtin_memset (&(NAME), '\0', sizeof (NAME)), 0) +#else +# define __libc_rwlock_init(NAME) \ __libc_maybe_call (__pthread_rwlock_init, (&(NAME), NULL), 0) +#endif /* Same as last but this time we initialize a recursive mutex. */ #if defined _LIBC && (!defined NOT_IN_libc || defined IS_IN_libpthread) @@ -214,8 +221,12 @@ typedef pthread_key_t __libc_key_t; # define __libc_lock_fini(NAME) \ __libc_maybe_call (__pthread_mutex_destroy, (&(NAME)), 0) #endif -#define __libc_rwlock_fini(NAME) \ +#if defined SHARED && !defined NOT_IN_libc +# define __libc_rwlock_fini(NAME) ((void) 0) +#else +# define __libc_rwlock_fini(NAME) \ __libc_maybe_call (__pthread_rwlock_destroy, (&(NAME)), 0) +#endif /* Finalize recursive named lock. */ #if defined _LIBC && (!defined NOT_IN_libc || defined IS_IN_libpthread) diff --git a/libc/nptl/tst-initializers1.c b/libc/nptl/tst-initializers1.c index 9036e6eac..d30e885e0 100644 --- a/libc/nptl/tst-initializers1.c +++ b/libc/nptl/tst-initializers1.c @@ -47,5 +47,12 @@ main (void) if (rwl_writer.__data.__flags != PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP) return 6; + /* <bits/libc-lock.h> __libc_rwlock_init definition for libc.so + relies on PTHREAD_RWLOCK_INITIALIZER being all zeros. If + that ever changes, <bits/libc-lock.h> needs updating. */ + size_t i; + for (i = 0; i < sizeof (rwl_normal); i++) + if (((char *) &rwl_normal)[i] != '\0') + return 7; return 0; } diff --git a/libc/stdio-common/printf-parse.h b/libc/stdio-common/printf-parse.h index aa49c7a64..f6ad71cd3 100644 --- a/libc/stdio-common/printf-parse.h +++ b/libc/stdio-common/printf-parse.h @@ -1,5 +1,6 @@ /* Internal header for parsing printf format strings. - Copyright (C) 1995-1999, 2000, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1995-1999, 2000, 2002, 2003, 2007 + Free Software Foundation, Inc. This file is part of th GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -20,6 +21,8 @@ #include <printf.h> #include <stdint.h> #include <stddef.h> +#include <string.h> +#include <wchar.h> struct printf_spec @@ -86,11 +89,17 @@ extern printf_function **__printf_function_table attribute_hidden; /* Find the next spec in FORMAT, or the end of the string. Returns a pointer into FORMAT, to a '%' or a '\0'. */ -extern const unsigned char *__find_specmb (const UCHAR_T *format, - mbstate_t *ps) attribute_hidden; +__extern_always_inline const unsigned char * +__find_specmb (const unsigned char *format) +{ + return (const unsigned char *) __strchrnul ((const char *) format, '%'); +} -extern const unsigned int *__find_specwc (const UCHAR_T *format) - attribute_hidden; +__extern_always_inline const unsigned int * +__find_specwc (const unsigned int *format) +{ + return (const unsigned int *) __wcschrnul ((const wchar_t *) format, L'%'); +} /* FORMAT must point to a '%' at the beginning of a spec. Fills in *SPEC @@ -100,8 +109,7 @@ extern const unsigned int *__find_specwc (const UCHAR_T *format) remains the highest argument index used. */ extern size_t __parse_one_specmb (const unsigned char *format, size_t posn, struct printf_spec *spec, - size_t *max_ref_arg, mbstate_t *ps) - attribute_hidden; + size_t *max_ref_arg) attribute_hidden; extern size_t __parse_one_specwc (const unsigned int *format, size_t posn, struct printf_spec *spec, diff --git a/libc/stdio-common/printf-parsemb.c b/libc/stdio-common/printf-parsemb.c index 2f21fc636..da6fd3edb 100644 --- a/libc/stdio-common/printf-parsemb.c +++ b/libc/stdio-common/printf-parsemb.c @@ -46,35 +46,6 @@ -/* Find the next spec in FORMAT, or the end of the string. Returns - a pointer into FORMAT, to a '%' or a '\0'. */ -const UCHAR_T * -#ifdef COMPILE_WPRINTF -__find_specwc (const UCHAR_T *format) -#else -__find_specmb (const UCHAR_T *format, mbstate_t *ps) -#endif -{ -#ifdef COMPILE_WPRINTF - return (const UCHAR_T *) __wcschrnul ((const CHAR_T *) format, L'%'); -#else - while (*format != L_('\0') && *format != L_('%')) - { - int len; - - /* Remove any hints of a wrong encoding. */ - ps->__count = 0; - if (! isascii (*format) - && (len = __mbrlen ((const CHAR_T *) format, MB_CUR_MAX, ps)) > 0) - format += len; - else - ++format; - } - return format; -#endif -} - - /* FORMAT must point to a '%' at the beginning of a spec. Fills in *SPEC with the parsed details. POSN is the number of arguments already consumed. At most MAXTYPES - POSN types are filled in TYPES. Return @@ -87,8 +58,7 @@ __parse_one_specwc (const UCHAR_T *format, size_t posn, struct printf_spec *spec, size_t *max_ref_arg) #else __parse_one_specmb (const UCHAR_T *format, size_t posn, - struct printf_spec *spec, size_t *max_ref_arg, - mbstate_t *ps) + struct printf_spec *spec, size_t *max_ref_arg) #endif { unsigned int n; @@ -403,7 +373,7 @@ __parse_one_specmb (const UCHAR_T *format, size_t posn, #ifdef COMPILE_WPRINTF spec->next_fmt = __find_specwc (format); #else - spec->next_fmt = __find_specmb (format, ps); + spec->next_fmt = __find_specmb (format); #endif } diff --git a/libc/stdio-common/printf-prs.c b/libc/stdio-common/printf-prs.c index 015b01f1e..aabc9ed85 100644 --- a/libc/stdio-common/printf-prs.c +++ b/libc/stdio-common/printf-prs.c @@ -1,5 +1,5 @@ -/* Copyright (C) 1991, 1992, 1995, 1996, 1999, 2000, 2002, 2003, 2004, 2005 - Free Software Foundation, Inc. +/* Copyright (C) 1991, 1992, 1995, 1996, 1999, 2000, 2002, 2003, 2004, 2005, + 2007 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 @@ -66,17 +66,16 @@ parse_printf_format (fmt, n, argtypes) size_t nargs; /* Number of arguments. */ size_t max_ref_arg; /* Highest index used in a positional arg. */ struct printf_spec spec; - mbstate_t mbstate; const unsigned char *f = (const unsigned char *) fmt; nargs = 0; max_ref_arg = 0; /* Search for format specifications. */ - for (f = __find_specmb (f, &mbstate); *f != '\0'; f = spec.next_fmt) + for (f = __find_specmb (f); *f != '\0'; f = spec.next_fmt) { /* Parse this spec. */ - nargs += __parse_one_specmb (f, nargs, &spec, &max_ref_arg, &mbstate); + nargs += __parse_one_specmb (f, nargs, &spec, &max_ref_arg); /* If the width is determined by an argument this is an int. */ if (spec.width_arg != -1 && (size_t) spec.width_arg < n) diff --git a/libc/stdio-common/vfprintf.c b/libc/stdio-common/vfprintf.c index fae0f7464..d1dc1aaf5 100644 --- a/libc/stdio-common/vfprintf.c +++ b/libc/stdio-common/vfprintf.c @@ -209,11 +209,6 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) CHAR_T *workstart = NULL; CHAR_T *workend; - /* State for restartable multibyte character handling functions. */ -#ifndef COMPILE_WPRINTF - mbstate_t mbstate; -#endif - /* We have to save the original argument pointer. */ va_list ap_save; @@ -1294,11 +1289,8 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) /* Find the first format specifier. */ f = lead_str_end = __find_specwc ((const UCHAR_T *) format); #else - /* Put state for processing format string in initial state. */ - memset (&mbstate, '\0', sizeof (mbstate_t)); - /* Find the first format specifier. */ - f = lead_str_end = __find_specmb ((const UCHAR_T *) format, &mbstate); + f = lead_str_end = __find_specmb ((const UCHAR_T *) format); #endif /* Lock stream. */ @@ -1591,7 +1583,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) #ifdef COMPILE_WPRINTF f = __find_specwc ((end_of_spec = ++f)); #else - f = __find_specmb ((end_of_spec = ++f), &mbstate); + f = __find_specmb ((end_of_spec = ++f)); #endif /* Write the following constant string. */ @@ -1674,8 +1666,7 @@ do_positional: #ifdef COMPILE_WPRINTF nargs += __parse_one_specwc (f, nargs, &specs[nspecs], &max_ref_arg); #else - nargs += __parse_one_specmb (f, nargs, &specs[nspecs], &max_ref_arg, - &mbstate); + nargs += __parse_one_specmb (f, nargs, &specs[nspecs], &max_ref_arg); #endif } diff --git a/libc/sysdeps/unix/sysv/linux/eventfd_read.c b/libc/sysdeps/unix/sysv/linux/eventfd_read.c index 1113f1147..3b1059a0a 100644 --- a/libc/sysdeps/unix/sysv/linux/eventfd_read.c +++ b/libc/sysdeps/unix/sysv/linux/eventfd_read.c @@ -24,5 +24,5 @@ int eventfd_read (int fd, eventfd_t *value) { - return read (fd, value, sizeof (eventfd_t)) != sizeof (eventfd_t) ? -1 : 0; + return __read (fd, value, sizeof (eventfd_t)) != sizeof (eventfd_t) ? -1 : 0; } diff --git a/libc/sysdeps/unix/sysv/linux/eventfd_write.c b/libc/sysdeps/unix/sysv/linux/eventfd_write.c index 4bcf95dae..4b15990c3 100644 --- a/libc/sysdeps/unix/sysv/linux/eventfd_write.c +++ b/libc/sysdeps/unix/sysv/linux/eventfd_write.c @@ -24,5 +24,6 @@ int eventfd_write (int fd, eventfd_t value) { - return write (fd, &value, sizeof (eventfd_t)) != sizeof (eventfd_t) ? -1 : 0; + return __write (fd, &value, + sizeof (eventfd_t)) != sizeof (eventfd_t) ? -1 : 0; } diff --git a/libc/sysdeps/x86_64/cacheinfo.c b/libc/sysdeps/x86_64/cacheinfo.c index 5b92bd584..12102fea8 100644 --- a/libc/sysdeps/x86_64/cacheinfo.c +++ b/libc/sysdeps/x86_64/cacheinfo.c @@ -456,6 +456,13 @@ init_cacheinfo (void) asm volatile ("cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) : "0" (4), "2" (i++)); + + /* There seems to be a bug in at least some Pentium Ds + which sometimes fail to iterate all cache parameters. + Do not loop indefinitely here, stop in this case and + assume there is no such information. */ + if ((eax & 0x1f) == 0) + goto intel_bug_no_cache_info; } while (((eax >> 5) & 0x7) != level); @@ -463,6 +470,7 @@ init_cacheinfo (void) } else { + intel_bug_no_cache_info: /* Assume that all logical threads share the highest cache level. */ asm volatile ("cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) |