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