diff --git a/common/strlist.c b/common/strlist.c index d9aed16f2..6816dcf1a 100644 --- a/common/strlist.c +++ b/common/strlist.c @@ -1,5 +1,6 @@ /* strlist.c - string helpers * Copyright (C) 1998, 2000, 2001, 2006 Free Software Foundation, Inc. + * Copyright (C) 2015 g10 Code GmbH * * This file is part of JNLIB, which is a subsystem of GnuPG. * @@ -212,3 +213,16 @@ strlist_pop (strlist_t *list) return str; } + +/* Return the first element of the string list HAYSTACK whose string + matches NEEDLE. If no elements match, return NULL. */ +strlist_t +strlist_find (strlist_t haystack, const char *needle) +{ + for (; + haystack; + haystack = haystack->next) + if (strcmp (haystack->d, needle) == 0) + return haystack; + return NULL; +} diff --git a/common/strlist.h b/common/strlist.h index c72549fe8..94567df0a 100644 --- a/common/strlist.h +++ b/common/strlist.h @@ -55,6 +55,9 @@ strlist_t strlist_prev (strlist_t head, strlist_t node); strlist_t strlist_last (strlist_t node); char * strlist_pop (strlist_t *list); +strlist_t strlist_find (strlist_t haystack, const char *needle); + + #define FREE_STRLIST(a) do { free_strlist((a)); (a) = NULL ; } while(0)