Re: git log doesn't allow %x00 in custom format anymore?
On Thu, Oct 7, 2010 at 8:33 PM, Jeff King <peff@peff.net> wrote:
Show 32 quoted lines
> On Thu, Oct 07, 2010 at 08:19:01PM +0200, Erik Faye-Lund wrote:
>
>> Yeah. When I read K&R a bit closer, I find this:
>>
>> "A number specifying a minimum field width. The converted argument
>> will be printed in a field _at least this wide_, and wider if
>> necessary. If the converted argument has fewer characters than the
>> field width _it will be padded_ on the left (or right, if left
>> adjustment has been requested) to make up the field width."
>
> You are confusing field width (%*s) with precision (%.*s) here.
>
> C89 is pretty clear that the behavior I am seeing is mandated:
>
> 7.19.6.1, paragraph 4:
>
> An optional precision that gives ... the maximum number of bytes to
> be written for s conversions.
>
> 7.19.6.1, paragraph 8, item "s":
>
> ... Characters from the array are written up to (but not including)
> the terminating null character. If the precision is specified, no
> more than that many bytes are written. If the precision is not
> specified or is greater than the size of the array, the array shall
> contain a null character.
>
> so it is always about giving a maximum to print an unterminated string,
> or to print a partial string. But printf always stops at a NUL.
>
> -Peff
>
Indeed, thanks for clearing that up.