• P
    Rework strbuf API and semantics. · b449f4cf
    Pierre Habouzit 提交于
      The gory details are explained in strbuf.h. The change of semantics this
    patch enforces is that the embeded buffer has always a '\0' character after
    its last byte, to always make it a C-string. The offs-by-one changes are all
    related to that very change.
    
      A strbuf can be used to store byte arrays, or as an extended string
    library. The `buf' member can be passed to any C legacy string function,
    because strbuf operations always ensure there is a terminating \0 at the end
    of the buffer, not accounted in the `len' field of the structure.
    
      A strbuf can be used to generate a string/buffer whose final size is not
    really known, and then "strbuf_detach" can be used to get the built buffer,
    and keep the wrapping "strbuf" structure usable for further work again.
    
      Other interesting feature: strbuf_grow(sb, size) ensure that there is
    enough allocated space in `sb' to put `size' new octets of data in the
    buffer. It helps avoiding reallocating data for nothing when the problem the
    strbuf helps to solve has a known typical size.
    Signed-off-by: NPierre Habouzit <madcoder@debian.org>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    b449f4cf
strbuf.c 2.2 KB