From 1c98a41ae3f1f4bea2fa0449b0771f5de68328f2 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 18 Jan 2018 01:10:22 +0000 Subject: win32/resolv.rb: call rb_w32_osid * ext/win32/lib/win32/resolv.rb: call rb_w32_osid instead of direct GetVersionExA API. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61895 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/win32/lib/win32/resolv.rb | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'ext') 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 -- cgit v1.2.3