+ regex = ".{5}";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "abcdefghijklmn";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+ regex = ".....";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "abcdefghijklmn";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+ regex = "^a{0}$";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+ regex = "^a{0,}$";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "bbbb";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+ regex = "^a{0,}$";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "aaaaaaaaa";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+ regex = "^a{0,0}$";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "a";
+ SILC_LOG_DEBUG(("DO NOT Match %s", string));
+ if (silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+
+ regex = "^a{3}$";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "aaa";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+ regex = "^a{3}$";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "aaaa";
+ SILC_LOG_DEBUG(("DO NOT Match %s", string));
+ if (silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+
+ regex = "^a{3,5}$";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "aaa";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+ regex = "^a{3,5}$";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "aaaa";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+ regex = "^a{3,5}$";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "aaaaaa";
+ SILC_LOG_DEBUG(("DO NOT Match %s", string));
+ if (silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+
+ regex = "^a{3,}$";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "aaa";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+ regex = "^a{3,}$";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "aaaaaaaaaaaaa";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+ regex = "^a{3,}$";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "aa";
+ SILC_LOG_DEBUG(("DO NOT Match %s", string));
+ if (silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+
+
+ regex = "a*b";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "b";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+ regex = "a*b";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "ab";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+ regex = "a*b";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "aaaab";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+
+ regex = "a+b";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "ab";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+ regex = "a+b";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "aaaab";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+ regex = "a+b";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "b";
+ SILC_LOG_DEBUG(("DO NOT Match %s", string));
+ if (silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+
+
+ regex = "ca?b";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "cb";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+ regex = "ca?b";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "cab";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+ silc_buffer_printf(&bmatch, TRUE);
+
+ regex = "ca?b";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ string = "caab";
+ SILC_LOG_DEBUG(("DO NOT Match %s", string));
+ if (silc_regex(string, regex, &bmatch, NULL))
+ goto err;
+
+
+ regex = "(H..).(o..)";
+ SILC_LOG_DEBUG(("Regex %s", regex));
+ if (!silc_regex_compile(®, regex, 0))
+ goto err;
+
+ string = "Hello World";
+ SILC_LOG_DEBUG(("Match %s", string));
+ if (!silc_regex_match(®, string, strlen(string), num_match, match, 0))
+ goto err;
+ for (i = 0; i < num_match; i++) {
+ if (match[i].start != -1) {
+ SILC_LOG_DEBUG(("Match start %d, end %d", match[i].start,
+ match[i].end));
+ sub = silc_memdup(string + match[i].start, match[i].end -
+ match[i].start);
+ SILC_LOG_DEBUG(("Match substring '%s'", sub));
+ silc_free(sub);
+ }
+ }
+
+ silc_regex_free(®);
+