flow: tweak the ->pos setting for fake assignments
[smatch.git] / smatch_project.c
blob7b24908bf292e60da4cfb430257f70f5982bac30
1 /*
2 * sparse/smatch_project.c
4 * Copyright (C) 2010 Dan Carpenter.
6 * Licensed under the Open Software License version 1.1
8 */
11 * This file is only for very generic stuff, that is reusable
12 * between projects. If you need something special create a
13 * check_your_project.c.
17 #include "smatch.h"
18 #include "smatch_extra.h"
20 static void register_no_return_funcs(void)
22 struct token *token;
23 const char *func;
24 char name[256];
26 if (option_project == PROJ_NONE)
27 strcpy(name, "no_return_funcs");
28 else
29 snprintf(name, 256, "%s.no_return_funcs", option_project_str);
31 token = get_tokens_file(name);
32 if (!token)
33 return;
34 if (token_type(token) != TOKEN_STREAMBEGIN)
35 return;
36 token = token->next;
37 while (token_type(token) != TOKEN_STREAMEND) {
38 if (token_type(token) != TOKEN_IDENT)
39 return;
40 func = show_ident(token->ident);
41 add_function_hook(func, &__match_nullify_path_hook, NULL);
42 token = token->next;
44 clear_token_alloc();
47 static void register_ignored_macros(void)
49 struct token *token;
50 char *macro;
51 char name[256];
53 if (option_project == PROJ_NONE)
54 strcpy(name, "ignored_macros");
55 else
56 snprintf(name, 256, "%s.ignored_macros", option_project_str);
58 token = get_tokens_file(name);
59 if (!token)
60 return;
61 if (token_type(token) != TOKEN_STREAMBEGIN)
62 return;
63 token = token->next;
64 while (token_type(token) != TOKEN_STREAMEND) {
65 if (token_type(token) != TOKEN_IDENT)
66 return;
67 macro = alloc_string(show_ident(token->ident));
68 add_ptr_list(&__ignored_macros, macro);
69 token = token->next;
71 clear_token_alloc();
74 void register_project(int id)
76 register_no_return_funcs();
77 register_ignored_macros();