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)