+ /* Create a dummy pmenu_item to represent the dev */
+ pb_debug("%s: Building new item\n",__func__);
+ sys = cui->sysinfo;
+ switch (dev->type) {
+ case DEVICE_TYPE_OPTICAL:
+ case DEVICE_TYPE_DISK:
+ case DEVICE_TYPE_USB:
+ /* Find block info */
+ for (i = 0; sys && i < sys->n_blockdevs; i++) {
+ bd = sys->blockdevs[i];
+ if (!strcmp(opt->device_id, bd->name)) {
+ matched = true;
+ break;
+ }
+ }
+ if (matched) {
+ snprintf(buf,sizeof(buf),"[%s: %s / %s]",
+ device_type_display_name(dev->type),
+ bd->name, bd->uuid);
+ }
+ break;
+
+ case DEVICE_TYPE_NETWORK:
+ /* Find interface info */
+ for (i = 0; sys && i < sys->n_interfaces; i++) {
+ intf = sys->interfaces[i];
+ if (!strcmp(opt->device_id, intf->name)) {
+ matched = true;
+ break;
+ }
+ }
+ if (matched) {
+ mac_str(intf->hwaddr, intf->hwaddr_size,
+ hwaddr, sizeof(hwaddr));
+ snprintf(buf,sizeof(buf),"[%s: %s / %s]",
+ _("Network"), intf->name, hwaddr);
+ }
+ break;
+ case DEVICE_TYPE_ANY:
+ /* This is an option found from a file:// url, not associated
+ * with any device */
+ snprintf(buf, sizeof(buf), "[Custom Local Options]");
+ matched = true;
+ break;
+
+ default:
+ /* Assume the device may be able to boot */
+ break;
+ }
+ if (!matched) {
+ pb_debug("%s: No matching device found for %s (%s)\n",
+ __func__,opt->device_id, dev->id);
+ snprintf(buf, sizeof(buf), "[%s: %s]",
+ _("Unknown Device"), dev->id);