Skip to content
  • Taylor Blau's avatar
    banned.h: mark `strtok()` and `strtok_r()` as banned · 60ff56f5
    Taylor Blau authored and Junio C Hamano's avatar Junio C Hamano committed
    `strtok()` has a couple of drawbacks that make it undesirable to have
    any new instances. In addition to being thread-unsafe, it also
    encourages confusing data flows, where `strtok()` may be called from
    multiple functions with its first argument as NULL, making it unclear
    from the immediate context which string is being tokenized.
    
    Now that we have removed all instances of `strtok()` from the tree,
    let's ban `strtok()` to avoid introducing new ones in the future. If new
    callers should arise, they are encouraged to use
    `string_list_split_in_place()` (and `string_list_remove_empty_items()`,
    if applicable).
    
    string_list_split_in_place() is not a perfect drop-in replacement
    for `strtok_r()`, particularly if the caller is processing a string with
    an arbitrary number of tokens, and wants to process each token one at a
    time.
    
    But there are no instances of this in Git's tree which are more
    well-suited to `strtok_r()` than the friendlier
    `string_list_split_in_pla...
    60ff56f5