Refactor find_driver_index

This commit is contained in:
twinaphex 2014-08-26 21:13:14 +02:00
parent 623c02405d
commit 7ce5ebb927

View File

@ -243,56 +243,46 @@ static const menu_ctx_driver_t *menu_ctx_drivers[] = {
};
#endif
static const char *find_driver_ident(unsigned cmd, int i)
static const void *find_driver_nonempty(unsigned cmd, int i,
char *str, size_t sizeof_str)
{
switch (cmd)
{
case RARCH_DRIVER_LOCATION:
return location_drivers[i]->ident;
case RARCH_DRIVER_CAMERA:
return camera_drivers[i]->ident;
case RARCH_DRIVER_OSK:
return osk_drivers[i]->ident;
#ifdef HAVE_MENU
case RARCH_DRIVER_MENU:
return menu_ctx_drivers[i]->ident;
#endif
case RARCH_DRIVER_INPUT:
return input_drivers[i]->ident;
case RARCH_DRIVER_VIDEO:
return video_drivers[i]->ident;
case RARCH_DRIVER_AUDIO:
return audio_drivers[i]->ident;
default:
break;
}
return "";
}
const void *driver = NULL;
static const void *find_driver_nonempty(unsigned cmd, int i)
{
switch (cmd)
{
case RARCH_DRIVER_LOCATION:
return location_drivers[i];
driver = location_drivers[i];
strlcpy(str, location_drivers[i]->ident, sizeof_str);
break;
case RARCH_DRIVER_CAMERA:
return camera_drivers[i];
driver = camera_drivers[i];
strlcpy(str, camera_drivers[i]->ident, sizeof_str);
break;
case RARCH_DRIVER_OSK:
return osk_drivers[i];
driver = osk_drivers[i];
strlcpy(str, osk_drivers[i]->ident, sizeof_str);
break;
#ifdef HAVE_MENU
case RARCH_DRIVER_MENU:
return menu_ctx_drivers[i];
driver = menu_ctx_drivers[i];
strlcpy(str, menu_ctx_drivers[i]->ident, sizeof_str);
break;
#endif
case RARCH_DRIVER_INPUT:
return input_drivers[i];
driver = input_drivers[i];
strlcpy(str, input_drivers[i]->ident, sizeof_str);
break;
case RARCH_DRIVER_VIDEO:
return video_drivers[i];
driver = video_drivers[i];
strlcpy(str, video_drivers[i]->ident, sizeof_str);
break;
case RARCH_DRIVER_AUDIO:
return audio_drivers[i];
default:
break;
driver = audio_drivers[i];
strlcpy(str, audio_drivers[i]->ident, sizeof_str);
break;
}
return NULL;
return driver;
}
static int find_driver_index(unsigned cmd, const char *driver)
@ -304,9 +294,16 @@ static int find_driver_index(unsigned cmd, const char *driver)
case RARCH_DRIVER_NONE:
break;
default:
for (i = 0; find_driver_nonempty(cmd, i) != NULL; i++)
if (!strcasecmp(driver, find_driver_ident(cmd, i)))
return i;
{
char str[PATH_MAX];
for (i = 0; find_driver_nonempty(cmd, i, str, sizeof(str)) != NULL; i++)
{
if (str[0] == '\0')
break;
if (!strcasecmp(driver, str))
return i;
}
}
break;
}