By making use of strncpy(), both implementations are really simple so
there is no need to add libbsd as additional dependency.

Signed-off-by: Phil Sutter <p...@nwl.cc>
---
 include/utils.h |  3 +++
 lib/utils.c     | 19 +++++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/include/utils.h b/include/utils.h
index f665d9001806f..9c2f9fc257fba 100644
--- a/include/utils.h
+++ b/include/utils.h
@@ -252,4 +252,7 @@ int make_path(const char *path, mode_t mode);
 char *find_cgroup2_mount(void);
 int get_command_name(const char *pid, char *comm, size_t len);
 
+size_t strlcpy(char *dst, const char *src, size_t size);
+size_t strlcat(char *dst, const char *src, size_t size);
+
 #endif /* __UTILS_H__ */
diff --git a/lib/utils.c b/lib/utils.c
index 002063075fd61..c95780e725252 100644
--- a/lib/utils.c
+++ b/lib/utils.c
@@ -1238,3 +1238,22 @@ int get_real_family(int rtm_type, int rtm_family)
 
        return rtm_family;
 }
+
+size_t strlcpy(char *dst, const char *src, size_t size)
+{
+       if (size) {
+               strncpy(dst, src, size - 1);
+               dst[size - 1] = '\0';
+       }
+       return strlen(src);
+}
+
+size_t strlcat(char *dst, const char *src, size_t size)
+{
+       size_t dlen = strlen(dst);
+
+       if (dlen > size)
+               return dlen + strlen(src);
+
+       return dlen + strlcpy(dst + dlen, src, size - dlen);
+}
-- 
2.13.1

Reply via email to