From 684d3b5308083b762e29a08174702ff7134824a3 Mon Sep 17 00:00:00 2001 From: Mitja Felicijan Date: Wed, 6 Aug 2025 04:57:13 +0200 Subject: Added hexdump --- .gitignore | 1 + Makefile | 11 +++++++---- hexdump.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 hexdump.c diff --git a/.gitignore b/.gitignore index 8291ce5..e8e3216 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Binary files bidi +hexdump vendor/lua*/src/lua vendor/lua*/src/luac diff --git a/Makefile b/Makefile index 8bd52b9..a7a46ef 100644 --- a/Makefile +++ b/Makefile @@ -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 +#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