summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commit9a5e41e903e2195a958099de6a9dd5c2e04ae807 (patch)
treeba617cbeef54c1282167032b341773e51eba1f18
parent59ae9f9ce8d3fd184427c4147b5c46782d0e0b69 (diff)
Very minor cleanups; accessing options.software_name() once and better std::string usage (#2073) (nw)
-rw-r--r--src/frontend/mame/clifront.cpp16
-rw-r--r--src/frontend/mame/mameopts.cpp2
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