class Utils::Grepper
def match(filename)
def match(filename) @filename = filename @output = [] bn, s = File.basename(filename), File.stat(filename) if s.directory? && @config.search.prune?(bn) $DEBUG and warn "Pruning #{filename.inspect}." Utils::Find.prune end if s.file? && !@config.search.skip?(bn) && (!@name_pattern || @name_pattern.match(bn)) File.open(filename, 'rb') do |file| if file.binary? != true $DEBUG and warn "Matching #{filename.inspect}." match_lines file else $DEBUG and warn "Skipping binary file #{filename.inspect}." end end else $DEBUG and warn "Skipping #{filename.inspect}." end unless @output.empty? case when @args['l'], @args['e'] @output.uniq! @pathes.concat @output else STDOUT.puts @output end @output.clear end self rescue SystemCallError => e warn "Caught #{e.class}: #{e}" nil end