summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAlejandro Colomar <alx@nginx.com>2022-10-27 13:22:19 +0200
committerAlejandro Colomar <alx@kernel.org>2022-11-12 20:39:48 +0100
commitb2571ebac22180eb3fb6568726f82293d2dd8be3 (patch)
treed0785b1f4e2787e8cc17f8f7348118bdff73deb0
parent2461a61574db338ed830de7cce1264cd321ccb2a (diff)
downloadunit-b2571ebac22180eb3fb6568726f82293d2dd8be3.tar.gz
unit-b2571ebac22180eb3fb6568726f82293d2dd8be3.tar.bz2
Added nxt_usts2str() to make C strings from nxt_str_t.str-v1
This function is identical to nxt_ustr2str(), except that it takes a nxt_str_t structure as input, instead of a 'u_char *' and a size. The documentation of the function: /* * SYNOPSIS * void nxt_usts2str(char dst[restrict .src->length+1], * const nxt_str_t *restrict src); * * ARGUMENTS * dst Pointer to the first byte of the destination buffer. * src Pointer to the source Unterminated STring Structure. * * DESCRIPTION * Copy a string from the source nxt_str_t, which may be * not-NUL-terminated, into a NUL-terminated string in the * destination buffer. * * CAVEATS * If the destination buffer is not wider than the source buffer * at least by 1 byte, the behavior is undefined. * * EXAMPLES * nxt_str_t src = nxt_string("0123456789"); * char dst[src.length + 1]; * * nxt_usts2str(dst, &src); * * SEE ALSO * ustr2str(3), strlcpy(3), strscpy(9) */ Suggested-by: Andrew Clayton <a.clayton@nginx.com> Signed-off-by: Alejandro Colomar <alx@nginx.com>
-rw-r--r--src/nxt_string.c2
-rw-r--r--src/nxt_string.h9
2 files changed, 11 insertions, 0 deletions
diff --git a/src/nxt_string.c b/src/nxt_string.c
index 39f472e9..8c86f3b0 100644
--- a/src/nxt_string.c
+++ b/src/nxt_string.c
@@ -9,6 +9,8 @@
extern inline void nxt_ustr2str(char *restrict dst, const u_char *restrict src,
size_t length);
+extern inline void nxt_usts2str(char *restrict dst,
+ const nxt_str_t *restrict src);
nxt_str_t *
diff --git a/src/nxt_string.h b/src/nxt_string.h
index 275a62ee..c6d6798e 100644
--- a/src/nxt_string.h
+++ b/src/nxt_string.h
@@ -60,6 +60,8 @@ struct nxt_str_s {
NXT_EXPORT inline void nxt_ustr2str(char *restrict dst,
const u_char *restrict src, size_t length);
+NXT_EXPORT inline void nxt_usts2str(char *restrict dst,
+ const nxt_str_t *restrict src);
NXT_EXPORT void nxt_memcpy_lowcase(u_char *dst, const u_char *src,
size_t length);
@@ -182,4 +184,11 @@ nxt_ustr2str(char *restrict dst, const u_char *restrict src, size_t length)
}
+inline void
+nxt_usts2str(char *restrict dst, const nxt_str_t *restrict src)
+{
+ nxt_ustr2str(dst, src->start, src->length);
+}
+
+
#endif /* _NXT_STRING_H_INCLUDED_ */