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>