]>
git.saurik.com Git - apple/network_cmds.git/blob - unbound/testcode/readhex.c
2 * testcode/readhex.c - read hex data.
4 * Copyright (c) 2007, NLnet Labs. All rights reserved.
6 * This software is open source.
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
12 * Redistributions of source code must retain the above copyright notice,
13 * this list of conditions and the following disclaimer.
15 * Redistributions in binary form must reproduce the above copyright notice,
16 * this list of conditions and the following disclaimer in the documentation
17 * and/or other materials provided with the distribution.
19 * Neither the name of the NLNET LABS nor the names of its contributors may
20 * be used to endorse or promote products derived from this software without
21 * specific prior written permission.
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27 * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
29 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 * Declarations useful for the unit tests.
42 #include "testcode/readhex.h"
44 #include "ldns/sbuffer.h"
45 #include "ldns/parseutil.h"
47 /** skip whitespace */
49 skip_whites(const char** p
)
52 while(isspace((unsigned char)**p
))
55 /* comment, skip until newline */
56 while(**p
&& **p
!= '\n')
64 /* takes a hex string and puts into buffer */
65 void hex_to_buf(sldns_buffer
* pkt
, const char* hex
)
69 sldns_buffer_clear(pkt
);
72 if(sldns_buffer_position(pkt
) == sldns_buffer_limit(pkt
))
73 fatal_exit("hex_to_buf: buffer too small");
74 if(!isalnum((unsigned char)*p
))
76 val
= sldns_hexdigit_to_int(*p
++) << 4;
78 log_assert(*p
&& isalnum((unsigned char)*p
));
79 val
|= sldns_hexdigit_to_int(*p
++);
80 sldns_buffer_write_u8(pkt
, (uint8_t)val
);
83 sldns_buffer_flip(pkt
);