From: Pádraig Brady Date: Sat, 18 Oct 2025 12:02:44 +0000 (+0100) Subject: numfmt: use multi-byte aware suffix matching X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e5d7764386c173a37106002c6bc800866d4125e9;p=thirdparty%2Fcoreutils.git numfmt: use multi-byte aware suffix matching * src/numfmt.c (process_suffixed_number): Use gnulib's mbs_endswith() helper, which is more robust in non UTF-8 locales. Also always output a devmsg if a suffix is specified. --- diff --git a/bootstrap.conf b/bootstrap.conf index f470aa48b3..8f91943417 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -173,6 +173,7 @@ gnulib_modules=" mbrlen mbrtoc32 mbrtowc + mbs_endswith mbschr mbslen mbswidth diff --git a/src/numfmt.c b/src/numfmt.c index 67458558a7..cc80ccc5d8 100644 --- a/src/numfmt.c +++ b/src/numfmt.c @@ -1326,14 +1326,11 @@ static int process_suffixed_number (char *text, long double *result, size_t *precision, long int field) { - if (suffix && strlen (text) > strlen (suffix)) + if (suffix) { - char *possible_suffix = text + strlen (text) - strlen (suffix); - - if (streq (suffix, possible_suffix)) + if (mbs_endswith (text, suffix)) { - /* trim suffix, ONLY if it's at the end of the text. */ - *possible_suffix = '\0'; + *(text + strlen (text) - strlen (suffix)) = '\0'; devmsg ("trimming suffix %s\n", quote (suffix)); } else