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)
downloadgnunet-26805033dca64c1b6f3a2ac66067e81b6e53844a.tar.gz
gnunet-26805033dca64c1b6f3a2ac66067e81b6e53844a.zip
- 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 72da6f270..18c51987d 100644
--- a/src/regex/perf-regex.c
+++ b/src/regex/perf-regex.c
@@ -46,12 +46,17 @@ usage(void)
46int 46int
47main (int argc, char *const *argv) 47main (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 (&regex, "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