1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-06 01:28:57 +00:00

Merge pull request #944 from TomHarte/SDLErrorReporting

Improve SDL failed-ROM reporting.
This commit is contained in:
Thomas Harte 2021-05-30 19:50:53 -04:00 committed by GitHub
commit 3858e79579
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 4 deletions

View File

@ -106,7 +106,7 @@
</CommandLineArgument> </CommandLineArgument>
<CommandLineArgument <CommandLineArgument
argument = "--rompath=/Users/thomasharte/Projects/CLK/ROMImages" argument = "--rompath=/Users/thomasharte/Projects/CLK/ROMImages"
isEnabled = "YES"> isEnabled = "NO">
</CommandLineArgument> </CommandLineArgument>
<CommandLineArgument <CommandLineArgument
argument = "--help" argument = "--help"

View File

@ -695,7 +695,8 @@ int main(int argc, char *argv[]) {
// /usr/share/CLK/[system]; or // /usr/share/CLK/[system]; or
// [user-supplied path]/[system] // [user-supplied path]/[system]
std::vector<ROMMachine::ROM> requested_roms; std::vector<ROMMachine::ROM> requested_roms;
ROMMachine::ROMFetcher rom_fetcher = [&requested_roms, &arguments] std::vector<std::string> checked_paths;
ROMMachine::ROMFetcher rom_fetcher = [&requested_roms, &arguments, &checked_paths]
(const std::vector<ROMMachine::ROM> &roms) -> std::vector<std::unique_ptr<std::vector<uint8_t>>> { (const std::vector<ROMMachine::ROM> &roms) -> std::vector<std::unique_ptr<std::vector<uint8_t>>> {
requested_roms.insert(requested_roms.end(), roms.begin(), roms.end()); requested_roms.insert(requested_roms.end(), roms.begin(), roms.end());
@ -716,13 +717,16 @@ int main(int argc, char *argv[]) {
std::vector<std::unique_ptr<std::vector<uint8_t>>> results; std::vector<std::unique_ptr<std::vector<uint8_t>>> results;
for(const auto &rom: roms) { for(const auto &rom: roms) {
FILE *file = nullptr; FILE *file = nullptr;
std::vector<std::string> rom_checked_paths;
for(const auto &path: paths) { for(const auto &path: paths) {
std::string local_path = path + rom.machine_name + "/" + rom.file_name; std::string local_path = path + rom.machine_name + "/" + rom.file_name;
file = std::fopen(local_path.c_str(), "rb"); file = std::fopen(local_path.c_str(), "rb");
rom_checked_paths.push_back(local_path);
if(file) break; if(file) break;
} }
if(!file) { if(!file) {
std::copy(rom_checked_paths.begin(), rom_checked_paths.end(), std::back_inserter(checked_paths));
results.emplace_back(nullptr); results.emplace_back(nullptr);
continue; continue;
} }
@ -737,8 +741,10 @@ int main(int argc, char *argv[]) {
if(read == data->size()) if(read == data->size())
results.emplace_back(std::move(data)); results.emplace_back(std::move(data));
else else {
std::copy(rom_checked_paths.begin(), rom_checked_paths.end(), std::back_inserter(checked_paths));
results.emplace_back(nullptr); results.emplace_back(nullptr);
}
} }
return results; return results;
@ -766,7 +772,7 @@ int main(int argc, char *argv[]) {
if(!rom.descriptive_name.empty()) { if(!rom.descriptive_name.empty()) {
std::cerr << rom.descriptive_name << "; "; std::cerr << rom.descriptive_name << "; ";
} }
std::cerr << "usual crc32s: "; std::cerr << ((rom.crc32s.size() > 1) ? "usual crc32s: " : "usual crc32: ");
bool is_first = true; bool is_first = true;
for(const auto crc32: rom.crc32s) { for(const auto crc32: rom.crc32s) {
if(!is_first) std::cerr << ", "; if(!is_first) std::cerr << ", ";
@ -775,6 +781,14 @@ int main(int argc, char *argv[]) {
} }
std::cerr << ")" << std::endl; std::cerr << ")" << std::endl;
} }
std::cerr << std::endl << "Tried specifically: ";
bool is_first = true;
for(const auto &path: checked_paths) {
if(!is_first) std::cerr << "; ";
std::cerr << path;
is_first = false;
}
std::cerr << std::endl;
break; break;
} }