1#!./miniruby -s 2 3$:.unshift(File.expand_path("../..", __FILE__)) 4require 'win32/mkexports' 5 6class Exports::Bcc < Exports 7 def forwarding(internal, export) 8 internal[/\A_?/]+export 9 end 10 11 def each_line(objs, &block) 12 objs.each do |obj| 13 opt = /\.(?:so|dll)\z/i =~ obj ? "-ee" : "-oiPUBDEF -oiPUBD32" 14 IO.foreach("|tdump -q #{opt} #{obj.tr('/', '\\')} < nul", &block) 15 end 16 end 17 18 def each_export(objs) 19 objdump(objs) do |l| 20 next unless /(?:PUBDEF|PUBD32|EXPORT)/ =~ l 21 yield $1 if /'(.*?)'/ =~ l 22 end 23 yield "_strcasecmp", "_stricmp" 24 yield "_strncasecmp", "_strnicmp" 25 end 26end 27