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
This commit is contained in:
nobu 2018-01-18 01:10:22 +00:00
parent f729089f44
commit 1c98a41ae3

View File

@ -42,19 +42,19 @@ begin
rescue LoadError rescue LoadError
end end
nt = Module.new do if [nil].pack("p").size <= 4 # 32bit env
break true if [nil].pack("p").size > 4 begin
extend Importer f = Fiddle
dlload "kernel32.dll" osid = f::Handle.new["rb_w32_osid"]
getv = extern "int GetVersionExA(void *)", :stdcall rescue f::DLError # not ix86, cannot be Windows 9x
info = [ 148, 0, 0, 0, 0 ].pack('V5') + "\0" * 128 else
getv.call(info) if f::Function.new(osid, [], f::TYPE_INT).call < 2 # VER_PLATFORM_WIN32_NT
break info.unpack('V5')[4] == 2 # VER_PLATFORM_WIN32_NT
end
if not nt
require_relative 'resolv9x' require_relative 'resolv9x'
# return # does not work yet return
else end
end
end
module Win32 module Win32
#==================================================================== #====================================================================
# Windows NT # Windows NT
@ -146,4 +146,3 @@ module Win32
end end
end end
end end
end