diff options
author | npwoods <npwoods@alumni.carnegiemellon.edu> | 2017-02-19 07:10:12 -0500 |
---|---|---|
committer | Vas Crabb <cuavas@users.noreply.github.com> | 2017-02-19 23:10:12 +1100 |
commit | 9a5e41e903e2195a958099de6a9dd5c2e04ae807 (patch) | |
tree | ba617cbeef54c1282167032b341773e51eba1f18 /src/frontend | |
parent | 59ae9f9ce8d3fd184427c4147b5c46782d0e0b69 (diff) |
Very minor cleanups; accessing options.software_name() once and better std::string usage (#2073) (nw)
Diffstat (limited to 'src/frontend')
-rw-r--r-- | src/frontend/mame/clifront.cpp | 16 | ||||
-rw-r--r-- | src/frontend/mame/mameopts.cpp | 2 |
2 files changed, 11 insertions, 7 deletions
diff --git a/src/frontend/mame/clifront.cpp b/src/frontend/mame/clifront.cpp index 598662e4766..c51e126cd3d 100644 --- a/src/frontend/mame/clifront.cpp +++ b/src/frontend/mame/clifront.cpp @@ -196,22 +196,26 @@ cli_frontend::~cli_frontend() void cli_frontend::start_execution(mame_machine_manager *manager,int argc, char **argv,std::string &option_errors) { - if (*(m_options.software_name()) != 0) + // load software specified at the command line (if any of course) + const std::string software_name = m_options.software_name(); + if (!software_name.empty()) { const game_driver *system = mame_options::system(m_options); if (system == nullptr && *(m_options.system_name()) != 0) throw emu_fatalerror(EMU_ERR_NO_SUCH_GAME, "Unknown system '%s'", m_options.system_name()); + // sanity check - lets fail quickly if this system doesn't have any softlists machine_config config(*system, m_options); software_list_device_iterator iter(config.root_device()); if (iter.count() == 0) - throw emu_fatalerror(EMU_ERR_FATALERROR, "Error: unknown option: %s\n", m_options.software_name()); + throw emu_fatalerror(EMU_ERR_FATALERROR, "Error: unknown option: %s\n", software_name.c_str()); + // loop through all softlist devices, and try to find one capable of handling the requested software bool found = false; bool compatible = false; for (software_list_device &swlistdev : iter) { - const software_info *swinfo = swlistdev.find(m_options.software_name()); + const software_info *swinfo = swlistdev.find(software_name); if (swinfo != nullptr) { // loop through all parts @@ -223,7 +227,7 @@ void cli_frontend::start_execution(mame_machine_manager *manager,int argc, char device_image_interface *image = software_list_device::find_mountable_image(config, swpart); if (image != nullptr) { - std::string val = string_format("%s:%s:%s", swlistdev.list_name(), m_options.software_name(), swpart.name()); + std::string val = string_format("%s:%s:%s", swlistdev.list_name(), software_name, swpart.name()); // call this in order to set slot devices according to mounting mame_options::parse_slot_devices(m_options, argc, argv, option_errors, image->instance_name(), val.c_str(), &swpart); @@ -239,11 +243,11 @@ void cli_frontend::start_execution(mame_machine_manager *manager,int argc, char } if (!compatible) { - software_list_device::display_matches(config, nullptr, m_options.software_name()); + software_list_device::display_matches(config, nullptr, software_name); if (!found) throw emu_fatalerror(EMU_ERR_FATALERROR, nullptr); else - throw emu_fatalerror(EMU_ERR_FATALERROR, "Software '%s' is incompatible with system '%s'\n", m_options.software_name(), m_options.system_name()); + throw emu_fatalerror(EMU_ERR_FATALERROR, "Software '%s' is incompatible with system '%s'\n", software_name.c_str(), m_options.system_name()); } } // parse the command line, adding any system-specific options diff --git a/src/frontend/mame/mameopts.cpp b/src/frontend/mame/mameopts.cpp index 01312820cce..f31db021211 100644 --- a/src/frontend/mame/mameopts.cpp +++ b/src/frontend/mame/mameopts.cpp @@ -57,7 +57,7 @@ bool mame_options::add_slot_options(emu_options &options, const software_part *s if (swpart != nullptr) { std::string featurename = std::string(name).append("_default"); - const char *value = swpart->feature(featurename.c_str()); + const char *value = swpart->feature(featurename); if (value != nullptr && (*value == '\0' || slot.option(value) != nullptr)) { // set priority above INIs but below actual command line |