print_escaped (val);
fputs (val, stdout);
show_info (const char *name){  size_t cat_no;  void print_item (struct cat_item *item)    {      switch (item->value_type)	{	case string:	  if (show_keyword_name)	    printf ("%s=\"", item->name);	  print_escaped (nl_langinfo (item->item_id) ? : "");	  if (show_keyword_name)	    putchar ('"');	  putchar ('\n');	  break;	case stringarray:	  {	    int cnt;	    const char *val;	    if (show_keyword_name)	      printf ("%s=\"", item->name);	    for (cnt = 0; cnt < item->max - 1; ++cnt)	      {		val = nl_langinfo (item->item_id + cnt);		if (val != NULL)		  print_escaped (val);		putchar (';');	      }	    val = nl_langinfo (item->item_id + cnt);	    if (val != NULL)	      print_escaped (val);	    if (show_keyword_name)	      putchar ('"');	    putchar ('\n');	  }	  break;	case stringlist:	  {	    int first = 1;	    const char *val = nl_langinfo (item->item_id) ? : "";	    if (show_keyword_name)	      printf ("%s=", item->name);	    while (*val != '\0')	      {		printf ("%s%s%s%s", first ? "" : ";",			show_keyword_name ? "\"" : "", val,			show_keyword_name ? "\"" : "");		val = strchr (val, '\0') + 1;		first = 0;	      }	    putchar ('\n');	  }	  break;	case byte:	  {	    const char *val = nl_langinfo (item->item_id);	    if (show_keyword_name)	      printf ("%s=", item->name);	    if (val != NULL)	      printf ("%d", *val == CHAR_MAX ? -1 : *val);	    putchar ('\n');	  }	  break;	case bytearray:	  {	    const char *val = nl_langinfo (item->item_id);	    int cnt = val ? strlen (val) : 0;	    if (show_keyword_name)	      printf ("%s=", item->name);	    while (cnt > 1)	      {		printf ("%d;", *val == CHAR_MAX ? -1 : *val);                --cnt;		++val;	      }	    printf ("%d\n", cnt == 0 || *val == CHAR_MAX ? -1 : *val);	  }	  break;	case word:	  {	    unsigned int val =	      (unsigned int) (unsigned long int) nl_langinfo (item->item_id);	    if (show_keyword_name)	      printf ("%s=", item->name);	    printf ("%d\n", val);	  }	  break;	case wstring:	case wstringarray:	case wstringlist:	  /* We don't print wide character information since the same	     information is available in a multibyte string.  */	default:	}    }  for (cat_no = 0; cat_no < NCATEGORIES; ++cat_no)    if (cat_no != LC_ALL)      {	size_t item_no;	if (strcmp (name, category[cat_no].name) == 0)	  /* Print the whole category.  */	  {	    if (show_category_name != 0)	      puts (category[cat_no].name);	    for (item_no = 0; item_no < category[cat_no].number; ++item_no)	      print_item (&category[cat_no].item_desc[item_no]);	    return;	  }	for (item_no = 0; item_no < category[cat_no].number; ++item_no)	  if (strcmp (name, category[cat_no].item_desc[item_no].name) == 0)	    {	      if (show_category_name != 0)		puts (category[cat_no].name);	      print_item (&category[cat_no].item_desc[item_no]);	      return;	    }      }  /* The name is not a standard one.     For testing and perhaps advanced use allow some more symbols.  */  locale_special (name, show_category_name, show_keyword_name);}