|
|
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.