sys-proctable 0.9.1-universal-darwin → 0.9.2-universal-darwin
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 +8 -0
- data/README +4 -11
- data/Rakefile +23 -22
- data/ext/darwin/sys/proctable.c +166 -2
- data/lib/sys/top.rb +1 -4
- data/sys-proctable.gemspec +2 -3
- data/test/test_sys_proctable_all.rb +2 -3
- metadata +41 -51
data/CHANGES
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
== 0.9.2 - 8-Oct-2012
|
2
|
+
* Added cmdline support for OS X. Thanks go to Matthias Zirnstein for
|
3
|
+
the patch.
|
4
|
+
* Warning cleanup for 1.9.
|
5
|
+
* Updated the gem platform handling. Replaced the borked string approach
|
6
|
+
with a two element array for Gem::Platform.new.
|
7
|
+
* MS date strings are now parse with DateTime instead of Date.
|
8
|
+
|
1
9
|
== 0.9.1 - 3-Aug-2011
|
2
10
|
* Added the pctcpu and pctmem members for Linux.
|
3
11
|
* Added Errno::ESRCH to a rescue clause on Linux that fixed a bug
|
data/README
CHANGED
@@ -20,6 +20,7 @@
|
|
20
20
|
gem install sys-proctable --platform mswin32 # Windows
|
21
21
|
gem install sys-proctable --platform sunos # Solaris
|
22
22
|
gem install sys-proctable --platform linux # Linux
|
23
|
+
gem install sys-proctable --platform freebsd # BSD (any flavor)
|
23
24
|
|
24
25
|
== Synopsis
|
25
26
|
require 'sys/proctable'
|
@@ -58,15 +59,6 @@
|
|
58
59
|
The cmdline member on Solaris is limited to 80 characters unless you (or
|
59
60
|
your program) own the process. This is a Solaris design flaw/feature.
|
60
61
|
|
61
|
-
=== OS X
|
62
|
-
At the moment you do not get the full command line string. The code required
|
63
|
-
to get this information is obnoxious and I don't have any compelling desire
|
64
|
-
to add it. However, if you're willing to submit a patch I'll accept it.
|
65
|
-
|
66
|
-
You can find a good starting point with the OS X code found in Dan Urist's
|
67
|
-
Proc::ProcessTable module. You can find that module on CPAN. Point your
|
68
|
-
browser at http://search.cpan.org.
|
69
|
-
|
70
62
|
=== Thread Safety
|
71
63
|
I am not currently using a thread-safe version of readdir() for versions
|
72
64
|
of this library that use C. I am not especially concerned about it either.
|
@@ -94,7 +86,8 @@
|
|
94
86
|
euid, gid and guid info in the Linux version, along with some general
|
95
87
|
debugging help.
|
96
88
|
|
97
|
-
Thanks go to David Felstead for the original OS X code.
|
89
|
+
Thanks go to David Felstead for the original OS X code. Thanks also go
|
90
|
+
to Matthias Zirnstein for adding cmdline support for OS X.
|
98
91
|
|
99
92
|
Finally I'd like to thank all the folks who have submitted bug reports
|
100
93
|
and/or patches.
|
@@ -112,7 +105,7 @@
|
|
112
105
|
Artistic 2.0
|
113
106
|
|
114
107
|
== Copyright
|
115
|
-
(C) 2003-
|
108
|
+
(C) 2003-2012 Daniel J. Berger
|
116
109
|
All Rights Reserved.
|
117
110
|
|
118
111
|
== Author
|
data/Rakefile
CHANGED
@@ -2,12 +2,13 @@ require 'rake'
|
|
2
2
|
require 'rake/clean'
|
3
3
|
require 'rake/testtask'
|
4
4
|
require 'rbconfig'
|
5
|
-
include
|
5
|
+
include RbConfig
|
6
6
|
|
7
7
|
CLEAN.include(
|
8
8
|
'**/*.core', # Core dump files
|
9
9
|
'**/*.gem', # Gem files
|
10
10
|
'**/*.rbc', # Rubinius
|
11
|
+
'.rbx', '**/*/.rbx', # Rubinius
|
11
12
|
'**/*.o', # C object file
|
12
13
|
'**/*.log', # Ruby extension build log
|
13
14
|
'**/Makefile', # C Makefile
|
@@ -17,7 +18,7 @@ CLEAN.include(
|
|
17
18
|
|
18
19
|
desc 'Build the sys-proctable library for C versions of sys-proctable'
|
19
20
|
task :build => [:clean] do
|
20
|
-
case
|
21
|
+
case CONFIG['host_os']
|
21
22
|
when /bsd/i
|
22
23
|
dir = 'ext/bsd'
|
23
24
|
when /darwin/i
|
@@ -26,11 +27,11 @@ task :build => [:clean] do
|
|
26
27
|
dir = 'ext/hpux'
|
27
28
|
end
|
28
29
|
|
29
|
-
unless
|
30
|
+
unless CONFIG['host_os'] =~ /win32|mswin|dos|cygwin|mingw|windows|linux|sunos|solaris/i
|
30
31
|
Dir.chdir(dir) do
|
31
32
|
ruby 'extconf.rb'
|
32
33
|
sh 'make'
|
33
|
-
cp 'proctable.' +
|
34
|
+
cp 'proctable.' + CONFIG['DLEXT'], 'sys'
|
34
35
|
end
|
35
36
|
end
|
36
37
|
end
|
@@ -38,11 +39,11 @@ end
|
|
38
39
|
desc 'Install the sys-proctable library'
|
39
40
|
task :install => [:build] do
|
40
41
|
file = nil
|
41
|
-
dir = File.join(
|
42
|
+
dir = File.join(CONFIG['sitelibdir'], 'sys')
|
42
43
|
|
43
44
|
Dir.mkdir(dir) unless File.exists?(dir)
|
44
45
|
|
45
|
-
case
|
46
|
+
case CONFIG['host_os']
|
46
47
|
when /mswin|win32|msdos|cygwin|mingw|windows/i
|
47
48
|
file = 'lib/windows/sys/proctable.rb'
|
48
49
|
when /linux/i
|
@@ -62,13 +63,13 @@ end
|
|
62
63
|
|
63
64
|
desc 'Uninstall the sys-proctable library'
|
64
65
|
task :uninstall do
|
65
|
-
case
|
66
|
+
case CONFIG['host_os']
|
66
67
|
when /win32|mswin|dos|cygwin|mingw|windows|linux|sunos|solaris/i
|
67
|
-
dir = File.join(
|
68
|
+
dir = File.join(CONFIG['sitelibdir'], 'sys')
|
68
69
|
file = File.join(dir, 'proctable.rb')
|
69
70
|
else
|
70
|
-
dir = File.join(
|
71
|
-
file = File.join(dir, 'proctable.' +
|
71
|
+
dir = File.join(CONFIG['sitearchdir'], 'sys')
|
72
|
+
file = File.join(dir, 'proctable.' + CONFIG['DLEXT'])
|
72
73
|
end
|
73
74
|
|
74
75
|
rm(file)
|
@@ -89,7 +90,7 @@ Rake::TestTask.new do |t|
|
|
89
90
|
task :test => :build
|
90
91
|
t.libs << 'test' << '.'
|
91
92
|
|
92
|
-
case
|
93
|
+
case CONFIG['host_os']
|
93
94
|
when /mswin|msdos|cygwin|mingw|windows/i
|
94
95
|
t.test_files = FileList['test/test_sys_proctable_windows.rb']
|
95
96
|
t.libs << 'lib/windows'
|
@@ -120,46 +121,46 @@ namespace :gem do
|
|
120
121
|
# in order to get the universal platform settings I want because
|
121
122
|
# of some bugginess in Rubygems' platform.rb.
|
122
123
|
#
|
123
|
-
case
|
124
|
+
case CONFIG['host_os']
|
124
125
|
when /bsd/i
|
125
|
-
spec.platform = Gem::Platform.new('universal
|
126
|
+
spec.platform = Gem::Platform.new(['universal', 'freebsd'])
|
127
|
+
spec.platform.version = nil
|
126
128
|
spec.files << 'ext/bsd/sys/proctable.c'
|
127
129
|
spec.extra_rdoc_files << 'ext/bsd/sys/proctable.c'
|
128
130
|
spec.test_files << 'test/test_sys_proctable_bsd.rb'
|
129
131
|
spec.extensions = ['ext/bsd/extconf.rb']
|
130
132
|
when /darwin/i
|
131
|
-
spec.platform = Gem::Platform.new('universal
|
133
|
+
spec.platform = Gem::Platform.new(['universal', 'darwin'])
|
132
134
|
spec.files << 'ext/darwin/sys/proctable.c'
|
133
135
|
spec.extra_rdoc_files << 'ext/darwin/sys/proctable.c'
|
134
136
|
spec.test_files << 'test/test_sys_proctable_darwin.rb'
|
135
137
|
spec.extensions = ['ext/darwin/extconf.rb']
|
136
138
|
when /hpux/i
|
137
|
-
spec.platform = Gem::Platform.new('universal
|
139
|
+
spec.platform = Gem::Platform.new(['universal', 'hpux'])
|
138
140
|
spec.files << 'ext/hpux/sys/proctable.c'
|
139
141
|
spec.extra_rdoc_files << 'ext/hpux/sys/proctable.c'
|
140
142
|
spec.test_files << 'test/test_sys_proctable_hpux.rb'
|
141
143
|
spec.extensions = ['ext/hpux/extconf.rb']
|
142
144
|
when /linux/i
|
143
|
-
spec.platform = Gem::Platform.new('universal
|
145
|
+
spec.platform = Gem::Platform.new(['universal', 'linux'])
|
144
146
|
spec.require_paths = ['lib', 'lib/linux']
|
145
147
|
spec.files += ['lib/linux/sys/proctable.rb']
|
146
148
|
spec.test_files << 'test/test_sys_proctable_linux.rb'
|
147
149
|
when /sunos|solaris/i
|
148
|
-
spec.platform = Gem::Platform.new('universal
|
149
|
-
spec.platform.version = nil
|
150
|
+
spec.platform = Gem::Platform.new(['universal', 'solaris'])
|
150
151
|
spec.require_paths = ['lib', 'lib/sunos']
|
151
152
|
spec.files += ['lib/sunos/sys/proctable.rb']
|
152
153
|
spec.test_files << 'test/test_sys_proctable_sunos.rb'
|
153
154
|
when /mswin|win32|dos|cygwin|mingw|windows/i
|
154
|
-
spec.platform = Gem::Platform
|
155
|
-
spec.platform.cpu = 'universal'
|
156
|
-
spec.platform.version = nil
|
155
|
+
spec.platform = Gem::Platform.new(['universal', 'mingw'])
|
157
156
|
spec.require_paths = ['lib', 'lib/windows']
|
158
157
|
spec.files += ['lib/windows/sys/proctable.rb']
|
159
158
|
spec.test_files << 'test/test_sys_proctable_windows.rb'
|
160
159
|
end
|
161
|
-
|
160
|
+
|
161
|
+
# https://github.com/rubygems/rubygems/issues/147
|
162
162
|
spec.original_platform = spec.platform
|
163
|
+
|
163
164
|
Gem::Builder.new(spec).build
|
164
165
|
end
|
165
166
|
|
data/ext/darwin/sys/proctable.c
CHANGED
@@ -13,7 +13,12 @@
|
|
13
13
|
#include <sys/user.h>
|
14
14
|
#include <errno.h>
|
15
15
|
|
16
|
-
#
|
16
|
+
#include <stdio.h>
|
17
|
+
#include <stdlib.h>
|
18
|
+
#include <string.h>
|
19
|
+
#define pid_of(pproc) pproc->kp_proc.p_pid
|
20
|
+
|
21
|
+
#define SYS_PROCTABLE_VERSION "0.9.2"
|
17
22
|
|
18
23
|
#define PROC_MIB_LEN 4
|
19
24
|
#define ARGS_MIB_LEN 3
|
@@ -28,6 +33,160 @@ const char* fields[] = {
|
|
28
33
|
"nivcsw", "utime", "stime"
|
29
34
|
};
|
30
35
|
|
36
|
+
int argv_of_pid(int pid, char* cmdline) {
|
37
|
+
int mib[3], argmax, nargs, c = 0;
|
38
|
+
size_t size;
|
39
|
+
char *procargs, *sp, *np, *cp;
|
40
|
+
int show_args = 1;
|
41
|
+
|
42
|
+
/* fprintf(stderr, "Getting argv of PID %d\n", pid); */
|
43
|
+
|
44
|
+
mib[0] = CTL_KERN;
|
45
|
+
mib[1] = KERN_ARGMAX;
|
46
|
+
|
47
|
+
size = sizeof(argmax);
|
48
|
+
if (sysctl(mib, 2, &argmax, &size, NULL, 0) == -1) {
|
49
|
+
goto ERROR_A;
|
50
|
+
}
|
51
|
+
|
52
|
+
/* Allocate space for the arguments. */
|
53
|
+
procargs = (char *)malloc(argmax);
|
54
|
+
if (procargs == NULL) {
|
55
|
+
goto ERROR_A;
|
56
|
+
}
|
57
|
+
|
58
|
+
|
59
|
+
/*
|
60
|
+
* Make a sysctl() call to get the raw argument space of the process.
|
61
|
+
* The layout is documented in start.s, which is part of the Csu
|
62
|
+
* project. In summary, it looks like:
|
63
|
+
*
|
64
|
+
* /---------------\ 0x00000000
|
65
|
+
* : :
|
66
|
+
* : :
|
67
|
+
* |---------------|
|
68
|
+
* | argc |
|
69
|
+
* |---------------|
|
70
|
+
* | arg[0] |
|
71
|
+
* |---------------|
|
72
|
+
* : :
|
73
|
+
* : :
|
74
|
+
* |---------------|
|
75
|
+
* | arg[argc - 1] |
|
76
|
+
* |---------------|
|
77
|
+
* | 0 |
|
78
|
+
* |---------------|
|
79
|
+
* | env[0] |
|
80
|
+
* |---------------|
|
81
|
+
* : :
|
82
|
+
* : :
|
83
|
+
* |---------------|
|
84
|
+
* | env[n] |
|
85
|
+
* |---------------|
|
86
|
+
* | 0 |
|
87
|
+
* |---------------| <-- Beginning of data returned by sysctl() is here.
|
88
|
+
* | argc |
|
89
|
+
* |---------------|
|
90
|
+
* | exec_path |
|
91
|
+
* |:::::::::::::::|
|
92
|
+
* | |
|
93
|
+
* | String area. |
|
94
|
+
* | |
|
95
|
+
* |---------------| <-- Top of stack.
|
96
|
+
* : :
|
97
|
+
* : :
|
98
|
+
* \---------------/ 0xffffffff
|
99
|
+
*/
|
100
|
+
mib[0] = CTL_KERN;
|
101
|
+
mib[1] = KERN_PROCARGS2;
|
102
|
+
mib[2] = pid;
|
103
|
+
|
104
|
+
|
105
|
+
size = (size_t)argmax;
|
106
|
+
if (sysctl(mib, 3, procargs, &size, NULL, 0) == -1) {
|
107
|
+
goto ERROR_B;
|
108
|
+
}
|
109
|
+
|
110
|
+
memcpy(&nargs, procargs, sizeof(nargs));
|
111
|
+
cp = procargs + sizeof(nargs);
|
112
|
+
|
113
|
+
/* Skip the saved exec_path. */
|
114
|
+
for (; cp < &procargs[size]; cp++) {
|
115
|
+
if (*cp == '\0') {
|
116
|
+
/* End of exec_path reached. */
|
117
|
+
break;
|
118
|
+
}
|
119
|
+
}
|
120
|
+
if (cp == &procargs[size]) {
|
121
|
+
goto ERROR_B;
|
122
|
+
}
|
123
|
+
|
124
|
+
/* Skip trailing '\0' characters. */
|
125
|
+
for (; cp < &procargs[size]; cp++) {
|
126
|
+
if (*cp != '\0') {
|
127
|
+
/* Beginning of first argument reached. */
|
128
|
+
break;
|
129
|
+
}
|
130
|
+
}
|
131
|
+
if (cp == &procargs[size]) {
|
132
|
+
goto ERROR_B;
|
133
|
+
}
|
134
|
+
/* Save where the argv[0] string starts. */
|
135
|
+
sp = cp;
|
136
|
+
|
137
|
+
/*
|
138
|
+
* Iterate through the '\0'-terminated strings and convert '\0' to ' '
|
139
|
+
* until a string is found that has a '=' character in it (or there are
|
140
|
+
* no more strings in procargs). There is no way to deterministically
|
141
|
+
* know where the command arguments end and the environment strings
|
142
|
+
* start, which is why the '=' character is searched for as a heuristic.
|
143
|
+
*/
|
144
|
+
for (np = NULL; c < nargs && cp < &procargs[size]; cp++) {
|
145
|
+
if (*cp == '\0') {
|
146
|
+
c++;
|
147
|
+
if (np != NULL) {
|
148
|
+
/* Convert previous '\0'. */
|
149
|
+
*np = ' ';
|
150
|
+
} else {
|
151
|
+
/* *argv0len = cp - sp; */
|
152
|
+
}
|
153
|
+
/* Note location of current '\0'. */
|
154
|
+
np = cp;
|
155
|
+
|
156
|
+
if (!show_args) {
|
157
|
+
/*
|
158
|
+
* Don't convert '\0' characters to ' '.
|
159
|
+
* However, we needed to know that the
|
160
|
+
* command name was terminated, which we
|
161
|
+
* now know.
|
162
|
+
*/
|
163
|
+
break;
|
164
|
+
}
|
165
|
+
}
|
166
|
+
}
|
167
|
+
|
168
|
+
/*
|
169
|
+
* sp points to the beginning of the arguments/environment string, and
|
170
|
+
* np should point to the '\0' terminator for the string.
|
171
|
+
*/
|
172
|
+
if (np == NULL || np == sp) {
|
173
|
+
/* Empty or unterminated string. */
|
174
|
+
goto ERROR_B;
|
175
|
+
}
|
176
|
+
|
177
|
+
/* Make a copy of the string. */
|
178
|
+
strcpy(cmdline, sp);
|
179
|
+
|
180
|
+
/* Clean up. */
|
181
|
+
free(procargs);
|
182
|
+
return 0;
|
183
|
+
|
184
|
+
ERROR_B:
|
185
|
+
free(procargs);
|
186
|
+
ERROR_A:
|
187
|
+
return -1;
|
188
|
+
}
|
189
|
+
|
31
190
|
/*
|
32
191
|
* call-seq:
|
33
192
|
* ProcTable.ps(pid=nil)
|
@@ -102,6 +261,10 @@ static VALUE pt_ps(int argc, VALUE* argv, VALUE klass){
|
|
102
261
|
} else {
|
103
262
|
fprintf(stderr, "err: %s LEN: %d\n", strerror(errno), args_size);
|
104
263
|
}*/
|
264
|
+
char cmdline[ARGS_MAX_LEN+1];
|
265
|
+
|
266
|
+
argv_of_pid(procs[i].kp_proc.p_pid, &cmdline);
|
267
|
+
/* free(cmdline); */
|
105
268
|
|
106
269
|
// Get the start time of the process
|
107
270
|
v_start_time = rb_time_new(
|
@@ -156,7 +319,7 @@ static VALUE pt_ps(int argc, VALUE* argv, VALUE klass){
|
|
156
319
|
INT2FIX(procs[i].kp_proc.p_priority),
|
157
320
|
INT2FIX(procs[i].kp_proc.p_usrpri),
|
158
321
|
INT2FIX(procs[i].kp_proc.p_nice),
|
159
|
-
rb_str_new2(
|
322
|
+
rb_str_new2(cmdline),
|
160
323
|
v_start_time,
|
161
324
|
(procs[i].kp_proc.p_ru && procs[i].kp_proc.p_stat != 5) ? LONG2NUM(procs[i].kp_proc.p_ru->ru_maxrss) : Qnil,
|
162
325
|
(procs[i].kp_proc.p_ru && procs[i].kp_proc.p_stat != 5) ? LONG2NUM(procs[i].kp_proc.p_ru->ru_ixrss) : Qnil,
|
@@ -253,3 +416,4 @@ void Init_proctable(){
|
|
253
416
|
"utime","stime", NULL
|
254
417
|
);
|
255
418
|
}
|
419
|
+
|
data/lib/sys/top.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'sys/proctable'
|
2
|
-
require 'rbconfig'
|
3
2
|
|
4
3
|
# The Sys module serves as a namespace only
|
5
4
|
module Sys
|
@@ -19,10 +18,8 @@ module Sys
|
|
19
18
|
def self.top(num=10, field='pctcpu')
|
20
19
|
field = field.to_s if field.is_a?(Symbol)
|
21
20
|
|
22
|
-
windows = /mswin|win32|windows|dos|cygwin|mingw/i
|
23
|
-
|
24
21
|
# Sort by pid on Windows by default
|
25
|
-
if
|
22
|
+
if File::ALT_SEPARATOR && field == 'pctcpu'
|
26
23
|
field = 'pid'
|
27
24
|
end
|
28
25
|
|
data/sys-proctable.gemspec
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require 'rbconfig'
|
3
2
|
|
4
3
|
Gem::Specification.new do |spec|
|
5
4
|
spec.name = 'sys-proctable'
|
6
|
-
spec.version = '0.9.
|
5
|
+
spec.version = '0.9.2'
|
7
6
|
spec.author = 'Daniel J. Berger'
|
8
7
|
spec.license = 'Artistic 2.0'
|
9
8
|
spec.email = 'djberg96@gmail.com'
|
@@ -27,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
27
26
|
spec.rubyforge_project = 'sysutils'
|
28
27
|
spec.extra_rdoc_files = ['CHANGES', 'README', 'MANIFEST', 'doc/top.txt']
|
29
28
|
|
30
|
-
spec.add_development_dependency('test-unit', '>= 2.
|
29
|
+
spec.add_development_dependency('test-unit', '>= 2.4.0')
|
31
30
|
|
32
31
|
spec.description = <<-EOF
|
33
32
|
The sys-proctable library provides an interface for gathering information
|
@@ -9,13 +9,12 @@ gem 'test-unit'
|
|
9
9
|
|
10
10
|
require 'test/unit'
|
11
11
|
require 'sys/proctable'
|
12
|
-
require 'rbconfig'
|
13
12
|
require 'test/test_sys_top'
|
14
13
|
include Sys
|
15
14
|
|
16
15
|
class TC_ProcTable_All < Test::Unit::TestCase
|
17
16
|
def self.startup
|
18
|
-
@@windows =
|
17
|
+
@@windows = File::ALT_SEPARATOR
|
19
18
|
end
|
20
19
|
|
21
20
|
def setup
|
@@ -23,7 +22,7 @@ class TC_ProcTable_All < Test::Unit::TestCase
|
|
23
22
|
end
|
24
23
|
|
25
24
|
def test_version
|
26
|
-
assert_equal('0.9.
|
25
|
+
assert_equal('0.9.2', ProcTable::VERSION)
|
27
26
|
end
|
28
27
|
|
29
28
|
def test_fields
|
metadata
CHANGED
@@ -1,50 +1,47 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: sys-proctable
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 9
|
8
|
-
- 1
|
9
|
-
version: 0.9.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.2
|
5
|
+
prerelease:
|
10
6
|
platform: universal-darwin
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Daniel J. Berger
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-10-08 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: test-unit
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
- 2
|
30
|
-
- 1
|
31
|
-
- 2
|
32
|
-
version: 2.1.2
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 2.4.0
|
33
22
|
type: :development
|
34
|
-
|
35
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 2.4.0
|
30
|
+
description: ! " The sys-proctable library provides an interface for gathering
|
31
|
+
information\n about processes on your system, i.e. the process table. Most major\n
|
32
|
+
\ platforms are supported and, while different platforms may return\n different
|
33
|
+
information, the external interface is identical across\n platforms.\n"
|
36
34
|
email: djberg96@gmail.com
|
37
35
|
executables: []
|
38
|
-
|
39
|
-
extensions:
|
36
|
+
extensions:
|
40
37
|
- ext/darwin/extconf.rb
|
41
|
-
extra_rdoc_files:
|
38
|
+
extra_rdoc_files:
|
42
39
|
- CHANGES
|
43
40
|
- README
|
44
41
|
- MANIFEST
|
45
42
|
- doc/top.txt
|
46
43
|
- ext/darwin/sys/proctable.c
|
47
|
-
files:
|
44
|
+
files:
|
48
45
|
- benchmarks/bench_ps.rb
|
49
46
|
- examples/example_ps.rb
|
50
47
|
- lib/sys/top.rb
|
@@ -58,38 +55,31 @@ files:
|
|
58
55
|
- ext/darwin/sys/proctable.c
|
59
56
|
- test/test_sys_proctable_darwin.rb
|
60
57
|
- ext/darwin/extconf.rb
|
61
|
-
has_rdoc: true
|
62
58
|
homepage: http://www.rubyforge.org/projects/sysutils
|
63
|
-
licenses:
|
59
|
+
licenses:
|
64
60
|
- Artistic 2.0
|
65
61
|
post_install_message:
|
66
62
|
rdoc_options: []
|
67
|
-
|
68
|
-
require_paths:
|
63
|
+
require_paths:
|
69
64
|
- lib
|
70
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
66
|
none: false
|
72
|
-
requirements:
|
73
|
-
- -
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
|
76
|
-
|
77
|
-
version: "0"
|
78
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
72
|
none: false
|
80
|
-
requirements:
|
81
|
-
- -
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
|
84
|
-
- 0
|
85
|
-
version: "0"
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
86
77
|
requirements: []
|
87
|
-
|
88
78
|
rubyforge_project: sysutils
|
89
|
-
rubygems_version: 1.
|
79
|
+
rubygems_version: 1.8.24
|
90
80
|
signing_key:
|
91
81
|
specification_version: 3
|
92
82
|
summary: An interface for providing process table information
|
93
|
-
test_files:
|
83
|
+
test_files:
|
94
84
|
- test/test_sys_proctable_all.rb
|
95
85
|
- test/test_sys_proctable_darwin.rb
|