2 * Copyright (C) 2009 Dan Carpenter.
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, see http://www.gnu.org/copyleft/gpl.txt
24 int open_data_file(const char *filename
)
29 fd
= open(filename
, O_RDONLY
);
34 snprintf(buf
, 256, "%s/%s", data_dir
, filename
);
35 return open(buf
, O_RDONLY
);
38 int open_schema_file(const char *schema
)
43 fd
= open_data_file(schema
);
46 snprintf(buf
, 256, "%s/smatch_data/%s", bin_dir
, schema
);
47 return open(buf
, O_RDONLY
);
50 struct token
*get_tokens_file(const char *filename
)
57 fd
= open_data_file(filename
);
60 token
= tokenize(NULL
, filename
, fd
, NULL
, NULL
);
65 struct string_list
*load_strings_from_file(const char *project
, const char *filename
)
67 struct string_list
*ret
= NULL
;
73 snprintf(buf
, sizeof(buf
), "%s.%s", project
, filename
);
75 snprintf(buf
, sizeof(buf
), "%s", filename
);
77 token
= get_tokens_file(buf
);
81 if (token_type(token
) != TOKEN_STREAMBEGIN
)
84 while (token_type(token
) != TOKEN_STREAMEND
) {
85 if (token_type(token
) != TOKEN_IDENT
)
87 str
= alloc_string(show_ident(token
->ident
));
88 add_ptr_list(&ret
, str
);