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