Hi Jim,

> That gnulib has two definitions is unfortunate, but I will not
> volunteer to change the STREQ that I've been using ;-)
> I don't see much value in streq.h, either, and hence, don't use it.

The value of streq.h is an optimized definition which is used in a few
places. I agree that your STREQ is more generally useful, especially to
avoid thinkos, therefore I wouldn't want to rename yours.

Akim suggests to rename STREQ in lib/streq.h; what name would you suggest?

> I use STRNCMP_LIT defined in coreutils/src/system.h:
> 
>     /* Just like strncmp, but the second argument must be a literal string
>        and you don't specify the length.  */
>     #define STRNCMP_LIT(s, literal) \
>       strncmp (s, "" literal "", sizeof (literal) - 1)

This comment is not clear enough. If someone writes
  STRNCMP_LIT (s, "foobar")
will it return true for s = "foobarbaz"? Will it return true for s = "foo"?

How about reformulating the comment?

  /* STRNCMP_LIT(S, PREFIX) returns true if the string S starts with the
     prefix string PREFIX.  PREFIX must be a literal string.  */

And given this specification, STRNCMP_LIT is an odd name. How about
STR_HAS_PREFIX or STR_STARTS_WITH?

Bruno


Reply via email to