Update.
authorUlrich Drepper <drepper@redhat.com>
Sat, 29 Jan 2000 08:26:51 +0000 (08:26 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 29 Jan 2000 08:26:51 +0000 (08:26 +0000)
long string in definition.Only enable returning wide character
strings if really needed.

ChangeLog
locale/programs/ld-monetary.c
locale/programs/ld-numeric.c

index a6e4152..712002e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,8 @@
 2000-01-29  Ulrich Drepper  <drepper@redhat.com>
 
        * locale/programs/ld-monetary.c (STR_ELEM_WC): Fix test for too
-       long string in definition.
+       long string in definition.Only enable returning wide character
+       strings if really needed.
        * locale/programs/ld-numeric.c (STR_ELEM): Likewise.
 
        * configure.in: Add check for recent enough sed version.
index b983883..24fb2a8 100644 (file)
@@ -152,7 +152,7 @@ monetary_startup (struct linereader *lr, struct localedef_t *locale,
   if (lr != NULL)
     {
       lr->translate_strings = 1;
-      lr->return_widestr = 1;
+      lr->return_widestr = 0;
     }
 }
 
@@ -609,10 +609,15 @@ monetary_read (struct linereader *ldfile, struct localedef_t *result,
               struct charmap_t *charmap, const char *repertoire_name,
               int ignore_content)
 {
+  struct repertoire_t *repertoire = NULL;
   struct locale_monetary_t *monetary;
   struct token *now;
   enum token_t nowtok;
 
+  /* Get the repertoire we have to use.  */
+  if (repertoire_name != NULL)
+    repertoire = repertoire_read (repertoire_name);
+
   /* The rest of the line containing `LC_MONETARY' must be free.  */
   lr_ignore_rest (ldfile, 1);
 
@@ -695,7 +700,8 @@ monetary_read (struct linereader *ldfile, struct localedef_t *result,
              break;                                                          \
            }                                                                 \
                                                                              \
-         now = lr_token (ldfile, charmap, NULL);                             \
+         ldfile->return_widestr = 1;                                         \
+         now = lr_token (ldfile, charmap, repertoire);                       \
          if (now->tok != tok_string)                                         \
            goto err_label;                                                   \
          if (monetary->cat != NULL)                                          \
@@ -720,6 +726,7 @@ monetary_read (struct linereader *ldfile, struct localedef_t *result,
              if (now->val.str.startwc != NULL)                               \
                monetary->cat##_wc = *now->val.str.startwc;                   \
            }                                                                 \
+         ldfile->return_widestr = 0;                                         \
          break
 
          STR_ELEM_WC (mon_decimal_point);
index ffd85d5..37951c8 100644 (file)
@@ -59,7 +59,7 @@ numeric_startup (struct linereader *lr, struct localedef_t *locale,
   if (lr != NULL)
     {
       lr->translate_strings = 1;
-      lr->return_widestr = 1;
+      lr->return_widestr = 0;
     }
 }
 
@@ -192,10 +192,15 @@ numeric_read (struct linereader *ldfile, struct localedef_t *result,
              struct charmap_t *charmap, const char *repertoire_name,
              int ignore_content)
 {
+  struct repertoire_t *repertoire = NULL;
   struct locale_numeric_t *numeric;
   struct token *now;
   enum token_t nowtok;
 
+  /* Get the repertoire we have to use.  */
+  if (repertoire_name != NULL)
+    repertoire = repertoire_read (repertoire_name);
+
   /* The rest of the line containing `LC_NUMERIC' must be free.  */
   lr_ignore_rest (ldfile, 1);
 
@@ -245,7 +250,8 @@ numeric_read (struct linereader *ldfile, struct localedef_t *result,
              break;                                                          \
            }                                                                 \
                                                                              \
-         now = lr_token (ldfile, charmap, NULL);                             \
+         ldfile->return_widestr = 1;                                         \
+         now = lr_token (ldfile, charmap, repertoire);                       \
          if (now->tok != tok_string)                                         \
            goto err_label;                                                   \
          if (numeric->cat != NULL)                                           \
@@ -270,6 +276,7 @@ numeric_read (struct linereader *ldfile, struct localedef_t *result,
              if (now->val.str.startwc != NULL)                               \
                numeric->cat##_wc = *now->val.str.startwc;                    \
            }                                                                 \
+         ldfile->return_widestr = 0;                                         \
          break
 
          STR_ELEM (decimal_point);