char * PROC search(char *pat, int *start) /* get a token for find & find it in the buffer */ { bool forwd; int pos; char *p; forwd = ((nlsearch = *pat) == '/'); if ((p=makepat(pat+1,*pat)) == NULL) { *start = ERR; return pat; } do { if (forwd) { pos = findfwd(pattern, (*start)+1, bufmax-1); if ((pos == ERR) && wrapscan) { s_wrapped = 1; pos = findfwd(pattern, 0, (*start)-1); } } else { pos = findback(pattern, (*start)-1, 0); if ((pos == ERR) && wrapscan) { s_wrapped = 1; pos = findback(pattern, bufmax-1, (*start)+1); } } *start = pos; } while (--count > 0 && *start != ERR); return p; }
void TRegexp::gen_pattern(const tchar * str) { the_pattern = new PatternType[maxpat]; stat = (StatVal)makepat( str, the_pattern, maxpat ); }