From 26805033dca64c1b6f3a2ac66067e81b6e53844a Mon Sep 17 00:00:00 2001 From: Bart Polot Date: Thu, 13 Dec 2012 20:21:45 +0000 Subject: - new perf --- src/regex/perf-regex.c | 57 ++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 48 insertions(+), 9 deletions(-) (limited to 'src/regex/perf-regex.c') 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) 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 (®ex, "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; } -- cgit v1.2.3