c/string/byte/strncat

@1@ Appends at most characters from the character array pointed to by, stopping if the null character is found, to the end of the null-terminated byte string pointed to by. The character replaces the null terminator at the end of. The terminating null character is always appended in the end (so the maximum number of bytes the function may write is ). @@The behavior is undefined if the destination array does not have enough space for the contents of both and the first  characters of, plus the terminating null character. The behavior is undefined if the source and destination objects overlap. The behavior is undefined if either is not a pointer to a null-terminated byte string or  is not a pointer to a character array, @2@ Same as, except that this function may clobber the remainder of the destination array (from the last byte written to ) and that the following errors are detected at runtime and call the currently installed constraint handler function:
 * or is a null pointer
 * or is zero or greater than rsize_max
 * there is no null character in the first bytes of
 * truncation would occur: or the length of, whichever is less, exceeds the space available between the null terminator of  and.
 * overlap would occur between the source and the destination strings

@@The behavior is undefined if the size of the character array pointed to by <  < ; in other words, an erroneous value of  does not expose the impending buffer overflow. The behavior is undefined if the size of the character array pointed to by <  < ; in other words, an erroneous value of  does not expose the impending buffer overflow.

Return value
@1@ returns a copy of @2@ returns zero on success, returns non-zero on error. Also, on error, writes zero to (unless  is a null pointer or  is zero or greater than rsize_max).