diff options
author | Thomas Huth <thuth@redhat.com> | 2018-05-18 17:45:34 +0200 |
---|---|---|
committer | Alexey Kardashevskiy <aik@ozlabs.ru> | 2018-05-24 19:03:52 +1000 |
commit | f5825039ffed4508f07abda271ec836a3fa43bf4 (patch) | |
tree | 92b0c4e4a7480beba3a4b4d349e1a1bb7e467323 /lib | |
parent | 4183816dccb5b2da64cc7f1d5a8239d9d90dd0a6 (diff) | |
download | SLOF-f5825039ffed4508f07abda271ec836a3fa43bf4.zip SLOF-f5825039ffed4508f07abda271ec836a3fa43bf4.tar.gz SLOF-f5825039ffed4508f07abda271ec836a3fa43bf4.tar.bz2 |
libc: Implement strrchr()
This function will be used in one of the next patches to find the last
slash in a file name string.
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libc/string/Makefile.inc | 2 | ||||
-rw-r--r-- | lib/libc/string/strrchr.c | 28 |
2 files changed, 29 insertions, 1 deletions
diff --git a/lib/libc/string/Makefile.inc b/lib/libc/string/Makefile.inc index 7ccf3c4..0a77738 100644 --- a/lib/libc/string/Makefile.inc +++ b/lib/libc/string/Makefile.inc @@ -13,7 +13,7 @@ STRING_SRC_C = strcat.c strchr.c strcmp.c strcpy.c strlen.c strncmp.c \ strncpy.c strstr.c memset.c memcpy.c memmove.c memchr.c \ - memcmp.c strcasecmp.c strncasecmp.c strtok.c + memcmp.c strcasecmp.c strncasecmp.c strtok.c strrchr.c STRING_SRC_ASM = STRING_SRCS = $(STRING_SRC_C:%=$(STRINGCMNDIR)/%) $(STRING_SRC_ASM:%=$(STRINGCMNDIR)/%) STRING_OBJS = $(STRING_SRC_C:%.c=%.o) $(STRING_SRC_ASM:%.S=%.o) diff --git a/lib/libc/string/strrchr.c b/lib/libc/string/strrchr.c new file mode 100644 index 0000000..ccfaa9f --- /dev/null +++ b/lib/libc/string/strrchr.c @@ -0,0 +1,28 @@ +/****************************************************************************** + * libc strrchr() implementation + * + * This program and the accompanying materials are made available under + * the terms of the BSD License which accompanies this distribution, and + * is available at http://www.opensource.org/licenses/bsd-license.php + * + * Contributors: + * Thomas Huth - initial implementation + *****************************************************************************/ + +#include <string.h> + +char * +strrchr(const char *s, int c) +{ + char cb = c; + char *ptr = (char *)s + strlen(s) - 1; + + while (ptr >= s) { + if (*ptr == cb) { + return ptr; + } + --ptr; + } + + return NULL; +} |