+int adns_init(adns_state *ads_r, adns_initflags flags, FILE *diagfile) {
+ adns_state ads;
+ const char *res_options, *adns_res_options;
+ int r;
+
+ r= init_begin(&ads, flags, diagfile ? diagfile : stderr);
+ if (r) return r;
+
+ res_options= instrum_getenv(ads,"RES_OPTIONS");
+ adns_res_options= instrum_getenv(ads,"ADNS_RES_OPTIONS");
+ ccf_options(ads,"RES_OPTIONS",-1,res_options);
+ ccf_options(ads,"ADNS_RES_OPTIONS",-1,adns_res_options);
+
+ readconfig(ads,"/etc/resolv.conf");
+ readconfigenv(ads,"RES_CONF");
+ readconfigenv(ads,"ADNS_RES_CONF");
+
+ ccf_options(ads,"RES_OPTIONS",-1,res_options);
+ ccf_options(ads,"ADNS_RES_OPTIONS",-1,adns_res_options);
+
+ ccf_search(ads,"LOCALDOMAIN",-1,instrum_getenv(ads,"LOCALDOMAIN"));
+ ccf_search(ads,"ADNS_LOCALDOMAIN",-1,instrum_getenv(ads,"ADNS_LOCALDOMAIN"));
+
+ r= init_finish(ads);
+ if (r) return r;
+
+ *ads_r= ads;
+ return 0;
+}
+
+int adns_init_strcfg(adns_state *ads_r, adns_initflags flags,
+ FILE *diagfile, const char *configtext) {
+ adns_state ads;
+ int r;
+
+ r= init_begin(&ads, flags, diagfile); if (r) return r;
+
+ readconfigtext(ads,configtext,"<supplied configuration text>");
+ if (ads->configerrno) {
+ r= ads->configerrno;
+ free(ads);
+ return r;
+ }
+
+ r= init_finish(ads); if (r) return r;
+ *ads_r= ads;
+ return 0;
+}
+