/* These patches are written by Dark@Igor for Dutch Mountains, in December 
   1995. The MERC license applies to them. */

#include <stdio.h>
#include <string.h>

#include <unistd.h>

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

int main()
{
    char buf[80];
    char *p;
    struct hostent *hostent;
    long addr;

    while ( fgets( buf, 80, stdin ) ) {
        p = strchr( buf, '\n' );
	if ( p )
        {
	  *p = '\0';
	}
	/* Strange.  inet_addr officially returns an unsigned long,
	 * but the error code is -1. */
	addr = inet_addr( buf );
	if ( addr != -1 )
        {
	    hostent = gethostbyaddr( (char *) &addr, sizeof(addr), AF_INET );
	    /* h_errno is not defined on all systems. */
	    if ( !hostent /* && h_errno == TRY_AGAIN */ )
            {
		sleep( 5 );
	        hostent =
		  gethostbyaddr( (char *) &addr, sizeof(addr), AF_INET );
	    }
	    printf( "%s %s\n", buf, hostent ? hostent->h_name : buf );
	    fflush( stdout );
	}
    }
    return 0;
}