Simplify input_options function

This commit is contained in:
Jay McCarthy 2014-11-26 14:09:32 -05:00
parent 20da006556
commit 4f15c31a16

View File

@ -194,32 +194,27 @@ static const input_driver_t *input_drivers[] = {
* the drivers.
*/
const char* config_get_input_driver_options(void)
{
char *input_options;
int i;
const char* config_get_input_driver_options(void) {
char *input_options = NULL;
int input_option_k = 0;
int input_options_len = 0;
unsigned offset = 0;
while (input_drivers[input_option_k])
{
union string_list_elem_attr attr;
attr.i = 0;
struct string_list *input_options_l = string_list_new();
for (input_option_k = 0; input_drivers[input_option_k]; input_option_k++) {
const char *opt = input_drivers[input_option_k]->ident;
input_options_len += strlen(opt) + 1;
input_option_k++;
string_list_append(input_options_l, opt, attr);
}
input_options = (char*)calloc(input_options_len, sizeof(char));
for (i = 0; i < input_option_k; i++)
{
const char *opt = input_drivers[i]->ident;
strlcpy(input_options + offset, opt, input_options_len - offset);
offset += strlen(opt);
input_options[offset] = '|';
offset += 1;
}
input_options[input_options_len - 1] = '\0';
string_list_join_concat(input_options, input_options_len, input_options_l, "|");
string_list_free(input_options_l);
input_options_l = NULL;
return input_options;
}