diff options
| author | 2011-06-16 13:39:53 +0000 | |
|---|---|---|
| committer | 2011-06-16 13:39:53 +0000 | |
| commit | b58c772d9a3b7a6c97f73501b0eba7fb3667ba7c (patch) | |
| tree | a062df169df7202beb179b5254735a64673f9750 /src | |
| parent | e022252bf220dc4de569bc2ddde4147f0e4c8769 (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.c | 35 |
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; } |
