xref: /llvm-project/libc/src/strings/strncasecmp.cpp (revision 431ea2d076f8a5ca35b2c293dd5d62f5ce083f45)
1*431ea2d0SNick Desaulniers //===-- Implementation of strncasecmp -------------------------------------===//
2*431ea2d0SNick Desaulniers //
3*431ea2d0SNick Desaulniers // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*431ea2d0SNick Desaulniers // See https://llvm.org/LICENSE.txt for license information.
5*431ea2d0SNick Desaulniers // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*431ea2d0SNick Desaulniers //
7*431ea2d0SNick Desaulniers //===----------------------------------------------------------------------===//
8*431ea2d0SNick Desaulniers 
9*431ea2d0SNick Desaulniers #include "src/strings/strncasecmp.h"
10*431ea2d0SNick Desaulniers 
11*431ea2d0SNick Desaulniers #include "src/__support/common.h"
12*431ea2d0SNick Desaulniers #include "src/__support/ctype_utils.h"
13*431ea2d0SNick Desaulniers #include "src/__support/macros/config.h"
14*431ea2d0SNick Desaulniers #include "src/string/memory_utils/inline_strcmp.h"
15*431ea2d0SNick Desaulniers 
16*431ea2d0SNick Desaulniers namespace LIBC_NAMESPACE_DECL {
17*431ea2d0SNick Desaulniers 
18*431ea2d0SNick Desaulniers LLVM_LIBC_FUNCTION(int, strncasecmp,
19*431ea2d0SNick Desaulniers                    (const char *left, const char *right, size_t n)) {
20*431ea2d0SNick Desaulniers   auto case_cmp = [](char a, char b) {
21*431ea2d0SNick Desaulniers     return LIBC_NAMESPACE::internal::tolower(a) -
22*431ea2d0SNick Desaulniers            LIBC_NAMESPACE::internal::tolower(b);
23*431ea2d0SNick Desaulniers   };
24*431ea2d0SNick Desaulniers   return inline_strncmp(left, right, n, case_cmp);
25*431ea2d0SNick Desaulniers }
26*431ea2d0SNick Desaulniers 
27*431ea2d0SNick Desaulniers } // namespace LIBC_NAMESPACE_DECL
28