value = charset_find_value (charset, code->val.str.start, code->val.str.len);
value = charset_find_value (&charset->char_table, code->val.str.start, code->val.str.len);
collate_element_to (struct linereader *lr, struct localedef_t *locale,		    struct token *code, struct charset_t *charset){  struct locale_collate_t *collate = locale->categories[LC_COLLATE].collate;  unsigned int value;  void *not_used;  if (collate->combine_token != NULL)    {      free ((void *) collate->combine_token);      collate->combine_token = NULL;    }  value = charset_find_value (charset, code->val.str.start, code->val.str.len);  if ((wchar_t) value != ILLEGAL_CHAR_VALUE)    {      lr_error (lr, _("symbol for multicharacter collating element "		      "`%.*s' duplicates symbolic name in charset"),		(int) code->val.str.len, code->val.str.start);      return;    }  if (find_entry (&collate->elements, code->val.str.start, code->val.str.len,		  &not_used) >= 0)    {      lr_error (lr, _("symbol for multicharacter collating element "		      "`%.*s' duplicates other element definition"),		(int) code->val.str.len, code->val.str.start);      return;    }  if (find_entry (&collate->elements, code->val.str.start, code->val.str.len,		  &not_used) >= 0)    {      lr_error (lr, _("symbol for multicharacter collating element "		      "`%.*s' duplicates symbol definition"),		(int) code->val.str.len, code->val.str.start);      return;    }  collate->combine_token = code->val.str.start;  collate->combine_token_len = code->val.str.len;}