rem: if (!hostent)
add: if (!(hostent = gethostbyname(name)))
context: bool netcat_resolvehost(netcat_host *dst, char *name){  struct hostent *hostent;  struct in_addr res_addr;  int i, ret;  assert(name);  debug_v("netcat_resolvehost(dst=%p, name=\"%s\")", (void *)dst, name);  /* reset the dst struct for debugging cleanup purposes */  memset(dst, 0, sizeof(*dst));  strcpy(dst->name, "(unknown)");  ret = inet_pton(AF_INET, name, &res_addr);  if (!ret) {			/* couldn't translate: it must be a name! */    /* if the opt_numeric option is set, we must not use DNS in any kind */    if (opt_numeric)      return FALSE;    hostent = gethostbyname(name);    /* failures to look up a name are reported to the calling function */    if (!hostent)      return FALSE;    strncpy(dst->name, hostent->h_name, MAXHOSTNAMELEN - 2);    /* FIXME: what do I do with other hosts? */    for (i = 0; hostent->h_addr_list[i] && (i < 8); i++) {      memcpy(&dst->iaddrs[i], hostent->h_addr_list[i], sizeof(struct in_addr));      strncpy(dst->addrs[i], inet_ntoa(dst->iaddrs[i]), sizeof(dst->addrs[0]));    }				/* for x -> addrs, part A */    if (!opt_verbose)		/* if we didn't want to see the */      return TRUE;		/* inverse stuff, we're done. */    /* do inverse lookups in separate loop based on our collected forward addrs,       since gethostby* tends to crap into the same buffer over and over */    for (i = 0; dst->iaddrs[i].s_addr && (i < 8); i++) {      hostent = gethostbyaddr((char *) &dst->iaddrs[i], sizeof(struct in_addr), AF_INET);      if (!hostent || !hostent->h_name) {	fprintf(stderr, _("Warning: inverse host lookup failed for %s: "),		dst->addrs[i]);	continue;      }      if (strcasecmp(dst->name, hostent->h_name)) {	fprintf(stderr, _("Warning, this host mismatch! %s - %s\n"),		dst->name, hostent->h_name);      }    }				/* for x -> addrs, part B */  }  else {			/* `name' is a numeric address */    memcpy(&dst->iaddrs[0], &res_addr, sizeof(struct in_addr));    strncpy(dst->addrs[0], inet_ntoa(res_addr), sizeof(dst->addrs));    /* if opt_numeric is set or we don't require verbosity, we are done */    if (opt_numeric || !opt_verbose)      return TRUE;    hostent = gethostbyaddr((char *) &res_addr, sizeof(struct in_addr), AF_INET);    /* numeric or not, failure to look up a PTR is *not* considered fatal */    if (!hostent)      fprintf(stderr, _("Error: Inverse name lookup failed for `%s'\n"), name);    else {      strncpy(dst->name, hostent->h_name, MAXHOSTNAMELEN - 2);      /* now do the direct lookup to see if the IP was auth */      hostent = gethostbyname(dst->name);      if (!hostent || !hostent->h_addr_list[0]) {	fprintf(stderr, _("Warning: direct host lookup failed for %s: \n"),		dst->name);      }      else if (strcasecmp(dst->name, hostent->h_name)) {	fprintf(stderr, _("Warning, this host mismatch! %s - %s\n"),		dst->name, hostent->h_name);      }      /* FIXME: I should erase the dst->name field, since the answer wasn't auth */    }				/* if hostent */  }				/* INADDR_NONE Great Split */  return TRUE;}