diff options
author | Alejandro Colomar <alx@nginx.com> | 2022-10-27 13:22:19 +0200 |
---|---|---|
committer | Alejandro Colomar <alx@nginx.com> | 2022-11-16 13:04:08 +0100 |
commit | 5ab7ae702c0e4a65653ba346bd5bf20506224842 (patch) | |
tree | 7d3ab9ed2fece0db438e5f83b9cbb5e953de6805 | |
parent | 647c349be1235ce9f43bb53d30e21f4e6dae0bd3 (diff) | |
download | unit-5ab7ae702c0e4a65653ba346bd5bf20506224842.tar.gz unit-5ab7ae702c0e4a65653ba346bd5bf20506224842.tar.bz2 |
Added nxt_usts2str() to make C strings from nxt_str_t.
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.c | 2 | ||||
-rw-r--r-- | src/nxt_string.h | 9 |
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 62459987..ae5d3179 100644 --- a/src/nxt_string.h +++ b/src/nxt_string.h @@ -122,6 +122,8 @@ typedef struct { 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 nxt_str_t *nxt_str_alloc(nxt_mp_t *mp, size_t length); NXT_EXPORT nxt_str_t *nxt_str_dup(nxt_mp_t *mp, nxt_str_t *dst, @@ -179,4 +181,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_ */ |