* The buffer dest must be large enough to hold at least n+1 characters.
*/
static inline char *str_ncpy(char *dest, const char *src, size_t n) {
- *dest = '\0';
- return strncat(dest, src, n);
+ char *d = dest;
+
+ while ( *src && n-- )
+ *d++ = *src++;
+ *d = '\0';
+ return dest;
}
{
H("str_ncpy");
- char s[11] = { 0 };
+ char s[11] = "_deadbeef_";
+ D(s);
+ T(strcmp(str_ncpy(s, "foobar", 0), "") == 0);
+ D(s);
+ T(strcmp(str_ncpy(s, "foobar", 1), "f") == 0);
D(s);
T(strcmp(str_ncpy(s, "foobar", 10), "foobar") == 0);
D(s);