Skip to content

Commit

Permalink
kvlist: add new functions
Browse files Browse the repository at this point in the history
Signed-off-by: Eduardo Silva <[email protected]>
  • Loading branch information
edsiper committed Feb 17, 2024
1 parent 22a0f83 commit 6eef93d
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 0 deletions.
4 changes: 4 additions & 0 deletions include/cfl/cfl_kvlist.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,8 @@ int cfl_kvlist_count(struct cfl_kvlist *list);
struct cfl_variant *cfl_kvlist_fetch(struct cfl_kvlist *list, char *key);
int cfl_kvlist_print(FILE *fp, struct cfl_kvlist *list);

int cfl_kvlist_contains(struct cfl_kvlist *kvlist, char *name);
int cfl_kvlist_remove(struct cfl_kvlist *kvlist, char *name);
void cfl_kvpair_destroy(struct cfl_kvpair *pair);

#endif
57 changes: 57 additions & 0 deletions src/cfl_kvlist.c
Original file line number Diff line number Diff line change
Expand Up @@ -411,3 +411,60 @@ int cfl_kvlist_print(FILE *fp, struct cfl_kvlist *list)

return ret;
}

int cfl_kvlist_contains(struct cfl_kvlist *kvlist, char *name)
{
struct cfl_list *iterator;
struct cfl_kvpair *pair;

cfl_list_foreach(iterator, &kvlist->list) {
pair = cfl_list_entry(iterator,
struct cfl_kvpair, _head);

if (strcasecmp(pair->key, name) == 0) {
return CFL_TRUE;
}
}

return CFL_FALSE;
}


int cfl_kvlist_remove(struct cfl_kvlist *kvlist, char *name)
{
struct cfl_list *iterator_backup;
struct cfl_list *iterator;
struct cfl_kvpair *pair;

cfl_list_foreach_safe(iterator, iterator_backup, &kvlist->list) {
pair = cfl_list_entry(iterator,
struct cfl_kvpair, _head);

if (strcasecmp(pair->key, name) == 0) {
cfl_kvpair_destroy(pair);
}
}

return CFL_TRUE;
}


void cfl_kvpair_destroy(struct cfl_kvpair *pair)
{
if (pair != NULL) {
if (!cfl_list_entry_is_orphan(&pair->_head)) {
cfl_list_del(&pair->_head);
}

if (pair->key != NULL) {
cfl_sds_destroy(pair->key);
}

if (pair->val != NULL) {
cfl_variant_destroy(pair->val);
}

free(pair);
}
}

0 comments on commit 6eef93d

Please sign in to comment.