summaryrefslogtreecommitdiffstats
path: root/contrib/query-loc-0.4.0/query-loc.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/query-loc-0.4.0/query-loc.c')
-rw-r--r--contrib/query-loc-0.4.0/query-loc.c98
1 files changed, 98 insertions, 0 deletions
diff --git a/contrib/query-loc-0.4.0/query-loc.c b/contrib/query-loc-0.4.0/query-loc.c
new file mode 100644
index 0000000..2492d5b
--- /dev/null
+++ b/contrib/query-loc-0.4.0/query-loc.c
@@ -0,0 +1,98 @@
+#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);
+ }
+}