Hi Bruno, On 2026-02-21T00:47:55+0100, Bruno Haible wrote: > Hi Alejandro, > > 1) The name 'strnul' is good: unambiguous, descriptive (it returns a pointer > to the NUL byte), without artificial truncations, and consistent with > other functions such as strchrnul().
:) > 2) What I like about it is that it makes code more consistent: > > Some people preferred to write it like this: > > > - end_name = strchr (unescape, '\0'); > > + end_name = strnul (unescape); > > and other people like this: > > > - sentinel = hwcaps + strlen (hwcaps); > > + sentinel = strnul (hwcaps); Yup; thanks! > > 3) What I don't like about your patch are those parts where the code > becomes harder to validate, such as > > > bool output_is_library = > > (strlen (output_file) >= 4 > > - && memeq (output_file + strlen (output_file) - 4, ".dll", 4)); > > + && memeq (strnul (output_file) - 4, ".dll", 4)); > > because > * The check strlen (output_file) >= 4 made it immediately clear that > output_file + strlen (output_file) - 4 > is not out-of-range. Whereas when you write > strnul (output_file) - 4 > it requires some amount of thought to realize that the result is > not out-of-range. > * The purpose of this code is NOT to get a pointer to the NUL byte. > It is to get a pointer to the last substring of length 4 of the string. Agree; I had plans to further transform these into using str_endswith() or something like that. You could patch this already, FWIW. Cheers, Alex -- <https://www.alejandro-colomar.es>
signature.asc
Description: PGP signature
