Re: [PATCH 6/6] Use Arch instead of Debian for sr.ht builds

Alejandro Colomar via Mutt-dev <[email protected]>
Newsgroups gmane.mail.mutt.devel
Message-ID <aZ2eOVIjZ8MsAf55@devuan>
Hi Rene,

On 2026-02-24T13:41:26+0100, Rene Kita wrote:
> This explains why it went so smooth with Arch. m-(
> 
> Running the build on Arch I get multiple errors of this kind:
> browser.c:548:17: error: initialization discards 'const' qualifier from
> pointer target type [-Werror=discarded-qualifiers]
>   548 |       char *c = strrchr (d, '/');
>       |                 ^~~~~~~
> 
> This is in function:
> static int examine_directory (MUTTMENU *menu, struct browser_state *state,
> 			      const char *d, const char *prefix).
> 
> AFAIU, strrchr is defined as: char * strrchr(const char *s, int c).

Being Arch, I suspect you're using the latest glibc.  C23 has changed
the prototype of string search functions to use 'QChar', which is just
a way of saying "the const qualifier, if present on the input, is
preserved in the output".
<https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf#subsubsection.7.26.5.6>

This makes it possible to write code that is more type-safe.

Since C23, the standard prototype for strrchr(3) is:

	QChar *strrchr(QChar *s, int c);

which could be documented in a more C++-style way, with overloads:

	char *strrchr(char *s, int c);
	const char *strrchr(const char *s, int c);

I now need to update the manual pages, and think I'm going to use the
latter, although feel free to suggest some preference or some other way
to document it.

The glibc commit that changed this was:

	glibc.git cd748a63ab1a (2025-11-20; "Implement C23 const-preserving standard library macros")

which is contained in glibc-2.43.

> 
> *c is changed later in that function, so we can't make it const. Any
> ideas what's the best way forward from here?

If *c is later changed, and it derives from d, then d must be non-const,
doesn't it?  Or is c later derived from another pointer?  If the latter
is true, then we'd need to use a different local pointer variable.


Have a lovely day!
Alex

-- 
<https://www.alejandro-colomar.es>
signature.asc (application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEES7Jt9u9GbmlWADAi64mZXMKQwqkFAmmdn+0ACgkQ64mZXMKQ
wqkMfxAAoPHONiZJBHejpRQm63w+iB1tda2V+gqTtQO4PESFia871uasq+AftmFc
VATu/ImRq9kQ0HW2ZAoHLFgFnxRoqlkUQ2mc+T/PYrATahjKsCo8rQ6LoMKtCGFE
suENAPuhr4ptf6j2lbn/pDYkC9Ytreq+MQsUeNl1HavBPIYET0FVCQNznDWzwqN0
UsGfyyZoeVrgq7Mnq1rWVDHzTVZ/5mvZKIb50moY1RDgnAeQjA48Z4JLdL+aFTnz
RmPvOyUZ6voK4L4In8ktGbYlq9YPUfl/nJOHhmbBk183phRR7k1XQMY2HxjW5O9s
G58FaoQylYDMHgO2UFgiNPK1kA5w3RONrDygN1mUNFkXFM3OPjam3+s1NccgK3AB
OH5hdufKaAFAdKjfl+Eg9snjMH1F50HOXrJXxC+Y6xRtn8WlwDHnmiVc7W2tW7SL
35LIZ0rne3vRoXYwWHn2cCq95G3jCpKidtnQlW8y4ko8sBfJeaa/+Z3fOSbL9koL
BxDAFIYWInFmuL2O5lqtCz0de3+0vVMYeray1AzjmVApT6e297emsbpSjFCpIAi1
365cS1kLiH81llkMrz4vKgb5xGxRPNRhYqPO5zkr41r4ZZUPJ0PjTyTaVsfuriAe
gcAm68bZYE5rnr5wNs+yhPct4S19tpD1Jrz+KAHA1OXPu793lRs=
=kS1H
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.