fix(epbf): fix behavior of has_prefix()  and add strncmp()
          #4394
        
          
      
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
Closes #4395
There are 2 implementations for
has_prefix(), one as a macro and one as a function (depending on the compiler version). They both behave differently in cases where no difference was found inniterations - the macro returns 1 (true), which is an issue if the prefix is longer thann, while the function returns 0 (false) which is wrong if the prefix and string are identical. An additional check was added tohas_prefix()to account for prefixes longer thann, while still returning true when the strings are equal.Additionally, an
strncmp()macro and function were added, because most uses ofhas_prefix()become clearer when usingstrncmp().Only a single usage of
has_prefix()(infilter_file_path()) cannot usestrncmp()because the prefix length can only be determined at runtime which makes usage of an unrolled loop impossible. Instead, it must usehas_prefix()which accounts for prefixes shorter than the string, unlikestrncmp().