From bb942b40c80bfe85251c6c9d9f7757b746d662f5 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 13 Jun 2004 09:55:22 +0000 Subject: [PATCH] Add a strrchr implementation. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2407 --- coregrind/vg_mylibc.c | 10 ++++++++++ include/vg_skin.h.base | 1 + 2 files changed, 11 insertions(+) diff --git a/coregrind/vg_mylibc.c b/coregrind/vg_mylibc.c index 2023aa58d4..b2940fe75f 100644 --- a/coregrind/vg_mylibc.c +++ b/coregrind/vg_mylibc.c @@ -1013,6 +1013,16 @@ Char* VG_(strchr) ( const Char* s, Char c ) } +Char* VG_(strrchr) ( const Char* s, Char c ) +{ + Int n = VG_(strlen)(s); + while (--n > 0) { + if (s[n] == c) return (Char*)s + n; + } + return NULL; +} + + void* VG_(memcpy) ( void *dest, const void *src, Int sz ) { const Char *s = (const Char *)src; diff --git a/include/vg_skin.h.base b/include/vg_skin.h.base index 60c50d97e5..2a682996f4 100644 --- a/include/vg_skin.h.base +++ b/include/vg_skin.h.base @@ -431,6 +431,7 @@ extern Int VG_(strcmp) ( const Char* s1, const Char* s2 ); extern Int VG_(strncmp) ( const Char* s1, const Char* s2, Int nmax ); extern Char* VG_(strstr) ( const Char* haystack, Char* needle ); extern Char* VG_(strchr) ( const Char* s, Char c ); +extern Char* VG_(strrchr) ( const Char* s, Char c ); extern Char* VG_(strdup) ( const Char* s); extern void* VG_(memcpy) ( void *d, const void *s, Int sz ); extern void* VG_(memset) ( void *s, Int c, Int sz ); -- 2.47.2