Commit 5d37128d by Edward Thomson

git__hexdump: better mimic `hexdump -C`

parent 1c7fb212
...@@ -424,35 +424,48 @@ void git__hexdump(const char *buffer, size_t len) ...@@ -424,35 +424,48 @@ void git__hexdump(const char *buffer, size_t len)
last_line = (len % LINE_WIDTH); last_line = (len % LINE_WIDTH);
for (i = 0; i < line_count; ++i) { for (i = 0; i < line_count; ++i) {
printf("%08" PRIxZ " ", (i * LINE_WIDTH));
line = buffer + (i * LINE_WIDTH); line = buffer + (i * LINE_WIDTH);
for (j = 0; j < LINE_WIDTH; ++j, ++line) for (j = 0; j < LINE_WIDTH; ++j, ++line) {
printf("%02X ", (unsigned char)*line & 0xFF); printf("%02x ", (unsigned char)*line & 0xFF);
if (j == (LINE_WIDTH / 2))
printf(" ");
}
printf("| "); printf(" |");
line = buffer + (i * LINE_WIDTH); line = buffer + (i * LINE_WIDTH);
for (j = 0; j < LINE_WIDTH; ++j, ++line) for (j = 0; j < LINE_WIDTH; ++j, ++line)
printf("%c", (*line >= 32 && *line <= 126) ? *line : '.'); printf("%c", (*line >= 32 && *line <= 126) ? *line : '.');
printf("\n"); printf("|\n");
} }
if (last_line > 0) { if (last_line > 0) {
printf("%08" PRIxZ " ", (line_count * LINE_WIDTH));
line = buffer + (line_count * LINE_WIDTH); line = buffer + (line_count * LINE_WIDTH);
for (j = 0; j < last_line; ++j, ++line) for (j = 0; j < last_line; ++j, ++line) {
printf("%02X ", (unsigned char)*line & 0xFF); printf("%02x ", (unsigned char)*line & 0xFF);
if (j == (LINE_WIDTH / 2))
printf(" ");
}
if (j < (LINE_WIDTH / 2))
printf(" ");
for (j = 0; j < (LINE_WIDTH - last_line); ++j) for (j = 0; j < (LINE_WIDTH - last_line); ++j)
printf(" "); printf(" ");
printf("| "); printf(" |");
line = buffer + (line_count * LINE_WIDTH); line = buffer + (line_count * LINE_WIDTH);
for (j = 0; j < last_line; ++j, ++line) for (j = 0; j < last_line; ++j, ++line)
printf("%c", (*line >= 32 && *line <= 126) ? *line : '.'); printf("%c", (*line >= 32 && *line <= 126) ? *line : '.');
printf("\n"); printf("|\n");
} }
printf("\n"); printf("\n");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment