Re: git-log --pretty=format:'[%x00]%w(0,0,1)' doesn't print NUL and "]"
- From
Jeff King <peff@peff.net>
- Date
- Dec 29, 2011, 19:23 UTC
- Message-ID
- <20111229192328.GA18723@sigill.intra.peff.net>
- In-Reply-To
- <CANjopZFqiy+Ai4u6QYYnza5J7A3NAt-f17yR9AsYok-g3Hbb3w@mail.gmail.com>
On Fri, Dec 30, 2011 at 03:41:20AM +0900, Tanaka Akira wrote:
Show 9 quoted lines
> I found that git-log doesn't print characters in --pretty option as follows. > > % git log --pretty=format:'[%x00]%w(0,0,1)' |od -c > 0000000 [ \n [ \n [ \n [ \n [ \n [ \n [ \n [ \n > * > 0022320 [ \n [ \n [ \n [ > 0022327 > > I think NUL and "]" should be printed.
I think there is a bug in strbuf_add_indented_text, which uses strchrnul, even though a strbuf may contain literal NULs. Although one could argue that trying to wrap a NUL is questionable (after all, what is its character width?), the current behavior seems pretty wrong.
I think the whole wrapping callchain needs to be adjusted to handle arbitrary bytes (there are also several checks in strbuf_add_wrapped_text for NUL terminators).
-Peff