Annotation of embedaddon/dhcp/includes/isc-dhcp/string.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
3: * Copyright (C) 2000, 2001, 2003 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:
1.1.1.1 ! misho 18: /* $Id: string.h,v 1.2 2007/11/16 11:04:11 shane Exp $ */
1.1 misho 19:
20: #ifndef ISC_STRING_H
21: #define ISC_STRING_H 1
22:
23: /*! \file isc/string.h */
24:
25: #include <isc-dhcp/formatcheck.h>
26: #include <isc-dhcp/int.h>
27: #include <isc-dhcp/lang.h>
28: /*#include <isc-dhcp/platform.h>*/
29: #include <isc-dhcp/types.h>
30: #include <isc-dhcp/result.h>
31:
32: #include <string.h>
33:
34: #ifdef ISC_PLATFORM_HAVESTRINGSH
35: #include <strings.h>
36: #endif
37:
38: #define ISC_STRING_MAGIC 0x5e
39:
40: ISC_LANG_BEGINDECLS
41:
42: isc_uint64_t
43: isc_string_touint64(char *source, char **endp, int base);
44: /*%<
45: * Convert the string pointed to by 'source' to isc_uint64_t.
46: *
47: * On successful conversion 'endp' points to the first character
48: * after conversion is complete.
49: *
50: * 'base': 0 or 2..36
51: *
52: * If base is 0 the base is computed from the string type.
53: *
54: * On error 'endp' points to 'source'.
55: */
56:
57: isc_result_t
58: isc_string_copy(char *target, size_t size, const char *source);
59: /*
60: * Copy the string pointed to by 'source' to 'target' which is a
61: * pointer to a string of at least 'size' bytes.
62: *
63: * Requires:
64: * 'target' is a pointer to a char[] of at least 'size' bytes.
65: * 'size' an integer > 0.
66: * 'source' == NULL or points to a NUL terminated string.
67: *
68: * Ensures:
69: * If result == ISC_R_SUCCESS
70: * 'target' will be a NUL terminated string of no more
71: * than 'size' bytes (including NUL).
72: *
73: * If result == ISC_R_NOSPACE
74: * 'target' is undefined.
75: *
76: * Returns:
77: * ISC_R_SUCCESS -- 'source' was successfully copied to 'target'.
78: * ISC_R_NOSPACE -- 'source' could not be copied since 'target'
79: * is too small.
80: */
81:
82: void
83: isc_string_copy_truncate(char *target, size_t size, const char *source);
84: /*
85: * Copy the string pointed to by 'source' to 'target' which is a
86: * pointer to a string of at least 'size' bytes.
87: *
88: * Requires:
89: * 'target' is a pointer to a char[] of at least 'size' bytes.
90: * 'size' an integer > 0.
91: * 'source' == NULL or points to a NUL terminated string.
92: *
93: * Ensures:
94: * 'target' will be a NUL terminated string of no more
95: * than 'size' bytes (including NUL).
96: */
97:
98: isc_result_t
99: isc_string_append(char *target, size_t size, const char *source);
100: /*
101: * Append the string pointed to by 'source' to 'target' which is a
102: * pointer to a NUL terminated string of at least 'size' bytes.
103: *
104: * Requires:
105: * 'target' is a pointer to a NUL terminated char[] of at
106: * least 'size' bytes.
107: * 'size' an integer > 0.
108: * 'source' == NULL or points to a NUL terminated string.
109: *
110: * Ensures:
111: * If result == ISC_R_SUCCESS
112: * 'target' will be a NUL terminated string of no more
113: * than 'size' bytes (including NUL).
114: *
115: * If result == ISC_R_NOSPACE
116: * 'target' is undefined.
117: *
118: * Returns:
119: * ISC_R_SUCCESS -- 'source' was successfully appended to 'target'.
120: * ISC_R_NOSPACE -- 'source' could not be appended since 'target'
121: * is too small.
122: */
123:
124: void
125: isc_string_append_truncate(char *target, size_t size, const char *source);
126: /*
127: * Append the string pointed to by 'source' to 'target' which is a
128: * pointer to a NUL terminated string of at least 'size' bytes.
129: *
130: * Requires:
131: * 'target' is a pointer to a NUL terminated char[] of at
132: * least 'size' bytes.
133: * 'size' an integer > 0.
134: * 'source' == NULL or points to a NUL terminated string.
135: *
136: * Ensures:
137: * 'target' will be a NUL terminated string of no more
138: * than 'size' bytes (including NUL).
139: */
140:
141: isc_result_t
142: isc_string_printf(char *target, size_t size, const char *format, ...)
143: ISC_FORMAT_PRINTF(3, 4);
144: /*
145: * Print 'format' to 'target' which is a pointer to a string of at least
146: * 'size' bytes.
147: *
148: * Requires:
149: * 'target' is a pointer to a char[] of at least 'size' bytes.
150: * 'size' an integer > 0.
151: * 'format' == NULL or points to a NUL terminated string.
152: *
153: * Ensures:
154: * If result == ISC_R_SUCCESS
155: * 'target' will be a NUL terminated string of no more
156: * than 'size' bytes (including NUL).
157: *
158: * If result == ISC_R_NOSPACE
159: * 'target' is undefined.
160: *
161: * Returns:
162: * ISC_R_SUCCESS -- 'format' was successfully printed to 'target'.
163: * ISC_R_NOSPACE -- 'format' could not be printed to 'target' since it
164: * is too small.
165: */
166:
167: void
168: isc_string_printf_truncate(char *target, size_t size, const char *format, ...)
169: ISC_FORMAT_PRINTF(3, 4);
170: /*
171: * Print 'format' to 'target' which is a pointer to a string of at least
172: * 'size' bytes.
173: *
174: * Requires:
175: * 'target' is a pointer to a char[] of at least 'size' bytes.
176: * 'size' an integer > 0.
177: * 'format' == NULL or points to a NUL terminated string.
178: *
179: * Ensures:
180: * 'target' will be a NUL terminated string of no more
181: * than 'size' bytes (including NUL).
182: */
183:
184:
185: /*
186: char *
187: isc_string_regiondup(isc_mem_t *mctx, const isc_region_t *source);
188: */
189: /*
190: * Copy the region pointed to by r to a NUL terminated string
191: * allocated from the memory context pointed to by mctx.
192: *
193: * The result should be deallocated using isc_mem_free()
194: *
195: * Requires:
196: * 'mctx' is a point to a valid memory context.
197: * 'source' is a pointer to a valid region.
198: *
199: * Returns:
200: * a pointer to a NUL terminated string or
201: * NULL if memory for the copy could not be allocated
202: *
203: */
204:
205: char *
206: isc_string_separate(char **stringp, const char *delim);
207:
208: #ifdef ISC_PLATFORM_NEEDSTRSEP
209: #define strsep isc_string_separate
210: #endif
211:
212: #ifdef ISC_PLATFORM_NEEDMEMMOVE
213: #define memmove(a,b,c) bcopy(b,a,c)
214: #endif
215:
216: size_t
217: isc_string_strlcpy(char *dst, const char *src, size_t size);
218:
219:
220: #ifdef ISC_PLATFORM_NEEDSTRLCPY
221: #define strlcpy isc_string_strlcpy
222: #endif
223:
224:
225: size_t
226: isc_string_strlcat(char *dst, const char *src, size_t size);
227:
228: #ifdef ISC_PLATFORM_NEEDSTRLCAT
229: #define strlcat isc_string_strlcat
230: #endif
231:
232: ISC_LANG_ENDDECLS
233:
234: #endif /* ISC_STRING_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>