summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2014-07-23 23:18:56 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2014-10-19 21:14:55 +0100
commite9fe1bdb18b284d70758b2f102691b746e3ed2e9 (patch)
tree1d370a9585c3953c981a2b4242e40b9b23142cf9 /src
parent0b062eccea099e977fddf82c4d08167c638a10aa (diff)
reverse parsing: Make adns__revparse_* return bool
This seems nicer and is going to be more convenient. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Diffstat (limited to 'src')
-rw-r--r--src/addrfam.c18
-rw-r--r--src/internal.h20
-rw-r--r--src/types.c8
3 files changed, 23 insertions, 23 deletions
diff --git a/src/addrfam.c b/src/addrfam.c
index d087016..ddae5cb 100644
--- a/src/addrfam.c
+++ b/src/addrfam.c
@@ -579,8 +579,8 @@ static const struct revparse_domain {
#define REVDOMAIN_MAP(rps, labnum) \
((labnum) ? (rps)->map : (1 << NREVDOMAINS) - 1)
-int adns__revparse_label(struct revparse_state *rps, int labnum,
- const char *dgram, int labstart, int lablen) {
+bool adns__revparse_label(struct revparse_state *rps, int labnum,
+ const char *dgram, int labstart, int lablen) {
const char *label = dgram+labstart;
unsigned f= REVDOMAIN_MAP(rps, labnum);
const struct revparse_domain *rpd;
@@ -604,16 +604,16 @@ int adns__revparse_label(struct revparse_state *rps, int labnum,
mismatch:
f &= ~d;
- if (!f) return -1;
+ if (!f) return 0;
}
rps->map= f;
- return 0;
+ return 1;
}
-int adns__revparse_done(struct revparse_state *rps,
- const char *dgram, int nlabels,
- adns_rrtype *rrtype_r, adns_sockaddr *addr_r) {
+bool adns__revparse_done(struct revparse_state *rps,
+ const char *dgram, int nlabels,
+ adns_rrtype *rrtype_r, adns_sockaddr *addr_r) {
unsigned f= REVDOMAIN_MAP(rps, nlabels);
const struct revparse_domain *rpd;
unsigned d;
@@ -624,7 +624,7 @@ int adns__revparse_done(struct revparse_state *rps,
if (nlabels >= rpd->nrevlab && !rpd->tail[nlabels - rpd->nrevlab])
{ found = i; continue; }
f &= ~d;
- if (!f) return -1;
+ if (!f) return 0;
}
assert(found >= 0); assert(f == (1 << found));
@@ -632,5 +632,5 @@ int adns__revparse_done(struct revparse_state *rps,
*rrtype_r= rpd->rrtype;
addr_r->sa.sa_family= rpd->af;
rpd->rev_mkaddr(addr_r, rps->ipv[found]);
- return 0;
+ return 1;
}
diff --git a/src/internal.h b/src/internal.h
index 5312fe1..3a6f063 100644
--- a/src/internal.h
+++ b/src/internal.h
@@ -472,26 +472,26 @@ extern int adns__make_reverse_domain(const struct sockaddr *sa,
* allocate an output buffer failed.
*/
-extern int adns__revparse_label(struct revparse_state *rps, int labnum,
- const char *dgram,
- int labstart, int lablen);
+extern bool adns__revparse_label(struct revparse_state *rps, int labnum,
+ const char *dgram,
+ int labstart, int lablen);
/* Parse a label in a reverse-domain name, given its index labnum (starting
* from zero), a pointer to its contents (which need not be null-terminated),
* and its length. The state in *rps is initialized implicitly when labnum
* is zero.
*
- * Returns zero if the parse was successful, nonzero if the domain name is
- * definitely invalid and the parse must be abandoned.
+ * Returns 1 if the parse is proceeding successfully, 0 if the domain
+ * name is definitely invalid and the parse must be abandoned.
*/
-extern int adns__revparse_done(struct revparse_state *rps,
- const char *dgram, int nlabels,
- adns_rrtype *rrtype_r, adns_sockaddr *addr_r);
+extern bool adns__revparse_done(struct revparse_state *rps,
+ const char *dgram, int nlabels,
+ adns_rrtype *rrtype_r, adns_sockaddr *addr_r);
/* Finishes parsing a reverse-domain name, given the total number of
* labels in the name. On success, fills in the af and protocol
* address in *addr_r, and the forward query type in *rrtype_r
- * (because that turns out to be useful). Returns nonzero if the
- * parse must be abandoned.
+ * (because that turns out to be useful). Returns 1 if the parse
+ * was successful.
*/
/* From setup.c: */
diff --git a/src/types.c b/src/types.c
index ae43e2e..00c823b 100644
--- a/src/types.c
+++ b/src/types.c
@@ -1138,12 +1138,12 @@ static adns_status ckl_ptr(adns_state ads, adns_queryflags flags,
int labnum, const char *dgram,
int labstart, int lablen) {
if (lablen) {
- if (adns__revparse_label(&cls->ptr, labnum, dgram,labstart,lablen))
+ if (!adns__revparse_label(&cls->ptr, labnum, dgram,labstart,lablen))
return adns_s_querydomainwrong;
} else {
- if (adns__revparse_done(&cls->ptr, dgram, labnum,
- &ctx->tinfo.ptr.rev_rrtype,
- &ctx->tinfo.ptr.addr))
+ if (!adns__revparse_done(&cls->ptr, dgram, labnum,
+ &ctx->tinfo.ptr.rev_rrtype,
+ &ctx->tinfo.ptr.addr))
return adns_s_querydomainwrong;
}
return adns_s_ok;