about summary refs log tree commit diff
path: root/locale/programs/ld-time.c
diff options
context:
space:
mode:
Diffstat (limited to 'locale/programs/ld-time.c')
-rw-r--r--locale/programs/ld-time.c60
1 files changed, 31 insertions, 29 deletions
diff --git a/locale/programs/ld-time.c b/locale/programs/ld-time.c
index cc571b8a04..b977763433 100644
--- a/locale/programs/ld-time.c
+++ b/locale/programs/ld-time.c
@@ -106,10 +106,10 @@ time_finish (struct localedef_t *locale)
   struct locale_time_t *time = locale->categories[LC_TIME].time;
 
 #define TESTARR_ELEM(cat, max)						      \
-  if (time->cur_num_##cat == 0)						      \
+  if (time->cur_num_##cat == 0 && !be_quiet)				      \
     error (0, 0, _("field `%s' in category `%s' not defined"),		      \
 	   #cat, "LC_TIME");						      \
-  else if (time->cur_num_##cat != max)					      \
+  else if (time->cur_num_##cat != max && !be_quiet)			      \
     error (0, 0, _("field `%s' in category `%s' has not enough values"),      \
 	   #cat, "LC_TIME")
 
@@ -120,7 +120,7 @@ time_finish (struct localedef_t *locale)
   TESTARR_ELEM (am_pm, 2);
 
 #define TEST_ELEM(cat)							      \
-  if (time->cat == NULL)						      \
+  if (time->cat == NULL && !be_quiet)					      \
     error (0, 0, _("field `%s' in category `%s' not defined"),		      \
 	   #cat, "LC_TIME")
 
@@ -149,7 +149,7 @@ time_finish (struct localedef_t *locale)
 	  memcpy (str, time->era[idx], era_len + 1);
 
 	  /* First character must be + or - for the direction.  */
-	  if (*str != '+' && *str != '-')
+	  if (*str != '+' && *str != '-' && !be_quiet)
 	    {
 	      error (0, 0, _("direction flag in string %d in `era' field"
 			     " in category `%s' is not '+' nor '-'"),
@@ -159,7 +159,7 @@ time_finish (struct localedef_t *locale)
 	    }
 	  else
 	    time->era_entries[idx].direction = *str;
-	  if (*++str != ':')
+	  if (*++str != ':' && !be_quiet)
 	    {
 	      error (0, 0, _("direction flag in string %d in `era' field"
 			     " in category `%s' is not a single character"),
@@ -171,14 +171,14 @@ time_finish (struct localedef_t *locale)
 
 	  /* Now the offset year.  */
 	  time->era_entries[idx].offset = strtol (str, &endp, 10);
-	  if (endp == str)
+	  if (endp == str && !be_quiet)
 	    {
 	      error (0, 0, _("illegal number for offset in string %d in"
 			     " `era' field in category `%s'"),
 		     idx + 1, "LC_TIME");
 	      (void) strsep (&str, ":");
 	    }
-	  else if (*endp != ':')
+	  else if (*endp != ':' && !be_quiet)
 	    {
 	      error (0, 0, _("garbage at end of offset value in string %d in"
 			     " `era' field in category `%s'"),
@@ -224,7 +224,7 @@ time_finish (struct localedef_t *locale)
 	      time->era_entries[idx].start_date[1] -= 1;
 
 	      time->era_entries[idx].start_date[2] = strtol (str, &endp, 10);
-	      if (endp == str)
+	      if (endp == str && !be_quiet)
 		{
 		invalid_start_date:
 		  error (0, 0, _("illegal starting date in string %d in"
@@ -232,7 +232,7 @@ time_finish (struct localedef_t *locale)
 			 idx + 1, "LC_TIME");
 		  (void) strsep (&str, ":");
 		}
-	      else if (*endp != ':')
+	      else if (*endp != ':' && !be_quiet)
 		{
 		garbage_start_date:
 		  error (0, 0, _("garbage at end of starting date in string %d"
@@ -245,14 +245,15 @@ time_finish (struct localedef_t *locale)
 		  str = endp + 1;
 
 		  /* Check for valid value.  */
-		  if (time->era_entries[idx].start_date[1] < 0
-		      || time->era_entries[idx].start_date[1] >= 12
-		      || time->era_entries[idx].start_date[2] < 0
-		      || (time->era_entries[idx].start_date[2]
-			  > days_per_month[time->era_entries[idx].start_date[1]])
-		      || (time->era_entries[idx].start_date[1] == 2
-			  && time->era_entries[idx].start_date[2] == 29
-			  && !__isleap (time->era_entries[idx].start_date[0])))
+		  if ((time->era_entries[idx].start_date[1] < 0
+		       || time->era_entries[idx].start_date[1] >= 12
+		       || time->era_entries[idx].start_date[2] < 0
+		       || (time->era_entries[idx].start_date[2]
+			   > days_per_month[time->era_entries[idx].start_date[1]])
+		       || (time->era_entries[idx].start_date[1] == 2
+			   && time->era_entries[idx].start_date[2] == 29
+			   && !__isleap (time->era_entries[idx].start_date[0])))
+		      && !be_quiet)
 			  error (0, 0, _("starting date is illegal in"
 					 " string %d in `era' field in"
 					 " category `%s'"),
@@ -296,7 +297,7 @@ time_finish (struct localedef_t *locale)
 	      time->era_entries[idx].stop_date[1] -= 1;
 
 	      time->era_entries[idx].stop_date[2] = strtol (str, &endp, 10);
-	      if (endp == str)
+	      if (endp == str && !be_quiet)
 		{
 		invalid_stop_date:
 		  error (0, 0, _("illegal stopping date in string %d in"
@@ -304,7 +305,7 @@ time_finish (struct localedef_t *locale)
 			 idx + 1, "LC_TIME");
 		  (void) strsep (&str, ":");
 		}
-	      else if (*endp != ':')
+	      else if (*endp != ':' && !be_quiet)
 		{
 		garbage_stop_date:
 		  error (0, 0, _("garbage at end of stopping date in string %d"
@@ -317,14 +318,15 @@ time_finish (struct localedef_t *locale)
 		  str = endp + 1;
 
 		  /* Check for valid value.  */
-		  if (time->era_entries[idx].stop_date[1] < 0
-		      || time->era_entries[idx].stop_date[1] >= 12
-		      || time->era_entries[idx].stop_date[2] < 0
-		      || (time->era_entries[idx].stop_date[2]
-			  > days_per_month[time->era_entries[idx].stop_date[1]])
-		      || (time->era_entries[idx].stop_date[1] == 2
-			  && time->era_entries[idx].stop_date[2] == 29
-			  && !__isleap (time->era_entries[idx].stop_date[0])))
+		  if ((time->era_entries[idx].stop_date[1] < 0
+		       || time->era_entries[idx].stop_date[1] >= 12
+		       || time->era_entries[idx].stop_date[2] < 0
+		       || (time->era_entries[idx].stop_date[2]
+			   > days_per_month[time->era_entries[idx].stop_date[1]])
+		       || (time->era_entries[idx].stop_date[1] == 2
+			   && time->era_entries[idx].stop_date[2] == 29
+			   && !__isleap (time->era_entries[idx].stop_date[0])))
+		      && !be_quiet)
 			  error (0, 0, _("stopping date is illegal in"
 					 " string %d in `era' field in"
 					 " category `%s'"),
@@ -332,7 +334,7 @@ time_finish (struct localedef_t *locale)
 		}
 	    }
 
-	  if (str == NULL || *str == '\0')
+	  if ((str == NULL || *str == '\0') && !be_quiet)
 	    {
 	      error (0, 0, _("missing era name in string %d in `era' field"
 			     " in category `%s'"), idx + 1, "LC_TIME");
@@ -343,7 +345,7 @@ time_finish (struct localedef_t *locale)
 	    {
 	      time->era_entries[idx].name = strsep (&str, ":");
 
-	      if (str == NULL || *str == '\0')
+	      if ((str == NULL || *str == '\0') && !be_quiet)
 		{
 		  error (0, 0, _("missing era format in string %d in `era'"
 				 " field in category `%s'"),