From 310f07bd831a45ac83138589a668a38e74102d4f Mon Sep 17 00:00:00 2001 From: quou Date: Sat, 8 Feb 2025 21:57:01 +1100 Subject: allow specify full path for the packer --- packer.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'packer.c') diff --git a/packer.c b/packer.c index 283c11f..6229bf3 100644 --- a/packer.c +++ b/packer.c @@ -44,12 +44,15 @@ int main(int argc, const char** argv) { pack->file_count = file_count; for (i = 0; i < file_count; i++) { Pack_Entry* e; - e = pack_find_entry(pack, argv[i + 3]); + const char* ename = argv[i + 3]; + if (workingdir[0] == '-') + ename += strlen(workingdir) - 1 + strlen(dsep); + e = pack_find_entry(pack, ename); if (!e || e->name[0]) { print_err("Hash table error.\n"); return 5; } - strcpy(e->name, argv[i + 3]); + strcpy(e->name, ename); } fwrite(magic, 1, 4, outfile); fwrite(&pack->file_count, 1, 4, outfile); @@ -60,12 +63,16 @@ int main(int argc, const char** argv) { FILE* infile; Pack_Entry* e = &table[i]; uint32_t j; - strcat(fname, workingdir); + const char* wd = + workingdir[0] == '-'? + workingdir + 1: + workingdir; + strcat(fname, wd); strcat(fname, dsep); strcat(fname, e->name); infile = fopen(fname, "rb"); if (!infile) { - print_err("Failed to open %s.\n", argv[i + 3]); + print_err("Failed to open %s.\n", fname); return 6; } fseek(infile, 0, SEEK_END); -- cgit v1.2.3-54-g00ecf