X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Ffilter%2Ffilter-visitor-ir-validate-string.c;fp=src%2Flib%2Flttng-ctl%2Ffilter%2Ffilter-visitor-ir-validate-string.c;h=0000000000000000000000000000000000000000;hp=1df83b03fb3711466378da2492ec0169c67190b5;hb=1831ae68b70dece8e9b847081526495adbbf05e5;hpb=25357057de5ae4dd2a572e8f9b893c1b90cbd60a diff --git a/src/lib/lttng-ctl/filter/filter-visitor-ir-validate-string.c b/src/lib/lttng-ctl/filter/filter-visitor-ir-validate-string.c deleted file mode 100644 index 1df83b03f..000000000 --- a/src/lib/lttng-ctl/filter/filter-visitor-ir-validate-string.c +++ /dev/null @@ -1,124 +0,0 @@ -/* - * filter-visitor-ir-validate-string.c - * - * LTTng filter IR validate string - * - * Copyright 2014 Jérémie Galarneau - * - * SPDX-License-Identifier: LGPL-2.1-only - * - */ - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "filter-ast.h" -#include "filter-parser.h" -#include "filter-ir.h" - -enum parse_char_result { - PARSE_CHAR_UNKNOWN = -2, - PARSE_CHAR_WILDCARD = -1, - PARSE_CHAR_NORMAL = 0, -}; - -static -enum parse_char_result parse_char(const char **p) -{ - switch (**p) { - case '\\': - (*p)++; - switch (**p) { - case '\\': - case '*': - return PARSE_CHAR_NORMAL; - default: - return PARSE_CHAR_UNKNOWN; - } - case '*': - return PARSE_CHAR_WILDCARD; - default: - return PARSE_CHAR_NORMAL; - } -} - -static -int validate_string(struct ir_op *node) -{ - switch (node->op) { - case IR_OP_UNKNOWN: - default: - fprintf(stderr, "[error] %s: unknown op type\n", __func__); - return -EINVAL; - - case IR_OP_ROOT: - return validate_string(node->u.root.child); - case IR_OP_LOAD: - { - int ret = 0; - - if (node->data_type == IR_DATA_STRING) { - const char *str; - - assert(node->u.load.u.string.value); - str = node->u.load.u.string.value; - - for (;;) { - enum parse_char_result res; - - if (!(*str)) { - break; - } - - res = parse_char(&str); - str++; - - switch (res) { - case PARSE_CHAR_UNKNOWN: - ret = -EINVAL; - fprintf(stderr, - "Unsupported escape character detected.\n"); - goto end_load; - case PARSE_CHAR_NORMAL: - default: - break; - } - } - } -end_load: - return ret; - } - case IR_OP_UNARY: - return validate_string(node->u.unary.child); - case IR_OP_BINARY: - { - int ret = validate_string(node->u.binary.left); - - if (ret) - return ret; - return validate_string(node->u.binary.right); - } - case IR_OP_LOGICAL: - { - int ret; - - ret = validate_string(node->u.logical.left); - if (ret) - return ret; - return validate_string(node->u.logical.right); - } - } -} - -LTTNG_HIDDEN -int filter_visitor_ir_validate_string(struct filter_parser_ctx *ctx) -{ - return validate_string(ctx->ir_root); -}