From 953f74d1b3c95440e15198ff49095835bc689dae Mon Sep 17 00:00:00 2001 From: Baptiste Assmann Date: Fri, 25 Apr 2014 16:57:03 +0200 Subject: [PATCH] MINOR: pattern: find element in a reference This function can be used to look for an entry in either an ACL or a MAP. --- include/proto/pattern.h | 1 + src/pattern.c | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/include/proto/pattern.h b/include/proto/pattern.h index fdf959828..e6ceba8ed 100644 --- a/include/proto/pattern.h +++ b/include/proto/pattern.h @@ -181,6 +181,7 @@ struct pat_ref *pat_ref_lookup(const char *reference); struct pat_ref *pat_ref_lookupid(int unique_id); struct pat_ref *pat_ref_new(const char *reference, const char *display, unsigned int flags); struct pat_ref *pat_ref_newid(int unique_id, const char *display, unsigned int flags); +struct pat_ref_elt *pat_ref_find_elt(struct pat_ref *ref, const char *key); int pat_ref_append(struct pat_ref *ref, char *pattern, char *sample, int line); int pat_ref_add(struct pat_ref *ref, const char *pattern, const char *sample, char **err); int pat_ref_set(struct pat_ref *ref, const char *pattern, const char *sample, char **err); diff --git a/src/pattern.c b/src/pattern.c index 3238fbb43..16aa09fbb 100644 --- a/src/pattern.c +++ b/src/pattern.c @@ -1408,6 +1408,23 @@ int pat_ref_delete(struct pat_ref *ref, const char *key) return 1; } +/* + * find and return an element matching in a reference + * return NULL if not found + */ +struct pat_ref_elt *pat_ref_find_elt(struct pat_ref *ref, const char *key) +{ + struct pat_ref_elt *elt; + + list_for_each_entry(elt, &ref->head, list) { + if (strcmp(key, elt->pattern) == 0) + return elt; + } + + return NULL; +} + + /* This function modify the sample of the first pattern that match the . */ static inline int pat_ref_set_elt(struct pat_ref *ref, struct pat_ref_elt *elt, const char *value, char **err)