sys-proctable 0.7.6-i586-linux
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +233 -0
- data/MANIFEST +41 -0
- data/README +140 -0
- data/doc/freebsd.txt +90 -0
- data/doc/hpux.txt +77 -0
- data/doc/linux.txt +85 -0
- data/doc/solaris.txt +99 -0
- data/doc/top.txt +53 -0
- data/doc/windows.txt +122 -0
- data/ext/extconf.rb +98 -0
- data/ext/linux/linux.c +320 -0
- data/ext/linux/linux.h +158 -0
- data/ext/version.h +2 -0
- data/lib/sys/top.rb +23 -0
- data/test/tc_all.rb +59 -0
- data/test/tc_freebsd.rb +45 -0
- data/test/tc_hpux.rb +49 -0
- data/test/tc_kvm_bsd.rb +31 -0
- data/test/tc_linux.rb +45 -0
- data/test/tc_sunos.rb +52 -0
- data/test/tc_top.rb +26 -0
- data/test/tc_windows.rb +40 -0
- data/test/test_memleak.rb +54 -0
- metadata +73 -0
data/doc/hpux.txt
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
= Description
|
2
|
+
sys-proctable
|
3
|
+
|
4
|
+
A Ruby version of the 'ps' command. This is a C extension, not parsed
|
5
|
+
output. For HP-UX, proc structs are grabbed via the pstat_getproc() call.
|
6
|
+
|
7
|
+
= Synopsis
|
8
|
+
require 'sys/proctable'
|
9
|
+
include Sys
|
10
|
+
|
11
|
+
# Everything
|
12
|
+
ProcTable.ps{ |p|
|
13
|
+
puts p.pid.to_s
|
14
|
+
puts p.comm
|
15
|
+
...
|
16
|
+
}
|
17
|
+
|
18
|
+
or
|
19
|
+
|
20
|
+
# Return the results as an array of ProcTableStructs
|
21
|
+
a = ProcTable.ps()
|
22
|
+
a.each do |p|
|
23
|
+
puts a.pid
|
24
|
+
...
|
25
|
+
end
|
26
|
+
|
27
|
+
= Constants
|
28
|
+
VERSION
|
29
|
+
Returns the current version number for this package (as a string).
|
30
|
+
|
31
|
+
= Class Methods
|
32
|
+
ProcTable.fields
|
33
|
+
Returns an array of fields available on the current OS.
|
34
|
+
|
35
|
+
ProcTable.ps(pid=nil)
|
36
|
+
ProcTable.ps{ |s| ... }
|
37
|
+
Returns a struct of type ProcTableStruct for every process in the proc
|
38
|
+
table in block form. Otherwise it returns an array of ProcTableStruct's.
|
39
|
+
|
40
|
+
If a pid is provided then a single ProcTable struct is returned, or nil
|
41
|
+
if the pid is not found.
|
42
|
+
|
43
|
+
= Supported fields
|
44
|
+
You can view the supported fields with the "fields()" class method.
|
45
|
+
|
46
|
+
= Future Plans
|
47
|
+
Have the flags field return a meaningful value.
|
48
|
+
|
49
|
+
= Notes
|
50
|
+
The "comm" field isn't really part of the psinfo struct. It is just a copy
|
51
|
+
(i.e. is identical to) the "fname" field. I added it to provide a degree
|
52
|
+
of consistency between all of the platforms. I will also make a point
|
53
|
+
of adding it to any future platform releases.
|
54
|
+
|
55
|
+
= Known Bugs
|
56
|
+
None that I'm aware of. Please log any bugs on the project page at
|
57
|
+
http://www.rubyforge.org/projects/sysutils
|
58
|
+
|
59
|
+
= License
|
60
|
+
Ruby's
|
61
|
+
|
62
|
+
= Copyright
|
63
|
+
(C) 2003-2006 Daniel J. Berger
|
64
|
+
All Rights Reserved.
|
65
|
+
|
66
|
+
= Warranty
|
67
|
+
This package is provided "as is" and without any express or
|
68
|
+
implied warranties, including, without limitation, the implied
|
69
|
+
warranties of merchantability and fitness for a particular purpose.
|
70
|
+
|
71
|
+
= Author
|
72
|
+
Daniel J. Berger
|
73
|
+
djberg96 at nospam at gmail dot com
|
74
|
+
imperator on IRC (Freenode)
|
75
|
+
|
76
|
+
= See Also
|
77
|
+
ps, proc
|
data/doc/linux.txt
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
= Description
|
2
|
+
sys-proctable
|
3
|
+
|
4
|
+
A Ruby version of the 'ps' command. This is a C extension, not parsed
|
5
|
+
output. For Linux, process information is read out of /proc.
|
6
|
+
|
7
|
+
= Synopsis
|
8
|
+
require 'sys/proctable'
|
9
|
+
include Sys
|
10
|
+
|
11
|
+
# Everything
|
12
|
+
ProcTable.ps{ |p|
|
13
|
+
puts p.pid.to_s
|
14
|
+
puts p.comm
|
15
|
+
...
|
16
|
+
}
|
17
|
+
|
18
|
+
or
|
19
|
+
|
20
|
+
# Just one process
|
21
|
+
p = ProcTable.ps(2123)
|
22
|
+
puts p.pid.to_s
|
23
|
+
puts p.comm
|
24
|
+
...
|
25
|
+
|
26
|
+
or
|
27
|
+
|
28
|
+
# Return the results as an array of ProcTableStructs
|
29
|
+
a = ProcTable.ps()
|
30
|
+
a.each do |p|
|
31
|
+
puts a.pid
|
32
|
+
...
|
33
|
+
end
|
34
|
+
|
35
|
+
= Constants
|
36
|
+
VERSION
|
37
|
+
Returns the current version number for this package (as a string).
|
38
|
+
|
39
|
+
= Class Methods
|
40
|
+
ProcTable.fields
|
41
|
+
Returns an array of fields available on the current OS.
|
42
|
+
|
43
|
+
ProcTable.ps(pid=nil)
|
44
|
+
ProcTable.ps{ |s| ... }
|
45
|
+
If no pid's or processes are included as arguments, in block form it
|
46
|
+
returns a struct of type ProcTableStruct for every process in the proc
|
47
|
+
table. Otherwise it returns an array of ProcTableStruct's.
|
48
|
+
|
49
|
+
If a process id is provided, a single ProcTable struct is returned, or
|
50
|
+
nil if the pid is not found.
|
51
|
+
|
52
|
+
= Exception Classes
|
53
|
+
ProcTableError < StandardError
|
54
|
+
Raised if the /proc field is unreadable and/or unmounted.
|
55
|
+
|
56
|
+
= Supported fields
|
57
|
+
You can view the supported fields with the "fields()" class method.
|
58
|
+
|
59
|
+
= Future Plans
|
60
|
+
Create a pure Ruby version as an alternative.
|
61
|
+
Change the ttynum field to ttydev and return a string instead of an int.
|
62
|
+
|
63
|
+
= Known Bugs
|
64
|
+
None known. Please log any bugs on the project page at
|
65
|
+
http://www.rubyforge.org/projects/sysutils
|
66
|
+
|
67
|
+
= License
|
68
|
+
Ruby's
|
69
|
+
|
70
|
+
= Copyright
|
71
|
+
(C) 2003-2006 Daniel J. Berger
|
72
|
+
All Rights Reserved
|
73
|
+
|
74
|
+
= Warranty
|
75
|
+
This package is provided "as is" and without any express or
|
76
|
+
implied warranties, including, without limitation, the implied
|
77
|
+
warranties of merchantability and fitness for a particular purpose.
|
78
|
+
|
79
|
+
= Author
|
80
|
+
Daniel J. Berger
|
81
|
+
djberg96 at nospam at gmail dot com
|
82
|
+
rubyhacker1 on IRC (Freenode)
|
83
|
+
|
84
|
+
= See Also
|
85
|
+
ps, proc(5)
|
data/doc/solaris.txt
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
= Description
|
2
|
+
sys-proctable
|
3
|
+
|
4
|
+
A Ruby version of the 'ps' command. This is a C extension, not parsed
|
5
|
+
output. For Solaris, data is read out of /proc via the psinfo struct.
|
6
|
+
|
7
|
+
= Synopsis
|
8
|
+
require 'sys/proctable'
|
9
|
+
include Sys
|
10
|
+
|
11
|
+
# Everything
|
12
|
+
ProcTable.ps{ |p|
|
13
|
+
puts p.pid.to_s
|
14
|
+
puts p.comm
|
15
|
+
...
|
16
|
+
}
|
17
|
+
|
18
|
+
or
|
19
|
+
|
20
|
+
# Just one process
|
21
|
+
s = ProcTable.ps(2123)
|
22
|
+
puts s.pid.to_s
|
23
|
+
puts s.comm
|
24
|
+
...
|
25
|
+
|
26
|
+
# Return the results as an array of ProcTableStructs
|
27
|
+
a = ProcTable.ps
|
28
|
+
a.each do |p|
|
29
|
+
puts a.pid
|
30
|
+
...
|
31
|
+
end
|
32
|
+
|
33
|
+
= Constants
|
34
|
+
VERSION
|
35
|
+
Returns the current version number for this package (as a string).
|
36
|
+
|
37
|
+
= Class Methods
|
38
|
+
ProcTable.fields
|
39
|
+
Returns an array of fields available on the current OS.
|
40
|
+
|
41
|
+
ProcTable.ps(pid=nil)
|
42
|
+
ProcTable.ps{ |s| ... }
|
43
|
+
If no pid is included as an argument, in block form it
|
44
|
+
returns a struct of type ProcTableStruct for every process in the proc
|
45
|
+
table. Otherwise it returns an array of ProcTable struct's. If a pid
|
46
|
+
is provided it will return a single ProcTable struct for that pid, or
|
47
|
+
nil if it is not found.
|
48
|
+
|
49
|
+
= Exception Classes
|
50
|
+
ProcTableError < StandardError
|
51
|
+
Raised if the /proc directory is unreadable and/or unmounted.
|
52
|
+
|
53
|
+
= Supported fields
|
54
|
+
You can view the supported fields with the "fields()" class method.
|
55
|
+
|
56
|
+
= Future Plans
|
57
|
+
Return a more meaningful result for the wchan member (2.6+).
|
58
|
+
Add env info where possible.
|
59
|
+
|
60
|
+
= Notes
|
61
|
+
The "comm" field isn't really part of the psinfo struct. It is just a copy
|
62
|
+
(i.e. is identical to) the "fname" field. I added it to provide a degree
|
63
|
+
of consistency between all of the platforms. I will also make a point
|
64
|
+
of adding it to any future platform releases.
|
65
|
+
|
66
|
+
The cmdline string is limited to 80 characters, except for those processes
|
67
|
+
which you (or your program) own.
|
68
|
+
|
69
|
+
The ttydev field is, for now, an integer. If there is no associated tty with
|
70
|
+
the process, a -1 is returned. In the future, this field will be changed to
|
71
|
+
a string (i.e. the actual device name).
|
72
|
+
|
73
|
+
I suppose I *could* add a -lkvm version for Solaris (this is what Dan Urist
|
74
|
+
is now using in Proc::ProcessTable) but I haven't found a compelling reason
|
75
|
+
to do so. If you think you have one, please let me know.
|
76
|
+
|
77
|
+
= Known Bugs
|
78
|
+
None that I am aware of. Please log any bugs on the RubyForge project page at
|
79
|
+
http://www.rubyforge.org/projects/sysutils
|
80
|
+
|
81
|
+
= License
|
82
|
+
Ruby's
|
83
|
+
|
84
|
+
= Copyright
|
85
|
+
(C) 2003-2006 Daniel J. Berger
|
86
|
+
All Rights Reserved.
|
87
|
+
|
88
|
+
= Warranty
|
89
|
+
This package is provided "as is" and without any express or
|
90
|
+
implied warranties, including, without limitation, the implied
|
91
|
+
warranties of merchantability and fitness for a particular purpose.
|
92
|
+
|
93
|
+
= Author
|
94
|
+
Daniel J. Berger
|
95
|
+
djberg96 at nospam at gmail dot com
|
96
|
+
imperator on IRC (Freenode)
|
97
|
+
|
98
|
+
= See Also
|
99
|
+
ps, proc
|
data/doc/top.txt
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
= Description
|
2
|
+
A simple 'top' interface for Ruby
|
3
|
+
|
4
|
+
= Prerequisites
|
5
|
+
Requires the "sys/proctable" package (which should be installed along
|
6
|
+
with this package).
|
7
|
+
|
8
|
+
= Synopsis
|
9
|
+
require "sys/top"
|
10
|
+
include Sys
|
11
|
+
|
12
|
+
Top.top(5).each{ |ps|
|
13
|
+
p ps
|
14
|
+
}
|
15
|
+
|
16
|
+
= Constants
|
17
|
+
VERSION
|
18
|
+
Returns the version number of this package as a String.
|
19
|
+
|
20
|
+
= Class Methods
|
21
|
+
Top.top(number=10, field="pctcpu")
|
22
|
+
Returns an array of ProcTableStruct's. The size of the array (i.e. the
|
23
|
+
number of processes) that it returns is based on +number+, and sorted by
|
24
|
+
+pctcpu+. By default, the size and field values are 10 and "pctcpu",
|
25
|
+
respectively.
|
26
|
+
|
27
|
+
= Notes
|
28
|
+
Not all fields are available on all platforms. Please check your
|
29
|
+
platform specific documentation for which fields are available.
|
30
|
+
|
31
|
+
I used sort() instead of sort_by() internally to maintain backward
|
32
|
+
compatability with Ruby 1.6.8, which I happen to need.
|
33
|
+
|
34
|
+
= Bugs
|
35
|
+
None that I'm aware of. Please log bug reports on the project page at
|
36
|
+
http://www.rubyforge.org/projects/sysutils
|
37
|
+
|
38
|
+
= License
|
39
|
+
Ruby's
|
40
|
+
|
41
|
+
= Copyright
|
42
|
+
(C) 2004-2006 Daniel J. Berger
|
43
|
+
All Rights Reserved.
|
44
|
+
|
45
|
+
= Warranty
|
46
|
+
This package is provided "as is" and without any express or
|
47
|
+
implied warranties, including, without limitation, the implied
|
48
|
+
warranties of merchantability and fitness for a particular purpose.
|
49
|
+
|
50
|
+
= Author
|
51
|
+
Daniel J. Berger
|
52
|
+
djberg96 at nospam at gmail dot com
|
53
|
+
imperator on IRC (Freenode)
|
data/doc/windows.txt
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
= Description
|
2
|
+
A Ruby interface for gathering process information. For MS Windows,
|
3
|
+
the process information is gathered via OLE + WMI, using pure Ruby.
|
4
|
+
|
5
|
+
= Synopsis
|
6
|
+
require 'sys/proctable'
|
7
|
+
include Sys
|
8
|
+
|
9
|
+
# Everything
|
10
|
+
ProcTable.ps{ |p|
|
11
|
+
puts p.pid.to_s
|
12
|
+
puts p.comm
|
13
|
+
...
|
14
|
+
}
|
15
|
+
|
16
|
+
or
|
17
|
+
|
18
|
+
# A single pid
|
19
|
+
p = ProcTable.ps(1234)
|
20
|
+
puts p.pid.to_s
|
21
|
+
puts p.comm
|
22
|
+
...
|
23
|
+
|
24
|
+
or
|
25
|
+
|
26
|
+
# Return the results as an array of ProcTableStructs
|
27
|
+
a = ProcTable.ps
|
28
|
+
a.each do |p|
|
29
|
+
puts a.pid
|
30
|
+
...
|
31
|
+
end
|
32
|
+
|
33
|
+
= Constants
|
34
|
+
VERSION
|
35
|
+
Returns the current version number for this package (as a string).
|
36
|
+
|
37
|
+
= Class Methods
|
38
|
+
ProcTable.fields
|
39
|
+
Returns an Array of fields available on the current OS in the
|
40
|
+
ProcTableStruct.
|
41
|
+
|
42
|
+
ProcTable.ps(pid=nil, host='localhost')
|
43
|
+
ProcTable.ps{ |s| ... }
|
44
|
+
Returns a struct of type ProcTableStruct for every process in the proc
|
45
|
+
table in block form. Otherwise it returns an array of ProcTableStruct's.
|
46
|
+
|
47
|
+
If 'pid' is provided, then only a struct for that pid is returned, or
|
48
|
+
nil if it is not found.
|
49
|
+
|
50
|
+
If 'host' is provided, then processes from that host are gathered. By
|
51
|
+
default, process information is gathered on the local host.
|
52
|
+
|
53
|
+
= Supported fields
|
54
|
+
The currently supported fields for MS Windows (i.e. your ProcTable struct
|
55
|
+
members) are:
|
56
|
+
|
57
|
+
caption, cmdline, comm, creation_class_name, creation_date,
|
58
|
+
cs_creation_class_name, cs_name, description, executable_path,
|
59
|
+
execution_state, handle, handle_count, install_date, kernel_mode_time,
|
60
|
+
maximum_working_set_size, minimum_working_set_size, name,
|
61
|
+
os_creation_class_name, os_name, other_operation_count,
|
62
|
+
other_transfer_count, page_faults, page_file_usage, peak_virtual_size,
|
63
|
+
ppid, peak_working_set_size, priority, private_page_count, pid,
|
64
|
+
quota_non_paged_pool_usage, quota_paged_pool_usage,
|
65
|
+
quota_peak_non_paged_pool_usage, quota_non_paged_pool_usage,
|
66
|
+
read_operation_count, read_transfer_count, session_id,
|
67
|
+
termination_date, thread_count, user_mode_time, virtual_size,
|
68
|
+
windows_version, working_set_size, write_operation_count,
|
69
|
+
write_transfer_count
|
70
|
+
|
71
|
+
You can also view them with the fields() class method.
|
72
|
+
|
73
|
+
= Notes
|
74
|
+
For the sake of attempting to provide a somewhat common API, the 'comm'
|
75
|
+
and 'cmdline' fields have been included as part of the structure. The
|
76
|
+
'comm' member corresponds to the Name attribute of Win32_Process. The
|
77
|
+
'cmdline' attribute corresponds to either the Executable_Path attribute
|
78
|
+
(on Windows 2000 or earlier) or the CommandLine attribute (on Windows XP
|
79
|
+
and later).
|
80
|
+
|
81
|
+
Also note that the ProcessId and ParentProcessId attributes have been
|
82
|
+
abbreviated as 'pid' and 'ppid' in the struct members, again to keep the
|
83
|
+
members more consistent between platforms.
|
84
|
+
|
85
|
+
The "Mem Usage" and "VM Size" that you may be used to seeing in your Task
|
86
|
+
Manager window (probably) correspond to the 'working_set_size' and
|
87
|
+
'page_file_usage' struct members, respectively, keeping in mind that
|
88
|
+
those values are in bytes, not kilobytes. I say 'probably' because
|
89
|
+
comments that I've read online indicate that it may not always line up
|
90
|
+
with what you see in the Task Manager, based on the current version (or
|
91
|
+
even Service Pack) of Windows that you are using.
|
92
|
+
|
93
|
+
= Future Plans
|
94
|
+
Possibly use the Win32_PerfFormattedData_PerfProc_Process class to get
|
95
|
+
additional process information.
|
96
|
+
|
97
|
+
= Known Bugs
|
98
|
+
Versions of Ruby earlier than 1.8.2 resulted in segfaults when trying to
|
99
|
+
run this code. You will likely encounter the same behavior.
|
100
|
+
|
101
|
+
Please log any additional bug reports on the project page at
|
102
|
+
http://www.rubyforge.org/projects/sysutils
|
103
|
+
|
104
|
+
= License
|
105
|
+
Ruby's
|
106
|
+
|
107
|
+
= Copyright
|
108
|
+
(C) 2003-2006 Daniel J. Berger
|
109
|
+
All Rights Reserved
|
110
|
+
|
111
|
+
= Warranty
|
112
|
+
This package is provided "as is" and without any express or
|
113
|
+
implied warranties, including, without limitation, the implied
|
114
|
+
warranties of merchantability and fitness for a particular purpose.
|
115
|
+
|
116
|
+
= Author
|
117
|
+
Daniel J. Berger
|
118
|
+
djberg96 at nospam at gmail dot com
|
119
|
+
imperator on IRC (freenode)
|
120
|
+
|
121
|
+
= See Also
|
122
|
+
OLE + WMI
|
data/ext/extconf.rb
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# Installation script for sys-proctable.
|
3
|
+
#
|
4
|
+
# By running this file, it is assumed that you want a C extension, and not
|
5
|
+
# a pure Ruby version. If you want a pure Ruby version (and you're on a
|
6
|
+
# platform for which it's supported), run install.rb instead.
|
7
|
+
#############################################################################
|
8
|
+
require 'mkmf'
|
9
|
+
require 'fileutils'
|
10
|
+
|
11
|
+
c_file = nil
|
12
|
+
h_file = nil
|
13
|
+
tc_file = nil
|
14
|
+
|
15
|
+
########################################################################
|
16
|
+
# Ruby 1.8.3 and later mandates the use of rb_pid_t over pid_t because
|
17
|
+
# some libraries define their own pid_t. So, we check for that.
|
18
|
+
########################################################################
|
19
|
+
have_type('rb_pid_t', 'ruby.h')
|
20
|
+
|
21
|
+
##########################################################################
|
22
|
+
# Determine appropriate source files based on platform. Also, check for
|
23
|
+
# certain header files and/or libraries on some platforms.
|
24
|
+
#
|
25
|
+
# On FreeBSD a different source file is used if the /proc filesystem is
|
26
|
+
# not found (kvm is used instead). For OpenBSD or NetBSD, the kvm
|
27
|
+
# interface is always used for now.
|
28
|
+
##########################################################################
|
29
|
+
case RUBY_PLATFORM
|
30
|
+
when /hpux/i
|
31
|
+
c_file = 'hpux/hpux.c'
|
32
|
+
h_file = 'hpux/hpux.h'
|
33
|
+
tc_file = 'tc_hpux'
|
34
|
+
when /freebsd/i
|
35
|
+
if File.exists?('/proc') && Dir['/proc/*'].length > 0
|
36
|
+
c_file = 'freebsd/freebsd.c'
|
37
|
+
h_file = 'freebsd/freebsd.h'
|
38
|
+
tc_file = 'tc_freebsd'
|
39
|
+
else
|
40
|
+
have_library('kvm')
|
41
|
+
have_struct_member('struct kinfo_proc', 'kp_proc', 'sys/user.h')
|
42
|
+
have_struct_member('struct kinfo_proc', 'kp_eproc', 'sys/user.h')
|
43
|
+
c_file = 'bsd/bsd.c'
|
44
|
+
tc_file = 'tc_kvm_bsd.rb'
|
45
|
+
end
|
46
|
+
when /openbsd|netbsd/
|
47
|
+
have_library('kvm')
|
48
|
+
c_file = 'bsd/bsd.c'
|
49
|
+
tc_file = 'tc_kvm_bsd.rb'
|
50
|
+
when /solaris|sunos/i
|
51
|
+
c_file = 'sunos/sunos.c'
|
52
|
+
h_file = 'sunos/sunos.h'
|
53
|
+
tc_file = 'tc_sunos'
|
54
|
+
have_header('procfs.h') # false means Solaris 2.5.x
|
55
|
+
when /linux/i
|
56
|
+
c_file = 'linux/linux.c'
|
57
|
+
h_file = 'linux/linux.h'
|
58
|
+
tc_file = 'tc_linux'
|
59
|
+
when /darwin/i
|
60
|
+
c_file = 'darwin/darwin.c'
|
61
|
+
tc_file = 'tc_darwin'
|
62
|
+
when /windows|win32|cygwin|mingw|dos/i
|
63
|
+
msg = 'Use the install_pure_ruby.rb script to install on MS Windows'
|
64
|
+
STDERR.puts msg
|
65
|
+
exit
|
66
|
+
else
|
67
|
+
puts 'This platform not currently supported. Exiting...'
|
68
|
+
exit
|
69
|
+
end
|
70
|
+
|
71
|
+
#####################################################################
|
72
|
+
# Move the 'windows.rb' file under 'lib/sys/' to '.orig' to prevent
|
73
|
+
# mkmf from installing it during the 'make install' phase.
|
74
|
+
#####################################################################
|
75
|
+
if File.exists?('../lib/sys/windows.rb')
|
76
|
+
File.rename('../lib/sys/windows.rb', '../lib/sys/windows.orig')
|
77
|
+
end
|
78
|
+
|
79
|
+
###################
|
80
|
+
# build ts_all.rb
|
81
|
+
###################
|
82
|
+
test_file = '../test/ts_all.rb'
|
83
|
+
File.open(test_file, 'w'){ |fh|
|
84
|
+
fh.puts "require 'tc_all'"
|
85
|
+
fh.puts "require '#{tc_file}'"
|
86
|
+
fh.puts "require 'tc_top'"
|
87
|
+
}
|
88
|
+
|
89
|
+
########################################################################
|
90
|
+
# Copy or link files to current directory for create_makefile to work.
|
91
|
+
########################################################################
|
92
|
+
File.delete('proctable.c') rescue nil
|
93
|
+
File.delete(File.basename(h_file)) rescue nil
|
94
|
+
|
95
|
+
FileUtils.cp(c_file, 'proctable.c')
|
96
|
+
FileUtils.cp(h_file, File.basename(h_file)) if h_file
|
97
|
+
|
98
|
+
create_makefile('sys/proctable')
|