SS8_CSTR(3) Ssstr Manual SS8_CSTR(3)
NAME
ss8_cstr, ss8_mutable_cstr, ss8_cstr_suffix, ss8_mutable_cstr_suffix -
access the bytes of an ssstr byte string as a null-terminated byte
string
SYNOPSIS
#include <ss8str.h>
char const *ss8_cstr(ss8str const *str);
char *ss8_mutable_cstr(ss8str *str);
char const *ss8_cstr_suffix(ss8str const *str, size_t start);
char *ss8_mutable_cstr_suffix(ss8str *str, size_t start);
DESCRIPTION
The ss8_cstr() family of functions provide direct access to the inter‐
nal buffer of the ss8str that str points to.
ss8_cstr() and ss8_mutable_cstr() return the pointer to the beginning
of the string buffer. A null terminator is always placed after the end
of the buffer. ss8_cstr_suffix() and ss8_mutable_cstr_suffix() return
a pointer offsetted by start bytes, corresponding to a suffix of the
string. Calling ss8_cstr() or ss8_mutable_cstr() is equivalent to
calling ss8_cstr_suffix() or ss8_mutable_cstr_suffix(), respectively,
with start set to zero.
Behavior is undefined unless str points to a valid ss8str object, and
start is less than or equal to the length of the string.
ss8_cstr() and ss8_cstr_suffix() are suitable for passing the contents
of an ss8str to a function expecting a read-only null-terminated byte
string, or a read-only byte string with length at most equal to the
length of str (as determined by ss8_len() and subtracting start in the
case of ss8_cstr_suffix()).
ss8_mutable_cstr() and ss8_mutable_cstr_suffix() allow the use of an
ss8str as the destination when calling a function that fills a caller-
provided buffer with a null-terminated or bound-length byte string.
The available buffer size can be adjusted with ss8_set_len() before‐
hand, and the same function, or ss8_set_len_to_cstrlen(), can be used
afterwards to crop the string to the desired length, if necessary. In
the case of ss8_mutable_cstr_suffix(), start must be subtracted from
the available length.
It is permissible to write 1 byte more than the available length, pro‐
vided that the last byte written is always a null byte.
See ss8_set_len(3) for examples.
RETURN VALUE
All 4 functions return a pointer to the internal string buffer of the
ss8str pointed to by str, offset by start if applicable. The returned
pointer remains valid as long as the ss8str at str remains valid and
unmodified.
SEE ALSO
ss8_len(3), ss8_set_len(3), ss8_set_len_to_cstrlen(3), ssstr(7)
SSSTR 2023-12-30 SS8_CSTR(3)