__fxprintf (NULL, "%s", L"%s", buf);
parse_line (const char *fname, int line_num, const char *str){  const char *start;  struct cmd *c = 0;  size_t len;  size_t i;  str = skip_ws (str);  /* skip line comment and empty lines: */  if (*str == '\0' || *str == '#') return;  start = str;  str = skip_string (str);  len = str - start;  for (i = 0; i < sizeof (cmd) / sizeof (cmd[0]); ++i)    {      if (__strncasecmp (start, cmd[i].name, len) == 0	  && strlen (cmd[i].name) == len)	{	  c = &cmd[i];	  break;	}    }  if (c == NULL)    {      char *buf;      if (__asprintf (&buf, _("%s: line %d: bad command `%s'\n"),		      fname, line_num, start) < 0)	return;#ifdef USE_IN_LIBIO      if (_IO_fwide (stderr, 0) > 0)	__fwprintf (stderr, L"%s", buf);      else#endif	fputs (buf, stderr);      free (buf);      return;    }  /* process args: */  str = skip_ws (str);  str = (*c->parse_args) (fname, line_num, str, c->arg);  if (!str)    return;  /* rest of line must contain white space or comment only: */  while (*str)    {      if (!isspace (*str)) {	if (*str != '#')	  {	    char *buf;	    if (__asprintf (&buf,			    _("%s: line %d: ignoring trailing garbage `%s'\n"),			    fname, line_num, str) < 0)	      break;#ifdef USE_IN_LIBIO	    if (_IO_fwide (stderr, 0) > 0)	      __fwprintf (stderr, L"%s", buf);	    else#endif	      fputs (buf, stderr);	    free (buf);	  }	break;      }      ++str;    }}