diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/string/memrchr.c | 12 | ||||
| -rw-r--r-- | src/string/strrchr.c | 7 | 
2 files changed, 15 insertions, 4 deletions
| diff --git a/src/string/memrchr.c b/src/string/memrchr.c new file mode 100644 index 00000000..a78e9d6c --- /dev/null +++ b/src/string/memrchr.c @@ -0,0 +1,12 @@ +#include <string.h> +#include "libc.h" + +void *__memrchr(const void *m, int c, size_t n) +{ +	const unsigned char *s = m; +	c = (unsigned char)c; +	while (n--) if (s[n]==c) return (void *)(s+n); +	return 0; +} + +weak_alias(__memrchr, memrchr); diff --git a/src/string/strrchr.c b/src/string/strrchr.c index 31c8e0b8..9c683087 100644 --- a/src/string/strrchr.c +++ b/src/string/strrchr.c @@ -1,9 +1,8 @@  #include <string.h> +void *__memrchr(const void *, int, size_t); +  char *strrchr(const char *s, int c)  { -	const char *p; -	c = (char)c; -	for (p=s+strlen(s); p>=s && *p!=c; p--); -	return p>=s ? (char *)p : 0; +	return __memrchr(s, c, strlen(s));  } | 
