From 0f374ebc88ed207a2cf649548df99ec34906c7ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 25 Nov 2002 17:35:21 +0000 Subject: [PATCH] Added a strlcpy() call for usage in BeOS (OpenBeOS has it built-in already). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2081 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/file_systems/bfs/Utility.cpp | 19 +++++++++++++++++++ src/add-ons/kernel/file_systems/bfs/Utility.h | 4 ++++ 2 files changed, 23 insertions(+) diff --git a/src/add-ons/kernel/file_systems/bfs/Utility.cpp b/src/add-ons/kernel/file_systems/bfs/Utility.cpp index 4e1d1b91e2..7875078698 100644 --- a/src/add-ons/kernel/file_systems/bfs/Utility.cpp +++ b/src/add-ons/kernel/file_systems/bfs/Utility.cpp @@ -136,3 +136,22 @@ BlockArray::MakeEmpty() fArray->count = 0; } + +// #pragma mark - + + +extern "C" size_t +strlcpy(char *dest, char const *source, size_t length) +{ + if (length == 0) + return strlen(source); + + size_t i = 0; + for (; i < length - 1 && source[i]; i++) + dest[i] = source[i]; + + dest[i] = '\0'; + + return i + strlen(source + i); +} + diff --git a/src/add-ons/kernel/file_systems/bfs/Utility.h b/src/add-ons/kernel/file_systems/bfs/Utility.h index 44af6429d9..14ddd2763f 100644 --- a/src/add-ons/kernel/file_systems/bfs/Utility.h +++ b/src/add-ons/kernel/file_systems/bfs/Utility.h @@ -153,4 +153,8 @@ template struct list { # error The macros atomic_set(), and atomic_test_and_set() are not defined for the target processor #endif + +extern "C" size_t strlcpy(char *dest, char const *source, size_t length); + + #endif /* UTILITY_H */