glibc/locale/programs/locfile-token.h
Rafal Luzynski 761a585ce9 Abbreviated alternative month names (%Ob) also added (bug 10871).
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>
2018-01-22 11:26:55 +01:00

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 */