win32-process 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +6 -0
- data/install.rb +11 -0
- data/lib/win32/process.rb +28 -6
- data/win32-process.gemspec +24 -0
- metadata +8 -3
data/CHANGES
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
== 0.5.2 - 22-Jan-2007
|
2
|
+
* The startup_info parameter for the Process.create method now accepts
|
3
|
+
'stdin', 'stdout', and 'stderr' as valid parameters, which you can pass
|
4
|
+
a Ruby IO object or a fileno in order to redirect output from the created
|
5
|
+
process.
|
6
|
+
|
1
7
|
== 0.5.1 - 24-Aug-2006
|
2
8
|
* Fixed a bug in the Process.create method where the return value for
|
3
9
|
CreateProcess() was being evaluated incorrectly. Thanks go to David Haney
|
data/install.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# For those who don't like gems...
|
2
|
+
require 'rbconfig'
|
3
|
+
require 'ftools'
|
4
|
+
include Config
|
5
|
+
|
6
|
+
sitelibdir = CONFIG['sitelibdir']
|
7
|
+
installdir = sitelibdir + '/win32'
|
8
|
+
file = 'lib\win32\process.rb'
|
9
|
+
|
10
|
+
Dir.mkdir(installdir) unless File.exists?(installdir)
|
11
|
+
File.copy(file, installdir, true)
|
data/lib/win32/process.rb
CHANGED
@@ -9,7 +9,7 @@ require 'windows/window'
|
|
9
9
|
class ProcessError < RuntimeError; end
|
10
10
|
|
11
11
|
module Process
|
12
|
-
WIN32_PROCESS_VERSION = '0.5.
|
12
|
+
WIN32_PROCESS_VERSION = '0.5.2'
|
13
13
|
|
14
14
|
include Windows::Process
|
15
15
|
include Windows::Error
|
@@ -240,17 +240,21 @@ module Process
|
|
240
240
|
# * fill_attribute
|
241
241
|
# * sw_flags
|
242
242
|
# * startf_flags
|
243
|
+
# * stdin
|
244
|
+
# * stdout
|
245
|
+
# * stderr
|
243
246
|
#
|
244
247
|
# The relevant constants for 'creation_flags', 'sw_flags' and 'startf_flags'
|
245
248
|
# are included in the Windows::Process, Windows::Console and Windows::Window
|
246
249
|
# modules. These come with the windows-pr package, a prerequisite of this
|
247
|
-
# package.
|
250
|
+
# package. Note that the 'stdin', 'stdout' and 'stderr' options can be
|
251
|
+
# either Ruby IO objects or file descriptors (i.e. a fileno). However,
|
252
|
+
# StringIO objects are not currently supported.
|
248
253
|
#
|
249
254
|
# The ProcessInfo struct contains the following members:
|
250
255
|
#
|
251
|
-
# * process_handle - The handle to the newly created process
|
252
|
-
# * thread_handle - The handle to the primary thread of the
|
253
|
-
# process.
|
256
|
+
# * process_handle - The handle to the newly created process.
|
257
|
+
# * thread_handle - The handle to the primary thread of the process.
|
254
258
|
# * process_id - Process ID.
|
255
259
|
# * thread_id - Thread ID.
|
256
260
|
#
|
@@ -291,7 +295,7 @@ module Process
|
|
291
295
|
when true, false
|
292
296
|
hash[key] = val == false ? 0 : 1
|
293
297
|
when nil
|
294
|
-
hash[key] = 0 # Win32API
|
298
|
+
hash[key] = 0 # Win32API sometimes doesn't like nil
|
295
299
|
else
|
296
300
|
hash[key] = val
|
297
301
|
end
|
@@ -341,6 +345,24 @@ module Process
|
|
341
345
|
thread_security[0,4] = [12].pack('L') # sizeof(SECURITY_ATTRIBUTE)
|
342
346
|
thread_security[8,4] = [hash['thread_inherit?']].pack('L')
|
343
347
|
end
|
348
|
+
|
349
|
+
# Automatically handle stdin, stdout and stderr as either IO objects
|
350
|
+
# or file descriptors. This won't work for StringIO, however.
|
351
|
+
['stdin', 'stdout', 'stderr'].each{ |io|
|
352
|
+
if si_hash[io]
|
353
|
+
if si_hash[io].respond_to?(:fileno)
|
354
|
+
handle = get_osfhandle(si_hash[io].fileno)
|
355
|
+
else
|
356
|
+
handle = get_osfhandle(si_hash[io])
|
357
|
+
end
|
358
|
+
|
359
|
+
if handle == INVALID_HANDLE_VALUE
|
360
|
+
raise ProcessError, get_last_error
|
361
|
+
end
|
362
|
+
|
363
|
+
si_hash[io] = handle
|
364
|
+
end
|
365
|
+
}
|
344
366
|
|
345
367
|
# The bytes not covered here are reserved (null)
|
346
368
|
unless si_hash.empty?
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
|
3
|
+
spec = Gem::Specification.new do |gem|
|
4
|
+
gem.name = "win32-process"
|
5
|
+
gem.version = "0.5.2"
|
6
|
+
gem.author = "Daniel J. Berger"
|
7
|
+
gem.email = "djberg96@gmail.com"
|
8
|
+
gem.homepage = "http://www.rubyforge.org/projects/win32utils"
|
9
|
+
gem.platform = Gem::Platform::RUBY
|
10
|
+
gem.summary = "Adds fork, wait, wait2, waitpid, waitpid2 and a special kill method"
|
11
|
+
gem.description = "Adds fork, wait, wait2, waitpid, waitpid2 and a special kill method"
|
12
|
+
gem.test_file = "test/tc_process.rb"
|
13
|
+
gem.has_rdoc = true
|
14
|
+
gem.files = Dir["lib/win32/*.rb"] + Dir["test/*"] + Dir["[A-Z]*"]
|
15
|
+
gem.files.reject! { |fn| fn.include? "CVS" }
|
16
|
+
gem.require_path = "lib"
|
17
|
+
gem.extra_rdoc_files = ["README", "CHANGES"]
|
18
|
+
gem.add_dependency("windows-pr", ">= 0.5.2")
|
19
|
+
end
|
20
|
+
|
21
|
+
if $0 == __FILE__
|
22
|
+
Gem.manage_gems
|
23
|
+
Gem::Builder.new(spec).build
|
24
|
+
end
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.0
|
2
|
+
rubygems_version: 0.9.0.8
|
3
3
|
specification_version: 1
|
4
4
|
name: win32-process
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.5.
|
7
|
-
date:
|
6
|
+
version: 0.5.2
|
7
|
+
date: 2007-01-22 00:00:00 -07:00
|
8
8
|
summary: Adds fork, wait, wait2, waitpid, waitpid2 and a special kill method
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -34,8 +34,13 @@ files:
|
|
34
34
|
- test/tc_process.rb
|
35
35
|
- CHANGES
|
36
36
|
- CVS
|
37
|
+
- examples
|
38
|
+
- install.rb
|
39
|
+
- lib
|
37
40
|
- MANIFEST
|
38
41
|
- README
|
42
|
+
- test
|
43
|
+
- win32-process.gemspec
|
39
44
|
test_files:
|
40
45
|
- test/tc_process.rb
|
41
46
|
rdoc_options: []
|