Re: [PATCH] Add %F expando to $message_id_format to use from address.
Alejandro Colomar via Mutt-dev <[email protected]> Tue, 4 Aug 2026 13:13:47 +0200
| Newsgroups | gmane.mail.mutt.devel |
|---|---|
| Message-ID | <anHI592GYSPfpZPS@devuan> |
--uudrmdwczoz2zqkv Content-Type: text/plain; protected-headers=v1; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable From: Alejandro Colomar <[email protected]> To: [email protected] Subject: Re: [PATCH] Add %F expando to $message_id_format to use from address. Message-ID: <anHI592GYSPfpZPS@devuan> References: <[email protected]> <anB0GFYGkcA1CMT4@devuan> <[email protected]> MIME-Version: 1.0 In-Reply-To: <[email protected]> Hi Kevin, > Date: 2026-08-04 12:38:46+0800 > From: "Kevin J. McCarthy" <[email protected]> > [...] > > #define CTYPE_LOWER_C "abcdefghijklmnopqrstuvwxyz" > > #define CTYPE_UPPER_C "ABCDEFGHIJKLMNOPQRSTUVWXYZ" > > #define CTYPE_DIGIT_C "0123456789" > > #define CTYPE_ALPHA_C CTYPE_LOWER_C CTYPE_UPPER_C > > #define CTYPE_ALNUM_C CTYPE_ALPHA_C CTYPE_DIGIT_C > > #define CTYPE_PFCHAR_C CTYPE_ALNUM_C "._-" // portable filena= me character set >=20 > Thanks Alex. I'll add a pre-patch with this to the series and send it out > later today for feedback. You're welcome! :) [...] > > > + while (*from) > > > + { > > > + if (*from =3D=3D '@' && !has_at) > > > + has_at =3D 1; > > > + else if (!strchr(ALLOWED_FROM_CHARS, *from)) > >=20 > > And then here I suggest adding another API, inspired by isascii(3): > >=20 > > // isascii_c - is [:ascii:] C-locale > > #define ispfchar_c(c) (!streq(strchrnul(CTYPE_PFCHAR_C, c), "")) > >=20 > > #define streq(s1, s2) (!strcmp(s1, s2)) > >=20 > > To be able to write it as > >=20 > > else if (!ispfchar_c(*from)) >=20 > I remember the earlier discussion on mutt-dev about this. I'm going to h= old > off on this suggestion, as I remember strchrnul() is not standardized, and > the fallback suggestions relied on non-standard ?: operators, etc. Hmmm, you could provide a fallback implementation of strchrnul(3) for systems that lack it: char * strchrnul(const char *s, int c) { char reject[2] =3D {c, '\0'}; return s + strcspn(s, reject); } > The nul's are explicitly checked for in this case, so I don't think it's > worth it to dig into that for this case. (But of course I'll swap out to > use CTYPE_PFCHAR_C) Sounds reasonable. > > > + *from =3D '_'; > > > + from++; > > > + } > > > +} > >=20 > > In any case, the above seems okay. >=20 > Thanks again! Have a lovely day! Alex --=20 <https://www.alejandro-colomar.es> --uudrmdwczoz2zqkv Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEES7Jt9u9GbmlWADAi64mZXMKQwqkFAmpxyWYACgkQ64mZXMKQ wqkNsxAAvG2TtcJ5FUjDpfdddEaBeKZ6X9uq0s7ai5w4z9B7Y7ihYNW8GeL1BLg+ Gzf8P40jBiJaA8YHPBxS/946wId2Y0MvjKYvggNOsN0DBVZEjOnL3WkfWKOI+UpP /dbX0c07LNw3gMIoc5Ydc3D8+1ixmpGgRbGkk64JCkIbg5WRvz2ge2CLU7rtvKTV 66uc5+QmIFQe34ul65XtHt+Q7QnnLhivWL/r/InEnn4B2CmRsZD5z4ScUb5+ecQQ QPfDnQ3sa9j08B1rLTjD591x9+89HVvAs92JsEzMVcUikoYFkhJc9pOP3IzA47BZ As1+HUqk1CBW9AjWfRVQ3ZKgeTVl/iR1CMbDzBtnV7ZHdNrXfduJ+uvzFPXbfsF1 bRrKRpJzqayDMXqK+yIJBbN5pvGqNnpMUq8hYV/S+6vPiXwO4UePcgl0FgmWJzHP NG4rhSYDx5cNqcRpuk+rDRlXNlCdf9rtf+M/Lv0XsYLyzS2SrOejLzU4b8J1W7M/ ivrqIw1N/1Ce5p3ILya0xL7338L7brSbQVZy51oHSwklaHEgC+WVUb2vjDJJyPyN t8LB6BrTQBjs7CUG9G26l5RMjRJdA3TEmN/Z3SYdVkGYJwux4Skhxda8M1qAzFmV 3FLaJJ4mxlMPBNPoBFI9s6/zt5TEWrIwshQni1365byIjX/1cpI= =YFPV -----END PGP SIGNATURE----- --uudrmdwczoz2zqkv--