From 3e98ae3c55d4135d56b3a9c2c5429ebba3f51a69 Mon Sep 17 00:00:00 2001 From: Jan Breuer <jan.breuer@jaybee.cz> Date: 周二, 13 10月 2015 00:24:37 +0800 Subject: [PATCH] Cleanup of matchCommand --- libscpi/src/utils.c | 29 ++++++++++++----------------- 1 files changed, 12 insertions(+), 17 deletions(-) diff --git a/libscpi/src/utils.c b/libscpi/src/utils.c index 3d5f8c6..f92e877 100644 --- a/libscpi/src/utils.c +++ b/libscpi/src/utils.c @@ -508,8 +508,7 @@ #define SKIP_CMD(n) do {cmd_ptr += (n); cmd_len -= (n);} while(0) scpi_bool_t result = FALSE; - int leftFlag = 0; // flag for '[' on left - int rightFlag = 0; // flag for ']' on right + int brackets = 0; int cmd_sep_pos = 0; size_t numbers_idx = 0; @@ -534,7 +533,7 @@ /* now support optional keywords in pattern style, e.g. [:MEASure]:VOLTage:DC? */ if (pattern_ptr[0] == '[') { // skip first '[' SKIP_PATTERN(1); - leftFlag++; + brackets++; } if (pattern_ptr[0] == ':') { // skip first ':' SKIP_PATTERN(1); @@ -554,10 +553,6 @@ while (1) { int pattern_sep_pos = patternSeparatorPos(pattern_ptr, pattern_len); - if ((leftFlag > 0) && (rightFlag > 0)) { - leftFlag--; - rightFlag--; - } cmd_sep_pos = cmdSeparatorPos(cmd_ptr, cmd_len); if ((pattern_sep_pos > 0) && pattern_ptr[pattern_sep_pos - 1] == '#') { @@ -595,16 +590,16 @@ pattern_sep_pos = patternSeparatorPos(pattern_ptr, pattern_len); switch (pattern_ptr[pattern_sep_pos]) { case '[': - leftFlag++; + brackets++; break; case ']': - leftFlag--; + brackets--; break; default: break; } SKIP_PATTERN(pattern_sep_pos + 1); - if (leftFlag == 0) { + if (brackets == 0) { if ((pattern_len > 0) && (pattern_ptr[0] == '[')) { continue; } else { @@ -630,14 +625,14 @@ && (pattern_ptr[1] == ':')) { SKIP_PATTERN(2); // for skip '[' in "[:" SKIP_CMD(1); - leftFlag++; + brackets++; } else if ((pattern_len > 1) && (pattern_ptr[1] == cmd_ptr[0]) && (pattern_ptr[0] == ']') && (pattern_ptr[1] == ':')) { SKIP_PATTERN(2); // for skip ']' in "]:" SKIP_CMD(1); - rightFlag++; + brackets--; } else if ((pattern_len > 2) && (pattern_ptr[2] == cmd_ptr[0]) && (pattern_ptr[0] == ']') @@ -645,8 +640,8 @@ && (pattern_ptr[2] == ':')) { SKIP_PATTERN(3); // for skip '][' in "][:" SKIP_CMD(1); - leftFlag++; - rightFlag++; + //brackets++; + //brackets--; } else { result = FALSE; break; @@ -655,13 +650,13 @@ SKIP_PATTERN(pattern_sep_pos); if ((pattern_ptr[0] == ']') && (pattern_ptr[1] == ':')) { SKIP_PATTERN(2); // for skip ']' in "]:" , pattern_ptr continue, while cmd_ptr remain unchanged - rightFlag++; + brackets--; } else if ((pattern_len > 2) && (pattern_ptr[0] == ']') && (pattern_ptr[1] == '[') && (pattern_ptr[2] == ':')) { SKIP_PATTERN(3); // for skip ']' in "][:" , pattern_ptr continue, while cmd_ptr remain unchanged - leftFlag++; - rightFlag++; + //brackets++; + //brackets--; } else { result = FALSE; break; -- Gitblit v1.9.1