diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-04-09 00:18:25 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-04-09 00:18:25 -0700 |
commit | ba9f517bdd2062d1d90d37e5b10d1688d48bc225 (patch) | |
tree | 1beb00e0eeaef93cecd2afa511f4857957d1fa43 | |
parent | 1d2375ddfee18bd3effd2c1f98527cc2f8b1df0a (diff) | |
parent | 42c8c74c1401352b0f388e47a2c9fcd52171c9d3 (diff) | |
download | git-ba9f517bdd2062d1d90d37e5b10d1688d48bc225.tar.gz git-ba9f517bdd2062d1d90d37e5b10d1688d48bc225.tar.xz |
Merge branch 'gs/pretty-hexval'
* gs/pretty-hexval:
pretty.c: add %x00 format specifier.
-rw-r--r-- | Documentation/pretty-formats.txt | 1 | ||||
-rw-r--r-- | log-tree.c | 6 | ||||
-rw-r--r-- | pretty.c | 11 |
3 files changed, 16 insertions, 2 deletions
diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt index 0193c3ce5..e8bea3e18 100644 --- a/Documentation/pretty-formats.txt +++ b/Documentation/pretty-formats.txt @@ -123,3 +123,4 @@ The placeholders are: - '%Creset': reset color - '%m': left, right or boundary mark - '%n': newline +- '%x00': print a byte from a hex code diff --git a/log-tree.c b/log-tree.c index 5b2963998..9d5406160 100644 --- a/log-tree.c +++ b/log-tree.c @@ -317,8 +317,10 @@ void show_log(struct rev_info *opt, const char *sep) if (opt->show_log_size) printf("log size %i\n", (int)msgbuf.len); - if (msgbuf.len) - printf("%s%s%s", msgbuf.buf, extra, sep); + if (msgbuf.len) { + fwrite(msgbuf.buf, sizeof(char), msgbuf.len, stdout); + printf("%s%s", extra, sep); + } strbuf_release(&msgbuf); } @@ -457,6 +457,7 @@ static size_t format_commit_item(struct strbuf *sb, const char *placeholder, const struct commit *commit = c->commit; const char *msg = commit->buffer; struct commit_list *p; + int h1, h2; /* these are independent of the commit */ switch (placeholder[0]) { @@ -478,6 +479,16 @@ static size_t format_commit_item(struct strbuf *sb, const char *placeholder, case 'n': /* newline */ strbuf_addch(sb, '\n'); return 1; + case 'x': + /* %x00 == NUL, %x0a == LF, etc. */ + if (0 <= (h1 = hexval_table[0xff & placeholder[1]]) && + h1 <= 16 && + 0 <= (h2 = hexval_table[0xff & placeholder[2]]) && + h2 <= 16) { + strbuf_addch(sb, (h1<<4)|h2); + return 3; + } else + return 0; } /* these depend on the commit */ |