win32-api 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. data/CHANGES +23 -17
  2. data/MANIFEST +9 -9
  3. data/README +71 -71
  4. data/ext/win32/api.c +5 -2
  5. data/test/tc_win32_api.rb +1 -1
  6. metadata +6 -13
data/CHANGES CHANGED
@@ -1,18 +1,24 @@
1
- = 1.0.3 - 28-Sep-2007
2
- * Fixed a subtle but dangerous copy-on-write bug in the API#call method.
3
-
4
- = 1.0.2 - 28-Sep-2007
5
- * Fixed a bug in an internal struct member that was causing segfaults. Thanks
6
- go to Lars Olsson for the spot.
7
- * Fixed the 'install' task in the Rakefile. This only affected native builds,
8
- not the prebuilt binary.
9
- * Added a few more tests.
10
-
11
- = 1.0.1 - 27-Sep-2007
12
- * Functions declared with a void prototype no longer require an explicit nil
13
- argument to fulfill the arity requirement. You can still call them with an
14
- explicit nil if you wish, however.
15
- * Fixed the gemspec for the native build.
16
-
17
- = 1.0.0 - 14-Sep-2007
1
+ = 1.0.4 - 26-Oct-2007
2
+ * Fixed a bug where methods that returned pointers ('P') could choke if the
3
+ resulting pointer was 0 or NULL. In this case, nil is now returned instead.
4
+ * Tweak to the extconf.rb file that helps the gem build it from source
5
+ properly.
6
+
7
+ = 1.0.3 - 28-Sep-2007
8
+ * Fixed a subtle but dangerous copy-on-write bug in the API#call method.
9
+
10
+ = 1.0.2 - 28-Sep-2007
11
+ * Fixed a bug in an internal struct member that was causing segfaults. Thanks
12
+ go to Lars Olsson for the spot.
13
+ * Fixed the 'install' task in the Rakefile. This only affected native builds,
14
+ not the prebuilt binary.
15
+ * Added a few more tests.
16
+
17
+ = 1.0.1 - 27-Sep-2007
18
+ * Functions declared with a void prototype no longer require an explicit nil
19
+ argument to fulfill the arity requirement. You can still call them with an
20
+ explicit nil if you wish, however.
21
+ * Fixed the gemspec for the native build.
22
+
23
+ = 1.0.0 - 14-Sep-2007
18
24
  * Initial release
data/MANIFEST CHANGED
@@ -1,9 +1,9 @@
1
- CHANGES
2
- MANIFEST
3
- README
4
- Rakefile
5
- win32-api.gemspec
6
- ext/extconf.rb
7
- ext/win32/api.c
8
- test/tc_win32_api_callback.rb
9
- test/tc_win32_api.rb
1
+ * CHANGES
2
+ * MANIFEST
3
+ * README
4
+ * Rakefile
5
+ * win32-api.gemspec
6
+ * ext/extconf.rb
7
+ * ext/win32/api.c
8
+ * test/tc_win32_api_callback.rb
9
+ * test/tc_win32_api.rb
data/README CHANGED
@@ -1,72 +1,72 @@
1
- = Description
2
- This is a drop-in replacement for the Win32API library currently part of
3
- Ruby's standard library.
4
-
5
- = Synopsis
6
- require 'win32/api'
7
- include Win32
8
-
9
- buf = 0.chr * 260
10
- len = [@buf.length].pack('L')
11
-
12
- GetUserName = API.new('GetUserName', 'PP', 'I', 'advapi32')
13
- GetUserName.call(buf, len)
14
-
15
- puts buf.strip
16
-
17
- = Differences between win32-api and Win32API
18
- * Argument order change. The DLL name is now last, not first.
19
- * Removed the 'N' and 'n'. Always use 'L' for longs now.
20
- * Sensible default arguments for the prototype, return type and DLL name.
21
- * Reader methods for the function name, prototype, return type and DLL.
22
- * Removed the support for lower case prototype and return types. Always
23
- use capital letters.
24
-
25
- = Developer's Notes
26
- The current Win32API library that ships with the standard library has been
27
- slated for removal from Ruby 2.0 and it will not receive any updates in the
28
- Ruby 1.8.x branch. I have far too many libraries invested in it to let it
29
- die at this point.
30
-
31
- In addition, the current Win32API library was written in the bad old Ruby
32
- 1.6.x days, which means it doesn't use the newer allocation framework.
33
- There were several other refactorings that I felt it needed to more closely
34
- match how it was actually being used in practice.
35
-
36
- The first order of business was changing the order of the arguments. By
37
- moving the DLL name from first to last, I was able to provide reasonable
38
- default arguments for the prototype, return type and the DLL. Only the
39
- function name is required now.
40
-
41
- There was a laundry list of other refactorings that were needed: sensical
42
- instance variable names with proper accessors, removing support for lower
43
- case prototype and return value characters that no one used in practice,
44
- better naming conventions, the addition of RDoc ready comments and,
45
- especially, callback support.
46
-
47
- Most importantly, we can now add, modify and fix any features that we feel
48
- best benefit our end users.
49
-
50
- = Documentation
51
- The source file contains inline RDoc documentation. If you installed
52
- this file as a gem, then you have the docs.
53
-
54
- = Warranty
55
- This package is provided "as is" and without any express or
56
- implied warranties, including, without limitation, the implied
57
- warranties of merchantability and fitness for a particular purpose.
58
-
59
- = Known Bugs
60
- None that I'm aware of. Please submit any bug reports to the project page
61
- at http://www.rubyforge.org/projects/win32utils.
62
-
63
- = Copyright
64
- (C) 2003-2007 Daniel J. Berger
65
- All Rights Reserved
66
-
67
- = License
68
- Ruby's
69
-
70
- = Authors
71
- Daniel J. Berger
1
+ = Description
2
+ This is a drop-in replacement for the Win32API library currently part of
3
+ Ruby's standard library.
4
+
5
+ = Synopsis
6
+ require 'win32/api'
7
+ include Win32
8
+
9
+ buf = 0.chr * 260
10
+ len = [@buf.length].pack('L')
11
+
12
+ GetUserName = API.new('GetUserName', 'PP', 'I', 'advapi32')
13
+ GetUserName.call(buf, len)
14
+
15
+ puts buf.strip
16
+
17
+ = Differences between win32-api and Win32API
18
+ * Argument order change. The DLL name is now last, not first.
19
+ * Removed the 'N' and 'n'. Always use 'L' for longs now.
20
+ * Sensible default arguments for the prototype, return type and DLL name.
21
+ * Reader methods for the function name, prototype, return type and DLL.
22
+ * Removed the support for lower case prototype and return types. Always
23
+ use capital letters.
24
+
25
+ = Developer's Notes
26
+ The current Win32API library that ships with the standard library has been
27
+ slated for removal from Ruby 2.0 and it will not receive any updates in the
28
+ Ruby 1.8.x branch. I have far too many libraries invested in it to let it
29
+ die at this point.
30
+
31
+ In addition, the current Win32API library was written in the bad old Ruby
32
+ 1.6.x days, which means it doesn't use the newer allocation framework.
33
+ There were several other refactorings that I felt it needed to more closely
34
+ match how it was actually being used in practice.
35
+
36
+ The first order of business was changing the order of the arguments. By
37
+ moving the DLL name from first to last, I was able to provide reasonable
38
+ default arguments for the prototype, return type and the DLL. Only the
39
+ function name is required now.
40
+
41
+ There was a laundry list of other refactorings that were needed: sensical
42
+ instance variable names with proper accessors, removing support for lower
43
+ case prototype and return value characters that no one used in practice,
44
+ better naming conventions, the addition of RDoc ready comments and,
45
+ especially, callback support.
46
+
47
+ Most importantly, we can now add, modify and fix any features that we feel
48
+ best benefit our end users.
49
+
50
+ = Documentation
51
+ The source file contains inline RDoc documentation. If you installed
52
+ this file as a gem, then you have the docs.
53
+
54
+ = Warranty
55
+ This package is provided "as is" and without any express or
56
+ implied warranties, including, without limitation, the implied
57
+ warranties of merchantability and fitness for a particular purpose.
58
+
59
+ = Known Bugs
60
+ None that I'm aware of. Please submit any bug reports to the project page
61
+ at http://www.rubyforge.org/projects/win32utils.
62
+
63
+ = Copyright
64
+ (C) 2003-2007 Daniel J. Berger
65
+ All Rights Reserved
66
+
67
+ = License
68
+ Ruby's
69
+
70
+ = Authors
71
+ Daniel J. Berger
72
72
  Park Heesob
data/ext/win32/api.c CHANGED
@@ -2,7 +2,7 @@
2
2
  #include <windows.h>
3
3
 
4
4
  #define MAX_BUF 1024
5
- #define WINDOWS_API_VERSION "1.0.3"
5
+ #define WINDOWS_API_VERSION "1.0.4"
6
6
 
7
7
  #define _T_VOID 0
8
8
  #define _T_LONG 1
@@ -453,7 +453,10 @@ static VALUE api_call(int argc, VALUE* argv, VALUE self){
453
453
  v_return = Qnil;
454
454
  break;
455
455
  case _T_POINTER:
456
- v_return = rb_str_new2((TCHAR*)return_value);
456
+ if(!return_value)
457
+ v_return = Qnil;
458
+ else
459
+ v_return = rb_str_new2((TCHAR*)return_value);
457
460
  break;
458
461
  default:
459
462
  v_return = INT2NUM(0);
data/test/tc_win32_api.rb CHANGED
@@ -16,7 +16,7 @@ class TC_Win32_API < Test::Unit::TestCase
16
16
  end
17
17
 
18
18
  def test_version
19
- assert_equal('1.0.2', API::VERSION)
19
+ assert_equal('1.0.4', API::VERSION)
20
20
  end
21
21
 
22
22
  def test_call
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4.5
3
- specification_version: 2
2
+ rubygems_version: 0.9.4
3
+ specification_version: 1
4
4
  name: win32-api
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.0.3
7
- date: 2007-10-18 00:00:00 -06:00
6
+ version: 1.0.4
7
+ date: 2007-10-29 00:00:00 -07:00
8
8
  summary: A superior replacement for Win32API
9
9
  require_paths:
10
10
  - lib
@@ -16,22 +16,15 @@ autorequire:
16
16
  default_executable:
17
17
  bindir: bin
18
18
  has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Requirement
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
23
  version: 1.8.0
24
24
  version:
25
- required_rubygems_version: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: "0"
30
- version:
31
25
  platform: ruby
32
26
  signing_key:
33
- cert_chain: []
34
-
27
+ cert_chain:
35
28
  post_install_message:
36
29
  authors:
37
30
  - Daniel J. Berger