summaryrefslogtreecommitdiff
path: root/ext/Win32API
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-07-18 18:11:45 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-07-18 18:11:45 +0000
commitc88efe5fa2ba6e6b565630e3049c8307ed540c9f (patch)
tree3f915823848a1ba0732dff2b8d3c123e4c200b28 /ext/Win32API
parentd0878214803bb2f71be28890ea73600a9a42cd27 (diff)
* 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
Diffstat (limited to 'ext/Win32API')
-rw-r--r--ext/Win32API/lib/win32/registry.rb31
1 files changed, 17 insertions, 14 deletions
diff --git a/ext/Win32API/lib/win32/registry.rb b/ext/Win32API/lib/win32/registry.rb
index 7e34301247..2671551a33 100644
--- a/ext/Win32API/lib/win32/registry.rb
+++ b/ext/Win32API/lib/win32/registry.rb
@@ -269,9 +269,12 @@ module Win32
HKEY_CLASSES_ROOT = 0x80000000
HKEY_CURRENT_USER = 0x80000001
HKEY_LOCAL_MACHINE = 0x80000002
- HKEY_PERFORMANCE_DATA = 0x80000003
- HKEY_CURRENT_CONFIG = 0x80000004
- HKEY_DYN_DATA = 0x80000005
+ HKEY_USERS = 0x80000003
+ HKEY_PERFORMANCE_DATA = 0x80000004
+ HKEY_PERFORMANCE_TEXT = 0x80000050
+ HKEY_PERFORMANCE_NLSTEXT = 0x80000060
+ HKEY_CURRENT_CONFIG = 0x80000005
+ HKEY_DYN_DATA = 0x80000006
REG_NONE = 0
REG_SZ = 1
@@ -330,11 +333,10 @@ module Win32
#
# Error
#
- class Error < ::SystemCallError
+ class Error < ::StandardError
FormatMessageA = Win32API.new('kernel32.dll', 'FormatMessageA', 'LPLLPLP', 'L')
def initialize(code)
@code = code
-
msg = "\0" * 1024
len = FormatMessageA.call(0x1200, 0, code, 0, msg, 1024, 0)
super msg[0, len].tr("\r", '').chomp
@@ -364,7 +366,7 @@ module Win32
end
# 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)
end
end
@@ -400,6 +402,7 @@ module Win32
end
def unpackdw(dw)
+ dw += [0].pack('V')
dw.unpack('V')[0]
end
@@ -723,17 +726,17 @@ module Win32
def write(name, type, data)
case type
when REG_SZ, REG_EXPAND_SZ
- data += "\0"
+ data = data.to_s + "\0"
when REG_MULTI_SZ
- data = data.join("\0") + "\0\0"
+ data = data.to_a.join("\0") + "\0\0"
when REG_BINARY
- #
+ data = data.to_s
when REG_DWORD
- data = API.packdw(data)
+ data = API.packdw(data.to_i)
when REG_DWORD_BIG_ENDIAN
- data = [data].pack('N')
+ data = [data.to_i].pack('N')
when REG_QWORD
- data = API.packqw(data)
+ data = API.packqw(data.to_i)
else
raise TypeError, "Unsupported type #{type}"
end
@@ -746,9 +749,9 @@ module Win32
else
case value = rtype
when Integer
- write name, REG_DWORD, value.to_i
+ write name, REG_DWORD, value
when String
- write name, REG_SZ, value.to_s
+ write name, REG_SZ, value
when Array
write name, REG_MULTI_SZ, value
else