#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>


extern int h_errno;

int main(int argc, char** argv){
  char *hostname;
  struct hostent *descr;
  char **ptr_alias;
  char **ptr_addr;

  if(argc<2){
    fprintf(stderr,"Missing argument: provide a host name!");
    return 1;
  }

  hostname = argv[1];

  printf("get host by name \"%s\"\n",hostname);
  descr = gethostbyname(hostname);
  
  if(descr==NULL){
    printf("host not found!");
    return 2;
  }
  printf("Official name: %s\n",descr->h_name);
  printf("Known aliases:\n");
  for(ptr_alias=descr->h_aliases; *ptr_alias!=NULL; ++ptr_alias){
    printf("\t%s\n",*ptr_alias);
  }

  printf("Addresses:\n");
  for(ptr_addr=descr->h_addr_list; *ptr_addr!=NULL; ++ptr_addr){
  printf("\t%d.%d.%d.%d\n",(unsigned char)(*ptr_addr)[0],
			(unsigned char)(*ptr_addr)[1],
			(unsigned char)(*ptr_addr)[2],
			(unsigned char)(*ptr_addr)[3]);
  }

  return 0;
}

