summaryrefslogtreecommitdiffstatshomepage
path: root/src
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 /src
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)
Diffstat (limited to 'src')
-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;
}