From: Kristian Høgsberg Date: Thu, 06 Sep 2007 17:49:23 GMT Subject: Re: [PATCH 1/7] Rework strbuf API and semantics. Message-ID: <1189100963.3423.9.camel@hinata.boston.redhat.com> In-Reply-To: <118907761140-git-send-email-madcoder@debian.org> On Thu, 2007-09-06 at 13:20 +0200, Pierre Habouzit wrote: > 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. This looks good, should be very useful. Kristian