From d2004b15f1e90efafedc367335c07ad4636d291d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Fri, 7 Apr 2017 16:04:40 +0200 Subject: text: add mem{r,}chr(3) based byte search functions These are generally implemented efficiently in libc. While memrchr(3) is non-standard, it is a common extension. If it is not available, we use a simple C implementation from musl. --- util.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'util.h') diff --git a/util.h b/util.h index a53deda..9048c82 100644 --- a/util.h +++ b/util.h @@ -23,4 +23,15 @@ static inline bool addu(size_t a, size_t b, size_t *c) { } #endif +#if !HAVE_MEMRCHR +/* MIT licensed implementation from musl libc */ +static 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; +} #endif + +#endif /* UTIL_H */ -- cgit v1.2.3