Add ascii to the packed data

This commit is contained in:
Sergey Lyubka committed 2021-07-25 21:08:02 +01:00
1 parent 35abd695cd
commit b0e0247b21
2 files changed
+12 -6

No files matched your search

+1 -1
View File
@@ -9,7 +9,7 @@ all: $(PROG)
$(PROG):
$(CC) pack.c -o pack
./pack $(FILES_TO_EMBED) > fs.c
$(CC) -W -Wall -Wextra -O3 -g3 $(CFLAGS) -o $(PROG) $(SOURCES)
$(CC) -W -Wall -Wextra -Os -g3 $(CFLAGS) -o $(PROG) $(SOURCES)
ROOT ?= $(realpath $(CURDIR)/../..)
DOCKER ?= docker run -it --rm -e Tmp=. -e WINEDEBUG=-all -v $(ROOT):$(ROOT) -w $(CURDIR) mdashnet/vc98 wine
+11 -5
View File
@@ -24,7 +24,7 @@
static const char *code =
"const char *unpack(const char *name, size_t *size) {\n"
" const struct packed_file *p;\n"
" for (p = packed_files; p->name != NULL; p++) {\n"
" for (p = g_packed_files; p->name != NULL; p++) {\n"
" if (strcmp(p->name, name) != 0) continue;\n"
" if (size != NULL) *size = p->size - 1;\n"
" return (const char *) p->data;\n"
@@ -41,16 +41,22 @@ int main(int argc, char *argv[]) {
for (i = 1; i < argc; i++) {
FILE *fp = fopen(argv[i], "rb");
char ascii[12];
if (fp == NULL) exit(EXIT_FAILURE);
printf("static const unsigned char v%d[] = {", i);
printf("static const unsigned char v%d[] = {\n", i);
for (j = 0; (ch = fgetc(fp)) != EOF; j++) {
if ((j % 12) == 0) printf("%s", "\n ");
if (j == (int) sizeof(ascii)) {
printf(" // %.*s\n", j, ascii);
j = 0;
}
ascii[j] = (ch >= ' ' && ch <= '~' && ch != '\\') ? ch : '.';
printf(" %3u,", ch);
}
// Append zero byte at the end, to make text files appear in memory
// as nul-terminated strings.
printf("%s", " 0x00\n};\n");
// printf(" 0 // %.*s\n", (int) sizeof(ascii), ascii);
printf(" 0 // %.*s\n};\n", j, ascii);
fclose(fp);
}
@@ -58,7 +64,7 @@ int main(int argc, char *argv[]) {
printf("%s", " const char *name;\n");
printf("%s", " const unsigned char *data;\n");
printf("%s", " size_t size;\n");
printf("%s", "} packed_files[] = {\n");
printf("%s", "} g_packed_files[] = {\n");
for (i = 1; i < argc; i++) {
printf(" {\"%s\", v%d, sizeof(v%d) },\n", argv[i], i, i);