#include <stdio.h>
#include <stdlib.h>

char * xxx_name_to_inet( char * host ) ;

#include <X11/Xlib.h>

Display         *theDisp;

int main( int argc , char * argv[] )
{
   char * cpt ;
   char * nam = xxx_name_to_inet(argv[1]) ;
   printf("%s\n",nam) ; free(nam) ;

   theDisp=XOpenDisplay(NULL) ;
   if( theDisp == NULL ) exit(1) ;
   nam = DisplayString(theDisp) ; printf("%s\n",nam) ;
   cpt = strstr(nam,":") ; *cpt = '\0' ;
   nam = xxx_name_to_inet(nam) ;
   printf("%s\n",nam) ; free(nam) ;
   exit(0) ;
}

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <arpa/inet.h>

/*----------------------------------------------------------------
   Return the Internet address (in 'dot' format, as a string)
   given the name of the host.  If NULL is returned, some
   error occurrrrred.  The return string is malloc-ed and should
   be free-d someday.
------------------------------------------------------------------*/

char * xxx_name_to_inet( char * host )
{
   struct hostent * hostp ;
   char * iname = NULL , * str ;
   int ll ;

   if( host == NULL || host[0] == '\0' ) return NULL ;

   hostp = gethostbyname(host) ; if( hostp == NULL ) return NULL ;

   str = inet_ntoa(*((struct in_addr *)(hostp->h_addr))) ;
   if( str == NULL || str[0] == '\0' ) return NULL ;

   ll = strlen(str) ; iname = AFMALL(char, ll+1) ; strcpy(iname,str) ;
   return iname ;
}


syntax highlighted by Code2HTML, v. 0.9.1