Thread (7 messages) flat view 7 messages, 3 authors, 2016-06-15

Re: git log doesn't allow %x00 in custom format anymore?

From: Jeff King <hidden>
Date: 2016-06-15 22:49:43

On Thu, Oct 07, 2010 at 08:05:20PM +0200, Erik Faye-Lund wrote:
quoted
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help