home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / ip / dns / bind / 4.8.3 / tools / nsquery.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-06-01  |  2.6 KB  |  97 lines

  1. /*
  2.  * Copyright (c) 1986 Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms are permitted provided
  6.  * that: (1) source distributions retain this entire copyright notice and
  7.  * comment, and (2) distributions including binaries display the following
  8.  * acknowledgement:  ``This product includes software developed by the
  9.  * University of California, Berkeley and its contributors'' in the
  10.  * documentation or other materials provided with the distribution and in
  11.  * all advertising materials mentioning features or use of this software.
  12.  * Neither the name of the University nor the names of its contributors may
  13.  * be used to endorse or promote products derived from this software without
  14.  * specific prior written permission.
  15.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
  16.  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  17.  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  18.  */
  19.  
  20. #ifndef lint
  21. char copyright[] =
  22. "@(#) Copyright (c) 1986 Regents of the University of California.\n\
  23.  All rights reserved.\n";
  24. #endif /* not lint */
  25.  
  26. #ifndef lint
  27. static char sccsid[] = "@(#)nsquery.c    4.8 (Berkeley) 6/1/90";
  28. #endif /* not lint */
  29.  
  30. #include <sys/param.h>
  31. #include <arpa/nameser.h>
  32. #include <netdb.h>
  33. #include <sys/socket.h>
  34. #include <netinet/in.h>
  35. #include <resolv.h>
  36. #include <stdio.h>
  37.  
  38. main(argc, argv)
  39.     int argc;
  40.     char **argv;
  41. {
  42.     extern struct state _res;
  43.     register struct hostent *hp;
  44.     register char *s;
  45.  
  46.     if (argc >= 2 && strcmp(argv[1], "-d") == 0) {
  47.         _res.options |= RES_DEBUG;
  48.         argc--;
  49.         argv++;
  50.     }
  51.     if (argc < 2) {
  52.         fprintf(stderr, "usage: nsquery [-d] host [server]\n");
  53.         exit(1);
  54.     }
  55.     if (argc == 3) {
  56.         hp = gethostbyname(argv[2]);
  57.         if (hp == NULL) {
  58.             fprintf(stderr, "nsquery:");
  59.             herror(argv[2]);
  60.             exit(1);
  61.         }
  62.         printf("\nServer:\n");
  63.         printanswer(hp);
  64.         _res.nsaddr.sin_addr = *(struct in_addr *)hp->h_addr;
  65.     }
  66.  
  67.     hp = gethostbyname(argv[1]);
  68.     if (hp == NULL) {
  69.         fprintf(stderr, "nsquery: %s: ", argv[1]);
  70.         herror((char *)NULL);
  71.         exit(1);
  72.     }
  73.     printanswer(hp);
  74.     exit(0);
  75. }
  76.  
  77. printanswer(hp)
  78.     register struct hostent *hp;
  79. {
  80.     register char **cp;
  81.     extern char *inet_ntoa();
  82.  
  83.     printf("Name: %s\n", hp->h_name);
  84. #if BSD >= 43 || defined(h_addr)
  85.     printf("Addresses:");
  86.     for (cp = hp->h_addr_list; cp && *cp; cp++)
  87.         printf(" %s", inet_ntoa(*(struct in_addr *)(*cp)));
  88.     printf("\n");
  89. #else
  90.     printf("Address: %s\n", inet_ntoa(*(struct in_addr *)hp->h_addr));
  91. #endif
  92.     printf("Aliases:");
  93.     for (cp = hp->h_aliases; cp && *cp && **cp; cp++)
  94.         printf(" %s", *cp);
  95.     printf("\n\n");
  96. }
  97.