Pierre Habouzit [off-list ref] writes:
quoted
strbuf->buf is always non-NULL and NUL-terminated so you could just do
static inline int strbuf_cmp(const struct strbuf *a, const struct strbuf *b)
{
int len = a->len < b->len ? a->len : b->len;
return memcmp(a->buf, b->buf, len + 1);
}
doesn't work, because a buffer can have (in some very specific cases)
an embeded NUL.
Couldn't you then just do:
int len = a->len < b->len ? a->len : b->len;
int cmp = memcmp(a->buf, b->buf, len);
if (cmp == 0)
cmp = b->len - a->len;
return cmp;
[In the case where one string is a prefix of the other, then the longer
one is "greater".]
?
-Miles
--
"Suppose He doesn't give a shit? Suppose there is a God but He
just doesn't give a shit?" [George Carlin]