summaryrefslogtreecommitdiff
path: root/packer.c
diff options
context:
space:
mode:
Diffstat (limited to 'packer.c')
-rw-r--r--packer.c15
1 files changed, 11 insertions, 4 deletions
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);