From c5e2c17369d0fce602bb1610445c910c5a9d4a56 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Mon, 25 Mar 2013 13:41:20 +0300 Subject: [PATCH] smatch_string_list.c: separate string_list functions into their own file These functions were already declared in smatch_comparison.c but I want to be able to use them in other places. Signed-off-by: Dan Carpenter --- Makefile | 2 +- smatch.h | 5 +++++ smatch_comparison.c | 40 ---------------------------------------- smatch_string_list.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 41 deletions(-) create mode 100644 smatch_string_list.c diff --git a/Makefile b/Makefile index fa36b80a..7f29f022 100644 --- a/Makefile +++ b/Makefile @@ -51,7 +51,7 @@ SMATCH_FILES=smatch_flow.o smatch_conditions.o smatch_slist.o smatch_states.o \ smatch_expressions.o smatch_returns.o smatch_parse_call_math.o \ smatch_param_limit.o smatch_param_filter.o \ smatch_param_set.o smatch_comparison.o smatch_local_values.o \ - smatch_function_ptrs.o smatch_annotate.o + smatch_function_ptrs.o smatch_annotate.o smatch_string_list.o SMATCH_CHECKS=$(shell ls check_*.c | sed -e 's/\.c/.o/') SMATCH_DATA=smatch_data/kernel.allocation_funcs smatch_data/kernel.balanced_funcs \ diff --git a/smatch.h b/smatch.h index 55b869ad..bcd80f23 100644 --- a/smatch.h +++ b/smatch.h @@ -630,4 +630,9 @@ const char *sval_to_str(sval_t sval); const char *sval_to_numstr(sval_t sval); sval_t ll_to_sval(long long val); +/* smatch_string_list.c */ +void insert_string(struct string_list **str_list, char *str); +struct string_list *clone_str_list(struct string_list *orig); +struct string_list *combine_string_lists(struct string_list *one, struct string_list *two); + #endif /* !SMATCH_H_ */ diff --git a/smatch_comparison.c b/smatch_comparison.c index f17a0a0f..0df40a22 100644 --- a/smatch_comparison.c +++ b/smatch_comparison.c @@ -157,46 +157,6 @@ struct smatch_state *alloc_link_state(struct string_list *links) return state; } -static void insert_string(struct string_list **str_list, char *new) -{ - char *tmp; - - FOR_EACH_PTR(*str_list, tmp) { - if (strcmp(tmp, new) < 0) - continue; - else if (strcmp(tmp, new) == 0) { - return; - } else { - INSERT_CURRENT(new, tmp); - return; - } - } END_FOR_EACH_PTR(tmp); - add_ptr_list(str_list, new); -} - -struct string_list *clone_str_list(struct string_list *orig) -{ - char *tmp; - struct string_list *ret = NULL; - - FOR_EACH_PTR(orig, tmp) { - add_ptr_list(&ret, tmp); - } END_FOR_EACH_PTR(tmp); - return ret; -} - -static struct string_list *combine_string_lists(struct string_list *one, struct string_list *two) -{ - struct string_list *ret; - char *tmp; - - ret = clone_str_list(one); - FOR_EACH_PTR(two, tmp) { - insert_string(&ret, tmp); - } END_FOR_EACH_PTR(tmp); - return ret; -} - static struct smatch_state *merge_func(struct smatch_state *s1, struct smatch_state *s2) { struct smatch_state *ret; diff --git a/smatch_string_list.c b/smatch_string_list.c new file mode 100644 index 00000000..4f78b13e --- /dev/null +++ b/smatch_string_list.c @@ -0,0 +1,52 @@ +/* + * sparse/smatch_string_list.c + * + * Copyright (C) 2013 Oracle. + * + * Licensed under the Open Software License version 1.1 + * + */ + +#include "smatch.h" + +void insert_string(struct string_list **str_list, char *new) +{ + char *tmp; + + FOR_EACH_PTR(*str_list, tmp) { + if (strcmp(tmp, new) < 0) + continue; + else if (strcmp(tmp, new) == 0) { + return; + } else { + INSERT_CURRENT(new, tmp); + return; + } + } END_FOR_EACH_PTR(tmp); + add_ptr_list(str_list, new); +} + +struct string_list *clone_str_list(struct string_list *orig) +{ + char *tmp; + struct string_list *ret = NULL; + + FOR_EACH_PTR(orig, tmp) { + add_ptr_list(&ret, tmp); + } END_FOR_EACH_PTR(tmp); + return ret; +} + +struct string_list *combine_string_lists(struct string_list *one, struct string_list *two) +{ + struct string_list *ret; + char *tmp; + + ret = clone_str_list(one); + FOR_EACH_PTR(two, tmp) { + insert_string(&ret, tmp); + } END_FOR_EACH_PTR(tmp); + return ret; +} + + -- 2.11.4.GIT