diff options
Diffstat (limited to 'packer.c')
-rw-r--r-- | packer.c | 15 |
1 files changed, 11 insertions, 4 deletions
@@ -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); |