mailing list of musl libc
 help / color / mirror / code / Atom feed
6875ae0191fca5f2eba30a78fe95a217e44782ee blob 677 bytes (raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
#include <string.h>
#include <stdint.h>
#include <limits.h>

#define ALIGN (sizeof(size_t))
#define ONES ((size_t)-1/UCHAR_MAX)
#define HIGHS (ONES * (UCHAR_MAX/2+1))
#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS)

char *__strchrnul(const char *s, int c)
{
	c = (unsigned char)c;
	if (!c) return (char *)s + strlen(s);

#ifdef __GNUC__
	size_t __attribute__((__may_alias__)) *w;
	for (; (uintptr_t)s % ALIGN; s++)
		if (!*s || *(unsigned char *)s == c) return (char *)s;
	size_t k = ONES * c;
	for (w = (void *)s; !HASZERO(*w) && !HASZERO(*w^k); w++);
	s = (void *)w;
#endif
	for (; *s && *(unsigned char *)s != c; s++);
	return (char *)s;
}

weak_alias(__strchrnul, strchrnul);
debug log:

solving 6875ae0 ...
found 6875ae0 in https://inbox.vuxu.org/musl/20180923003542.GC17995@brightrain.aerifal.cx/
found f2b9ae1 in https://git.vuxu.org/mirror/musl/
preparing index
index prepared:
100644 f2b9ae11b605278f523397112f16bf4fe67ef720	src/string/strchrnul.c

applying [1/1] https://inbox.vuxu.org/musl/20180923003542.GC17995@brightrain.aerifal.cx/
diff --git a/src/string/strchrnul.c b/src/string/strchrnul.c
index f2b9ae1..6875ae0 100644

Checking patch src/string/strchrnul.c...
Applied patch src/string/strchrnul.c cleanly.

index at:
100644 6875ae0191fca5f2eba30a78fe95a217e44782ee	src/string/strchrnul.c

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).