#include "unp.h" int main(int argc, char **argv) { char *ptr, **pptr; char str[INET_ADDRSTRLEN]; struct hostent *hptr; in_addr_t inetaddr; while (--argc > 0) { ptr = *++argv; if ( (inetaddr = inet_addr(ptr)) != -1){ if ((hptr = gethostbyaddr((char *)&inetaddr, sizeof(inetaddr), AF_INET)) == NULL) { printf("\t(gethostbyaddr failed %s)\n", ptr); continue; } } else{ if ( (hptr = gethostbyname(ptr)) == NULL) { printf("\t(gethostbyaddr failed %s)\n", ptr); continue; } } printf("official hostname: %s\n", hptr->h_name); for (pptr = hptr->h_aliases; *pptr != NULL; pptr++) printf("\talias: %s\n", *pptr); switch (hptr->h_addrtype) { case AF_INET: pptr = hptr->h_addr_list; for ( ; *pptr != NULL; pptr++) printf("\taddress: %s\n", Inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str))); break; default: err_ret("unknown address type"); break; } } exit(0); }