handle_copy (ldfile, charmap, repertoire, tok_lc_name, LC_NAME,
handle_copy (ldfile, charmap, repertoire, result, tok_lc_name, LC_NAME,
name_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_name_t *name;  struct token *now;  struct token *arg;  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_NAME' must be empty.  */  lr_ignore_rest (ldfile, 1);  do    {      now = lr_token (ldfile, charmap, NULL);      nowtok = now->tok;    }  while (nowtok == tok_eol);  /* If we see `copy' now we are almost done.  */  if (nowtok == tok_copy)    {      handle_copy (ldfile, charmap, repertoire, tok_lc_name, LC_NAME,		   "LC_NAME", ignore_content);      return;    }  /* Prepare the data structures.  */  name_startup (ldfile, result, ignore_content);  name = result->categories[LC_NAME].name;  while (1)    {      /* Of course we don't proceed beyond the end of file.  */      if (nowtok == tok_eof)	break;      /* Ingore empty lines.  */      if (nowtok == tok_eol)	{	  now = lr_token (ldfile, charmap, NULL);	  nowtok = now->tok;	  continue;	}      switch (nowtok)	{#define STR_ELEM(cat) \	case tok_##cat:							      \	  arg = lr_token (ldfile, charmap, NULL);			      \	  if (arg->tok != tok_string)					      \	    goto err_label;						      \	  if (name->cat != NULL)					      \	    lr_error (ldfile, _("%s: field `%s' declared more than once"),    \		      "LC_NAME", #cat);					      \	  else if (!ignore_content && arg->val.str.startmb == NULL)	      \	    {								      \	      lr_error (ldfile, _("%s: unknown character in field `%s'"),     \			"LC_NAME", #cat);				      \	      name->cat = "";						      \	    }								      \	  else if (!ignore_content)					      \	    name->cat = arg->val.str.startmb;				      \	  break	  STR_ELEM (name_fmt);	  STR_ELEM (name_gen);	  STR_ELEM (name_mr);	  STR_ELEM (name_mrs);	  STR_ELEM (name_miss);	  STR_ELEM (name_ms);	case tok_end:	  /* Next we assume `LC_NAME'.  */	  arg = lr_token (ldfile, charmap, NULL);	  if (arg->tok == tok_eof)	    break;	  if (arg->tok == tok_eol)	    lr_error (ldfile, _("%s: incomplete `END' line"), "LC_NAME");	  else if (arg->tok != tok_lc_name)	    lr_error (ldfile, _("\%1$s: definition does not end with `END %1$s'"), "LC_NAME");	  lr_ignore_rest (ldfile, arg->tok == tok_lc_name);	  return;	default:	err_label:	  SYNTAX_ERROR (_("%s: syntax error"), "LC_NAME");	}      /* Prepare for the next round.  */      now = lr_token (ldfile, charmap, NULL);      nowtok = now->tok;    }  /* When we come here we reached the end of the file.  */  lr_error (ldfile, _("%s: premature end of file"), "LC_NAME");}