1f773d37eScgyurgyik //===-- Implementation of strnlen------------------------------------------===// 2f773d37eScgyurgyik // 3f773d37eScgyurgyik // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4f773d37eScgyurgyik // See https://llvm.org/LICENSE.txt for license information. 5f773d37eScgyurgyik // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6f773d37eScgyurgyik // 7f773d37eScgyurgyik //===----------------------------------------------------------------------===// 8f773d37eScgyurgyik 9f773d37eScgyurgyik #include "src/string/strnlen.h" 10*5ff3ff33SPetr Hosek #include "src/__support/macros/config.h" 11c92d1aa4Scgyurgyik #include "src/string/string_utils.h" 12f773d37eScgyurgyik 13f773d37eScgyurgyik #include "src/__support/common.h" 14f773d37eScgyurgyik #include <stddef.h> 15f773d37eScgyurgyik 16*5ff3ff33SPetr Hosek namespace LIBC_NAMESPACE_DECL { 17f773d37eScgyurgyik 18a0b65a7bSMichael Jones LLVM_LIBC_FUNCTION(size_t, strnlen, (const char *src, size_t n)) { 19c92d1aa4Scgyurgyik const void *temp = internal::find_first_character( 20c92d1aa4Scgyurgyik reinterpret_cast<const unsigned char *>(src), '\0', n); 21c92d1aa4Scgyurgyik return temp ? reinterpret_cast<const char *>(temp) - src : n; 22f773d37eScgyurgyik } 23f773d37eScgyurgyik 24*5ff3ff33SPetr Hosek } // namespace LIBC_NAMESPACE_DECL 25