for (;;) {
const char *arg = *++argv;
if (!strcmp(arg,"b")) {
- int bits=atoi(*++argv);
uint32_t val=strtoul(*++argv,0,0);
+ int bits=atoi(*++argv);
dnsdomainenc_addbits(&enc,val,bits);
} else if (!strcmp(arg,"w")) {
uint32_t val=strtoul(*++argv,0,0);
for (;;) {
const char *arg = *++argv;
if (!strcmp(arg,"b")) {
- int bits=atoi(*++argv);
++argv;
+ int bits=atoi(*++argv);
uint32_t val=dnsdomaindec_getbits(&dec,bits);
- printf("b %d 0x%"PRIx32, bits, val);
+ printf("b %d 0x%"PRIx32"\n", bits, val);
} else if (!strcmp(arg,"w")) {
+ ++argv;
uint32_t val=dnsdomaindec_getu32(&dec);
- printf("w 0x%"PRIx32, val);
+ printf("w 0x%"PRIx32"\n", val);
} else if (!strcmp(arg,"r")) {
++argv;
uint8_t rbuf[MAX_DOMAIN_BYTES];
assert(nbits<=28);
while (bd->npending < nbits)
inputchar(bd);
- int newnpending = bd->pending - nbits;
- uint32_t rv = bd->pending >> newnpending;
- bd->pending &= ((uint32_t)1 << newnpending)-1;
- bd->npending = newnpending;
+ uint32_t rv = bd->pending & (((uint32_t)1 << nbits)-1);
+ bd->pending >>= nbits;
+ bd->npending -= nbits;
return rv;
}
uint32_t dnsdomaindec_getu32(struct dnsdomaindec *bd)
uint32_t msw=dnsdomaindec_getbits(bd,16);
return (msw << 16) | lsw;
}
-int dnsdomaindec_restbytes(struct dnsdomaindec *bd, uint8_t outbuf[MAX_DOMAIN_BYTES])
+int dnsdomaindec_restbytes(struct dnsdomaindec *bd,
+ uint8_t outbuf[MAX_DOMAIN_BYTES])
{
uint8_t *out = outbuf;
for (;;) {