diff options
author | Bart Polot <bart@net.in.tum.de> | 2012-12-13 20:21:45 +0000 |
---|---|---|
committer | Bart Polot <bart@net.in.tum.de> | 2012-12-13 20:21:45 +0000 |
commit | 26805033dca64c1b6f3a2ac66067e81b6e53844a (patch) | |
tree | b3fc4ac69be18170b1ad0fa6b02f2abf4dcad3a1 /src/regex/perf-regex.c | |
parent | 09a43a3deb45aba79a0e22c2e3ed455602a0e4f9 (diff) | |
download | gnunet-26805033dca64c1b6f3a2ac66067e81b6e53844a.tar.gz gnunet-26805033dca64c1b6f3a2ac66067e81b6e53844a.zip |
- new perf
Diffstat (limited to 'src/regex/perf-regex.c')
-rw-r--r-- | src/regex/perf-regex.c | 57 |
1 files changed, 48 insertions, 9 deletions
diff --git a/src/regex/perf-regex.c b/src/regex/perf-regex.c index 72da6f270..18c51987d 100644 --- a/src/regex/perf-regex.c +++ b/src/regex/perf-regex.c | |||
@@ -46,12 +46,17 @@ usage(void) | |||
46 | int | 46 | int |
47 | main (int argc, char *const *argv) | 47 | main (int argc, char *const *argv) |
48 | { | 48 | { |
49 | FILE *f; | ||
50 | struct GNUNET_REGEX_Automaton* dfa; | 49 | struct GNUNET_REGEX_Automaton* dfa; |
51 | long size; | 50 | char **regexes; |
51 | char *buffer; | ||
52 | char *regex; | 52 | char *regex; |
53 | unsigned int nr; | ||
53 | int compression; | 54 | int compression; |
55 | long size; | ||
56 | size_t len; | ||
57 | FILE *f; | ||
54 | 58 | ||
59 | GNUNET_log_setup ("perf-regex", "DEBUG", NULL); | ||
55 | exe = argv[0]; | 60 | exe = argv[0]; |
56 | if (3 != argc) | 61 | if (3 != argc) |
57 | { | 62 | { |
@@ -67,18 +72,52 @@ main (int argc, char *const *argv) | |||
67 | } | 72 | } |
68 | fseek (f, 0, SEEK_END); | 73 | fseek (f, 0, SEEK_END); |
69 | size = ftell (f); | 74 | size = ftell (f); |
75 | fprintf (stderr, "using file %s, size %ld\n", argv[1], size); | ||
70 | fseek (f, 0, SEEK_SET); | 76 | fseek (f, 0, SEEK_SET); |
71 | regex = GNUNET_malloc (size); | 77 | buffer = GNUNET_malloc (size + 1); |
72 | if (fread (regex, sizeof(char), size, f) != size) | 78 | regexes = GNUNET_malloc (sizeof (char *)); |
79 | nr = 1; | ||
80 | do | ||
73 | { | 81 | { |
74 | fprintf (stderr, "Can't read file %s\n", argv[1]); | 82 | if (NULL == fgets (buffer, size + 1, f)) |
75 | usage(); | 83 | { |
76 | return 3; | 84 | fprintf (stderr, "Can't read file %s\n", argv[1]); |
77 | } | 85 | usage(); |
86 | return 3; | ||
87 | } | ||
88 | len = strlen (buffer); | ||
89 | if (len < 1) | ||
90 | continue; | ||
91 | if ('\n' == buffer[len - 1]) | ||
92 | { | ||
93 | len--; | ||
94 | buffer[len] = '\0'; | ||
95 | } | ||
96 | if (len < 6 || strncmp (&buffer[len - 6], "(0|1)*", 6) != 0) | ||
97 | { | ||
98 | fprintf (stderr, "\nWARNING:\n"); | ||
99 | fprintf (stderr, "%s (line %u) does not end in (0|1)*\n", buffer, nr); | ||
100 | } | ||
101 | else | ||
102 | { | ||
103 | buffer[len - 6] = '\0'; | ||
104 | } | ||
105 | GNUNET_array_grow (regexes, nr, nr+1); | ||
106 | regexes[nr - 2] = GNUNET_strdup (buffer); | ||
107 | regexes[nr - 1] = NULL; | ||
108 | } while (ftell(f) < size); | ||
109 | GNUNET_free (buffer); | ||
110 | |||
111 | buffer = GNUNET_REGEX_combine (regexes); | ||
112 | |||
113 | GNUNET_asprintf (®ex, "GNVPN-0001-PAD(%s)(0|1)*", buffer); | ||
114 | |||
115 | // fprintf (stderr, "Combined regex:\n%s\n", regex); | ||
116 | // return 0; | ||
117 | |||
78 | compression = atoi (argv[2]); | 118 | compression = atoi (argv[2]); |
79 | dfa = GNUNET_REGEX_construct_dfa (regex, size, compression); | 119 | dfa = GNUNET_REGEX_construct_dfa (regex, size, compression); |
80 | GNUNET_REGEX_automaton_destroy (dfa); | 120 | GNUNET_REGEX_automaton_destroy (dfa); |
81 | GNUNET_free (regex); | ||
82 | return 0; | 121 | return 0; |
83 | } | 122 | } |
84 | 123 | ||