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" 10c92d1aa4Scgyurgyik #include "src/string/string_utils.h" 11f773d37eScgyurgyik 12f773d37eScgyurgyik #include "src/__support/common.h" 13f773d37eScgyurgyik #include <stddef.h> 14f773d37eScgyurgyik 15f773d37eScgyurgyik namespace __llvm_libc { 16f773d37eScgyurgyik 17*a0b65a7bSMichael Jones LLVM_LIBC_FUNCTION(size_t, strnlen, (const char *src, size_t n)) { 18c92d1aa4Scgyurgyik const void *temp = internal::find_first_character( 19c92d1aa4Scgyurgyik reinterpret_cast<const unsigned char *>(src), '\0', n); 20c92d1aa4Scgyurgyik return temp ? reinterpret_cast<const char *>(temp) - src : n; 21f773d37eScgyurgyik } 22f773d37eScgyurgyik 23f773d37eScgyurgyik } // namespace __llvm_libc 24