Pierre Habouzit <madcoder@xxxxxxxxxx> writes: >> 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] - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html