+Search *build_search(char *pattern, int len)
+{
+ Search *ret = malloc(sizeof(Search));
+ char *revpat = malloc(len);
+ int i;
+
+ ret->len = len;
+ ret->forward = build_dfa(pattern, len);
+ for (i = 0; i < len; i++)
+ revpat[i] = pattern[len-1-i];
+ ret->reverse = build_dfa(revpat, len);
+
+ return ret;