Use config_get_entry instead of config_get_array to prevent

unnecessary string copying
This commit is contained in:
twinaphex 2020-08-27 16:28:19 +02:00
parent 63b77fb542
commit 5e60556f97
1 changed files with 10 additions and 18 deletions

View File

@ -110,17 +110,13 @@ static unsigned input_autoconfigure_get_config_file_affinity(
uint16_t config_pid = 0; uint16_t config_pid = 0;
bool pid_match = false; bool pid_match = false;
unsigned affinity = 0; unsigned affinity = 0;
char config_device_name[256]; struct config_entry_list
*entry = NULL;
config_device_name[0] = '\0';
if (!autoconfig_handle || !config) if (!autoconfig_handle || !config)
return 0; return 0;
/* Parse config file */ /* Parse config file */
config_get_array(config, "input_device", config_device_name,
sizeof(config_device_name));
if (config_get_int(config, "input_vendor_id", &tmp_int)) if (config_get_int(config, "input_vendor_id", &tmp_int))
config_vid = (uint16_t)tmp_int; config_vid = (uint16_t)tmp_int;
@ -150,9 +146,10 @@ static unsigned input_autoconfigure_get_config_file_affinity(
affinity += 3; affinity += 3;
/* Check for matching device name */ /* Check for matching device name */
if (!string_is_empty(config_device_name) && if ( (entry = config_get_entry(config, "input_device"))
string_is_equal(config_device_name, && !string_is_empty(entry->value)
autoconfig_handle->device_info.name)) && string_is_equal(entry->value,
autoconfig_handle->device_info.name))
affinity += 2; affinity += 2;
return affinity; return affinity;
@ -164,10 +161,7 @@ static void input_autoconfigure_set_config_file(
autoconfig_handle_t *autoconfig_handle, autoconfig_handle_t *autoconfig_handle,
config_file_t *config) config_file_t *config)
{ {
char device_display_name[256]; struct config_entry_list *entry = NULL;
device_display_name[0] = '\0';
if (!autoconfig_handle || !config) if (!autoconfig_handle || !config)
return; return;
@ -190,12 +184,10 @@ static void input_autoconfigure_set_config_file(
} }
/* Read device display name */ /* Read device display name */
config_get_array(config, "input_device_display_name", if ( (entry = config_get_entry(config, "input_device_display_name"))
device_display_name, sizeof(device_display_name)); && !string_is_empty(entry->value))
if (!string_is_empty(device_display_name))
strlcpy(autoconfig_handle->device_info.display_name, strlcpy(autoconfig_handle->device_info.display_name,
device_display_name, entry->value,
sizeof(autoconfig_handle->device_info.display_name)); sizeof(autoconfig_handle->device_info.display_name));
/* Set auto-configured status to 'true' */ /* Set auto-configured status to 'true' */