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