[RFC,v6,10/16] Backward compatibility for abbreviated alt. names (bug 10871).

Submitted by Rafal Luzynski on March 20, 2017, 8:44 p.m.

Details

Message ID 1692424082.88308.1490042642701@poczta.nazwa.pl
State New
Headers show

Commit Message

Rafal Luzynski March 20, 2017, 8:44 p.m.
All the previous changes related with backward compatibility also
repeated to support abbreviated alternative month names.

[BZ #10871]
* locale/nl_langinfo_l.c: backward compatibility for _NL_[W]ABALTMON.
* time/strftime_l.c: backward compatibility for %Ob.
---
 locale/nl_langinfo_l.c | 14 +++++++++++++-
 time/strftime_l.c      |  4 +++-
 2 files changed, 16 insertions(+), 2 deletions(-)

 	    cpy (am_len, a_month);

Patch hide | download patch | download mbox

diff --git a/locale/nl_langinfo_l.c b/locale/nl_langinfo_l.c
index 467a341..c38d190 100644
--- a/locale/nl_langinfo_l.c
+++ b/locale/nl_langinfo_l.c
@@ -81,7 +81,9 @@  attribute_compat_text_section
 __nl_langinfo_noaltmon_l (nl_item item, __locale_t l)
 {
   if ((item >= ALTMON_1 && item <= ALTMON_12)
-      || (item >= _NL_WALTMON_1 && item <= _NL_WALTMON_12))
+      || (item >= _NL_WALTMON_1 && item <= _NL_WALTMON_12)
+      || (item >= _NL_ABALTMON_1 && item <= _NL_ABALTMON_12)
+      || (item >= _NL_WABALTMON_1 && item <= _NL_WABALTMON_12))
     /* Pretend it's a bogus index for this category: bogus item.  */
     return (char *) "";
   else if (item >= MON_1 && item <= MON_12)
@@ -94,6 +96,16 @@  __nl_langinfo_noaltmon_l (nl_item item, __locale_t l)
       /* The same for _NL_WALTMON_... and _NL_WMON_...  */
       return __nl_langinfo_l (item + _NL_WALTMON_1 - _NL_WMON_1, l);
     }
+  else if (item >= ABMON_1 && item <= ABMON_12)
+    {
+      /* _NL_ABALTMON... item contains what ABMON_... item contained before.
 */
+      return __nl_langinfo_l (item + _NL_ABALTMON_1 - ABMON_1, l);
+    }
+  else if (item >= _NL_WABMON_1 && item <= _NL_WABMON_12)
+    {
+      /* The same for _NL_WABALTMON_... and _NL_WABMON_...  */
+      return __nl_langinfo_l (item + _NL_WABALTMON_1 - _NL_WABMON_1, l);
+    }
 
   /* Default result if it is not a month.  */
   return __nl_langinfo_l (item, l);
diff --git a/time/strftime_l.c b/time/strftime_l.c
index 2353ec8..0141144 100644
--- a/time/strftime_l.c
+++ b/time/strftime_l.c
@@ -787,8 +787,10 @@  __strftime_internal (CHAR_T *s, size_t maxsize, const
CHAR_T *format,
 	    }
 	  if (modifier == L_('E'))
 	    goto bad_format;
+	  if (!feature_OB && modifier == L_('O'))
+	    goto bad_format;
 #if defined _NL_CURRENT || !HAVE_STRFTIME
-	  if (modifier == L_('O'))
+	  if (!feature_OB || modifier == L_('O'))
 	    cpy (aam_len, a_altmonth);
 	  else