lib/rbkb/cli/bgrep.rb in emonti-rbkb-0.6.2.1 vs lib/rbkb/cli/bgrep.rb in emonti-rbkb-0.6.6

- old
+ new

@@ -4,13 +4,15 @@ # See README.rdoc for license information # # searches for a binary string in input. string can be provided 'hexified' class Rbkb::Cli::Bgrep < Rbkb::Cli::Executable def initialize(*args) - super(*args) - @opts[:start_off] ||= 0 - @opts[:end_off] ||= -1 + super(*args) do |this| + this.opts[:start_off] ||= 0 + this.opts[:end_off] ||= -1 + this.opts[:include_fname] ||= true + end end def make_parser arg = super() arg.banner += " <search> <file | blank for stdin>" @@ -26,12 +28,13 @@ arg.on("-a", "--align=BYTES", Numeric, "Only match on alignment boundary") do |a| @opts[:align] = a end - arg.on("-n", "--[no-]filename", "Suppress prefixing of filenames.") do |n| - @opts[:suppress_fname] = n + arg.on("-n", "--[no-]filename", + "Toggle filenames. (Default: #{@opts[:include_fname]})") do |n| + @opts[:include_fname] = n end return arg end @@ -64,18 +67,20 @@ dat = @stdin.read end loop do dat.bgrep(@find, @opts[:align]) do |hit_start, hit_end, match| - print "#{fname}:" if fname and not @opts[:suppress_fname] + @stdout.write "#{fname}:" if fname and @opts[:include_fname] - puts("#{(hit_start).to_hex.rjust(8,"0")}:"+ - "#{(hit_end).to_hex.rjust(8,"0")}:b:"+ - "#{match.inspect}") + @stdout.write( + "#{(hit_start).to_hex.rjust(8,"0")}:"+ + "#{(hit_end).to_hex.rjust(8,"0")}:b:"+ + "#{match.inspect}\n") end break unless fname=@argv.shift dat = do_file_read(fname) end + self.exit(0) end end