Hi Kevin, > Date: 2026-08-06 11:19:50+0800 > From: "Kevin J. McCarthy" <[email protected]> > > Thanks to Alejandro Colomar for the suggestion and the code for the > define's that were added to lib.h. This helps the readability a lot. > ---
Reviewed-by: Alejandro Colomar <[email protected]> Cheers, Alex > crypt.c | 2 +- > imap/command.c | 2 +- > lib.c | 2 +- > lib.h | 14 ++++++++++++++ > mutt_sasl_gnu.c | 2 +- > muttlib.c | 2 +- > rfc2047.c | 2 +- > url.c | 2 +- > 8 files changed, 21 insertions(+), 7 deletions(-) > > diff --git a/crypt.c b/crypt.c > index e4c8051d..80a6d6d1 100644 > --- a/crypt.c > +++ b/crypt.c > @@ -1295,7 +1295,7 @@ short crypt_is_numerical_keyid(const char *s) > if (strlen(s) % 8) > return 0; > while (*s) > - if (strchr("0123456789ABCDEFabcdef", *s++) == NULL) > + if (strchr(CTYPE_XDIGIT_C, *s++) == NULL) > return 0; > > return 1; > diff --git a/imap/command.c b/imap/command.c > index 63dedf6c..77bb7b8f 100644 > --- a/imap/command.c > +++ b/imap/command.c > @@ -701,7 +701,7 @@ static void cmd_parse_vanished(IMAP_DATA *idata, char *s) > end_of_seqset = s; > while (*end_of_seqset) > { > - if (!strchr("0123456789:,", *end_of_seqset)) > + if (!strchr(CTYPE_UIDS_RFC7162_C, *end_of_seqset)) > *end_of_seqset = '\0'; > else > end_of_seqset++; > diff --git a/lib.c b/lib.c > index 9776fcdb..fdecda25 100644 > --- a/lib.c > +++ b/lib.c > @@ -573,7 +573,7 @@ success: > } > > > -static const char safe_chars[] = > "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+@{}._-:%"; > +static const char safe_chars[] = CTYPE_PFCHAR_C "+@{}:%"; > > void mutt_sanitize_filename(char *f, int flags) > { > diff --git a/lib.h b/lib.h > index 25875656..08f1ac27 100644 > --- a/lib.h > +++ b/lib.h > @@ -147,6 +147,20 @@ static inline char *skip_email_wsp(const char *s) > on some systems */ > #define SKIP_LOCALE_WS(c) while (*(c) && IS_LOCALE_WS(*(c))) c++; > > +/* > + * Various useful sets of characters > + */ > +#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 filename > character set > +#define CTYPE_UXDIGIT_C CTYPE_DIGIT_C "ABCDEF" // uppercase hex > +#define CTYPE_XDIGIT_C CTYPE_UXDIGIT_C "abcdef" // hex > + > +#define CTYPE_UIDS_RFC7162_C CTYPE_DIGIT_C ":," // known-uids > + > /* > * These functions aren't defined in lib.c, but > * they are used there. > diff --git a/mutt_sasl_gnu.c b/mutt_sasl_gnu.c > index 9a7a4b87..2bd5afbf 100644 > --- a/mutt_sasl_gnu.c > +++ b/mutt_sasl_gnu.c > @@ -66,7 +66,7 @@ void mutt_gsasl_done(void) > } > > static const char *VALID_MECHANISM_CHARACTERS = > - "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_"; > + CTYPE_UPPER_C CTYPE_DIGIT_C "-_"; > > /* This logic is derived from the libgsasl suggest code */ > static int mechlist_contains(const char *uc_mech, const char *uc_mechlist) > diff --git a/muttlib.c b/muttlib.c > index d24a37f0..ee29cc17 100644 > --- a/muttlib.c > +++ b/muttlib.c > @@ -1178,7 +1178,7 @@ void _mutt_buffer_quote_filename(BUFFER *d, const char > *f, int add_outer) > mutt_buffer_addch(d, '\''); > } > > -static const char safe_chars[] = > "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+@{}._-:%"; > +static const char safe_chars[] = CTYPE_PFCHAR_C "+@{}:%"; > > void mutt_buffer_sanitize_filename(BUFFER *d, const char *f, int flags) > { > diff --git a/rfc2047.c b/rfc2047.c > index 2bdd8553..f043c9ab 100644 > --- a/rfc2047.c > +++ b/rfc2047.c > @@ -257,7 +257,7 @@ static size_t b_encoder(char *s, ICONV_CONST char *d, > size_t dlen, > static size_t q_encoder(char *s, ICONV_CONST char *d, size_t dlen, > const char *tocode) > { > - static const char hex[] = "0123456789ABCDEF"; > + static const char hex[] = CTYPE_UXDIGIT_C; > char *s0 = s; > > memcpy(s, "=?", 2), s += 2; > diff --git a/url.c b/url.c > index 02dbf34c..37d091cf 100644 > --- a/url.c > +++ b/url.c > @@ -193,7 +193,7 @@ int url_parse_ciss(ciss_url_t *ciss, char *src) > > static void url_pct_encode(char *dst, size_t l, const char *src) > { > - static const char *alph = "0123456789ABCDEF"; > + static const char *alph = CTYPE_UXDIGIT_C; > > *dst = 0; > l--; > -- > 2.55.0 > -- <https://www.alejandro-colomar.es>
signature.asc
Description: PGP signature
