mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-09 09:09:33 +00:00
Add auxiliary method git__hexdump
New function in util.c to do a dump of a buffer's contents in hexadecimal to stdout. Signed-off-by: Vicent Marti <tanoku@gmail.com>
This commit is contained in:
parent
003c269094
commit
0e465f979b
44
src/util.c
44
src/util.c
@ -121,3 +121,47 @@ int git__basename(char *base, size_t n, char *path)
|
||||
return len;
|
||||
}
|
||||
|
||||
void git__hexdump(const char *buffer, size_t len)
|
||||
{
|
||||
static const size_t LINE_WIDTH = 16;
|
||||
|
||||
size_t line_count, last_line, i, j;
|
||||
const char *line;
|
||||
|
||||
line_count = (len / LINE_WIDTH);
|
||||
last_line = (len % LINE_WIDTH);
|
||||
|
||||
for (i = 0; i < line_count; ++i) {
|
||||
line = buffer + (i * LINE_WIDTH);
|
||||
for (j = 0; j < LINE_WIDTH; ++j, ++line)
|
||||
printf("%02X ", (unsigned char)*line & 0xFF);
|
||||
|
||||
printf("| ");
|
||||
|
||||
line = buffer + (i * LINE_WIDTH);
|
||||
for (j = 0; j < LINE_WIDTH; ++j, ++line)
|
||||
printf("%c", (*line >= 32 && *line <= 126) ? *line : '.');
|
||||
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
if (last_line > 0) {
|
||||
|
||||
line = buffer + (line_count * LINE_WIDTH);
|
||||
for (j = 0; j < last_line; ++j, ++line)
|
||||
printf("%02X ", (unsigned char)*line & 0xFF);
|
||||
|
||||
for (j = 0; j < (LINE_WIDTH - last_line); ++j)
|
||||
printf(" ");
|
||||
|
||||
printf("| ");
|
||||
|
||||
line = buffer + (line_count * LINE_WIDTH);
|
||||
for (j = 0; j < last_line; ++j, ++line)
|
||||
printf("%c", (*line >= 32 && *line <= 126) ? *line : '.');
|
||||
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
}
|
||||
|
@ -34,6 +34,8 @@ extern int git__suffixcmp(const char *str, const char *suffix);
|
||||
extern int git__dirname(char *dir, size_t n, char *path);
|
||||
extern int git__basename(char *base, size_t n, char *path);
|
||||
|
||||
extern void git__hexdump(const char *buffer, size_t n);
|
||||
|
||||
/** @return true if p fits into the range of a size_t */
|
||||
GIT_INLINE(int) git__is_sizet(off_t p)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user