math: introduce get_absolute_rl()
[smatch.git] / smatch_string_list.c
blobf3854de7e5d88a1cb44c3ae201736bec85507b85
1 /*
2 * sparse/smatch_string_list.c
4 * Copyright (C) 2013 Oracle.
6 * Licensed under the Open Software License version 1.1
8 */
10 #include "smatch.h"
12 int list_has_string(struct string_list *str_list, char *str)
14 char *tmp;
16 FOR_EACH_PTR(str_list, tmp) {
17 if (strcmp(tmp, str) < 0)
18 continue;
19 if (strcmp(tmp, str) == 0)
20 return 1;
21 return 0;
22 } END_FOR_EACH_PTR(tmp);
23 return 0;
26 void insert_string(struct string_list **str_list, char *new)
28 char *tmp;
30 FOR_EACH_PTR(*str_list, tmp) {
31 if (strcmp(tmp, new) < 0)
32 continue;
33 else if (strcmp(tmp, new) == 0) {
34 return;
35 } else {
36 INSERT_CURRENT(new, tmp);
37 return;
39 } END_FOR_EACH_PTR(tmp);
40 add_ptr_list(str_list, new);
43 struct string_list *clone_str_list(struct string_list *orig)
45 char *tmp;
46 struct string_list *ret = NULL;
48 FOR_EACH_PTR(orig, tmp) {
49 add_ptr_list(&ret, tmp);
50 } END_FOR_EACH_PTR(tmp);
51 return ret;
54 struct string_list *combine_string_lists(struct string_list *one, struct string_list *two)
56 struct string_list *ret;
57 char *tmp;
59 ret = clone_str_list(one);
60 FOR_EACH_PTR(two, tmp) {
61 insert_string(&ret, tmp);
62 } END_FOR_EACH_PTR(tmp);
63 return ret;