Re: [RFC PATCH v1 00/12] Replace strstarts() by str_has_prefix()

From: James Bottomley
Date: Fri Dec 04 2020 - 12:57:51 EST


On Fri, 2020-12-04 at 18:03 +0100, laniel_francis@xxxxxxxxxxxxxxxxxxx
wrote:
> In this patch set, I replaced all calls to strstarts() by calls to
> str_has_prefix(). Indeed, the kernel has two functions to test if a
> string begins with an other:
> 1. strstarts() which returns a bool, so 1 if the string begins with
> the prefix,0 otherwise.
> 2. str_has_prefix() which returns the length of the prefix or 0.
>
> str_has_prefix() was introduced later than strstarts(), in commit
> 495d714ad140 which also stated that str_has_prefix() should replace
> strstarts(). This is what this patch set does.

What's the reason why? If you look at the use cases for the
replacement of strstart() they're all cases where we need to know the
length we're skipping and this is hard coded, leading to potential
errors later. This is a classic example: 3d739c1f6156 ("tracing: Use
the return of str_has_prefix() to remove open coded numbers"). However
you're not doing this transformation in the conversion, so the
conversion is pretty useless. I also see no case for replacing
strstart() where we're using it simply as a boolean without needing to
know the length of the prefix.

James