From 88d716e126b98d776bcb262d0dea87e6c139e40f Mon Sep 17 00:00:00 2001 From: John Barboza Date: Thu, 16 Nov 2017 20:20:39 -0500 Subject: [PATCH] zos: add strnlen() implementation Add an implementation of strnlen() which is not provided by default. PR-URL: https://github.com/libuv/libuv/pull/1631 Reviewed-By: Ben Noordhuis Reviewed-By: Colin Ihrig --- src/unix/os390-syscalls.c | 9 +++++++++ src/unix/os390-syscalls.h | 1 + 2 files changed, 10 insertions(+) diff --git a/src/unix/os390-syscalls.c b/src/unix/os390-syscalls.c index 86c6852b..5bc48938 100644 --- a/src/unix/os390-syscalls.c +++ b/src/unix/os390-syscalls.c @@ -427,3 +427,12 @@ ssize_t os390_readlink(const char* path, char* buf, size_t len) { return rlen; } + + +size_t strnlen(const char* str, size_t maxlen) { + void* p = memchr(str, 0, maxlen); + if (p == NULL) + return maxlen; + else + return p - str; +} diff --git a/src/unix/os390-syscalls.h b/src/unix/os390-syscalls.h index 7aba3d27..5ce6a681 100644 --- a/src/unix/os390-syscalls.h +++ b/src/unix/os390-syscalls.h @@ -66,5 +66,6 @@ int scandir(const char* maindir, struct dirent*** namelist, const struct dirent **)); char *mkdtemp(char* path); ssize_t os390_readlink(const char* path, char* buf, size_t len); +size_t strnlen(const char* str, size_t maxlen); #endif /* UV_OS390_SYSCALL_H_ */