if (!c)
if (c == NULL)
parse_line (const char * fname, int line_num, const char * str){  const char * start;  struct cmd * c = 0;  size_t len;  int i;  str = skip_ws (str);  if (*str == '#') return;		/* skip line comment */  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)    {      fprintf (stderr, "%s: line %d: bad command `%s'\n",	       fname, line_num, start);      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 != '#')	  fprintf (stderr, "%s: line %d: ignoring trailing garbage `%s'\n",		   fname, line_num, str);	break;      }      ++str;    }}