aboutsummaryrefslogtreecommitdiff
path: root/src/regex/perf-regex.c
diff options
context:
space:
mode:
authorBart Polot <bart@net.in.tum.de>2012-12-13 20:21:45 +0000
committerBart Polot <bart@net.in.tum.de>2012-12-13 20:21:45 +0000
commit26805033dca64c1b6f3a2ac66067e81b6e53844a (patch)
treeb3fc4ac69be18170b1ad0fa6b02f2abf4dcad3a1 /src/regex/perf-regex.c
parent09a43a3deb45aba79a0e22c2e3ed455602a0e4f9 (diff)
- new perf
Diffstat (limited to 'src/regex/perf-regex.c')
-rw-r--r--src/regex/perf-regex.c57
1 files changed, 48 insertions, 9 deletions
diff --git a/src/regex/perf-regex.c b/src/regex/perf-regex.c
index 72da6f2708..18c51987d4 100644
--- a/src/regex/perf-regex.c
+++ b/src/regex/perf-regex.c
@@ -46,12 +46,17 @@ usage(void)
int
main (int argc, char *const *argv)
{
- FILE *f;
struct GNUNET_REGEX_Automaton* dfa;
- long size;
+ char **regexes;
+ char *buffer;
char *regex;
+ unsigned int nr;
int compression;
+ long size;
+ size_t len;
+ FILE *f;
+ GNUNET_log_setup ("perf-regex", "DEBUG", NULL);
exe = argv[0];
if (3 != argc)
{
@@ -67,18 +72,52 @@ main (int argc, char *const *argv)
}
fseek (f, 0, SEEK_END);
size = ftell (f);
+ fprintf (stderr, "using file %s, size %ld\n", argv[1], size);
fseek (f, 0, SEEK_SET);
- regex = GNUNET_malloc (size);
- if (fread (regex, sizeof(char), size, f) != size)
+ buffer = GNUNET_malloc (size + 1);
+ regexes = GNUNET_malloc (sizeof (char *));
+ nr = 1;
+ do
{
- fprintf (stderr, "Can't read file %s\n", argv[1]);
- usage();
- return 3;
- }
+ if (NULL == fgets (buffer, size + 1, f))
+ {
+ fprintf (stderr, "Can't read file %s\n", argv[1]);
+ usage();
+ return 3;
+ }
+ len = strlen (buffer);
+ if (len < 1)
+ continue;
+ if ('\n' == buffer[len - 1])
+ {
+ len--;
+ buffer[len] = '\0';
+ }
+ if (len < 6 || strncmp (&buffer[len - 6], "(0|1)*", 6) != 0)
+ {
+ fprintf (stderr, "\nWARNING:\n");
+ fprintf (stderr, "%s (line %u) does not end in (0|1)*\n", buffer, nr);
+ }
+ else
+ {
+ buffer[len - 6] = '\0';
+ }
+ GNUNET_array_grow (regexes, nr, nr+1);
+ regexes[nr - 2] = GNUNET_strdup (buffer);
+ regexes[nr - 1] = NULL;
+ } while (ftell(f) < size);
+ GNUNET_free (buffer);
+
+ buffer = GNUNET_REGEX_combine (regexes);
+
+ GNUNET_asprintf (&regex, "GNVPN-0001-PAD(%s)(0|1)*", buffer);
+
+// fprintf (stderr, "Combined regex:\n%s\n", regex);
+// return 0;
+
compression = atoi (argv[2]);
dfa = GNUNET_REGEX_construct_dfa (regex, size, compression);
GNUNET_REGEX_automaton_destroy (dfa);
- GNUNET_free (regex);
return 0;
}