#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <netdb.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
  struct hostent *host;
  char ipbuf[64];
  int i;

  if (argc < 2) {
    fprintf(stderr,"Usage: host <hostname>\n");
    exit(0);
  }
  
  host = gethostbyname(argv[1]);
  if (host == NULL) {
    printf("host not found: %s\n", argv[1]);
    exit(1);
  }
  
  printf("Host: %s\n", host->h_name);
  if (host->h_aliases[0]) {
    printf("Aliases: \n");
    for(i=0; host->h_aliases[i]; i++) {
      printf("  %s\n", host->h_aliases[i]);
    }
  }
  printf("Host type: %s\n", host->h_addrtype == AF_INET? "IPv4" : "IPv6");
  printf("Addresses: \n");
  for(i=0; host->h_addr_list[i]; i++) {
    inet_ntop(host->h_addrtype, host->h_addr_list[i], ipbuf, 64);
    printf(" %s\n", ipbuf);
  }
  return 0;
}
