chiark
/
gitweb
/
~mdw
/
adns
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* adns_s_systemfail is in table of errors (for eg adns_strerror).
[adns]
/
src
/
general.c
diff --git
a/src/general.c
b/src/general.c
index b701b9f8b57975ecd9ee752ca6ab5d81878e873e..12e5983efcec7593e93ffd42f5c3ce39c4341815 100644
(file)
--- a/
src/general.c
+++ b/
src/general.c
@@
-24,6
+24,9
@@
#include <stdlib.h>
#include <string.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
#include <arpa/inet.h>
#include "internal.h"
#include <arpa/inet.h>
#include "internal.h"
@@
-197,16
+200,18
@@
adns_status adns_rr_info(adns_rrtype type,
return st;
}
return st;
}
-#define SINFO(n,s) { adns_s_##n, s }
+#define SINFO(n,s) { adns_s_##n,
#n,
s }
static const struct sinfo {
adns_status st;
static const struct sinfo {
adns_status st;
+ const char *abbrev;
const char *string;
} sinfos[]= {
SINFO( ok, "OK" ),
SINFO( nomemory, "Out of memory" ),
SINFO( unknownrrtype, "Query not implemented in DNS library" ),
const char *string;
} sinfos[]= {
SINFO( ok, "OK" ),
SINFO( nomemory, "Out of memory" ),
SINFO( unknownrrtype, "Query not implemented in DNS library" ),
+ SINFO( systemfail, "General resolver or system failure" ),
SINFO( timeout, "DNS query timed out" ),
SINFO( allservfail, "All nameservers failed" ),
SINFO( timeout, "DNS query timed out" ),
SINFO( allservfail, "All nameservers failed" ),
@@
-241,16
+246,22
@@
static int si_compar(const void *key, const void *elem) {
return *st < si->st ? -1 : *st > si->st ? 1 : 0;
}
return *st < si->st ? -1 : *st > si->st ? 1 : 0;
}
+static const struct sinfo *findsinfo(adns_status st) {
+ return bsearch(&st,sinfos,sizeof(sinfos)/sizeof(*sinfos),sizeof(*sinfos),si_compar);
+}
+
const char *adns_strerror(adns_status st) {
const char *adns_strerror(adns_status st) {
-
static char buf[100]
;
+
const struct sinfo *si
;
+ si= findsinfo(st);
+ return si->string;
+}
+
+const char *adns_errabbrev(adns_status st) {
const struct sinfo *si;
const struct sinfo *si;
- si= bsearch(&st,sinfos,sizeof(sinfos)/sizeof(*si),sizeof(*si),si_compar);
- if (si) return si->string;
-
- snprintf(buf,sizeof(buf),"code %d",st);
- return buf;
+ si= findsinfo(st);
+ return si->abbrev;
}
void adns__isort(void *array, int nobjs, int sz, void *tempbuf,
}
void adns__isort(void *array, int nobjs, int sz, void *tempbuf,