windows-pr 0.8.6 → 0.8.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGES CHANGED
@@ -1,3 +1,8 @@
1
+ = 0.8.7 - 23-Jun-2008
2
+ * Wide character fix for the get_last_error helper function. Thanks go to
3
+ Dave Whitley for the spot.
4
+ * Added local memory functions and constants to the Windows::Memory module.
5
+
1
6
  = 0.8.6 - 14-Jun-2008
2
7
  * Added the Windows::Network::Winsock module.
3
8
  * Added the Windows::ToolHelper module.
data/lib/windows/error.rb CHANGED
@@ -413,10 +413,10 @@ module Windows
413
413
  # returns a human readable string.
414
414
  #
415
415
  def get_last_error(err_num = GetLastError.call)
416
- buf = 0.chr * 260
417
- flags = FORMAT_MESSAGE_FROM_SYSTEM + FORMAT_MESSAGE_ARGUMENT_ARRAY
416
+ buf = $KCODE == 'UTF8' ? 0.chr * 520 : 0.chr * 260
417
+ flags = FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY
418
418
  FormatMessage.call(flags, 0, err_num, 0, buf, buf.size, 0)
419
- buf.split(0.chr).first.chomp rescue 'Unknown error'
419
+ buf.split(0.chr).join[ /^[^\0\r\n]*/ ] rescue 'Unknown error'
420
420
  end
421
421
 
422
422
  # Macros from WinError.h
@@ -53,6 +53,18 @@ module Windows
53
53
  SEC_COMMIT = 0x8000000
54
54
  SEC_NOCACHE = 0x10000000
55
55
 
56
+ LMEM_FIXED = 0x0000
57
+ LMEM_MOVEABLE = 0x0002
58
+ LMEM_NOCOMPACT = 0x0010
59
+ LMEM_NODISCARD = 0x0020
60
+ LMEM_ZEROINIT = 0x0040
61
+ LMEM_MODIFY = 0x0080
62
+ LMEM_DISCARDABLE = 0x0F00
63
+ LMEM_VALID_FLAGS = 0x0F72
64
+ LMEM_INVALID_HANDLE = 0x8000
65
+ LMEM_DISCARDED = 0x4000
66
+ LMEM_LOCKCOUNT = 0x00FF
67
+
56
68
  API.new('GlobalAlloc', 'II', 'I')
57
69
  API.new('GlobalFlags', 'I', 'I')
58
70
  API.new('GlobalFree', 'I', 'I')
@@ -78,6 +90,15 @@ module Windows
78
90
  API.new('HeapValidate', 'LLL', 'B')
79
91
  API.new('HeapWalk', 'LP', 'B')
80
92
 
93
+ API.new('LocalAlloc', 'IL', 'L')
94
+ API.new('LocalFlags', 'L', 'I')
95
+ API.new('LocalFree', 'L', 'L')
96
+ API.new('LocalHandle', 'L', 'L')
97
+ API.new('LocalLock', 'L', 'L')
98
+ API.new('LocalReAlloc', 'LLI', 'L')
99
+ API.new('LocalSize', 'L', 'I')
100
+ API.new('LocalUnlock', 'L', 'B')
101
+
81
102
  API.new('VirtualAlloc', 'LLLL', 'L')
82
103
  API.new('VirtualAllocEx', 'LLLLL', 'L')
83
104
  API.new('VirtualFree', 'LLL', 'B')
@@ -90,6 +111,11 @@ module Windows
90
111
  API.new('VirtualUnlock', 'LL', 'B')
91
112
  API.new('RtlZeroMemory', 'PL', 'L')
92
113
 
114
+ # The LocalDiscard macro from winbase.h
115
+ def LocalDiscard(mem_loc)
116
+ LocalReAlloc(mem_loc, 0, LMEM_MOVEABLE)
117
+ end
118
+
93
119
  # Windows XP or later
94
120
  begin
95
121
  API.new('HeapQueryInformation', 'LIPLL', 'B')
@@ -0,0 +1,29 @@
1
+ #####################################################################
2
+ # tc_tool_helper.rb
3
+ #
4
+ # Test case for the Windows::ToolHelper module.
5
+ #####################################################################
6
+ require 'windows/tool_helper'
7
+ require 'test/unit'
8
+
9
+ class ToolHelperFoo
10
+ include Windows::ToolHelper
11
+ end
12
+
13
+ class TC_Windows_ToolHelper < Test::Unit::TestCase
14
+ def setup
15
+ @foo = ToolHelperFoo.new
16
+ end
17
+
18
+ def test_numeric_constants
19
+ assert_equal(0x00000001, ToolHelperFoo::TH32CS_SNAPHEAPLIST)
20
+ end
21
+
22
+ def test_method_constants
23
+ assert_not_nil(ToolHelperFoo::Process32First)
24
+ end
25
+
26
+ def teardown
27
+ @foo = nil
28
+ end
29
+ end
data/windows-pr.gemspec CHANGED
@@ -2,7 +2,7 @@ require "rubygems"
2
2
 
3
3
  spec = Gem::Specification.new do |gem|
4
4
  gem.name = "windows-pr"
5
- gem.version = "0.8.6"
5
+ gem.version = "0.8.7"
6
6
  gem.author = "Daniel J. Berger"
7
7
  gem.email = "djberg96@gmail.com"
8
8
  gem.homepage = "http://www.rubyforge.org/projects/win32utils"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: windows-pr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.6
4
+ version: 0.8.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel J. Berger
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-06-14 00:00:00 -06:00
12
+ date: 2008-06-23 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -103,6 +103,7 @@ files:
103
103
  - test/tc_system_info.rb
104
104
  - test/tc_thread.rb
105
105
  - test/tc_time.rb
106
+ - test/tc_tool_helper.rb
106
107
  - test/tc_unicode.rb
107
108
  - test/tc_volume.rb
108
109
  - test/tc_window.rb
@@ -189,6 +190,7 @@ test_files:
189
190
  - test/tc_system_info.rb
190
191
  - test/tc_thread.rb
191
192
  - test/tc_time.rb
193
+ - test/tc_tool_helper.rb
192
194
  - test/tc_unicode.rb
193
195
  - test/tc_volume.rb
194
196
  - test/tc_window.rb