about summary refs log tree commit diff
path: root/src/string/memrchr.c
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2011-04-13 08:36:29 -0400
committerRich Felker <dalias@aerifal.cx>2011-04-13 08:36:29 -0400
commit6597f9ac133fd4f47dea307d6260fd52eae77816 (patch)
tree980c26e132ffeb5f1d6d5a8bec383c61cb0550bf /src/string/memrchr.c
parent750b738e53f799443fcfcd3a0751318c072a022f (diff)
downloadmusl-6597f9ac133fd4f47dea307d6260fd52eae77816.tar.gz
musl-6597f9ac133fd4f47dea307d6260fd52eae77816.tar.xz
musl-6597f9ac133fd4f47dea307d6260fd52eae77816.zip
implement memrchr (nonstandard) and optimize strrchr in terms of it
Diffstat (limited to 'src/string/memrchr.c')
-rw-r--r--src/string/memrchr.c12
1 files changed, 12 insertions, 0 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);