__printf_fphex always uses LC_NUMERIC
authorFlorian Weimer <fweimer@redhat.com>
Mon, 23 May 2022 08:08:18 +0000 (10:08 +0200)
committerFlorian Weimer <fweimer@redhat.com>
Mon, 23 May 2022 09:06:31 +0000 (11:06 +0200)
There is no hexadecimal currency printing.  strfmon uses
__printf_fp_l exclusively.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
stdio-common/printf_fphex.c

index 3dbbefd9725201e6a93df3bbcd086935b3e06f54..5af380da6237d284334505c3b44520be2cc0c901 100644 (file)
@@ -103,9 +103,17 @@ __printf_fphex (FILE *fp,
     }
   fpnum;
 
-  /* Locale-dependent representation of decimal point. */
-  const char *decimal;
-  wchar_t decimalwc;
+  /* This function always uses LC_NUMERIC.  */
+  assert (info->extra == 0);
+
+  /* Locale-dependent representation of decimal point. Hexadecimal
+     formatting always using LC_NUMERIC (disregarding info->extra).  */
+  const char *decimal = _NL_CURRENT (LC_NUMERIC, DECIMAL_POINT);
+  wchar_t decimalwc = _NL_CURRENT_WORD (LC_NUMERIC,
+                                       _NL_NUMERIC_DECIMAL_POINT_WC);
+
+  /* The decimal point character must never be zero.  */
+  assert (*decimal != '\0' && decimalwc != L'\0');
 
   /* "NaN" or "Inf" for the special cases.  */
   const char *special = NULL;
@@ -147,22 +155,6 @@ __printf_fphex (FILE *fp,
   /* Nonzero if this is output on a wide character stream.  */
   int wide = info->wide;
 
-
-  /* Figure out the decimal point character.  */
-  if (info->extra == 0)
-    {
-      decimal = _NL_CURRENT (LC_NUMERIC, DECIMAL_POINT);
-      decimalwc = _NL_CURRENT_WORD (LC_NUMERIC, _NL_NUMERIC_DECIMAL_POINT_WC);
-    }
-  else
-    {
-      decimal = _NL_CURRENT (LC_MONETARY, MON_DECIMAL_POINT);
-      decimalwc = _NL_CURRENT_WORD (LC_MONETARY,
-                                   _NL_MONETARY_DECIMAL_POINT_WC);
-    }
-  /* The decimal point character must never be zero.  */
-  assert (*decimal != '\0' && decimalwc != L'\0');
-
 #define PRINTF_FPHEX_FETCH(FLOAT, VAR)                                 \
   {                                                                    \
     (VAR) = *(const FLOAT *) args[0];                                  \