if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) error (0, 0, _("\ character `%s' not defined while needed as default value"), "<tab>");
if ((wchar_t) value == ILLEGAL_CHAR_VALUE) { if (!be_quiet) error (0, 0, _("\ character `%s' not defined while needed as default value"), "<tab>"); }
set_class_defaults (struct locale_ctype_t *ctype, struct charset_t *charset){  /* These function defines the default values for the classes and conversions     according to POSIX.2 2.5.2.1.     It may seem that the order of these if-blocks is arbitrary but it is NOT.     Don't move them unless you know what you do!  */  void set_default (int bit, int from, int to)    {      char tmp[2];      int ch;      /* Define string.  */      strcpy (tmp, "?");      for (ch = from; ch <= to; ++ch)	{	  unsigned int value;	  tmp[0] = ch;	  value = charset_find_value (charset, tmp, 1);	  if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet)	    {	      error (0, 0, _("\character `%s' not defined while needed as default value"),		     tmp);	      continue;	    }	  else	    ELEM (ctype, class_collection, , value) |= bit;	}    }  /* Set default values if keyword was not present.  */  if ((ctype->class_done & BIT (tok_upper)) == 0)    /* "If this keyword [lower] is not specified, the lowercase letters        `A' through `Z', ..., shall automatically belong to this class,	with implementation defined character values."  [P1003.2, 2.5.2.1]  */    set_default (BIT (tok_upper), 'A', 'Z');  if ((ctype->class_done & BIT (tok_lower)) == 0)    /* "If this keyword [lower] is not specified, the lowercase letters        `a' through `z', ..., shall automatically belong to this class,	with implementation defined character values."  [P1003.2, 2.5.2.1]  */    set_default (BIT (tok_lower), 'a', 'z');  if ((ctype->class_done & BIT (tok_alpha)) == 0)    {      /* Table 2-6 in P1003.2 says that characters in class `upper' or	 class `lower' *must* be in class `alpha'.  */      unsigned long int mask = BIT (tok_upper) | BIT (tok_lower);      size_t cnt;      for (cnt = 0; cnt < ctype->class_collection_act; ++cnt)	if ((ctype->class_collection[cnt] & mask) != 0)	  ctype->class_collection[cnt] |= BIT (tok_alpha);    }  if ((ctype->class_done & BIT (tok_digit)) == 0)    /* "If this keyword [digit] is not specified, the digits `0' through        `9', ..., shall automatically belong to this class, with	implementation-defined character values."  [P1003.2, 2.5.2.1]  */    set_default (BIT (tok_digit), '0', '9');  /* "Only characters specified for the `alpha' and `digit' keyword     shall be specified.  Characters specified for the keyword `alpha'     and `digit' are automatically included in this class.  */  {    unsigned long int mask = BIT (tok_alpha) | BIT (tok_digit);    size_t cnt;    for (cnt = 0; cnt < ctype->class_collection_act; ++cnt)      if ((ctype->class_collection[cnt] & mask) != 0)	ctype->class_collection[cnt] |= BIT (tok_alnum);  }  if ((ctype->class_done & BIT (tok_space)) == 0)    /* "If this keyword [space] is not specified, the characters <space>,        <form-feed>, <newline>, <carriage-return>, <tab>, and	<vertical-tab>, ..., shall automatically belong to this class,	with implementation-defined character values."  [P1003.2, 2.5.2.1]  */    {      unsigned int value;      value = charset_find_value (charset, "space", 5);      if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet)	error (0, 0, _("\character `%s' not defined while needed as default value"),	       "<space>");      else	ELEM (ctype, class_collection, , value) |= BIT (tok_space);      value = charset_find_value (charset, "form-feed", 9);      if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet)	error (0, 0, _("\character `%s' not defined while needed as default value"),	       "<form-feed>");      else	ELEM (ctype, class_collection, , value) |= BIT (tok_space);      value = charset_find_value (charset, "newline", 7);      if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet)	error (0, 0, _("\character `%s' not defined while needed as default value"),	       "<newline>");      else	ELEM (ctype, class_collection, , value) |= BIT (tok_space);      value = charset_find_value (charset, "carriage-return", 15);      if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet)	error (0, 0, _("\character `%s' not defined while needed as default value"),	       "<carriage-return>");      else	ELEM (ctype, class_collection, , value) |= BIT (tok_space);      value = charset_find_value (charset, "tab", 3);      if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet)	error (0, 0, _("\character `%s' not defined while needed as default value"),	       "<tab>");      else	ELEM (ctype, class_collection, , value) |= BIT (tok_space);      value = charset_find_value (charset, "vertical-tab", 12);      if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet)	error (0, 0, _("\character `%s' not defined while needed as default value"),	       "<vertical-tab>");      else	ELEM (ctype, class_collection, , value) |= BIT (tok_space);    }  if ((ctype->class_done & BIT (tok_xdigit)) == 0)    /* "If this keyword is not specified, the digits `0' to `9', the        uppercase letters `A' through `F', and the lowercase letters `a'	through `f', ..., shell automatically belong to this class, with	implementation defined character values."  [P1003.2, 2.5.2.1]  */    {      set_default (BIT (tok_xdigit), '0', '9');      set_default (BIT (tok_xdigit), 'A', 'F');      set_default (BIT (tok_xdigit), 'a', 'f');    }  if ((ctype->class_done & BIT (tok_blank)) == 0)    /* "If this keyword [blank] is unspecified, the characters <space> and       <tab> shall belong to this character class."  [P1003.2, 2.5.2.1]  */   {      unsigned int value;      value = charset_find_value (charset, "space", 5);      if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet)	error (0, 0, _("\character `%s' not defined while needed as default value"),	       "<space>");      else	ELEM (ctype, class_collection, , value) |= BIT (tok_blank);      value = charset_find_value (charset, "tab", 3);      if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet)	error (0, 0, _("\character `%s' not defined while needed as default value"),	       "<tab>");      else	ELEM (ctype, class_collection, , value) |= BIT (tok_blank);    }  if ((ctype->class_done & BIT (tok_graph)) == 0)    /* "If this keyword [graph] is not specified, characters specified for        the keywords `upper', `lower', `alpha', `digit', `xdigit' and `punct',	shall belong to this character class."  [P1003.2, 2.5.2.1]  */    {      unsigned long int mask = BIT (tok_upper) | BIT (tok_lower) |	BIT (tok_alpha) | BIT (tok_digit) | BIT (tok_xdigit) | BIT (tok_punct);      size_t cnt;      for (cnt = 0; cnt < ctype->class_collection_act; ++cnt)	if ((ctype->class_collection[cnt] & mask) != 0)	  ctype->class_collection[cnt] |= BIT (tok_graph);    }  if ((ctype->class_done & BIT (tok_print)) == 0)    /* "If this keyword [print] is not provided, characters specified for        the keywords `upper', `lower', `alpha', `digit', `xdigit', `punct',	and the <space> character shall belong to this character class."	[P1003.2, 2.5.2.1]  */    {      unsigned long int mask = BIT (tok_upper) | BIT (tok_lower) |	BIT (tok_alpha) | BIT (tok_digit) | BIT (tok_xdigit) | BIT (tok_punct);      size_t cnt;      wchar_t space;      for (cnt = 0; cnt < ctype->class_collection_act; ++cnt)	if ((ctype->class_collection[cnt] & mask) != 0)	  ctype->class_collection[cnt] |= BIT (tok_print);      space = charset_find_value (charset, "space", 5);      if (space == ILLEGAL_CHAR_VALUE && !be_quiet)	error (0, 0, _("\character `%s' not defined while needed as default value"),	       "<space>");      else	ELEM (ctype, class_collection, , space) |= BIT (tok_print);    }  if (ctype->toupper_done == 0)    /* "If this keyword [toupper] is not specified, the lowercase letters        `a' through `z', and their corresponding uppercase letters `A' to	`Z', ..., shall automatically be included, with implementation-	defined character values."  [P1003.2, 2.5.2.1]  */    {      char tmp[4];      int ch;      strcpy (tmp, "<?>");      for (ch = 'a'; ch <= 'z'; ++ch)	{	  unsigned int value_from, value_to;	  tmp[1] = (char) ch;	  value_from = charset_find_value (charset, &tmp[1], 1);	  if ((wchar_t) value_from == ILLEGAL_CHAR_VALUE && !be_quiet)	    {	      error (0, 0, _("\character `%s' not defined while needed as default value"),		     tmp);	      continue;	    }	  /* This conversion is implementation defined.  */	  tmp[1] = (char) (ch + ('A' - 'a'));	  value_to = charset_find_value (charset, &tmp[1], 1);	  if ((wchar_t) value_to == ILLEGAL_CHAR_VALUE && !be_quiet)	    {	      error (0, 0, _("\character `%s' not defined while needed as default value"),		     tmp);	      continue;	    }	  /* The index [0] is determined by the order of the	     `ctype_map_newP' calls in `ctype_startup'.  */	  ELEM (ctype, map_collection, [0], value_from) = value_to;	}    }  if (ctype->tolower_done == 0)    /* "If this keyword [tolower] is not specified, the mapping shall be       the reverse mapping of the one specified to `toupper'."  [P1003.2]  */    {      size_t cnt;      for (cnt = 0; cnt < ctype->map_collection_act[0]; ++cnt)	if (ctype->map_collection[0][cnt] != 0)	  ELEM (ctype, map_collection, [1],		ctype->map_collection[0][cnt])	    = ctype->charnames[cnt];    }}