add alpm_list_append_strdup
Makes error detection and handling easier for a common operation. Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
a202959a19
commit
a138db3c07
2 changed files with 21 additions and 0 deletions
|
@ -131,6 +131,26 @@ alpm_list_t SYMEXPORT *alpm_list_append(alpm_list_t **list, void *data)
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Duplicate and append a string to a list.
|
||||||
|
*
|
||||||
|
* @param list the list to append to
|
||||||
|
* @param data the string to duplicate and append
|
||||||
|
*
|
||||||
|
* @return the newly added item
|
||||||
|
*/
|
||||||
|
alpm_list_t SYMEXPORT *alpm_list_append_strdup(alpm_list_t **list, const char *data)
|
||||||
|
{
|
||||||
|
alpm_list_t *ret;
|
||||||
|
char *dup;
|
||||||
|
if((dup = strdup(data)) && (ret = alpm_list_append(list, dup))) {
|
||||||
|
return ret;
|
||||||
|
} else {
|
||||||
|
free(dup);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Add items to a list in sorted order.
|
* @brief Add items to a list in sorted order.
|
||||||
*
|
*
|
||||||
|
|
|
@ -58,6 +58,7 @@ void alpm_list_free_inner(alpm_list_t *list, alpm_list_fn_free fn);
|
||||||
/* item mutators */
|
/* item mutators */
|
||||||
alpm_list_t *alpm_list_add(alpm_list_t *list, void *data);
|
alpm_list_t *alpm_list_add(alpm_list_t *list, void *data);
|
||||||
alpm_list_t *alpm_list_append(alpm_list_t **list, void *data);
|
alpm_list_t *alpm_list_append(alpm_list_t **list, void *data);
|
||||||
|
alpm_list_t *alpm_list_append_strdup(alpm_list_t **list, const char *data);
|
||||||
alpm_list_t *alpm_list_add_sorted(alpm_list_t *list, void *data, alpm_list_fn_cmp fn);
|
alpm_list_t *alpm_list_add_sorted(alpm_list_t *list, void *data, alpm_list_fn_cmp fn);
|
||||||
alpm_list_t *alpm_list_join(alpm_list_t *first, alpm_list_t *second);
|
alpm_list_t *alpm_list_join(alpm_list_t *first, alpm_list_t *second);
|
||||||
alpm_list_t *alpm_list_mmerge(alpm_list_t *left, alpm_list_t *right, alpm_list_fn_cmp fn);
|
alpm_list_t *alpm_list_mmerge(alpm_list_t *left, alpm_list_t *right, alpm_list_fn_cmp fn);
|
||||||
|
|
Loading…
Add table
Reference in a new issue