- int stnmin, stnmax, stn;
- const char *statusabbrev, *statusstring;
-
- stnmin= 0;
- stnmax= sizeof(statustypemaxes)/sizeof(statustypemaxes[0]);
- while (stnmin < stnmax) {
- stn= (stnmin+stnmax)>>1;
- if (st > statustypemaxes[stn].smax) stnmin= stn+1; else stnmax= stn;
- }
- stn= stnmin;
- assert(statustypemaxes[stn].smax >= st);
-
- if (rcode < stn) rcode= stn;
+ static const adns_status statuspoints[]= {
+ adns_s_ok,
+ adns_s_max_localfail, adns_s_max_remotefail, adns_s_max_tempfail,
+ adns_s_max_misconfig, adns_s_max_misquery
+ };
+
+ const adns_status *spp;
+ const char *statustypeabbrev, *statusabbrev, *statusstring;
+ int minrcode;
+
+ statustypeabbrev= adns_errtypeabbrev(st);
+ for (minrcode=0, spp=statuspoints;
+ spp < statuspoints + (sizeof(statuspoints)/sizeof(statuspoints[0]));
+ spp++)
+ if (st > *spp) minrcode++;
+ if (rcode < minrcode) rcode= minrcode;