sys-proctable 0.7.6-i586-linux
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 +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')
|