diff options
| author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2025-08-06 04:57:13 +0200 |
|---|---|---|
| committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2025-08-06 04:57:13 +0200 |
| commit | 684d3b5308083b762e29a08174702ff7134824a3 (patch) | |
| tree | 999036961f9e1bf84b59a89fe6e324d86d887bc3 | |
| parent | 9dd5a874758f7160a62a7f454821df26f713d119 (diff) | |
| download | bidi-684d3b5308083b762e29a08174702ff7134824a3.tar.gz | |
Added hexdump
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | Makefile | 11 | ||||
| -rw-r--r-- | hexdump.c | 57 |
3 files changed, 65 insertions, 4 deletions
@@ -1,5 +1,6 @@ # Binary files bidi +hexdump vendor/lua*/src/lua vendor/lua*/src/luac @@ -1,13 +1,16 @@ +CC ?= tcc RAYLIB := raylib-5.5_linux_amd64 LUA := lua-5.4.8 - -CC ?= tcc CFLAGS := -std=c99 -v -g -I./vendor/$(RAYLIB)/include -I./vendor/$(LUA)/src LDFLAGS := -L./vendor/$(RAYLIB)/lib -lraylib -L./vendor/$(LUA)/src -llua -lm PROG := bidi +PROG_C := main.c + +$(PROG): lua hexdump $(PROG_C) + $(CC) $(CFLAGS) $(PROG_C) -o $(PROG) $(LDFLAGS) -$(PROG): lua *.c - $(CC) $(CFLAGS) *.c -o $(PROG) $(LDFLAGS) +hexdump: hexdump.c + $(CC) -std=c99 -o hexdump hexdump.c lua: cd vendor/$(LUA) && make 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 <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; +} |
