diff options
author | Alasdair Kergon <agk@redhat.com> | 2010-04-22 17:42:38 +0000 |
---|---|---|
committer | Alasdair Kergon <agk@redhat.com> | 2010-04-22 17:42:38 +0000 |
commit | d9c67df256def0acc38526b22e2e123ebf6449b9 (patch) | |
tree | 0a1cd7348dbbee3a5b19177fe23c1ba032a4c108 /old-tests | |
parent | 6753ff894fcfcbe414263f66e2b454cf8fa3d19c (diff) | |
download | lvm2-d9c67df256def0acc38526b22e2e123ebf6449b9.tar.gz lvm2-d9c67df256def0acc38526b22e2e123ebf6449b9.tar.xz lvm2-d9c67df256def0acc38526b22e2e123ebf6449b9.zip |
Move regex printing code from test to main tree (may use in debug messages).
Yet another optimiser fix attempt.
Diffstat (limited to 'old-tests')
-rw-r--r-- | old-tests/regex/parse_t.c | 86 |
1 files changed, 10 insertions, 76 deletions
diff --git a/old-tests/regex/parse_t.c b/old-tests/regex/parse_t.c index 90eb1ca8..54ebb0bf 100644 --- a/old-tests/regex/parse_t.c +++ b/old-tests/regex/parse_t.c @@ -14,6 +14,7 @@ */ /* hack - using unexported internal function */ +#define DEBUG #include "regex/parse_rx.c" #include <stdio.h> @@ -67,86 +68,12 @@ static void _pretty_print(struct rx_node *rx, int depth) _pretty_print(rx->right, depth + 1); } -static void _regex_print(struct rx_node *rx, int depth) -{ - int i, numchars; - int left_and_right = (rx->left && rx->right); - - if (left_and_right && rx->type == CAT && rx->left->type == OR) - printf("("); - - if (rx->left) - _regex_print(rx->left, depth + 1); - - if (left_and_right && rx->type == CAT && rx->left->type == OR) - printf(")"); - - /* display info about the node */ - switch (rx->type) { - case CAT: - //printf("Cat"); - break; - - case OR: - printf("|"); - break; - - case STAR: - printf("*"); - break; - - case PLUS: - printf("+"); - break; - - case QUEST: - printf("?"); - break; - - case CHARSET: - numchars = 0; - for (i = 0; i < 256; i++) - if (dm_bit(rx->charset, i) && (isprint(i) || i == HAT_CHAR || i == DOLLAR_CHAR)) - numchars++; - if (numchars == 97) { - printf("."); - break; - } - if (numchars > 1) - printf("["); - for (i = 0; i < 256; i++) - if (dm_bit(rx->charset, i)) { - if (isprint(i)) - printf("%c", (char) i); - else if (i == HAT_CHAR) - printf("^"); - else if (i == DOLLAR_CHAR) - printf("$"); - } - if (numchars > 1) - printf("]"); - break; - - default: - fprintf(stderr, "Unknown type"); - } - - if (left_and_right && rx->type == CAT && rx->right->type == OR) - printf("("); - if (rx->right) - _regex_print(rx->right, depth + 1); - if (left_and_right && rx->type == CAT && rx->right->type == OR) - printf(")"); - - if (!depth) - printf("\n"); -} - int main(int argc, char **argv) { struct dm_pool *mem; struct rx_node *rx; int regex_print = 0; + int show_nodes = 0; int regex_arg = 1; if (argc == 3 && !strcmp(argv[1], "-r")) { @@ -155,6 +82,13 @@ int main(int argc, char **argv) argc--; } + if (argc == 3 && !strcmp(argv[1], "-R")) { + regex_print++; + show_nodes++; + regex_arg++; + argc--; + } + if (argc != 2) { fprintf(stderr, "Usage : %s [-r] <regex>\n", argv[0]); exit(0); @@ -174,7 +108,7 @@ int main(int argc, char **argv) } if (regex_print) - _regex_print(rx, 0); + _regex_print(rx, 0, show_nodes); else _pretty_print(rx, 0); |