| #include "hex.h" |
| #include <stdio.h> |
| |
| hexdmp_error_t stderr_hexdmp(const char* description, |
| const unsigned char* data_ptr, size_t datasz) { |
| if (description) { |
| fprintf(stderr, "%s:\n", description); |
| } |
| if (datasz == 0) { |
| fprintf(stderr, "No Data, Size is 0"); |
| return HEXDMP_OK; |
| } |
| if (!data_ptr) { |
| fprintf(stderr, "No data pointer"); |
| return HEXDMP_ERROR; |
| } |
| for (size_t i = 0; i < datasz; i += 16) { |
| // First print the offset. |
| fprintf(stderr, "%08x", (unsigned)i); |
| // Now print the next (at most) 16 characters. |
| for (size_t j = 0; (j < 16) && (i + j) < datasz; j++) { |
| fprintf(stderr, " %02x", data_ptr[i + j]); |
| } |
| // Print a newline. |
| fprintf(stderr, "\n"); |
| } |
| return HEXDMP_OK; |
| } |