Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <aZxIdNf43wFlTEXd@devuan>
Date: Mon, 23 Feb 2026 13:31:42 +0100
From: Alejandro Colomar <alx@...nel.org>
To: musl@...ts.openwall.com
Cc: Paul Eggert <eggert@...ucla.edu>, Bruno Haible <bruno@...sp.org>, 
	Joseph Myers <josmyers@...hat.com>, Markus Wichmann <nullplan@....net>, 
	Rich Felker <dalias@...c.org>, Luca Kellermann <mailto.luca.kellermann@...il.com>
Subject: Re: [PATCH v7 0/1] Implement QChar and QVoid wrappers standardized
 in C23

On 2026-02-23T13:22:17+0100, Alejandro Colomar wrote:
> Hi!
> 
> I realized a mistake in the mem*() wrappers: I was missing the 'n'
> parameter.  I've rewritten all of them as variadic macros, which makes
> it impossible to make such mistakes.  The underlying functions control
> the actual number of parameters.  See range-diff below.
> 
> 
> Have a lovely day!
> Alex
> 
> 
> Alejandro Colomar (1):
>   include/string.h: Implement QChar and QVoid wrappers standardized in
>     C23

I've successfully built shadow-utils with musl with this patch.

I used the following to build shadow-utils:

	diff --git i/autogen.sh w/autogen.sh
	index 1e5278faa960..63d473af3316 100755
	--- i/autogen.sh
	+++ w/autogen.sh
	@@ -25,6 +25,7 @@ CFLAGS="$CFLAGS -Wno-unknown-attributes"
	 CFLAGS="$CFLAGS -Wno-unknown-warning-option"
	 
	 "$(dirname "$0")"/configure \
	+       CC="/opt/local/musl/libc/qchar/bin/musl-gcc" \
		CFLAGS="$CFLAGS" \
		--enable-lastlog \
		--disable-logind \

> 
>  include/string.h | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
> 
> Range-diff against v6:
> 1:  f55c5681e5c2 ! 1:  a32505bd8595 include/string.h: Implement QChar and QVoid wrappers standardized in C23
>     @@ include/string.h: size_t strlen (const char *);
>       char *strerror (int);
>       
>      +#if __STDC_VERSION__ >= 202311L
>     -+# define memchr(p, chr)    ((__QVoidptrof(p)) memchr(p, chr))
>     -+# define strchr(s, chr)    ((__QCharptrof(s)) strchr(s, chr))
>     -+# define strrchr(s, chr)   ((__QCharptrof(s)) strrchr(s, chr))
>     -+# define strpbrk(s, chrs)  ((__QCharptrof(s)) strpbrk(s, chrs))
>     -+# define strstr(s, str)    ((__QCharptrof(s)) strstr(s, str))
>     ++# define memchr(p, ...)   ((__QVoidptrof(p)) memchr(p, __VA_ARGS__))
>     ++# define strchr(s, ...)   ((__QCharptrof(s)) strchr(s, __VA_ARGS__))
>     ++# define strrchr(s, ...)  ((__QCharptrof(s)) strrchr(s, __VA_ARGS__))
>     ++# define strpbrk(s, ...)  ((__QCharptrof(s)) strpbrk(s, __VA_ARGS__))
>     ++# define strstr(s, ...)   ((__QCharptrof(s)) strstr(s, __VA_ARGS__))
>      +#endif
>      +
>       #if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
>     @@ include/string.h: char *strerror_l (int, locale_t);
>       size_t strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t);
>       void *memmem(const void *, size_t, const void *, size_t);
>      +# if __STDC_VERSION__ >= 202311L
>     -+#  define memmem(p, mem)  ((__QVoidptrof(p)) memmem(p, mem))
>     ++#  define memmem(p, ...)  ((__QVoidptrof(p)) memmem(p, __VA_ARGS__))
>      +# endif
>       #endif
>       
>     @@ include/string.h: char *strchrnul(const char *, int);
>       void *memrchr(const void *, int, size_t);
>       void *mempcpy(void *, const void *, size_t);
>      +# if __STDC_VERSION__ >= 202311L
>     -+#  define strchrnul(s, chr)   ((__QCharptrof(s)) strchrnul(s, chr))
>     -+#  define strcasestr(s, str)  ((__QCharptrof(s)) strcasestr(s, str))
>     -+#  define memrchr(p, chr)     ((__QVoidptrof(p)) memrchr(p, chr))
>     ++#  define strchrnul(s, ...)   ((__QCharptrof(s)) strchrnul(s, __VA_ARGS__))
>     ++#  define strcasestr(s, ...)  ((__QCharptrof(s)) strcasestr(s, __VA_ARGS__))
>     ++#  define memrchr(p, ...)     ((__QVoidptrof(p)) memrchr(p, __VA_ARGS__))
>      +# endif
>       #endif
>       
> -- 
> 2.51.0
> 

-- 
<https://www.alejandro-colomar.es>

Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.