18 lines
307 B
C
18 lines
307 B
C
|
#include "strscpy.h"
|
||
|
#include <limits.h> /* SSIZE_MAX */
|
||
|
|
||
|
ssize_t uv__strscpy(char* d, const char* s, size_t n) {
|
||
|
size_t i;
|
||
|
|
||
|
for (i = 0; i < n; i++)
|
||
|
if ('\0' == (d[i] = s[i]))
|
||
|
return i > SSIZE_MAX ? UV_E2BIG : (ssize_t) i;
|
||
|
|
||
|
if (i == 0)
|
||
|
return 0;
|
||
|
|
||
|
d[--i] = '\0';
|
||
|
|
||
|
return UV_E2BIG;
|
||
|
}
|