strscpy.c 307 B

1234567891011121314151617
  1. #include "strscpy.h"
  2. #include <limits.h> /* SSIZE_MAX */
  3. ssize_t uv__strscpy(char* d, const char* s, size_t n) {
  4. size_t i;
  5. for (i = 0; i < n; i++)
  6. if ('\0' == (d[i] = s[i]))
  7. return i > SSIZE_MAX ? UV_E2BIG : (ssize_t) i;
  8. if (i == 0)
  9. return 0;
  10. d[--i] = '\0';
  11. return UV_E2BIG;
  12. }