1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/Win32API/lib/win32/registry.rb (Win32::Registry::Error):

inherit StandardError instead of SystemCallError.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4095 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
usa 2003-07-18 18:11:45 +00:00
parent d087821480
commit c88efe5fa2
2 changed files with 22 additions and 14 deletions

View file

@ -1,3 +1,8 @@
Sat Jul 19 03:09:18 2003 NAKAMURA Usaku <usa@ruby-lang.org>
* ext/Win32API/lib/win32/registry.rb (Win32::Registry::Error):
inherit StandardError instead of SystemCallError.
Sat Jul 19 02:00:39 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net> Sat Jul 19 02:00:39 2003 Nobuyoshi Nakada <nobu.nokada@softhome.net>
* eval.c (rb_attr): extra calls of method_added. [ruby-talk:76361] * eval.c (rb_attr): extra calls of method_added. [ruby-talk:76361]

View file

@ -269,9 +269,12 @@ module Win32
HKEY_CLASSES_ROOT = 0x80000000 HKEY_CLASSES_ROOT = 0x80000000
HKEY_CURRENT_USER = 0x80000001 HKEY_CURRENT_USER = 0x80000001
HKEY_LOCAL_MACHINE = 0x80000002 HKEY_LOCAL_MACHINE = 0x80000002
HKEY_PERFORMANCE_DATA = 0x80000003 HKEY_USERS = 0x80000003
HKEY_CURRENT_CONFIG = 0x80000004 HKEY_PERFORMANCE_DATA = 0x80000004
HKEY_DYN_DATA = 0x80000005 HKEY_PERFORMANCE_TEXT = 0x80000050
HKEY_PERFORMANCE_NLSTEXT = 0x80000060
HKEY_CURRENT_CONFIG = 0x80000005
HKEY_DYN_DATA = 0x80000006
REG_NONE = 0 REG_NONE = 0
REG_SZ = 1 REG_SZ = 1
@ -330,11 +333,10 @@ module Win32
# #
# Error # Error
# #
class Error < ::SystemCallError class Error < ::StandardError
FormatMessageA = Win32API.new('kernel32.dll', 'FormatMessageA', 'LPLLPLP', 'L') FormatMessageA = Win32API.new('kernel32.dll', 'FormatMessageA', 'LPLLPLP', 'L')
def initialize(code) def initialize(code)
@code = code @code = code
msg = "\0" * 1024 msg = "\0" * 1024
len = FormatMessageA.call(0x1200, 0, code, 0, msg, 1024, 0) len = FormatMessageA.call(0x1200, 0, code, 0, msg, 1024, 0)
super msg[0, len].tr("\r", '').chomp super msg[0, len].tr("\r", '').chomp
@ -364,7 +366,7 @@ module Win32
end end
# Make all # Make all
Constants.constants.select { |c| /^HKEY_/ =~ c }.each do |c| Constants.constants.grep(/^HKEY_/) do |c|
Registry.const_set c, new(Constants.const_get(c), c) Registry.const_set c, new(Constants.const_get(c), c)
end end
end end
@ -400,6 +402,7 @@ module Win32
end end
def unpackdw(dw) def unpackdw(dw)
dw += [0].pack('V')
dw.unpack('V')[0] dw.unpack('V')[0]
end end
@ -723,17 +726,17 @@ module Win32
def write(name, type, data) def write(name, type, data)
case type case type
when REG_SZ, REG_EXPAND_SZ when REG_SZ, REG_EXPAND_SZ
data += "\0" data = data.to_s + "\0"
when REG_MULTI_SZ when REG_MULTI_SZ
data = data.join("\0") + "\0\0" data = data.to_a.join("\0") + "\0\0"
when REG_BINARY when REG_BINARY
# data = data.to_s
when REG_DWORD when REG_DWORD
data = API.packdw(data) data = API.packdw(data.to_i)
when REG_DWORD_BIG_ENDIAN when REG_DWORD_BIG_ENDIAN
data = [data].pack('N') data = [data.to_i].pack('N')
when REG_QWORD when REG_QWORD
data = API.packqw(data) data = API.packqw(data.to_i)
else else
raise TypeError, "Unsupported type #{type}" raise TypeError, "Unsupported type #{type}"
end end
@ -746,9 +749,9 @@ module Win32
else else
case value = rtype case value = rtype
when Integer when Integer
write name, REG_DWORD, value.to_i write name, REG_DWORD, value
when String when String
write name, REG_SZ, value.to_s write name, REG_SZ, value
when Array when Array
write name, REG_MULTI_SZ, value write name, REG_MULTI_SZ, value
else else