char *search( pat, text ) char *pat, *text; { short st, **states; automata a; if( pat[0] == EOS ) return( text ); a = stringautom(pat); states = a->nextst; for( st=0; st < a->st; st++ ) states[st][EOS] = -1; st = 0; while( (st = states[st][*text++ & (MAXCHAR-1)]) >= 0 ); if( *(text-1) == EOS ) return( NULL ); else return( text - a->final[-st] ); }