1e8a2af28Scgyurgyik //===-- Implementation of strrchr------------------------------------------===//
2e8a2af28Scgyurgyik //
3e8a2af28Scgyurgyik // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4e8a2af28Scgyurgyik // See https://llvm.org/LICENSE.txt for license information.
5e8a2af28Scgyurgyik // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6e8a2af28Scgyurgyik //
7e8a2af28Scgyurgyik //===----------------------------------------------------------------------===//
8e8a2af28Scgyurgyik 
9e8a2af28Scgyurgyik #include "src/string/strrchr.h"
10e8a2af28Scgyurgyik 
11e8a2af28Scgyurgyik #include "src/__support/common.h"
12e8a2af28Scgyurgyik 
13e8a2af28Scgyurgyik namespace __llvm_libc {
14e8a2af28Scgyurgyik 
15a0b65a7bSMichael Jones LLVM_LIBC_FUNCTION(char *, strrchr, (const char *src, int c)) {
16*6d1543a1SAlex Brachet   const char ch = static_cast<char>(c);
171b35c4feScgyurgyik   char *last_occurrence = nullptr;
1843c543aaSMichael Jones   for (; *src; ++src) {
191b35c4feScgyurgyik     if (*src == ch)
201b35c4feScgyurgyik       last_occurrence = const_cast<char *>(src);
2143c543aaSMichael Jones   }
221b35c4feScgyurgyik   return last_occurrence;
23e8a2af28Scgyurgyik }
24e8a2af28Scgyurgyik 
25e8a2af28Scgyurgyik } // namespace __llvm_libc
26