summaryrefslogtreecommitdiffstats
path: root/old-tests
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2010-04-22 17:42:38 +0000
committerAlasdair Kergon <agk@redhat.com>2010-04-22 17:42:38 +0000
commitd9c67df256def0acc38526b22e2e123ebf6449b9 (patch)
tree0a1cd7348dbbee3a5b19177fe23c1ba032a4c108 /old-tests
parent6753ff894fcfcbe414263f66e2b454cf8fa3d19c (diff)
downloadlvm2-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.c86
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);