Hi Paul,

On Wed, Sep 17, 2025 at 12:30:35PM -0700, Paul Eggert wrote:
> Thanks for all the followup fixes people have made to Gnulib's stringeq
> module. I installed into GNU coreutils a patch to use the result; this
> should test the module more.

I still see some uses of strcmp(3) within gnulib.  Is there a reason for
them?  Should we replace them too?


Have a lovely day!
Alex


$ grep -rn 'strcmp *(' lib/ | grep -v '[<>]'
lib/unistr/u32-strcmp.c:32:u32_strcmp (const uint32_t *s1, const uint32_t *s2)
lib/unistr/u8-strcmp.c:34:u8_strcmp (const uint8_t *s1, const uint8_t *s2)
lib/unistr/u8-strcmp.c:37:  return strcmp ((const char *) s1, (const char *) 
s2);
lib/unistr/u16-strcmp.c:32:u16_strcmp (const uint16_t *s1, const uint16_t *s2)
lib/wcsxfrm-impl.h:65:           Since strcmp() compares the elements as 
'unsigned char' values,
lib/string.in.h:812:  return !strcmp (__s1, __s2);
lib/astrxfrm.h:32:   and astrxfrm(S2) with strcmp().
lib/strftime.c:1119:  if (strcmp (locale_charset (), "UTF-8") == 0)
lib/strftime.c:1574:            (strcmp (locale, "C") == 0 || strcmp (locale, 
"POSIX") == 0);
lib/fstrcmp.c:52:   fstrcmp().  */
lib/setlocale.c:631:      int cmp = strcmp (table[mid].code, string);
lib/setlocale.c:639:               strcmp (language_table[i].code, string) == 0.
lib/setlocale.c:667:               strcmp (language_table[i].code, string) == 0
lib/setlocale.c:1401:  return strcmp (territory1, territory2);
lib/relocatable.c:136:      && strcmp (orig_prefix_arg, curr_prefix_arg) != 0)
lib/relocatable.c:352:            && strcmp (shared_library_fullname, location) 
== 0))
lib/setenv.c:381:          if (strcmp (existing_value, value) == 0)
lib/setenv.c:446:# define STREQ(a, b) (strcmp (a, b) == 0)
lib/exclude.c:333:            : strcmp (pattern, f));
lib/tmpdir.c:138:      else if (strcmp (P_tmpdir, "/tmp") != 0 && direxists 
("/tmp"))
lib/error.c:311:                  && strcmp (old_file_name, file_name) == 0)))
lib/streq.h:32:     strcmp (s, "EUC-KR") == 0
lib/streq.h:177:  (strcmp (s1, s2) == 0)
lib/strptime.c:307:                          && strcmp (_NL_CURRENT (LC_TIME, 
DAY_1 + cnt),
lib/strptime.c:315:                          && strcmp (_NL_CURRENT (LC_TIME, 
ABDAY_1 + cnt),
lib/strptime.c:348:                          && strcmp (_NL_CURRENT (LC_TIME, 
MON_1 + cnt),
lib/strptime.c:356:                          && strcmp (_NL_CURRENT (LC_TIME, 
ABMON_1 + cnt),
lib/strptime.c:391:                      strcmp (_NL_CURRENT (LC_TIME, 
D_T_FMT), HERE_D_T_FMT))
lib/strptime.c:439:                      && strcmp (_NL_CURRENT (LC_TIME, 
D_FMT), HERE_D_FMT))
lib/strptime.c:500:                  if (strcmp (_NL_CURRENT (LC_TIME, AM_STR), 
HERE_AM_STR))
lib/strptime.c:506:                  if (strcmp (_NL_CURRENT (LC_TIME, PM_STR), 
HERE_PM_STR))
lib/strptime.c:545:                      strcmp (_NL_CURRENT (LC_TIME, 
T_FMT_AMPM),
lib/strptime.c:600:                  if (strcmp (_NL_CURRENT (LC_TIME, T_FMT), 
HERE_T_FMT))
lib/strptime.c:737:                      if (strcmp (fmt, HERE_D_T_FMT))
lib/strptime.c:902:                      if (strcmp (fmt, HERE_D_FMT))
lib/strptime.c:928:                      if (strcmp (fmt, HERE_T_FMT))
lib/dfa.c:54:# define streq(a, b) (strcmp (a, b) == 0)
lib/fstrcmp.h:31:extern double fstrcmp (const char *s1, const char *s2);
lib/fstrcmp.h:39:#define fstrcmp(s1,s2) fstrcmp_bounded (s1, s2, 0.0)
lib/gen-uni-tables.c:73:  return !strcmp (s1, s2);
lib/regcomp.c:840:      && strcmp (_NL_CURRENT (LC_CTYPE, 
_NL_CTYPE_CODESET_NAME), "UTF-8") == 0)
lib/regcomp.c:849:      && strcmp (codeset_name + 3 + (codeset_name[3] == '-'), 
"8") == 0)
lib/regcomp.c:3481:      && (strcmp (name, "upper") == 0 || strcmp (name, 
"lower") == 0))
lib/regcomp.c:3516:  if (strcmp (name, "alnum") == 0)
lib/regcomp.c:3518:  else if (strcmp (name, "cntrl") == 0)
lib/regcomp.c:3520:  else if (strcmp (name, "lower") == 0)
lib/regcomp.c:3522:  else if (strcmp (name, "space") == 0)
lib/regcomp.c:3524:  else if (strcmp (name, "alpha") == 0)
lib/regcomp.c:3526:  else if (strcmp (name, "digit") == 0)
lib/regcomp.c:3528:  else if (strcmp (name, "print") == 0)
lib/regcomp.c:3530:  else if (strcmp (name, "upper") == 0)
lib/regcomp.c:3532:  else if (strcmp (name, "blank") == 0)
lib/regcomp.c:3534:  else if (strcmp (name, "graph") == 0)
lib/regcomp.c:3536:  else if (strcmp (name, "punct") == 0)
lib/regcomp.c:3538:  else if (strcmp (name, "xdigit") == 0)
lib/unistr.in.h:863:/* Similar to strcmp(), wcscmp().  */
lib/unistr.in.h:865:/* Avoid a collision with the u8_strcmp() function in 
Solaris 11 libc.  */
lib/unistr.in.h:872:       u8_strcmp (const uint8_t *s1, const uint8_t *s2)
lib/unistr.in.h:876:       u16_strcmp (const uint16_t *s1, const uint16_t *s2)
lib/unistr.in.h:879:       u32_strcmp (const uint32_t *s1, const uint32_t *s2)
lib/stackvma.c:1826:      /* && strcmp (u.sysname, "AIX") == 0 */
lib/localcharset.c:1004:            int cmp = strcmp (table[mid].alias, 
codeset);
lib/localcharset.c:1012:                     strcmp (table[i].alias, codeset) 
== 0.  */
lib/localcharset.c:1078:        int cmp = strcmp (table[mid].locale, locale);
lib/localcharset.c:1086:                 strcmp (table[i].locale, locale) == 0. 
 */

-- 
<https://www.alejandro-colomar.es/>

Attachment: signature.asc
Description: PGP signature

Reply via email to