Skip to content

Commit 1b505ec

Browse files
committed
Remove temp .ffraw file by default (pass -k to keep .ffraw)
I
1 parent cc49ede commit 1b505ec

File tree

2 files changed

+49
-14
lines changed

2 files changed

+49
-14
lines changed

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,17 @@ Example (default):
5151
linker.exe patch
5252
```
5353

54-
Produces `patch.ff` and `patch.ffraw`.
54+
Produces `patch.ff`.
5555

5656
Example (force .ffm):
5757

5858
```
5959
linker.exe -m patch
6060
```
6161

62-
Produces `patch.ffm` and `patch.ffraw`.
62+
Produces `patch.ffm`.
63+
64+
Note: pass `-k` to keep the generated `.ffraw`; by default it is removed.
6365

6466
### Unlinker
6567

src/linker.cpp

Lines changed: 45 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -250,27 +250,47 @@ int main(int argc, char** argv)
250250
init_asset_handlers();
251251
if (argc < 2)
252252
{
253-
std::cerr << "Usage: " << argv[0] << " [-m] <modname> (-m: produce .ffm; default: .ff)" << std::endl;
253+
std::cerr << "Usage: " << argv[0] << " [-m] [-k] <modname> (-m: produce .ffm; default: .ff; -k: keep .ffraw)" << std::endl;
254254
return 1;
255255
}
256256

257257
bool make_ffm = false;
258+
bool keep_raw = false;
258259
std::string name;
259260

260-
if (argc == 2)
261+
for (int i = 1; i < argc; ++i)
261262
{
262-
fs::path argpath(argv[1]);
263-
name = argpath.stem().string();
264-
}
265-
else if (argc >= 3 && std::string(argv[1]) == "-m")
266-
{
267-
make_ffm = true;
268-
fs::path argpath(argv[2]);
269-
name = argpath.stem().string();
263+
std::string a(argv[i]);
264+
if (a == "-m")
265+
{
266+
make_ffm = true;
267+
}
268+
else if (a == "-k")
269+
{
270+
keep_raw = true;
271+
}
272+
else if (!a.empty() && a[0] == '-')
273+
{
274+
std::cerr << "Unknown option: " << a << std::endl;
275+
std::cerr << "Usage: " << argv[0] << " [-m] [-k] <modname> (-m: produce .ffm; default: .ff; -k: keep .ffraw)" << std::endl;
276+
return 1;
277+
}
278+
else
279+
{
280+
if (name.empty())
281+
name = fs::path(a).stem().string();
282+
else
283+
{
284+
std::cerr << "Unexpected argument: " << a << std::endl;
285+
std::cerr << "Usage: " << argv[0] << " [-m] [-k] <modname> (-m: produce .ffm; default: .ff; -k: keep .ffraw)" << std::endl;
286+
return 1;
287+
}
288+
}
270289
}
271-
else
290+
291+
if (name.empty())
272292
{
273-
std::cerr << "Usage: " << argv[0] << " [-m] <modname> (-m: produce .ffm; default: .ff)" << std::endl;
293+
std::cerr << "Usage: " << argv[0] << " [-m] [-k] <modname> (-m: produce .ffm; default: .ff; -k: keep .ffraw)" << std::endl;
274294
return 1;
275295
}
276296

@@ -306,5 +326,18 @@ int main(int argc, char** argv)
306326
return 1;
307327
}
308328
std::cout << "Successfully wrote: " << ff_out << std::endl;
329+
330+
if (!keep_raw)
331+
{
332+
std::error_code ec;
333+
if (fs::remove(ffraw, ec))
334+
{
335+
std::cout << "Removed temporary file: " << ffraw << std::endl;
336+
}
337+
else if (ec)
338+
{
339+
std::cerr << "Warning: failed to remove temporary file " << ffraw << ": " << ec.message() << std::endl;
340+
}
341+
}
309342
return 0;
310343
}

0 commit comments

Comments
 (0)