config: return the new InputOption from add_option.

Change add_option to return the new InputOption on success, or NULL
failure. This way we can at least check for errors in callers.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
This commit is contained in:
Peter Hutterer 2011-08-09 11:20:31 +10:00
parent e684e816ac
commit d33652dad8
2 changed files with 11 additions and 4 deletions

View File

@ -30,7 +30,7 @@
void remove_devices(const char *backend, const char *config_info); void remove_devices(const char *backend, const char *config_info);
BOOL device_is_duplicate(const char *config_info); BOOL device_is_duplicate(const char *config_info);
void add_option(InputOption **options, const char *key, const char *value); InputOption* add_option(InputOption **options, const char *key, const char *value);
#ifdef CONFIG_UDEV #ifdef CONFIG_UDEV
int config_udev_init(void); int config_udev_init(void);

View File

@ -122,18 +122,25 @@ device_is_duplicate(const char *config_info)
return FALSE; return FALSE;
} }
void /**
* Allocate a new option and append to the list.
*
* @return A pointer to the newly allocated InputOption struct.
*/
InputOption*
add_option(InputOption **options, const char *key, const char *value) add_option(InputOption **options, const char *key, const char *value)
{ {
if (!value || *value == '\0') if (!value || *value == '\0')
return; return NULL;
for (; *options; options = &(*options)->next) for (; *options; options = &(*options)->next)
; ;
*options = calloc(sizeof(**options), 1); *options = calloc(sizeof(**options), 1);
if (!*options) /* Yeesh. */ if (!*options) /* Yeesh. */
return; return NULL;
(*options)->key = strdup(key); (*options)->key = strdup(key);
(*options)->value = strdup(value); (*options)->value = strdup(value);
(*options)->next = NULL; (*options)->next = NULL;
return *options;
} }