diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2017-04-07 16:04:40 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2017-04-09 11:27:14 +0200 |
| commit | d2004b15f1e90efafedc367335c07ad4636d291d (patch) | |
| tree | 3ab47dc219f5ad3b2f3bc9d3699aecc3b7ffd656 /util.h | |
| parent | 3349b97344c6c7032bff7aaa13985406ca571c34 (diff) | |
| download | vis-d2004b15f1e90efafedc367335c07ad4636d291d.tar.gz vis-d2004b15f1e90efafedc367335c07ad4636d291d.tar.xz | |
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.
Diffstat (limited to 'util.h')
| -rw-r--r-- | util.h | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -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 */ |
