implement memrchr (nonstandard) and optimize strrchr in terms of it

This commit is contained in:
Rich Felker
2011-04-13 08:36:29 -04:00
parent 750b738e53
commit 6597f9ac13
3 changed files with 16 additions and 4 deletions

12
src/string/memrchr.c Normal file
View File

@ -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);

View File

@ -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));
}