From 1054a875c7f96e5799c8bfbf8a73e41dd064b606 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sun, 12 Aug 2018 22:02:07 +0200 Subject: Add memrmem, strrstr, and strrcasestr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- strrstr.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 strrstr.c (limited to 'strrstr.c') diff --git a/strrstr.c b/strrstr.c new file mode 100644 index 0000000..5d64744 --- /dev/null +++ b/strrstr.c @@ -0,0 +1,70 @@ +/* See LICENSE file for copyright and license details. */ +#include "libsimple.h" + + +char * +libsimple_strrstr(const char *hay, const char *sub) +{ + return libsimple_memrmem(hay, strlen(hay), sub, strlen(sub)); +} + + +#ifdef TEST +#include + +int +main(void) +{ + assert(!strcmp(libsimple_strrstr("test", "test"), "test")); + assert(!strcmp(libsimple_strrstr("", ""), "")); + assert(!strcmp(libsimple_strrstr("test", ""), "")); + assert(!libsimple_strrstr("", "test")); + assert(!libsimple_strrstr("t", "test")); + assert(!strcmp(libsimple_strrstr("test", "t"), "t")); + assert(!strcmp(libsimple_strrstr("test", "e"), "est")); + assert(!strcmp(libsimple_strrstr("test", "s"), "st")); + assert(!libsimple_strrstr("test", "x")); + assert(!strcmp(libsimple_strrstr("test", "te"), "test")); + assert(!strcmp(libsimple_strrstr("test", "es"), "est")); + assert(!strcmp(libsimple_strrstr("test", "st"), "st")); + assert(!libsimple_strrstr("test", "xx")); + assert(!strcmp(libsimple_strrstr("abc", "c"), "c")); + assert(!strcmp(libsimple_strrstr("abc", "bc"), "bc")); + assert(!strcmp(libsimple_strrstr("abc", "abc"), "abc")); + assert(!strcmp(libsimple_strrstr("abcabc", "bc"), "bc")); + + assert(!strcmp(libsimple_strrcasestr("TEST", "test"), "TEST")); + assert(!strcmp(libsimple_strrcasestr("TEST", ""), "")); + assert(!libsimple_strrcasestr("T", "test")); + assert(!strcmp(libsimple_strrcasestr("TEST", "t"), "T")); + assert(!strcmp(libsimple_strrcasestr("TEST", "e"), "EST")); + assert(!strcmp(libsimple_strrcasestr("TEST", "s"), "ST")); + assert(!libsimple_strrcasestr("TEST", "x")); + assert(!strcmp(libsimple_strrcasestr("TEST", "te"), "TEST")); + assert(!strcmp(libsimple_strrcasestr("TEST", "es"), "EST")); + assert(!strcmp(libsimple_strrcasestr("TEST", "st"), "ST")); + assert(!libsimple_strrcasestr("TEST", "xx")); + assert(!strcmp(libsimple_strrcasestr("ABC", "c"), "C")); + assert(!strcmp(libsimple_strrcasestr("ABC", "bc"), "BC")); + assert(!strcmp(libsimple_strrcasestr("ABC", "abc"), "ABC")); + assert(!strcmp(libsimple_strrcasestr("ABCABC", "bc"), "BC")); + + assert(!strcmp(libsimple_strrcasestr("test", "TEST"), "test")); + assert(!libsimple_strrcasestr("", "TEST")); + assert(!libsimple_strrcasestr("t", "TEST")); + assert(!strcmp(libsimple_strrcasestr("test", "T"), "t")); + assert(!strcmp(libsimple_strrcasestr("test", "E"), "est")); + assert(!strcmp(libsimple_strrcasestr("test", "S"), "st")); + assert(!libsimple_strrcasestr("test", "X")); + assert(!strcmp(libsimple_strrcasestr("test", "TE"), "test")); + assert(!strcmp(libsimple_strrcasestr("test", "ES"), "est")); + assert(!strcmp(libsimple_strrcasestr("test", "ST"), "st")); + assert(!libsimple_strrcasestr("test", "XX")); + assert(!strcmp(libsimple_strrcasestr("abc", "C"), "c")); + assert(!strcmp(libsimple_strrcasestr("abc", "BC"), "bc")); + assert(!strcmp(libsimple_strrcasestr("abc", "ABC"), "abc")); + assert(!strcmp(libsimple_strrcasestr("abcabc", "BC"), "bc")); + return 0; +} + +#endif -- cgit v1.2.3-70-g09d2