libsepol/cil: Store CIL filename in parse tree and AST

Use some of the functionality recently added to support high-level
language line marking to track the CIL filename.

The goal is to eventually remove the path field from the tree node
struct and offset the addtion of the hll_line field.

Signed-off-by: James Carter <jwcart2@tycho.nsa.gov>
This commit is contained in:
James Carter 2016-05-05 16:15:23 -04:00
parent 875a6bcbe8
commit 681341f2f4

View File

@ -179,6 +179,24 @@ exit:
return SEPOL_ERR;
}
static void add_cil_path(struct cil_tree_node **current, char *path)
{
struct cil_tree_node *node;
create_node(&node, *current, 0, 0, path, NULL);
insert_node(node, *current);
*current = node;
create_node(&node, *current, 0, 0, path, CIL_KEY_SRC_INFO);
insert_node(node, *current);
create_node(&node, *current, 0, 0, path, CIL_KEY_SRC_CIL);
insert_node(node, *current);
create_node(&node, *current, 0, 0, path, path);
insert_node(node, *current);
}
int cil_parser(char *_path, char *buffer, uint32_t size, struct cil_tree **parse_tree)
{
@ -205,6 +223,8 @@ int cil_parser(char *_path, char *buffer, uint32_t size, struct cil_tree **parse
tree = *parse_tree;
current = tree->root;
add_cil_path(&current, path);
do {
cil_lexer_next(&tok);
switch (tok.type) {