diff options
-rw-r--r-- | ext/win32/lib/win32/resolv.rb | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/ext/win32/lib/win32/resolv.rb b/ext/win32/lib/win32/resolv.rb index 340a9b9d2b..1eb70d5dc6 100644 --- a/ext/win32/lib/win32/resolv.rb +++ b/ext/win32/lib/win32/resolv.rb @@ -42,19 +42,19 @@ begin rescue LoadError end -nt = Module.new do - break true if [nil].pack("p").size > 4 - extend Importer - dlload "kernel32.dll" - getv = extern "int GetVersionExA(void *)", :stdcall - info = [ 148, 0, 0, 0, 0 ].pack('V5') + "\0" * 128 - getv.call(info) - break info.unpack('V5')[4] == 2 # VER_PLATFORM_WIN32_NT +if [nil].pack("p").size <= 4 # 32bit env + begin + f = Fiddle + osid = f::Handle.new["rb_w32_osid"] + rescue f::DLError # not ix86, cannot be Windows 9x + else + if f::Function.new(osid, [], f::TYPE_INT).call < 2 # VER_PLATFORM_WIN32_NT + require_relative 'resolv9x' + return + end + end end -if not nt - require_relative 'resolv9x' - # return # does not work yet -else + module Win32 #==================================================================== # Windows NT @@ -146,4 +146,3 @@ module Win32 end end end -end |