* SOFTWARE.
*/
-/* $Id: dig.c,v 1.75 2000/07/24 18:07:01 mws Exp $ */
+/* $Id: dig.c,v 1.76 2000/07/24 20:46:55 mws Exp $ */
#include <config.h>
#include <stdlib.h>
* that routine.
*/
static void
-parse_args(isc_boolean_t is_batchfile, int argc, char **argv) {
+parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
+ int argc, char **argv) {
isc_boolean_t have_host = ISC_FALSE;
isc_result_t result;
isc_textregion_t tr;
if (!is_batchfile) {
debug("making new lookup");
default_lookup = make_empty_lookup();
+
+ /*
+ * Treat .digrc as a special batchfile
+ * XXXMWS should check $HOME in some portable way
+ */
+ batchfp = fopen(".digrc", "r");
+ if (batchfp != NULL) {
+ while (fgets(batchline, sizeof(batchline),
+ batchfp) != 0) {
+ debug("config line %s", batchline);
+ bargc = 1;
+ bargv[bargc] = strtok(batchline, " \t\r\n");
+ while ((bargv[bargc] != NULL) &&
+ (bargc < 14)) {
+ bargc++;
+ bargv[bargc] = strtok(NULL, " \t\r\n");
+ }
+
+ bargv[0] = argv[0];
+ argv0 = argv[0];
+
+ reorder_args(bargc, (char **)bargv);
+ parse_args(ISC_TRUE, ISC_TRUE, bargc,
+ (char **)bargv);
+ }
+ fclose(batchfp);
+ }
}
lookup = default_lookup;
isc_mem_debugging = 1;
} else if (strcmp(rv[0], "-debug") == 0) {
debugging = ISC_TRUE;
- } else if (strncmp(rv[0], "-x", 2) == 0) {
+ } else if ((strncmp(rv[0], "-x", 2) == 0) &&
+ !config_only) {
/*
* XXXMWS Only works for ipv4 now.
* Can't use inet_pton here, since we allow
lookup->rdclass = rdclass;
continue;
}
- lookup=clone_lookup(default_lookup, ISC_TRUE);
- strncpy(lookup->textname, rv[0], MXNAME-1);
- lookup->trace_root = ISC_TF(lookup->trace ||
- lookup->ns_search_only);
- lookup->new_search = ISC_TRUE;
- ISC_LIST_APPEND(lookup_list, lookup, link);
- have_host = ISC_TRUE;
- debug("looking up %s", lookup->textname);
+ if (!config_only) {
+ lookup=clone_lookup(default_lookup, ISC_TRUE);
+ strncpy(lookup->textname, rv[0], MXNAME-1);
+ lookup->trace_root = ISC_TF(lookup->trace ||
+ lookup->ns_search_only);
+ lookup->new_search = ISC_TRUE;
+ ISC_LIST_APPEND(lookup_list, lookup, link);
+ have_host = ISC_TRUE;
+ debug("looking up %s", lookup->textname);
+ }
}
}
/*
argv0 = argv[0];
reorder_args(bargc, (char **)bargv);
- parse_args(ISC_TRUE, bargc, (char **)bargv);
+ parse_args(ISC_TRUE, ISC_FALSE, bargc, (char **)bargv);
}
}
- if (lookup_list.head == NULL) {
+ if ((lookup_list.head == NULL) && !config_only) {
lookup=clone_lookup(default_lookup, ISC_TRUE);
lookup->trace_root = ISC_TF(lookup->trace ||
lookup->ns_search_only);
lookup->rdtype = dns_rdatatype_ns;
ISC_LIST_APPEND(lookup_list, lookup, link);
}
- printgreeting(argc, argv);
+ if (!config_only)
+ printgreeting(argc, argv);
}
/*
bargv[0] = argv0;
reorder_args(bargc, (char **)bargv);
- parse_args(ISC_TRUE, bargc, (char **)bargv);
+ parse_args(ISC_TRUE, ISC_FALSE, bargc, (char **)bargv);
start_lookup();
} else {
batchname = NULL;
result = isc_app_start();
check_result(result, "isc_app_start");
setup_libs();
- parse_args(ISC_FALSE, argc, argv);
+ parse_args(ISC_FALSE, ISC_FALSE, argc, argv);
setup_system();
result = isc_app_onrun(mctx, global_task, onrun_callback, NULL);
check_result(result, "isc_app_onrun");