| 547 | } |
| 548 | |
| 549 | void Transfer::sweepTempFiles(void) |
| 550 | { |
| 551 | for (const char* leftover : {TEMP_UPLOAD, TEMP_ZIP_RECV_LEGACY}) { |
| 552 | std::u16string p = StringUtils::UTF8toUTF16(leftover); |
| 553 | if (io::fileExists(Archive::sdmc(), p)) { |
| 554 | FSUSER_DeleteFile(Archive::sdmc(), fsMakePath(PATH_UTF16, p.data())); |
| 555 | Logging::info("Removed leftover {} from a previous run.", leftover); |
| 556 | } |
| 557 | } |
| 558 | |
| 559 | const std::u16string root = StringUtils::UTF8toUTF16("/3ds/Checkpoint/"); |
| 560 | Directory dir(Archive::sdmc(), root); |
| 561 | if (!dir.good()) { |
| 562 | return; |
| 563 | } |
| 564 | const std::string prefix = "transfer_send_"; |
| 565 | const std::string suffix = ".zip"; |
| 566 | for (size_t i = 0, sz = dir.size(); i < sz; i++) { |
| 567 | if (dir.folder(i)) { |
| 568 | continue; |
| 569 | } |
| 570 | std::string name = StringUtils::UTF16toUTF8(dir.entry(i)); |
| 571 | if (name.size() > prefix.size() + suffix.size() && name.compare(0, prefix.size(), prefix) == 0 && |
| 572 | name.compare(name.size() - suffix.size(), suffix.size(), suffix) == 0) { |
| 573 | std::u16string path = root + dir.entry(i); |
| 574 | FSUSER_DeleteFile(Archive::sdmc(), fsMakePath(PATH_UTF16, path.data())); |
| 575 | Logging::info("Removed leftover {} from a previous run.", name); |
| 576 | } |
| 577 | } |
| 578 | } |
| 579 | |
| 580 | bool Transfer::startReceiver(std::string& outError) |
| 581 | { |