xref: /netbsd-src/external/mit/libuv/dist/src/strscpy.c (revision e7ac2a8b5bd66fa2e050809de09a075c36a7014d)
1 #include "strscpy.h"
2 #include <limits.h>  /* SSIZE_MAX */
3 
4 ssize_t uv__strscpy(char* d, const char* s, size_t n) {
5   size_t i;
6 
7   for (i = 0; i < n; i++)
8     if ('\0' == (d[i] = s[i]))
9       return i > SSIZE_MAX ? UV_E2BIG : (ssize_t) i;
10 
11   if (i == 0)
12     return 0;
13 
14   d[--i] = '\0';
15 
16   return UV_E2BIG;
17 }
18