xref: /llvm-project/libc/src/strings/strcasecmp.cpp (revision 431ea2d076f8a5ca35b2c293dd5d62f5ce083f45)
1*431ea2d0SNick Desaulniers //===-- Implementation of strcasecmp --------------------------------------===//
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/strcasecmp.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, strcasecmp, (const char *left, const char *right)) {
19*431ea2d0SNick Desaulniers   auto case_cmp = [](char a, char b) {
20*431ea2d0SNick Desaulniers     return LIBC_NAMESPACE::internal::tolower(a) -
21*431ea2d0SNick Desaulniers            LIBC_NAMESPACE::internal::tolower(b);
22*431ea2d0SNick Desaulniers   };
23*431ea2d0SNick Desaulniers   return inline_strcmp(left, right, case_cmp);
24*431ea2d0SNick Desaulniers }
25*431ea2d0SNick Desaulniers 
26*431ea2d0SNick Desaulniers } // namespace LIBC_NAMESPACE_DECL
27