summaryrefslogtreecommitdiff
path: root/tree-walk.c
diff options
context:
space:
mode:
authorLibravatar Jeff King <peff@peff.net>2016-06-23 13:38:13 -0400
committerLibravatar Junio C Hamano <gitster@pobox.com>2016-06-23 11:32:51 -0700
commitdf8e472cc1bbd14a60d22b0b124f07046c6e1fa2 (patch)
tree4e6c3f6f155605b1b24e299ca4dd1ac1df5ed55a /tree-walk.c
parentadd skip_prefix_mem helper (diff)
downloadtgif-df8e472cc1bbd14a60d22b0b124f07046c6e1fa2.tar.xz
color: refactor parse_attr
The list of attributes we recognize is a bit unwieldy, as we actually have two arrays that must be kept in sync. Instead, let's have a single array-of-struct to represent our mapping. That means we can never have an accident that causes us to read off the end of an array, and it makes diffs for adding new attributes much easier to read. This also makes it easy to handle the "no" cases without having to repeat each attribute (this shortens the list, making it easier to read, but also also cuts the size of our linear search in half). Technically this makes it impossible for us to add an attribute that starts with "no" (we could confuse "nobody" for the negation of "body"), but since this is a constrained set of attributes, that's OK. Since we can also store the length of each name in the struct, that makes it easy for us to avoid reading past the "len" parameter given to us (though in practice it was not a bug, since all of our current callers are interested in a subset of a NUL-terminated buffer, not a true undelimited range of memory). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'tree-walk.c')
0 files changed, 0 insertions, 0 deletions