
Also known as ISC bind. This import adds utilities such as host(1), dig(1), and nslookup(1), as well as many other tools and libraries. Change-Id: I035ca46e64f1965d57019e773f4ff0ef035e4aa3
101 lines
1.8 KiB
C
101 lines
1.8 KiB
C
/* $NetBSD: query-loc.c,v 1.4 2014/12/10 04:37:56 christos Exp $ */
|
|
|
|
#include "loc.h"
|
|
|
|
/* Id: query-loc.c,v 1.1 2008/02/15 01:47:15 marka Exp */
|
|
|
|
/* Global variables */
|
|
char *progname;
|
|
short debug;
|
|
|
|
int
|
|
main (argc, argv)
|
|
int argc;
|
|
char *argv[];
|
|
{
|
|
extern char *optarg;
|
|
extern int optind;
|
|
|
|
short verbose = FALSE;
|
|
char *host;
|
|
|
|
char ch;
|
|
|
|
char *loc = NULL;
|
|
struct in_addr addr;
|
|
struct hostent *hp;
|
|
|
|
progname = argv[0];
|
|
while ((ch = getopt (argc, argv, "vd:")) != EOF)
|
|
{
|
|
switch (ch)
|
|
{
|
|
case 'v':
|
|
verbose = TRUE;
|
|
break;
|
|
case 'd':
|
|
debug = atoi (optarg);
|
|
if (debug <= 0)
|
|
{
|
|
(void) fprintf (stderr,
|
|
"%s: illegal debug value.\n", progname);
|
|
exit (2);
|
|
}
|
|
break;
|
|
default:
|
|
usage ();
|
|
}
|
|
}
|
|
argc -= optind;
|
|
argv += optind;
|
|
if (argc != 1)
|
|
{
|
|
usage ();
|
|
}
|
|
if (verbose || debug)
|
|
{
|
|
printf ("\nThis is %s, version %s.\n\n", progname, VERSION);
|
|
}
|
|
host = argv[0];
|
|
(void) res_init ();
|
|
|
|
if ((addr.s_addr = inet_addr (host)) == INADDR_NONE)
|
|
{
|
|
if (debug >= 1)
|
|
printf ("%s is a name\n", host);
|
|
loc = getlocbyname (host, FALSE);
|
|
}
|
|
else
|
|
{
|
|
if (debug >= 1)
|
|
printf ("%s is an IP address ", host);
|
|
hp = (struct hostent *) gethostbyaddr
|
|
((char *) &addr, sizeof (addr), AF_INET);
|
|
if (hp)
|
|
{
|
|
if (debug >= 1)
|
|
printf ("and %s is its official name\n",
|
|
hp->h_name);
|
|
loc = getlocbyname (hp->h_name, FALSE);
|
|
}
|
|
else
|
|
{
|
|
if (debug >= 1)
|
|
printf ("which has no name\n");
|
|
loc = getlocbyaddr (addr, NULL);
|
|
}
|
|
}
|
|
if (loc == NULL)
|
|
{
|
|
printf ("No LOCation found for %s\n", host);
|
|
exit (1);
|
|
}
|
|
else
|
|
{
|
|
if (verbose || debug)
|
|
printf ("LOCation for %s is ", host);
|
|
printf ("%s\n", loc);
|
|
exit (0);
|
|
}
|
|
}
|