From ffe7241ad3282ac12f0b1a996e2cb5893af0d581 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Wed, 18 Feb 2009 14:47:53 +0300 Subject: [PATCH] Add some functions to handle tracker lists. Signed-off-by: Dan Carpenter --- Makefile | 3 ++- smatch.h | 7 +++++++ smatch_tracker.c | 29 +++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 smatch_tracker.c diff --git a/Makefile b/Makefile index ae9a999b..7aaf83ab 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ PKGCONFIGDIR=$(LIBDIR)/pkgconfig PROGRAMS=test-lexing test-parsing obfuscate compile graph sparse test-linearize example \ test-unssa test-dissect ctags smatch -SMATCH_FILES=smatch_flow.o smatch_conditions.o smatch_slist.o smatch_states.o smatch_helper.o smatch_hooks.o smatch_extra.o smatch_implied.o smatch_ignore.o +SMATCH_FILES=smatch_flow.o smatch_conditions.o smatch_slist.o smatch_states.o smatch_helper.o smatch_hooks.o smatch_extra.o smatch_implied.o smatch_ignore.o smatch_tracker.o SMATCH_CHECKS=$(shell ls check_*.c | sed -e 's/\.c/.o/') @@ -173,6 +173,7 @@ smatch_conditions.o: $(LIB_H) smatch.h smatch_extra.o: $(LIB_H) smatch.h smatch_implied.o: $(LIB_H) smatch.h smatch_slist.h smatch_ignore.o: $(LIB_H) smatch.h +smatch_tracker.o: $(LIB_H) smatch.h smatch_hooks.o: $(LIB_H) smatch.h smatch_helper.o: $(LIB_H) smatch.h smatch_slist.o: $(LIB_H) smatch.h smatch_slist.h diff --git a/smatch.h b/smatch.h index 9ac800f2..457964ee 100644 --- a/smatch.h +++ b/smatch.h @@ -109,6 +109,13 @@ DECLARE_PTR_LIST(tracker_list, struct tracker); void add_ignore(const char *name, int owner, struct symbol *sym); int is_ignored(const char *name, int owner, struct symbol *sym); +/* smatch_tracker */ +void add_tracker(struct tracker_list **list, const char *name, int owner, + struct symbol *sym); +int in_tracker_list(struct tracker_list *list, const char *name, int owner, + struct symbol *sym); + + /* smatch_conditions */ int in_condition(); diff --git a/smatch_tracker.c b/smatch_tracker.c new file mode 100644 index 00000000..a9b0a289 --- /dev/null +++ b/smatch_tracker.c @@ -0,0 +1,29 @@ +#include "smatch.h" + +void add_tracker(struct tracker_list **list, const char *name, int owner, + struct symbol *sym) +{ + struct tracker *tmp; + + if (in_tracker_list(*list, name, owner, sym)) + return; + + tmp = malloc(sizeof(*tmp)); + tmp->name = name; + tmp->owner = owner; + tmp->sym = sym; + add_ptr_list(list, tmp); +} + +int in_tracker_list(struct tracker_list *list, const char *name, int owner, + struct symbol *sym) +{ + struct tracker *tmp; + + FOR_EACH_PTR(list, tmp) { + if (tmp->owner == owner && tmp->sym == sym + && !strcmp(tmp->name, name)) + return 1; + } END_FOR_EACH_PTR(tmp); + return 0; +} -- 2.11.4.GIT