{"id":815422,"url":"http://patchwork.ozlabs.org/api/1.2/patches/815422/?format=json","web_url":"http://patchwork.ozlabs.org/project/glibc/patch/604461725.1094943.1505817835815@poczta.nazwa.pl/","project":{"id":41,"url":"http://patchwork.ozlabs.org/api/1.2/projects/41/?format=json","name":"GNU C Library","link_name":"glibc","list_id":"libc-alpha.sourceware.org","list_email":"libc-alpha@sourceware.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<604461725.1094943.1505817835815@poczta.nazwa.pl>","list_archive_url":null,"date":"2017-09-19T10:43:55","name":"[RFC,v9,4/6] Abbreviated alternative month names (%Ob) also added (bug 10871).","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"3d4de50ac9d95ab82bb40cdd2a1c0cef23d6491e","submitter":{"id":67752,"url":"http://patchwork.ozlabs.org/api/1.2/people/67752/?format=json","name":"Rafal Luzynski","email":"digitalfreak@lingonborough.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/glibc/patch/604461725.1094943.1505817835815@poczta.nazwa.pl/mbox/","series":[{"id":3831,"url":"http://patchwork.ozlabs.org/api/1.2/series/3831/?format=json","web_url":"http://patchwork.ozlabs.org/project/glibc/list/?series=3831","date":"2017-09-19T10:39:23","name":"Month names in alternative grammatical case","version":9,"mbox":"http://patchwork.ozlabs.org/series/3831/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/815422/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/815422/checks/","tags":{},"related":[],"headers":{"Return-Path":"<libc-alpha-return-84716-incoming=patchwork.ozlabs.org@sourceware.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":["patchwork-incoming@bilbo.ozlabs.org","mailing list libc-alpha@sourceware.org"],"Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=sourceware.org\n\t(client-ip=209.132.180.131; helo=sourceware.org;\n\tenvelope-from=libc-alpha-return-84716-incoming=patchwork.ozlabs.org@sourceware.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tsecure) header.d=sourceware.org header.i=@sourceware.org\n\theader.b=\"OHhHH98p\"; dkim-atps=neutral","sourceware.org; auth=none"],"Received":["from sourceware.org (server1.sourceware.org [209.132.180.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xxKJ44fBtz9s82\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 19 Sep 2017 20:44:36 +1000 (AEST)","(qmail 21081 invoked by alias); 19 Sep 2017 10:44:29 -0000","(qmail 4657 invoked by uid 89); 19 Sep 2017 10:44:01 -0000"],"DomainKey-Signature":"a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id\n\t:list-unsubscribe:list-subscribe:list-archive:list-post\n\t:list-help:sender:date:from:reply-to:to:message-id:subject\n\t:mime-version:content-type:content-transfer-encoding; q=dns; s=\n\tdefault; b=eTvxuQP23IJi30ihuVVK3muaWaDy2MYrFICMGdUE7fBWar7fNqsPJ\n\tEmggpSYqS4+hrzWUSVX1JjIwAxJHCIVKZvOE2jn2Nd0XH8gdHt0VW0CV3AN3bBVU\n\thjO4P8IMyQ/Z38HQBjGjXxjWLXLNP0MkDKjMX/zJsaWWVcug0Pp6uQ=","DKIM-Signature":"v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id\n\t:list-unsubscribe:list-subscribe:list-archive:list-post\n\t:list-help:sender:date:from:reply-to:to:message-id:subject\n\t:mime-version:content-type:content-transfer-encoding; s=default;\n\tbh=KEyAlvEAOWF0sd5mK8rI8UOyNlw=; b=OHhHH98pe4p5CptfhU2nTuscfdJ2\n\tyRGggrTf3MLBnDoF1V7Wu0O37JZ5Q1huuoK+RVA631TLQBWCgbJAjfW0HcYZ49nR\n\tAWeAJu5i2eivZllOQl/nqplLGFCU9lsK/znU4vyh68aEzX6VyQL8Etz+j/j+wXor\n\t5qqgM0PqfFh3P+A=","Mailing-List":"contact libc-alpha-help@sourceware.org; run by ezmlm","Precedence":"bulk","List-Id":"<libc-alpha.sourceware.org>","List-Unsubscribe":"<mailto:libc-alpha-unsubscribe-incoming=patchwork.ozlabs.org@sourceware.org>","List-Subscribe":"<mailto:libc-alpha-subscribe@sourceware.org>","List-Archive":"<http://sourceware.org/ml/libc-alpha/>","List-Post":"<mailto:libc-alpha@sourceware.org>","List-Help":"<mailto:libc-alpha-help@sourceware.org>,\n\t<http://sourceware.org/ml/#faqs>","Sender":"libc-alpha-owner@sourceware.org","X-Virus-Found":"No","X-Spam-SWARE-Status":"No, score=-23.8 required=5.0 tests=AWL, BAYES_00,\n\tGIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3,\n\tKAM_LAZY_DOMAIN_SECURITY autolearn=ham version=3.3.2 spammy=oct,\n\tOct","X-HELO":"aev204.rev.netart.pl","X-Spam-Score":"0","Date":"Tue, 19 Sep 2017 12:43:55 +0200 (CEST)","From":"Rafal Luzynski <digitalfreak@lingonborough.com>","Reply-To":"Rafal Luzynski <digitalfreak@lingonborough.com>","To":"libc-alpha@sourceware.org","Message-ID":"<604461725.1094943.1505817835815@poczta.nazwa.pl>","Subject":"[RFC][PATCH v9 4/6] Abbreviated alternative month names (%Ob) also\n\tadded (bug 10871).","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"7bit","X-Originating-Client":"com.openexchange.ox.gui.dhtml"},"content":"All the previous changes (except the backward compatibility) also\nrepeated to support abbreviated alternative month names.\nIn most languages which have declension and need nominative/genitive\nmonth names the abbreviated forms for both cases are the same.\nAn example where they do differ is May in Russian: this name is\ntoo short to be abbreviated so even the abbreviated form feature\nthe declension suffixes.\n\n\t[BZ #10871]\n\t* locale/C-time.c: Add abbreviated alternative month names, define\n\tthem as the same as abbreviated month names explicitly.\n\t* locale/categories.def: ab_alt_mon and wide-ab_alt_mon added.\n\t* locale/langinfo.h: _NL_[W]ABALTMON_1 .. _NL_[W]ABALTMON_12\n\tdefined.\n\t* locale/programs/ld-time.c: Abbreviated alternative month names\n\tsupport added, they are a copy of abmon if not provided\n\texplicitly.\n\t* locale/programs/locfile-kw.gperf: ab_alt_mon defined.\n\t* locale/programs/locfile-token.h: tok_ab_alt_mon defined.\n\t* time/strftime_l.c: %Ob (%Oh) format for abbreviated\n\talternative month names added.\n\t* time/strptime_l.c: Abbreviated alternative month names also\n\trecognized.\n---\n ChangeLog                        | 18 ++++++++++++++++++\n locale/C-time.c                  | 28 ++++++++++++++++++++++++++--\n locale/categories.def            |  6 ++++--\n locale/langinfo.h                | 36 ++++++++++++++++++++++++++++++++++--\n locale/programs/ld-time.c        | 19 +++++++++++++++++++\n locale/programs/locfile-kw.gperf |  1 +\n locale/programs/locfile-token.h  |  1 +\n time/strftime_l.c                | 14 ++++++++++++--\n time/strptime_l.c                | 18 ++++++++++++++++++\n 9 files changed, 133 insertions(+), 8 deletions(-)\n\n # define HERE_AM_STR (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (AM_STR)].string)\n@@ -417,6 +419,18 @@ __strptime_internal (const char *rp, const char *fmt,\nstruct tm *tmp,\n \t\t\tdecided_longest = loc;\n \t\t    }\n \t\t  trp = rp;\n+\t\t  if (match_string (_NL_CURRENT (LC_TIME, _NL_ABALTMON_1 + cnt),\n+\t\t\t\t    trp)\n+\t\t      && trp > rp_longest)\n+\t\t    {\n+\t\t      rp_longest = trp;\n+\t\t      cnt_longest = cnt;\n+\t\t      if (s.decided == not\n+\t\t\t  && strcmp (_NL_CURRENT (LC_TIME, _NL_ABALTMON_1 + cnt),\n+\t\t\t\t     alt_month_name[cnt]))\n+\t\t\tdecided_longest = loc;\n+\t\t    }\n+\t\t  trp = rp;\n #endif\n \t\t  if (match_string (_NL_CURRENT (LC_TIME, MON_1 + cnt), trp)\n \t\t      && trp > rp_longest)\n@@ -447,6 +461,8 @@ __strptime_internal (const char *rp, const char *fmt, struct\ntm *tmp,\n #ifdef _LIBC\n \t\t      || ((trp = rp, match_string (alt_month_name[cnt], trp))\n \t\t\t  && trp > rp_longest)\n+\t\t      || ((trp = rp, match_string (ab_alt_month_name[cnt], trp))\n+\t\t\t  && trp > rp_longest)\n #endif\n \t\t      || ((trp = rp, match_string (ab_month_name[cnt], trp))\n \t\t\t  && trp > rp_longest)))\n@@ -1035,7 +1051,9 @@ __strptime_internal (const char *rp, const char *fmt,\nstruct tm *tmp,\n \tcase 'O':\n \t  switch (*fmt++)\n \t    {\n+\t    case 'b':\n \t    case 'B':\n+\t    case 'h':\n \t      /* Undo the increment and continue.  */\n \t      fmt--;\n \t      break;","diff":"diff --git a/ChangeLog b/ChangeLog\nindex 6e71fff..ca80d40 100644\n--- a/ChangeLog\n+++ b/ChangeLog\n@@ -1,6 +1,24 @@\n 2017-09-19  Rafal Luzynski  <digitalfreak@lingonborough.com>\n \n \t[BZ #10871]\n+\t* locale/C-time.c: Add abbreviated alternative month names, define\n+\tthem as the same as abbreviated month names explicitly.\n+\t* locale/categories.def: ab_alt_mon and wide-ab_alt_mon added.\n+\t* locale/langinfo.h: _NL_[W]ABALTMON_1 .. _NL_[W]ABALTMON_12\n+\tdefined.\n+\t* locale/programs/ld-time.c: Abbreviated alternative month names\n+\tsupport added, they are a copy of abmon if not provided\n+\texplicitly.\n+\t* locale/programs/locfile-kw.gperf: ab_alt_mon defined.\n+\t* locale/programs/locfile-token.h: tok_ab_alt_mon defined.\n+\t* time/strftime_l.c: %Ob (%Oh) format for abbreviated\n+\talternative month names added.\n+\t* time/strptime_l.c: Abbreviated alternative month names also\n+\trecognized.\n+\n+2017-09-19  Rafal Luzynski  <digitalfreak@lingonborough.com>\n+\n+\t[BZ #10871]\n \t* locale/programs/locfile-kw.h: Regenerated for alt_mon.\n \n 2017-09-19  Rafal Luzynski  <digitalfreak@lingonborough.com>\ndiff --git a/locale/C-time.c b/locale/C-time.c\nindex ee33652..a03a6d5 100644\n--- a/locale/C-time.c\n+++ b/locale/C-time.c\n@@ -30,7 +30,7 @@ const struct __locale_data _nl_C_LC_TIME attribute_hidden =\n   { NULL, },\t\t\t/* no cached data */\n   UNDELETABLE,\n   0,\n-  135,\n+  159,\n   {\n     { .string = \"Sun\" },\n     { .string = \"Mon\" },\n@@ -166,6 +166,30 @@ const struct __locale_data _nl_C_LC_TIME attribute_hidden =\n     { .wstr = (const uint32_t *) L\"September\" },\n     { .wstr = (const uint32_t *) L\"October\" },\n     { .wstr = (const uint32_t *) L\"November\" },\n-    { .wstr = (const uint32_t *) L\"December\" }\n+    { .wstr = (const uint32_t *) L\"December\" },\n+    { .string = \"Jan\" },\n+    { .string = \"Feb\" },\n+    { .string = \"Mar\" },\n+    { .string = \"Apr\" },\n+    { .string = \"May\" },\n+    { .string = \"Jun\" },\n+    { .string = \"Jul\" },\n+    { .string = \"Aug\" },\n+    { .string = \"Sep\" },\n+    { .string = \"Oct\" },\n+    { .string = \"Nov\" },\n+    { .string = \"Dec\" },\n+    { .wstr = (const uint32_t *) L\"Jan\" },\n+    { .wstr = (const uint32_t *) L\"Feb\" },\n+    { .wstr = (const uint32_t *) L\"Mar\" },\n+    { .wstr = (const uint32_t *) L\"Apr\" },\n+    { .wstr = (const uint32_t *) L\"May\" },\n+    { .wstr = (const uint32_t *) L\"Jun\" },\n+    { .wstr = (const uint32_t *) L\"Jul\" },\n+    { .wstr = (const uint32_t *) L\"Aug\" },\n+    { .wstr = (const uint32_t *) L\"Sep\" },\n+    { .wstr = (const uint32_t *) L\"Oct\" },\n+    { .wstr = (const uint32_t *) L\"Nov\" },\n+    { .wstr = (const uint32_t *) L\"Dec\" }\n   }\n };\ndiff --git a/locale/categories.def b/locale/categories.def\nindex 53ec8c5..07b19b2 100644\n--- a/locale/categories.def\n+++ b/locale/categories.def\n@@ -249,8 +249,10 @@ DEFINE_CATEGORY\n   DEFINE_ELEMENT (_DATE_FMT,                \"date_fmt\",            opt, string)\n   DEFINE_ELEMENT (_NL_W_DATE_FMT,           \"wide-date_fmt\",       opt,\nwstring)\n   DEFINE_ELEMENT (_NL_TIME_CODESET,\t    \"time-codeset\",\t   std, string)\n-  DEFINE_ELEMENT (ALTMON_1,       \"alt_mon\",       opt, stringarray, 12, 12)\n-  DEFINE_ELEMENT (_NL_WALTMON_1,  \"wide-alt_mon\",  opt, wstringarray, 12, 12)\n+  DEFINE_ELEMENT (ALTMON_1,        \"alt_mon\",         opt, stringarray,  12,\n12)\n+  DEFINE_ELEMENT (_NL_WALTMON_1,   \"wide-alt_mon\",    opt, wstringarray, 12,\n12)\n+  DEFINE_ELEMENT (_NL_ABALTMON_1,  \"ab_alt_mon\",      opt, stringarray,  12,\n12)\n+  DEFINE_ELEMENT (_NL_WABALTMON_1, \"wide-ab_alt_mon\", opt, wstringarray, 12,\n12)\n   ), NO_POSTLOAD)\n \n \ndiff --git a/locale/langinfo.h b/locale/langinfo.h\nindex 78103ce..fb5aaa2 100644\n--- a/locale/langinfo.h\n+++ b/locale/langinfo.h\n@@ -74,7 +74,8 @@ enum\n   DAY_7,\t\t\t/* Saturday */\n #define DAY_7\t\t\tDAY_7\n \n-  /* Abbreviated month names.  */\n+  /* Abbreviated month names, in the grammatical form used when the month\n+     forms part of a complete date.  */\n   ABMON_1,\t\t\t/* Jan */\n #define ABMON_1\t\t\tABMON_1\n   ABMON_2,\n@@ -176,7 +177,8 @@ enum\n   _NL_WDAY_6,\t\t/* Friday */\n   _NL_WDAY_7,\t\t/* Saturday */\n \n-  /* Abbreviated month names.  */\n+  /* Abbreviated month names, in the grammatical form used when the month\n+     forms part of a complete date.  */\n   _NL_WABMON_1,\t\t/* Jan */\n   _NL_WABMON_2,\n   _NL_WABMON_3,\n@@ -277,6 +279,36 @@ enum\n   _NL_WALTMON_11,\n   _NL_WALTMON_12,\n \n+  /* Abbreviated month names, in the grammatical form used when the month\n+     is named by itself.  */\n+  _NL_ABALTMON_1,\t\t\t/* Jan */\n+  _NL_ABALTMON_2,\n+  _NL_ABALTMON_3,\n+  _NL_ABALTMON_4,\n+  _NL_ABALTMON_5,\n+  _NL_ABALTMON_6,\n+  _NL_ABALTMON_7,\n+  _NL_ABALTMON_8,\n+  _NL_ABALTMON_9,\n+  _NL_ABALTMON_10,\n+  _NL_ABALTMON_11,\n+  _NL_ABALTMON_12,\n+\n+  /* Abbreviated month names, in the grammatical form used when the month\n+     is named by itself.  */\n+  _NL_WABALTMON_1,\t\t\t/* Jan */\n+  _NL_WABALTMON_2,\n+  _NL_WABALTMON_3,\n+  _NL_WABALTMON_4,\n+  _NL_WABALTMON_5,\n+  _NL_WABALTMON_6,\n+  _NL_WABALTMON_7,\n+  _NL_WABALTMON_8,\n+  _NL_WABALTMON_9,\n+  _NL_WABALTMON_10,\n+  _NL_WABALTMON_11,\n+  _NL_WABALTMON_12,\n+\n   _NL_NUM_LC_TIME,\t/* Number of indices in LC_TIME category.  */\n \n   /* LC_COLLATE category: text sorting.\ndiff --git a/locale/programs/ld-time.c b/locale/programs/ld-time.c\nindex 0383179..19f01f5 100644\n--- a/locale/programs/ld-time.c\n+++ b/locale/programs/ld-time.c\n@@ -94,6 +94,9 @@ struct locale_time_t\n   const char *alt_mon[12];\n   const uint32_t *walt_mon[12];\n   int alt_mon_defined;\n+  const char *ab_alt_mon[12];\n+  const uint32_t *wab_alt_mon[12];\n+  int ab_alt_mon_defined;\n   unsigned char week_ndays;\n   uint32_t week_1stday;\n   unsigned char week_1stweek;\n@@ -664,6 +667,14 @@ time_output (struct localedef_t *locale, const struct\ncharmap_t *charmap,\n   for (n = 0; n < 12; ++n)\n     add_locale_wstring (&file, time->walt_mon[n] ?: empty_wstr);\n \n+  /* The ab'alt'mons.  */\n+  for (n = 0; n < 12; ++n)\n+    add_locale_string (&file, time->ab_alt_mon[n] ?: \"\");\n+\n+  /* The wide character ab'alt'mons.  */\n+  for (n = 0; n < 12; ++n)\n+    add_locale_wstring (&file, time->wab_alt_mon[n] ?: empty_wstr);\n+\n   write_locale_data (output_path, LC_TIME, \"LC_TIME\", &file);\n }\n \n@@ -808,6 +819,7 @@ time_read (struct linereader *ldfile, struct localedef_t\n*result,\n \t  STRARR_ELEM (am_pm, 2, 2);\n \t  STRARR_ELEM (alt_digits, 0, 100);\n \t  STRARR_ELEM (alt_mon, 12, 12);\n+\t  STRARR_ELEM (ab_alt_mon, 12, 12);\n \n \tcase tok_era:\n \t  /* Ignore the rest of the line if we don't need the input of\n@@ -968,6 +980,13 @@ time_read (struct linereader *ldfile, struct localedef_t\n*result,\n \t      memcpy (time->walt_mon, time->wmon, sizeof (time->wmon));\n \t      time->alt_mon_defined = 1;\n \t    }\n+\t  /* The same for abbreviated versions.  */\n+\t  if (!ignore_content && !time->ab_alt_mon_defined)\n+\t    {\n+\t      memcpy (time->ab_alt_mon, time->abmon, sizeof (time->abmon));\n+\t      memcpy (time->wab_alt_mon, time->wabmon, sizeof (time->wabmon));\n+\t      time->ab_alt_mon_defined = 1;\n+\t    }\n \t  return;\n \n \tdefault:\ndiff --git a/locale/programs/locfile-kw.gperf b/locale/programs/locfile-kw.gperf\nindex 3d11cc6..cae0ad8 100644\n--- a/locale/programs/locfile-kw.gperf\n+++ b/locale/programs/locfile-kw.gperf\n@@ -149,6 +149,7 @@ cal_direction,          tok_cal_direction,          0\n timezone,               tok_timezone,               0\n date_fmt,               tok_date_fmt,               0\n alt_mon,                tok_alt_mon,                0\n+ab_alt_mon,             tok_ab_alt_mon,             0\n LC_MESSAGES,            tok_lc_messages,            0\n yesexpr,                tok_yesexpr,                0\n noexpr,                 tok_noexpr,                 0\ndiff --git a/locale/programs/locfile-token.h b/locale/programs/locfile-token.h\nindex 2a313b2..6631796 100644\n--- a/locale/programs/locfile-token.h\n+++ b/locale/programs/locfile-token.h\n@@ -187,6 +187,7 @@ enum token_t\n   tok_timezone,\n   tok_date_fmt,\n   tok_alt_mon,\n+  tok_ab_alt_mon,\n   tok_lc_messages,\n   tok_yesexpr,\n   tok_noexpr,\ndiff --git a/time/strftime_l.c b/time/strftime_l.c\nindex 1c4bed8..412012f 100644\n--- a/time/strftime_l.c\n+++ b/time/strftime_l.c\n@@ -106,6 +106,7 @@ extern char *tzname[];\n # define UCHAR_T unsigned char\n # define L_(Str) Str\n # define NLW(Sym) Sym\n+# define ABALTMON_1 _NL_ABALTMON_1\n \n # if !defined STDC_HEADERS && !defined HAVE_MEMCPY\n #  define MEMCPY(d, s, n) bcopy ((s), (d), (n))\n@@ -492,6 +493,9 @@ __strftime_internal (CHAR_T *s, size_t maxsize, const CHAR_T\n*format,\n # define f_month \\\n   ((const CHAR_T *) (tp->tm_mon < 0 || tp->tm_mon > 11\t\t\t     \\\n \t\t     ? \"?\" : _NL_CURRENT (LC_TIME, NLW(MON_1) + tp->tm_mon)))\n+# define a_altmonth \\\n+  ((const CHAR_T *) (tp->tm_mon < 0 || tp->tm_mon > 11\t\t\t     \\\n+\t\t     ? \"?\" : _NL_CURRENT (LC_TIME, NLW(ABALTMON_1) + tp->tm_mon)))\n # define f_altmonth \\\n   ((const CHAR_T *) (tp->tm_mon < 0 || tp->tm_mon > 11\t\t\t     \\\n \t\t     ? \"?\" : _NL_CURRENT (LC_TIME, NLW(ALTMON_1) + tp->tm_mon)))\n@@ -501,6 +505,7 @@ __strftime_internal (CHAR_T *s, size_t maxsize, const CHAR_T\n*format,\n \n # define aw_len STRLEN (a_wkday)\n # define am_len STRLEN (a_month)\n+# define aam_len STRLEN (a_altmonth)\n # define ap_len STRLEN (ampm)\n #else\n # if !HAVE_STRFTIME\n@@ -510,11 +515,13 @@ __strftime_internal (CHAR_T *s, size_t maxsize, const\nCHAR_T *format,\n \t\t   ? \"?\" : month_name[tp->tm_mon])\n #  define a_wkday f_wkday\n #  define a_month f_month\n+#  define a_altmonth a_month\n #  define f_altmonth f_month\n #  define ampm (L_(\"AMPM\") + 2 * (tp->tm_hour > 11))\n \n   size_t aw_len = 3;\n   size_t am_len = 3;\n+  size_t aam_len = 3;\n   size_t ap_len = 2;\n # endif\n #endif\n@@ -779,10 +786,13 @@ __strftime_internal (CHAR_T *s, size_t maxsize, const\nCHAR_T *format,\n \t      to_uppcase = 1;\n \t      to_lowcase = 0;\n \t    }\n-\t  if (modifier != 0)\n+\t  if (modifier == L_('E'))\n \t    goto bad_format;\n #if defined _NL_CURRENT || !HAVE_STRFTIME\n-\t  cpy (am_len, a_month);\n+\t  if (modifier == L_('O'))\n+\t    cpy (aam_len, a_altmonth);\n+\t  else\n+\t    cpy (am_len, a_month);\n \t  break;\n #else\n \t  goto underlying_strftime;\ndiff --git a/time/strptime_l.c b/time/strptime_l.c\nindex b99f5d2..7193dc8 100644\n--- a/time/strptime_l.c\n+++ b/time/strptime_l.c\n@@ -126,6 +126,8 @@ extern const struct __locale_data _nl_C_LC_TIME\nattribute_hidden;\n # define ab_month_name (&_nl_C_LC_TIME.values[_NL_ITEM_INDEX (ABMON_1)].string)\n # define alt_month_name \\\n   (&_nl_C_LC_TIME.values[_NL_ITEM_INDEX (ALTMON_1)].string)\n+# define ab_alt_month_name \\\n+  (&_nl_C_LC_TIME.values[_NL_ITEM_INDEX (_NL_ABALTMON_1)].string)\n # define HERE_D_T_FMT (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (D_T_FMT)].string)\n # define HERE_D_FMT (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (D_FMT)].string)\n","prefixes":["RFC","v9","4/6"]}