Hi Chris, On Wed, Jul 8, 2015 at 10:20 PM, Chris Metcalf <cmetcalf@xxxxxxxxxx> wrote: > + * strscpy - Copy a C-string into a sized buffer > + * @dest: Where to copy the string to > + * @src: Where to copy the string from > + * @count: Size of destination buffer > + * > + * 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. > + * If the destination buffer isn't big enough, it is NUL terminated. ... unless count is zero and it's also NUL terminated if it is big enough ;-) Perhaps "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. > + */ > +ssize_t strscpy(char *dest, const char *src, size_t count) > +{ > + const struct word_at_a_time constants = WORD_AT_A_TIME_CONSTANTS; > + size_t max = count; > + long res = 0; > + > + if (count == 0) > + return -E2BIG; Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html