
#include <sys/socket.h>        /* for AF_INET */
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>


int
main(int argc, char **argv)
{
  struct hostent h, *hp;
  char address[4], *ap=address, *argp;

  if (argc != 2) {
    fprintf(stderr, "Usage: %s address\n", argv[0]);
    return 1;
  }

  for (argp = strtok(argv[1], ".");
       argp;
       argp = strtok(NULL, ".")) {
    if (ap - address >= 4) break;
    *ap++ = atoi(argp);
  }
  if (ap - address != 4 || argp) {
    fprintf(stderr, "Malformed address\n");
    exit(2);
  }

  /*   hp = gethostbyaddr("\xD1\x98\xCD\x05", 4, AF_INET); */
  hp = gethostbyaddr(address, 4, AF_INET);
  if (hp == NULL) {
    fprintf(stderr, "No such address.\n");
    return(3);
  }
  printf("Name: %s.\n", hp->h_name);
  if (hp->h_aliases && *hp->h_aliases) {
    printf("Aliases: ");
    for ( ; *hp->h_aliases; hp->h_aliases++) {
      printf("%s ", *hp->h_aliases);
    }
    puts("");
  }

  return 0;
}
