mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 13:30:06 +00:00
761a585ce9
All the previous changes also repeated to support abbreviated alternative month names. In most languages which have declension and need nominative/genitive month names the abbreviated forms for both cases are the same. An example where they do differ is May in Russian: this name is too short to be abbreviated so even the abbreviated form features the declension suffixes. [BZ #10871] * locale/C-time.c (_nl_C_LC_TIME): Add abbreviated alternative month names, define them as the same as abbreviated month names explicitly. * locale/categories.def (LC_TIME): Add ab_alt_mon and wide-ab_alt_mon. * locale/langinfo.h: (_NL_ABALTMON_1, _NL_ABALTMON_2, _NL_ABALTMON_3, _NL_ABALTMON_4, _NL_ABALTMON_5, _NL_ABALTMON_6, _NL_ABALTMON_7, _NL_ABALTMON_8, _NL_ABALTMON_9, _NL_ABALTMON_10, _NL_ABALTMON_11, _NL_ABALTMON_12, _NL_WABALTMON_1, _NL_WABALTMON_2, _NL_WABALTMON_3, _NL_WABALTMON_4, _NL_WABALTMON_5, _NL_WABALTMON_6, _NL_WABALTMON_7, _NL_WABALTMON_8, _NL_WABALTMON_9, _NL_WABALTMON_10, _NL_WABALTMON_11, _NL_WABALTMON_12): New enum constants. * locale/programs/ld-time.c (struct locale_time_t): Add ab_alt_mon, wab_alt_mon, and ab_alt_mon_defined members. (time_output): Output ab_alt_mon and wab_alt_mon members. (time_read): Read them, initialize them as copies of abmon and wabmon respectively if they are missing, initialize ab_alt_mon_defined. * locale/programs/locfile-kw.gperf (ab_alt_mon): Define. * locale/programs/locfile-kw.h: Regenerate. * locale/programs/locfile-token.h (tok_ab_alt_mon): New enum constant. * time/Makefile [$(run-built-tests) = yes] (LOCALES): Add es_ES.UTF-8 and ru_RU.UTF-8. * time/strftime_l.c (a_altmonth, aam_len): New macros. [!COMPILE_WIDE] (ABALTMON_1): New macro. (__strftime_internal): Handle %Ob and %Oh formats. * time/strptime_l.c [_LIBC] (ab_alt_month_name): New macro. (__strptime_internal): Handle %Ob and %Oh formats. * time/tst-strptime.c (day_tests): Add more tests to parse different forms of month names including the new %Ob format specifier. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
261 lines
4.9 KiB
C
261 lines
4.9 KiB
C
/* Copyright (C) 1996-2018 Free Software Foundation, Inc.
|
|
This file is part of the GNU C Library.
|
|
Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
|
|
|
|
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; version 2 of the License, 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, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#ifndef _TOKEN_H
|
|
#define _TOKEN_H
|
|
|
|
enum token_t
|
|
{
|
|
tok_none = 0,
|
|
|
|
tok_eof,
|
|
tok_eol,
|
|
tok_bsymbol,
|
|
tok_ident,
|
|
tok_ellipsis2,
|
|
tok_ellipsis3,
|
|
tok_ellipsis4,
|
|
tok_ellipsis2_2,
|
|
tok_ellipsis4_2,
|
|
tok_semicolon,
|
|
tok_comma,
|
|
tok_open_brace,
|
|
tok_close_brace,
|
|
tok_charcode,
|
|
tok_ucs4,
|
|
tok_number,
|
|
tok_minus1,
|
|
tok_string,
|
|
tok_include,
|
|
|
|
tok_escape_char,
|
|
tok_comment_char,
|
|
tok_charmap,
|
|
tok_end,
|
|
tok_g0esc,
|
|
tok_g1esc,
|
|
tok_g2esc,
|
|
tok_g3esc,
|
|
tok_escseq,
|
|
tok_addset,
|
|
|
|
tok_charids,
|
|
|
|
tok_code_set_name,
|
|
tok_mb_cur_max,
|
|
tok_mb_cur_min,
|
|
tok_charconv,
|
|
tok_width,
|
|
tok_width_variable,
|
|
tok_width_default,
|
|
tok_repertoiremap,
|
|
|
|
tok_lc_ctype,
|
|
tok_copy,
|
|
/* Keep the following entries up to the next comment in this order! */
|
|
tok_upper,
|
|
tok_lower,
|
|
tok_alpha,
|
|
tok_digit,
|
|
tok_xdigit,
|
|
tok_space,
|
|
tok_print,
|
|
tok_graph,
|
|
tok_blank,
|
|
tok_cntrl,
|
|
tok_punct,
|
|
tok_alnum,
|
|
/* OK, shuffling allowed again. */
|
|
tok_outdigit,
|
|
tok_charclass,
|
|
tok_class,
|
|
tok_toupper,
|
|
tok_tolower,
|
|
tok_map,
|
|
tok_translit_start,
|
|
tok_translit_end,
|
|
tok_translit_ignore,
|
|
tok_default_missing,
|
|
tok_lc_collate,
|
|
tok_coll_weight_max,
|
|
tok_section_symbol,
|
|
tok_collating_element,
|
|
tok_collating_symbol,
|
|
tok_symbol_equivalence,
|
|
tok_script,
|
|
tok_order_start,
|
|
tok_order_end,
|
|
tok_from,
|
|
tok_forward,
|
|
tok_backward,
|
|
tok_position,
|
|
tok_undefined,
|
|
tok_ignore,
|
|
tok_reorder_after,
|
|
tok_reorder_end,
|
|
tok_reorder_sections_after,
|
|
tok_reorder_sections_end,
|
|
tok_define,
|
|
tok_undef,
|
|
tok_ifdef,
|
|
tok_ifndef,
|
|
tok_else,
|
|
tok_elifdef,
|
|
tok_elifndef,
|
|
tok_endif,
|
|
tok_lc_monetary,
|
|
tok_int_curr_symbol,
|
|
tok_currency_symbol,
|
|
tok_mon_decimal_point,
|
|
tok_mon_thousands_sep,
|
|
tok_mon_grouping,
|
|
tok_positive_sign,
|
|
tok_negative_sign,
|
|
tok_int_frac_digits,
|
|
tok_frac_digits,
|
|
tok_p_cs_precedes,
|
|
tok_p_sep_by_space,
|
|
tok_n_cs_precedes,
|
|
tok_n_sep_by_space,
|
|
tok_p_sign_posn,
|
|
tok_n_sign_posn,
|
|
tok_int_p_cs_precedes,
|
|
tok_int_p_sep_by_space,
|
|
tok_int_n_cs_precedes,
|
|
tok_int_n_sep_by_space,
|
|
tok_int_p_sign_posn,
|
|
tok_int_n_sign_posn,
|
|
tok_duo_int_curr_symbol,
|
|
tok_duo_currency_symbol,
|
|
tok_duo_int_frac_digits,
|
|
tok_duo_frac_digits,
|
|
tok_duo_p_cs_precedes,
|
|
tok_duo_p_sep_by_space,
|
|
tok_duo_n_cs_precedes,
|
|
tok_duo_n_sep_by_space,
|
|
tok_duo_int_p_cs_precedes,
|
|
tok_duo_int_p_sep_by_space,
|
|
tok_duo_int_n_cs_precedes,
|
|
tok_duo_int_n_sep_by_space,
|
|
tok_duo_p_sign_posn,
|
|
tok_duo_n_sign_posn,
|
|
tok_duo_int_p_sign_posn,
|
|
tok_duo_int_n_sign_posn,
|
|
tok_uno_valid_from,
|
|
tok_uno_valid_to,
|
|
tok_duo_valid_from,
|
|
tok_duo_valid_to,
|
|
tok_conversion_rate,
|
|
tok_lc_numeric,
|
|
tok_decimal_point,
|
|
tok_thousands_sep,
|
|
tok_grouping,
|
|
tok_lc_time,
|
|
tok_abday,
|
|
tok_day,
|
|
tok_abmon,
|
|
tok_mon,
|
|
tok_d_t_fmt,
|
|
tok_d_fmt,
|
|
tok_t_fmt,
|
|
tok_am_pm,
|
|
tok_t_fmt_ampm,
|
|
tok_era,
|
|
tok_era_year,
|
|
tok_era_d_fmt,
|
|
tok_era_d_t_fmt,
|
|
tok_era_t_fmt,
|
|
tok_alt_digits,
|
|
tok_week,
|
|
tok_first_weekday,
|
|
tok_first_workday,
|
|
tok_cal_direction,
|
|
tok_timezone,
|
|
tok_date_fmt,
|
|
tok_alt_mon,
|
|
tok_ab_alt_mon,
|
|
tok_lc_messages,
|
|
tok_yesexpr,
|
|
tok_noexpr,
|
|
tok_yesstr,
|
|
tok_nostr,
|
|
tok_lc_paper,
|
|
tok_height,
|
|
tok_lc_name,
|
|
tok_name_fmt,
|
|
tok_name_gen,
|
|
tok_name_mr,
|
|
tok_name_mrs,
|
|
tok_name_miss,
|
|
tok_name_ms,
|
|
tok_lc_address,
|
|
tok_postal_fmt,
|
|
tok_country_name,
|
|
tok_country_post,
|
|
tok_country_ab2,
|
|
tok_country_ab3,
|
|
tok_country_num,
|
|
tok_country_car,
|
|
tok_country_isbn,
|
|
tok_lang_name,
|
|
tok_lang_ab,
|
|
tok_lang_term,
|
|
tok_lang_lib,
|
|
tok_lc_telephone,
|
|
tok_tel_int_fmt,
|
|
tok_tel_dom_fmt,
|
|
tok_int_select,
|
|
tok_int_prefix,
|
|
tok_lc_measurement,
|
|
tok_measurement,
|
|
tok_lc_identification,
|
|
tok_title,
|
|
tok_source,
|
|
tok_address,
|
|
tok_contact,
|
|
tok_email,
|
|
tok_tel,
|
|
tok_fax,
|
|
tok_language,
|
|
tok_territory,
|
|
tok_audience,
|
|
tok_application,
|
|
tok_abbreviation,
|
|
tok_revision,
|
|
tok_date,
|
|
tok_category,
|
|
|
|
tok_error
|
|
};
|
|
|
|
|
|
struct keyword_t
|
|
{
|
|
const char *name;
|
|
enum token_t token;
|
|
int symname_or_ident;
|
|
|
|
/* Only for locdef file. */
|
|
int locale;
|
|
enum token_t base;
|
|
enum token_t group;
|
|
enum token_t list;
|
|
};
|
|
|
|
|
|
#endif /* token.h */
|