BIND - Update BIND to 9.5.2
[dragonfly.git] / contrib / bind-9.5.2 / lib / isc / include / isc / hex.h
1 /*
2  * Copyright (C) 2004-2007  Internet Systems Consortium, Inc. ("ISC")
3  * Copyright (C) 2000, 2001  Internet Software Consortium.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for any
6  * purpose with or without fee is hereby granted, provided that the above
7  * copyright notice and this permission notice appear in all copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10  * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11  * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12  * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15  * PERFORMANCE OF THIS SOFTWARE.
16  */
17
18 /* $Id: hex.h,v 1.11 2007/06/19 23:47:18 tbox Exp $ */
19
20 #ifndef ISC_HEX_H
21 #define ISC_HEX_H 1
22
23 /*! \file isc/hex.h */
24
25 #include <isc/lang.h>
26 #include <isc/types.h>
27
28 ISC_LANG_BEGINDECLS
29
30 /***
31  *** Functions
32  ***/
33
34 isc_result_t
35 isc_hex_totext(isc_region_t *source, int wordlength,
36                const char *wordbreak, isc_buffer_t *target);
37 /*!<
38  * \brief Convert data into hex encoded text.
39  *
40  * Notes:
41  *\li   The hex encoded text in 'target' will be divided into
42  *      words of at most 'wordlength' characters, separated by
43  *      the 'wordbreak' string.  No parentheses will surround
44  *      the text.
45  *
46  * Requires:
47  *\li   'source' is a region containing binary data
48  *\li   'target' is a text buffer containing available space
49  *\li   'wordbreak' points to a null-terminated string of
50  *              zero or more whitespace characters
51  *
52  * Ensures:
53  *\li   target will contain the hex encoded version of the data
54  *      in source.  The 'used' pointer in target will be advanced as
55  *      necessary.
56  */
57
58 isc_result_t
59 isc_hex_decodestring(char *cstr, isc_buffer_t *target);
60 /*!<
61  * \brief Decode a null-terminated hex string.
62  *
63  * Requires:
64  *\li   'cstr' is non-null.
65  *\li   'target' is a valid buffer.
66  *
67  * Returns:
68  *\li   #ISC_R_SUCCESS  -- the entire decoded representation of 'cstring'
69  *                         fit in 'target'.
70  *\li   #ISC_R_BADHEX -- 'cstr' is not a valid hex encoding.
71  *
72  *      Other error returns are any possible error code from:
73  *              isc_lex_create(),
74  *              isc_lex_openbuffer(),
75  *              isc_hex_tobuffer().
76  */
77
78 isc_result_t
79 isc_hex_tobuffer(isc_lex_t *lexer, isc_buffer_t *target, int length);
80 /*!<
81  * \brief Convert hex encoded text from a lexer context into data.
82  *
83  * Requires:
84  *\li   'lex' is a valid lexer context
85  *\li   'target' is a buffer containing binary data
86  *\li   'length' is an integer
87  *
88  * Ensures:
89  *\li   target will contain the data represented by the hex encoded
90  *      string parsed by the lexer.  No more than length bytes will be read,
91  *      if length is positive.  The 'used' pointer in target will be
92  *      advanced as necessary.
93  */
94
95
96 ISC_LANG_ENDDECLS
97
98 #endif /* ISC_HEX_H */