libpkgconf: path: add naive path list filtering function

pull/109/head
William Pitcock 2016-12-30 10:44:01 -06:00
parent 54c3ca86a2
commit aa041b415e
2 changed files with 22 additions and 2 deletions

View File

@ -8,7 +8,7 @@ variables.
.. c:function:: void pkgconf_path_add(const char *text, pkgconf_list_t *dirlist) .. c:function:: void pkgconf_path_add(const char *text, pkgconf_list_t *dirlist)
Adds a path node to a path list. Adds a path node to a path list. If the path is already in the list, do nothing.
:param char* text: The path text to add as a path node. :param char* text: The path text to add as a path node.
:param pkgconf_list_t* dirlist: The path list to add the path node to. :param pkgconf_list_t* dirlist: The path list to add the path node to.

View File

@ -14,6 +14,23 @@
*/ */
#include <libpkgconf/libpkgconf.h> #include <libpkgconf/libpkgconf.h>
#include <libpkgconf/config.h>
static bool
path_list_contains_entry(const char *text, pkgconf_list_t *dirlist)
{
pkgconf_node_t *n;
PKGCONF_FOREACH_LIST_ENTRY(dirlist->head, n)
{
pkgconf_path_t *pn = n->data;
if (!strcmp(text, pn->path))
return true;
}
return false;
}
/* /*
* !doc * !doc
@ -31,7 +48,7 @@
* *
* .. c:function:: void pkgconf_path_add(const char *text, pkgconf_list_t *dirlist) * .. c:function:: void pkgconf_path_add(const char *text, pkgconf_list_t *dirlist)
* *
* Adds a path node to a path list. * Adds a path node to a path list. If the path is already in the list, do nothing.
* *
* :param char* text: The path text to add as a path node. * :param char* text: The path text to add as a path node.
* :param pkgconf_list_t* dirlist: The path list to add the path node to. * :param pkgconf_list_t* dirlist: The path list to add the path node to.
@ -42,6 +59,9 @@ pkgconf_path_add(const char *text, pkgconf_list_t *dirlist)
{ {
pkgconf_path_t *node; pkgconf_path_t *node;
if (path_list_contains_entry(text, dirlist))
return;
node = calloc(sizeof(pkgconf_path_t), 1); node = calloc(sizeof(pkgconf_path_t), 1);
node->path = strdup(text); node->path = strdup(text);