X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Ffilter%2Ffilter-visitor-xml.c;h=9352742a51c50d8c81a0afce2fe60973912682c0;hp=24d618ac9b45920cdb02393d26ae87f4bd45aaab;hb=831b702b8e8914a3ca3b4905a55aed93c7d30bbf;hpb=586dc72f727912b4aa381789c418e062bce89d08 diff --git a/src/lib/lttng-ctl/filter/filter-visitor-xml.c b/src/lib/lttng-ctl/filter/filter-visitor-xml.c index 24d618ac9..9352742a5 100644 --- a/src/lib/lttng-ctl/filter/filter-visitor-xml.c +++ b/src/lib/lttng-ctl/filter/filter-visitor-xml.c @@ -49,6 +49,8 @@ static int recursive_visit_print_expression(struct filter_node *node, FILE *stream, int indent) { + struct filter_node *iter_node; + if (!node) { fprintf(stderr, "[error] %s: NULL child\n", __func__); return -EINVAL; @@ -80,33 +82,18 @@ int recursive_visit_print_expression(struct filter_node *node, node->u.expression.type == AST_EXP_IDENTIFIER ? "identifier" : "global_identifier", node->u.expression.u.identifier); - while (node->u.expression.next) { + iter_node = node->u.expression.next; + while (iter_node) { print_tabs(stream, indent); - fprintf(stream, "u.expression.pre_op) { - case AST_LINK_UNKNOWN: - default: - fprintf(stderr, "[error] %s: unknown link\n", __func__); - return -EINVAL; - case AST_LINK_DOT: - fprintf(stream, "."); - break; - case AST_LINK_RARROW: - fprintf(stream, "->"); - break; - } - fprintf(stream, "\"/>\n"); - - node = node->u.expression.next; - if (node->type != NODE_EXPRESSION || - node->u.expression.type != AST_EXP_IDENTIFIER) { - fprintf(stderr, "[error] %s: expecting identifier before link\n", __func__); + fprintf(stream, "\n"); + if (recursive_visit_print_expression(iter_node, + stream, indent + 1)) { return -EINVAL; } - print_tabs(stream, indent); - fprintf(stream, "\n", - node->u.expression.u.identifier); + fprintf(stream, "\n"); + iter_node = iter_node->u.expression.next; + } break; case AST_EXP_NESTED: @@ -170,10 +157,10 @@ int recursive_visit_print(struct filter_node *node, FILE *stream, int indent) case AST_OP_MINUS: fprintf(stream, "\"-\""); break; - case AST_OP_RSHIFT: + case AST_OP_BIT_RSHIFT: fprintf(stream, "\">>\""); break; - case AST_OP_LSHIFT: + case AST_OP_BIT_LSHIFT: fprintf(stream, "\"<<\""); break; case AST_OP_AND: @@ -182,13 +169,13 @@ int recursive_visit_print(struct filter_node *node, FILE *stream, int indent) case AST_OP_OR: fprintf(stream, "\"||\""); break; - case AST_OP_BIN_AND: + case AST_OP_BIT_AND: fprintf(stream, "\"&\""); break; - case AST_OP_BIN_OR: + case AST_OP_BIT_OR: fprintf(stream, "\"|\""); break; - case AST_OP_BIN_XOR: + case AST_OP_BIT_XOR: fprintf(stream, "\"^\""); break; @@ -240,7 +227,7 @@ int recursive_visit_print(struct filter_node *node, FILE *stream, int indent) case AST_UNARY_NOT: fprintf(stream, "\"!\""); break; - case AST_UNARY_BIN_NOT: + case AST_UNARY_BIT_NOT: fprintf(stream, "\"~\""); break; }