Commit ebff1072 authored by Ambroise Vincent's avatar Ambroise Vincent Committed by Olivier Deprez
Browse files

libc: add memrchr



This function scans a string backwards from the end for the first
instance of a character.

Change-Id: I46b21573ed25a0ff222eac340e1e1fb93b040763
Signed-off-by: default avatarAmbroise Vincent <ambroise.vincent@arm.com>
parent 87b582ef
......@@ -4,7 +4,7 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
/*
* Portions copyright (c) 2018, ARM Limited and Contributors.
* Portions copyright (c) 2018-2019, ARM Limited and Contributors.
* All rights reserved.
*/
......@@ -23,6 +23,7 @@ int memcmp(const void *s1, const void *s2, size_t len);
int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, size_t n);
void *memchr(const void *src, int c, size_t len);
void *memrchr(const void *src, int c, size_t len);
char *strchr(const char *s, int c);
void *memset(void *dst, int val, size_t count);
size_t strlen(const char *s);
......
......@@ -12,6 +12,7 @@ LIBC_SRCS := $(addprefix lib/libc/, \
memcmp.c \
memcpy.c \
memmove.c \
memrchr.c \
memset.c \
printf.c \
putchar.c \
......
/*
* Copyright (c) 2019, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <string.h>
#undef memrchr
void *memrchr(const void *src, int c, size_t len)
{
const unsigned char *s = src + (len - 1);
while (len--) {
if (*s == (unsigned char)c) {
return (void*) s;
}
s--;
}
return NULL;
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment