aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-04-09 00:18:25 -0700
committerJunio C Hamano <gitster@pobox.com>2008-04-09 00:18:25 -0700
commitba9f517bdd2062d1d90d37e5b10d1688d48bc225 (patch)
tree1beb00e0eeaef93cecd2afa511f4857957d1fa43
parent1d2375ddfee18bd3effd2c1f98527cc2f8b1df0a (diff)
parent42c8c74c1401352b0f388e47a2c9fcd52171c9d3 (diff)
downloadgit-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.txt1
-rw-r--r--log-tree.c6
-rw-r--r--pretty.c11
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);
}
diff --git a/pretty.c b/pretty.c
index 16bfb86cd..6c04176cb 100644
--- a/pretty.c
+++ b/pretty.c
@@ -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 */