summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
Diffstat (limited to 'win32')
-rwxr-xr-xwin32/mkexports.rb17
1 files changed, 11 insertions, 6 deletions
diff --git a/win32/mkexports.rb b/win32/mkexports.rb
index 9b450519ce..d80ce033cd 100755
--- a/win32/mkexports.rb
+++ b/win32/mkexports.rb
@@ -41,8 +41,17 @@ class Exports
syms[internal] = export
winapis[$1] = internal if /^_?(rb_w32_\w+)(?:@\d+)?$/ =~ internal
end
- win32h = File.join(File.dirname(File.dirname(__FILE__)), "include/ruby/win32.h")
- IO.foreach(win32h) do |line|
+ incdir = File.join(File.dirname(File.dirname(__FILE__)), "include/ruby")
+ read_substitution(incdir+"/win32.h", syms, winapis)
+ read_substitution(incdir+"/subst.h", syms, winapis)
+ syms["NtInitialize"] ||= "ruby_sysinit" if syms["ruby_sysinit"]
+ syms["rb_w32_vsnprintf"] ||= "ruby_vsnprintf"
+ syms["rb_w32_snprintf"] ||= "ruby_snprintf"
+ @syms = syms
+ end
+
+ def read_substitution(header, syms, winapis)
+ IO.foreach(header) do |line|
if /^#define (\w+)\((.*?)\)\s+(?:\(void\))?(rb_w32_\w+)\((.*?)\)\s*$/ =~ line and
$2.delete(" ") == $4.delete(" ")
export, internal = $1, $3
@@ -51,10 +60,6 @@ class Exports
end
end
end
- syms["NtInitialize"] ||= "ruby_sysinit" if syms["ruby_sysinit"]
- syms["rb_w32_vsnprintf"] ||= "ruby_vsnprintf"
- syms["rb_w32_snprintf"] ||= "ruby_snprintf"
- @syms = syms
end
def exports(name = $name, library = $library, description = $description)