% limb manual
% stralloc_cat(3)
% limb 0.1.0
% 2023-07-24
# NAME
stralloc_catb, stralloc_cats, stralloc_cats0, stralloc_catv, stralloc_cat,
stralloc_copyb, stralloc_copys, stralloc_copys0, stralloc_copy,
stralloc_insertb, stralloc_inserts, stralloc_inserts0, stralloc_insert,
stralloc_append, stralloc_0 - adding data into a stralloc
# SYNOPSIS
#include <limb/stralloc.h>
```pre hl
int stralloc_catb(stralloc *<em>sa</em>, const char *<em>data</em>, size_t <em>dlen</em>)
int stralloc_cats(stralloc *<em>sa</em>, const char *<em>str</em>)
int stralloc_cats0(stralloc *<em>sa</em>, const char *<em>str</em>)
int stralloc_catv(stralloc *<em>sa</em>, const struct iovec *<em>v</em>, unsigned <em>n</em>)
int stralloc_cat(stralloc *<em>sa</em>, const stralloc *<em>sasce</em>)
int stralloc_copyb(stralloc *<em>sa</em>, const char *<em>data</em>, size_t <em>dlen</em>)
int stralloc_copys(stralloc *<em>sa</em>, const char *<em>str</em>)
int stralloc_copys0(stralloc *<em>sa</em>, const char *<em>str</em>)
int stralloc_copy(stralloc *<em>sa</em>, const stralloc *<em>sasce</em>)
int stralloc_insertb(stralloc *<em>sa</em>, size_t <em>offset</em>, const char *<em>data</em>, size_t <em>dlen</em>)
int stralloc_inserts(stralloc *<em>sa</em>, size_t <em>offset</em>, const char *<em>str</em>)
int stralloc_inserts0(stralloc *<em>sa</em>, size_t <em>offset</em>, const char *<em>str</em>)
int stralloc_insert(stralloc *<em>sa</em>, size_t <em>offset</em>, const stralloc *<em>sasce</em>)
int stralloc_append(stralloc *<em>sa</em>, char <em>c</em>)
int stralloc_0(stralloc *<em>sa</em>)
```
# DESCRIPTION
The `stralloc_catb`() function appends the content of memory pointed by `data`
of length `dlen` into the stralloc `sa`.
The `stralloc_cats`() function is similar to `stralloc_catb`() but appending
the NUL-terminated string pointed by `str`, not including said NUL-terminating
byte.
The `stralloc_cats0`() function is similar to `stralloc_cats`() but including
the NUL-terminating byte.
The `stralloc_catv`() function is similar to `stralloc_catb`() but gathering the
data to add from the array of vectors `v` of `n` elements.
The `stralloc_cat`() function is similar to `stralloc_catb`() function but
appending the content of stralloc `sasce`.
The `stralloc_copyb`() function copies the content of memory pointed by `data`
of length `dlen` into the stralloc `sa`. That is, the stralloc will only contain
`data` afterwards.
The `stralloc_copys`() function is similar to `stralloc_copyb`() but copying
the NUL-terminated string pointed by `str`, not including said NUL-terminating
byte.
The `stralloc_copys0`() function is similar to `stralloc_copys`() but including
the NUL-terminating byte.
The `stralloc_copy`() function is similar to `stralloc_copyb`() function but
copying the content of stralloc `sasce`.
The `stralloc_insertb`() function inserts the content of memory pointed by
`data` of length `dlen` into the stralloc `sa` at offset `offset`.
The `stralloc_inserts`() function is similar to `stralloc_insertb`() but
inserting the NUL-terminated string pointed by `str`, not including said
NUL-terminating byte.
The `stralloc_inserts0`() function is similar to `stralloc_inserts`() but
including the NUL-terminating byte.
The `stralloc_insert`() function is similar to `stralloc_insertb`() function but
inserting the content of stralloc `sasce`.
The `stralloc_append`() function appends byte `c` into the stralloc `sa`.
The `stralloc_0`() function appends a NUL-byte into stralloc `sa`.
! NOTE:
! Obviously all these function ensure that there is enough room available in the
! stralloc `sa` before writing data into it.
# RETURN VALUE
These functions return 1 on success. Otherwise they return 0 and set `errno` to
indicate the error.
# ERRORS
These functions may fail if :
: *ENOMEM*
:: Out of memory.
The `stralloc_insertb`(), `stralloc_inserts`(), `stralloc_inserts0`() and
`stralloc_insert`() functions may also fail if :
: *EINVAL*
:: The `offset` is too high.