summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2011-06-16 13:39:53 +0000
committer Miodrag Milanovic <mmicko@gmail.com>2011-06-16 13:39:53 +0000
commitb58c772d9a3b7a6c97f73501b0eba7fb3667ba7c (patch)
treea062df169df7202beb179b5254735a64673f9750
parente022252bf220dc4de569bc2ddde4147f0e4c8769 (diff)
Multi part software list items that do have different interfaces used are mounted now (only first part per interface part is loaded) (no whatsnew)
-rw-r--r--src/emu/clifront.c35
1 files changed, 22 insertions, 13 deletions
diff --git a/src/emu/clifront.c b/src/emu/clifront.c
index 7c450d4cfdd..91ad0346fd7 100644
--- a/src/emu/clifront.c
+++ b/src/emu/clifront.c
@@ -200,24 +200,33 @@ int cli_frontend::execute(int argc, char **argv)
{
software_info *swinfo = software_list_find(list, m_options.software_name(), NULL);
if (swinfo!=NULL) {
- const device_image_interface *image = NULL;
- software_part *part = software_find_part(swinfo, NULL, NULL);
- // search for a device with the right interface
- for (bool gotone = config.devicelist().first(image); gotone; gotone = image->next(image))
+ for (software_part *swpart = software_find_part(swinfo, NULL, NULL); swpart != NULL; swpart = software_part_next(swpart))
{
- const char *interface = image->image_interface();
- if (interface != NULL)
+ // loop trough all parts
+ // search for a device with the right interface
+ const device_image_interface *image = NULL;
+ for (bool gotone = config.devicelist().first(image); gotone; gotone = image->next(image))
{
- if (!strcmp(interface, part->interface_))
- {
- astring error;
- m_options.set_value(image->brief_instance_name(), m_options.software_name(), OPTION_PRIORITY_CMDLINE, error);
- assert(!error);
- software_list_close(list);
- break;
+ const char *interface = image->image_interface();
+ if (interface != NULL)
+ {
+ if (!strcmp(interface, swpart->interface_))
+ {
+ const char *option = m_options.value(image->brief_instance_name());
+ // mount only if not already mounted
+ if (strlen(option)==0) {
+ astring val;
+ astring error;
+ val.printf("%s:%s",m_options.software_name(),swpart->name);
+ m_options.set_value(image->brief_instance_name(), val.cstr(), OPTION_PRIORITY_CMDLINE, error);
+ assert(!error);
+ }
+ break;
+ }
}
}
}
+ software_list_close(list);
found = TRUE;
break;
}