/* * Copyright (C) Internet Systems Consortium, Inc. ("ISC") * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * See the COPYRIGHT file distributed with this work for additional * information regarding copyright ownership. */ /* $Id: string.h,v 1.23 2007/09/13 04:48:16 each Exp $ */ #ifndef ISC_STRING_H #define ISC_STRING_H 1 /*! \file isc/string.h */ #include <isc/formatcheck.h> #include <isc/int.h> #include <isc/lang.h> #include <isc/platform.h> #include <isc/types.h> #include <string.h> #ifdef ISC_PLATFORM_HAVESTRINGSH #include <strings.h> #endif #define ISC_STRING_MAGIC 0x5e ISC_LANG_BEGINDECLS isc_uint64_t isc_string_touint64(char *source, char **endp, int base); /*%< * Convert the string pointed to by 'source' to isc_uint64_t. * * On successful conversion 'endp' points to the first character * after conversion is complete. * * 'base': 0 or 2..36 * * If base is 0 the base is computed from the string type. * * On error 'endp' points to 'source'. */ isc_result_t isc_string_copy(char *target, size_t size, const char *source); /* * Copy the string pointed to by 'source' to 'target' which is a * pointer to a string of at least 'size' bytes. * * Requires: * 'target' is a pointer to a char[] of at least 'size' bytes. * 'size' an integer > 0. * 'source' == NULL or points to a NUL terminated string. * * Ensures: * If result == ISC_R_SUCCESS * 'target' will be a NUL terminated string of no more * than 'size' bytes (including NUL). * * If result == ISC_R_NOSPACE * 'target' is undefined. * * Returns: * ISC_R_SUCCESS -- 'source' was successfully copied to 'target'. * ISC_R_NOSPACE -- 'source' could not be copied since 'target' * is too small. */ void isc_string_copy_truncate(char *target, size_t size, const char *source); /* * Copy the string pointed to by 'source' to 'target' which is a * pointer to a string of at least 'size' bytes. * * Requires: * 'target' is a pointer to a char[] of at least 'size' bytes. * 'size' an integer > 0. * 'source' == NULL or points to a NUL terminated string. * * Ensures: * 'target' will be a NUL terminated string of no more * than 'size' bytes (including NUL). */ isc_result_t isc_string_append(char *target, size_t size, const char *source); /* * Append the string pointed to by 'source' to 'target' which is a * pointer to a NUL terminated string of at least 'size' bytes. * * Requires: * 'target' is a pointer to a NUL terminated char[] of at * least 'size' bytes. * 'size' an integer > 0. * 'source' == NULL or points to a NUL terminated string. * * Ensures: * If result == ISC_R_SUCCESS * 'target' will be a NUL terminated string of no more * than 'size' bytes (including NUL). * * If result == ISC_R_NOSPACE * 'target' is undefined. * * Returns: * ISC_R_SUCCESS -- 'source' was successfully appended to 'target'. * ISC_R_NOSPACE -- 'source' could not be appended since 'target' * is too small. */ void isc_string_append_truncate(char *target, size_t size, const char *source); /* * Append the string pointed to by 'source' to 'target' which is a * pointer to a NUL terminated string of at least 'size' bytes. * * Requires: * 'target' is a pointer to a NUL terminated char[] of at * least 'size' bytes. * 'size' an integer > 0. * 'source' == NULL or points to a NUL terminated string. * * Ensures: * 'target' will be a NUL terminated string of no more * than 'size' bytes (including NUL). */ isc_result_t isc_string_printf(char *target, size_t size, const char *format, ...) ISC_FORMAT_PRINTF(3, 4); /* * Print 'format' to 'target' which is a pointer to a string of at least * 'size' bytes. * * Requires: * 'target' is a pointer to a char[] of at least 'size' bytes. * 'size' an integer > 0. * 'format' == NULL or points to a NUL terminated string. * * Ensures: * If result == ISC_R_SUCCESS * 'target' will be a NUL terminated string of no more * than 'size' bytes (including NUL). * * If result == ISC_R_NOSPACE * 'target' is undefined. * * Returns: * ISC_R_SUCCESS -- 'format' was successfully printed to 'target'. * ISC_R_NOSPACE -- 'format' could not be printed to 'target' since it * is too small. */ void isc_string_printf_truncate(char *target, size_t size, const char *format, ...) ISC_FORMAT_PRINTF(3, 4); /* * Print 'format' to 'target' which is a pointer to a string of at least * 'size' bytes. * * Requires: * 'target' is a pointer to a char[] of at least 'size' bytes. * 'size' an integer > 0. * 'format' == NULL or points to a NUL terminated string. * * Ensures: * 'target' will be a NUL terminated string of no more * than 'size' bytes (including NUL). */ char * isc_string_regiondup(isc_mem_t *mctx, const isc_region_t *source); /* * Copy the region pointed to by r to a NUL terminated string * allocated from the memory context pointed to by mctx. * * The result should be deallocated using isc_mem_free() * * Requires: * 'mctx' is a point to a valid memory context. * 'source' is a pointer to a valid region. * * Returns: * a pointer to a NUL terminated string or * NULL if memory for the copy could not be allocated * */ char * isc_string_separate(char **stringp, const char *delim); #ifdef ISC_PLATFORM_NEEDSTRSEP #define strsep isc_string_separate #endif #ifdef ISC_PLATFORM_NEEDMEMMOVE #define memmove(a,b,c) bcopy(b,a,c) #endif size_t isc_string_strlcpy(char *dst, const char *src, size_t size); #ifdef ISC_PLATFORM_NEEDSTRLCPY #define strlcpy isc_string_strlcpy #endif size_t isc_string_strlcat(char *dst, const char *src, size_t size); #ifdef ISC_PLATFORM_NEEDSTRLCAT #define strlcat isc_string_strlcat #endif char * isc_string_strcasestr(const char *big, const char *little); #ifdef ISC_PLATFORM_NEEDSTRCASESTR #define strcasestr isc_string_strcasestr #endif ISC_LANG_ENDDECLS #endif /* ISC_STRING_H */
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
aes.h | File | 1.05 KB | 0644 |
|
app.h | File | 10.23 KB | 0644 |
|
assertions.h | File | 2.78 KB | 0644 |
|
atomic.h | File | 4.15 KB | 0644 |
|
backtrace.h | File | 3.8 KB | 0644 |
|
base32.h | File | 3.94 KB | 0644 |
|
base64.h | File | 2.39 KB | 0644 |
|
bind9.h | File | 849 B | 0644 |
|
boolean.h | File | 746 B | 0644 |
|
buffer.h | File | 25.69 KB | 0644 |
|
bufferlist.h | File | 1.42 KB | 0644 |
|
commandline.h | File | 1.69 KB | 0644 |
|
condition.h | File | 1.44 KB | 0644 |
|
counter.h | File | 1.88 KB | 0644 |
|
crc64.h | File | 986 B | 0644 |
|
deprecated.h | File | 622 B | 0644 |
|
dir.h | File | 1.96 KB | 0644 |
|
entropy.h | File | 8.76 KB | 0644 |
|
errno.h | File | 658 B | 0644 |
|
errno2result.h | File | 893 B | 0644 |
|
error.h | File | 1.4 KB | 0644 |
|
event.h | File | 2.98 KB | 0644 |
|
eventclass.h | File | 1.35 KB | 0644 |
|
file.h | File | 11.43 KB | 0644 |
|
formatcheck.h | File | 892 B | 0644 |
|
fsaccess.h | File | 7.25 KB | 0644 |
|
hash.h | File | 7.52 KB | 0644 |
|
heap.h | File | 5.14 KB | 0644 |
|
hex.h | File | 2.33 KB | 0644 |
|
hmacmd5.h | File | 1.75 KB | 0644 |
|
hmacsha.h | File | 4.44 KB | 0644 |
|
ht.h | File | 4.29 KB | 0644 |
|
httpd.h | File | 2.26 KB | 0644 |
|
int.h | File | 1.37 KB | 0644 |
|
interfaceiter.h | File | 3.03 KB | 0644 |
|
iterated_hash.h | File | 1.02 KB | 0644 |
|
json.h | File | 1.42 KB | 0644 |
|
keyboard.h | File | 976 B | 0644 |
|
lang.h | File | 636 B | 0644 |
|
lex.h | File | 9.42 KB | 0644 |
|
lfsr.h | File | 2.88 KB | 0644 |
|
lib.h | File | 1.04 KB | 0644 |
|
likely.h | File | 718 B | 0644 |
|
list.h | File | 5.65 KB | 0644 |
|
log.h | File | 28.06 KB | 0644 |
|
magic.h | File | 993 B | 0644 |
|
md5.h | File | 2.34 KB | 0644 |
|
mem.h | File | 20.63 KB | 0644 |
|
meminfo.h | File | 690 B | 0644 |
|
msgcat.h | File | 2.66 KB | 0644 |
|
msgs.h | File | 8.22 KB | 0644 |
|
mutex.h | File | 3.44 KB | 0644 |
|
mutexblock.h | File | 1.34 KB | 0644 |
|
net.h | File | 10.32 KB | 0644 |
|
netaddr.h | File | 4.56 KB | 0644 |
|
netdb.h | File | 862 B | 0644 |
|
netscope.h | File | 947 B | 0644 |
|
offset.h | File | 699 B | 0644 |
|
once.h | File | 981 B | 0644 |
|
ondestroy.h | File | 2.79 KB | 0644 |
|
os.h | File | 670 B | 0644 |
|
parseint.h | File | 1.49 KB | 0644 |
|
platform.h | File | 9.31 KB | 0644 |
|
pool.h | File | 3.42 KB | 0644 |
|
portset.h | File | 3.21 KB | 0644 |
|
print.h | File | 2.49 KB | 0644 |
|
queue.h | File | 4.66 KB | 0644 |
|
quota.h | File | 2.29 KB | 0644 |
|
radix.h | File | 6.37 KB | 0644 |
|
random.h | File | 2.99 KB | 0644 |
|
ratelimiter.h | File | 3.38 KB | 0644 |
|
refcount.h | File | 7.89 KB | 0644 |
|
regex.h | File | 766 B | 0644 |
|
region.h | File | 1.99 KB | 0644 |
|
resource.h | File | 2.8 KB | 0644 |
|
result.h | File | 4.62 KB | 0644 |
|
resultclass.h | File | 1.56 KB | 0644 |
|
rwlock.h | File | 3.6 KB | 0644 |
|
safe.h | File | 1.21 KB | 0644 |
|
serial.h | File | 1.4 KB | 0644 |
|
sha1.h | File | 1.52 KB | 0644 |
|
sha2.h | File | 5.65 KB | 0644 |
|
sockaddr.h | File | 6 KB | 0644 |
|
socket.h | File | 35.81 KB | 0644 |
|
stat.h | File | 805 B | 0644 |
|
stats.h | File | 3.02 KB | 0644 |
|
stdio.h | File | 1.74 KB | 0644 |
|
stdlib.h | File | 703 B | 0644 |
|
stdtime.h | File | 1.3 KB | 0644 |
|
strerror.h | File | 776 B | 0644 |
|
string.h | File | 5.94 KB | 0644 |
|
symtab.h | File | 4.21 KB | 0644 |
|
syslog.h | File | 843 B | 0644 |
|
task.h | File | 21.08 KB | 0644 |
|
taskpool.h | File | 3.61 KB | 0644 |
|
thread.h | File | 1.47 KB | 0644 |
|
time.h | File | 8.66 KB | 0644 |
|
timer.h | File | 10.54 KB | 0644 |
|
tm.h | File | 894 B | 0644 |
|
types.h | File | 5.54 KB | 0644 |
|
util.h | File | 7.49 KB | 0644 |
|
version.h | File | 688 B | 0644 |
|
xml.h | File | 1.07 KB | 0644 |
|