module BinData::Skip::SkipUntilValidPlugin
def next_search_index(io, fs)
def next_search_index(io, fs) buffer = binary_string("") # start searching at fast_search offset pos = fs.offset io.skip(fs.offset) loop do data = io.read(SEARCH_SIZE) raise EOFError, "no match" if data.nil? buffer << data index = buffer.index(fs.pattern) if index return pos + index - fs.offset end # advance buffer searched = buffer.slice!(0..-fs.pattern.size) pos += searched.size end end