strscpy(9) Copy a C-string into a sized buffer

SYNOPSIS

ssize_t strscpy(char * dest, const char * src, size_t count);

ARGUMENTS

dest

Where to copy the string to

src

Where to copy the string from

count

Size of destination buffer

DESCRIPTION

Copy the string, or as much of it as fits, into the dest buffer. The routine returns the number of characters copied (not including the trailing NUL) or -E2BIG if the destination buffer wasn't big enough. The behavior is undefined if the string buffers overlap. The destination buffer is always NUL terminated, unless it's zero-sized.

Preferred to strlcpy since the API doesn't require reading memory from the src string beyond the specified "count" bytes, and since the return value is easier to error-check than strlcpy's. In addition, the implementation is robust to the string changing out from underneath it, unlike the current strlcpy implementation.

Preferred to strncpy since it always returns a valid string, and doesn't unnecessarily force the tail of the destination buffer to be zeroed. If the zeroing is desired, it's likely cleaner to use strscpy with an overflow test, then just memset the tail of the dest buffer.

COPYRIGHT