summary refs log tree commit diff
path: root/locale/programs/ld-monetary.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-10-19 13:33:29 +0000
committerUlrich Drepper <drepper@redhat.com>1998-10-19 13:33:29 +0000
commit816e6eb5a786594223586976c08e337bc08b6f4e (patch)
treef40c1af0b36c777b5987dc6c888e9492518d14da /locale/programs/ld-monetary.c
parent685c167680a6d1040abc5ff33bd25e5f423f9405 (diff)
downloadglibc-816e6eb5a786594223586976c08e337bc08b6f4e.tar.gz
glibc-816e6eb5a786594223586976c08e337bc08b6f4e.tar.xz
glibc-816e6eb5a786594223586976c08e337bc08b6f4e.zip
Update.
1998-10-19 13:24  Ulrich Drepper  <drepper@cygnus.com>

	* locale/programs/ld-collate.c (collate_startup): Clear bit for this
	category in copy_posix.
	(collate_finish): Don't warn about UNDEFINED not being defined.
	* locale/programs/ld-ctype.c (ctype_startup): Clear bit for this
	category in copy_posix.
	* locale/programs/ld-messages.c (messages_startup): Likewise.
	* locale/programs/ld-monetary.c (monetary_startup): Likewise.
	* locale/programs/ld-numeric.c (numeric_startup): Likewise.
	* locale/programs/ld-time.c (time_startup): Likewise.
	* locale/programs/localedef.c: Move copy_def_list_t definition into
	locales.h.  Define copy_posix variable.
	(main): Before processing copy list add &copy_posix to copy_list.
	* locale/programs/locales.h: Add definition of copy_def_list_t.
	* locale/programs/locfile.c: Clear bit for appropriate category in
	case of an copy instruction.
Diffstat (limited to 'locale/programs/ld-monetary.c')
-rw-r--r--locale/programs/ld-monetary.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/locale/programs/ld-monetary.c b/locale/programs/ld-monetary.c
index d202d76399..4aede4691f 100644
--- a/locale/programs/ld-monetary.c
+++ b/locale/programs/ld-monetary.c
@@ -84,6 +84,9 @@ monetary_startup (struct linereader *lr, struct localedef_t *locale,
 {
   struct locale_monetary_t *monetary;
 
+  /* We have a definition for LC_MONETARY.  */
+  copy_posix.mask &= ~(1 << LC_MONETARY);
+
   /* It is important that we always use UCS1 encoding for strings now.  */
   encoding_method = ENC_UCS1;
 
@@ -129,15 +132,17 @@ monetary_finish (struct localedef_t *locale)
   /* The international currency symbol must come from ISO 4217.  */
   if (monetary->int_curr_symbol != NULL)
     {
-      if (strlen (monetary->int_curr_symbol) != 4)
+      if (strlen (monetary->int_curr_symbol) != 4
+	  && monetary->int_curr_symbol[0] != '\0')
 	{
 	  if (!be_quiet)
 	    error (0, 0, _("\
 value of field `int_curr_symbol' in category `LC_MONETARY' has wrong length"));
 	}
-      else if (bsearch (monetary->int_curr_symbol, valid_int_curr,
-			NR_VALID_INT_CURR, sizeof (const char *),
-			(comparison_fn_t) curr_strcmp) == NULL
+      else if (monetary->int_curr_symbol[0] != '\0'
+	       && bsearch (monetary->int_curr_symbol, valid_int_curr,
+			   NR_VALID_INT_CURR, sizeof (const char *),
+			   (comparison_fn_t) curr_strcmp) == NULL
 	       && !be_quiet)
 	error (0, 0, _("\
 value of field `int_curr_symbol' in category `LC_MONETARY' does \
@@ -336,6 +341,8 @@ field `%s' in category `%s' declared more than once"),			      \
 	lr_error (lr, _("\
 field `%s' in category `%s' declared more than once"),			      \
 		  #cat, "LC_MONETARY");					      \
+      else if (code->tok == tok_minus1)					      \
+	monetary->cat = -1;						      \
       else								      \
 	monetary->cat = code->val.num;					      \
       break