diff options
| author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-04-28 07:45:45 +0200 |
|---|---|---|
| committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-04-28 07:45:45 +0200 |
| commit | 0ed91795a2db720e688fd2daefd22f7e9c754c2f (patch) | |
| tree | 1856de605b3888132ad6917cbeb3ecf677bbda6d /tools/hexdump.c | |
| download | stalag-0ed91795a2db720e688fd2daefd22f7e9c754c2f.tar.gz | |
Engage!
Diffstat (limited to 'tools/hexdump.c')
| -rw-r--r-- | tools/hexdump.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tools/hexdump.c b/tools/hexdump.c new file mode 100644 index 0000000..988424a --- /dev/null +++ b/tools/hexdump.c @@ -0,0 +1,57 @@ +#include <stdio.h> +#include <stdlib.h> + +int main(int argc, char *argv[]) { + if (argc < 3) { + fprintf(stderr, "Usage: %s <input_file> <array_name>\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; +} |
