Skip to content

Commit 898caea

Browse files
authored
Merge pull request libgit2#5431 from libgit2/ethomson/hexdump
git__hexdump: better mimic `hexdump -C`
2 parents 66137ff + 5d37128 commit 898caea

File tree

1 file changed

+22
-9
lines changed

1 file changed

+22
-9
lines changed

src/util.c

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -424,35 +424,48 @@ void git__hexdump(const char *buffer, size_t len)
424424
last_line = (len % LINE_WIDTH);
425425

426426
for (i = 0; i < line_count; ++i) {
427+
printf("%08" PRIxZ " ", (i * LINE_WIDTH));
428+
427429
line = buffer + (i * LINE_WIDTH);
428-
for (j = 0; j < LINE_WIDTH; ++j, ++line)
429-
printf("%02X ", (unsigned char)*line & 0xFF);
430+
for (j = 0; j < LINE_WIDTH; ++j, ++line) {
431+
printf("%02x ", (unsigned char)*line & 0xFF);
432+
433+
if (j == (LINE_WIDTH / 2))
434+
printf(" ");
435+
}
430436

431-
printf("| ");
437+
printf(" |");
432438

433439
line = buffer + (i * LINE_WIDTH);
434440
for (j = 0; j < LINE_WIDTH; ++j, ++line)
435441
printf("%c", (*line >= 32 && *line <= 126) ? *line : '.');
436442

437-
printf("\n");
443+
printf("|\n");
438444
}
439445

440446
if (last_line > 0) {
447+
printf("%08" PRIxZ " ", (line_count * LINE_WIDTH));
441448

442449
line = buffer + (line_count * LINE_WIDTH);
443-
for (j = 0; j < last_line; ++j, ++line)
444-
printf("%02X ", (unsigned char)*line & 0xFF);
450+
for (j = 0; j < last_line; ++j, ++line) {
451+
printf("%02x ", (unsigned char)*line & 0xFF);
452+
453+
if (j == (LINE_WIDTH / 2))
454+
printf(" ");
455+
}
445456

457+
if (j < (LINE_WIDTH / 2))
458+
printf(" ");
446459
for (j = 0; j < (LINE_WIDTH - last_line); ++j)
447-
printf(" ");
460+
printf(" ");
448461

449-
printf("| ");
462+
printf(" |");
450463

451464
line = buffer + (line_count * LINE_WIDTH);
452465
for (j = 0; j < last_line; ++j, ++line)
453466
printf("%c", (*line >= 32 && *line <= 126) ? *line : '.');
454467

455-
printf("\n");
468+
printf("|\n");
456469
}
457470

458471
printf("\n");

0 commit comments

Comments
 (0)