From 684d3b5308083b762e29a08174702ff7134824a3 Mon Sep 17 00:00:00 2001 From: Mitja Felicijan Date: Wed, 6 Aug 2025 04:57:13 +0200 Subject: Added hexdump --- hexdump.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 hexdump.c (limited to 'hexdump.c') diff --git a/hexdump.c b/hexdump.c new file mode 100644 index 0000000..988424a --- /dev/null +++ b/hexdump.c @@ -0,0 +1,57 @@ +#include +#include + +int main(int argc, char *argv[]) { + if (argc < 3) { + fprintf(stderr, "Usage: %s \n", argv[0]); + return 1; + } + + const char *filename = argv[1]; + const char *array_name = argv[2]; + + FILE *f = fopen(filename, "rb"); + if (!f) { + perror("fopen"); + return 1; + } + + fseek(f, 0, SEEK_END); + long size = ftell(f); + rewind(f); + + unsigned char *buffer = malloc(size); + if (!buffer) { + perror("malloc"); + fclose(f); + return 1; + } + + if (fread(buffer, 1, size, f) != (size_t)size) { + perror("fread"); + free(buffer); + fclose(f); + return 1; + } + + // Generate include guard + printf("#ifndef %s_H\n", array_name); + printf("#define %s_H\n\n", array_name); + + printf("unsigned char %s[] = {\n", array_name); + for (long i = 0; i < size; i++) { + if (i % 12 == 0) printf("\t"); + printf("0x%02x", buffer[i]); + if (i != size - 1) printf(", "); + if ((i + 1) % 12 == 0) printf("\n"); + } + if (size % 12 != 0) printf("\n"); + printf("};\n"); + printf("unsigned int %s_len = %ld;\n", array_name, size); + + printf("\n#endif // %s_H\n", array_name); + + free(buffer); + fclose(f); + return 0; +} -- cgit v1.2.3