Re: git log doesn't allow %x00 in custom format anymore?
- From
Jeff King <peff@peff.net>
- Date
- Oct 7, 2010, 18:13 UTC
- Message-ID
- <20101007181349.GD18518@sigill.intra.peff.net>
- In-Reply-To
- <AANLkTinu6fhd9DwfJpjiaxOUu_MrTym_RepR9f44=vrv@mail.gmail.com>
On Thu, Oct 07, 2010 at 08:05:20PM +0200, Erik Faye-Lund wrote:
Show 15 quoted lines
> >> I don't know which one would be most portable, but if fwrite is the
> >> problem, then
> >>
> >> printf("%*s%c", buf.buf, buf.len, info->hdr_termination);
> >>
> >> should do the trick.
> >
> > It does work, but you have to cast the buf.len size_t to an int.
> >
> I'm not sure how portable it is, though. This is what K&R has to say
> on the matter: "characters from the string are printed until a ´\0´ is
> reached or until the number of characters indicated by the precision
> have been printed". To me it's not clear if that means that either
> cases can terminate the printing when the precision has been
> specified.I take it back. It doesn't actually work (I thought I had done this just recently, but clearly not). Try:
#include <stdio.h>
int main()
{
char buf[] = "123456789";
buf[2] = '\0';
printf("%.*s\n", 5, buf);
return 0;
}It prints just "12" for me.
-Peff