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 */