sys-uptime 0.4.5-i586-linux → 0.5.0-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 CHANGED
@@ -1,3 +1,13 @@
1
+ == 0.5.0 - 30-Mar-2007
2
+ * For platforms that use C code, the code now always uses the sysctl()
3
+ function if supported by your system. This replaces the platform specific
4
+ checks I was doing for the various BSD flavors.
5
+ * Fix for OS X - the Uptime.boot_time method now works.
6
+ * UptimeError is now Uptime::Error.
7
+ * Improved RDoc in the uptime.c source code.
8
+ * Added a Rakefile - users should now use the 'test' and 'install' rake tasks.
9
+ * Updates to the MANIFEST, README and uptime.txt files.
10
+
1
11
  == 0.4.5 - 19-Nov-2006
2
12
  * Internal layout changes, minor doc updates and gemspec improvements.
3
13
  * No code changes.
data/MANIFEST CHANGED
@@ -1,17 +1,13 @@
1
- CHANGES
2
- MANIFEST
3
- README
4
- install.rb
5
- sys-uptime.gemspec
6
-
7
- doc/uptime.txt
8
-
9
- examples/test.rb
10
-
11
- ext/extconf.rb
12
- ext/uptime.c
13
-
14
- lib/sys/linux.rb
15
- lib/sys/windows.rb
16
-
17
- test/tc_uptime.rb
1
+ * CHANGES
2
+ * MANIFEST
3
+ * Rakefile
4
+ * README
5
+ * install.rb
6
+ * sys-uptime.gemspec
7
+ * doc/uptime.txt
8
+ * examples/test.rb
9
+ * ext/extconf.rb
10
+ * ext/uptime.c
11
+ * lib/sys/linux.rb
12
+ * lib/sys/windows.rb
13
+ * test/tc_uptime.rb
data/README CHANGED
@@ -4,17 +4,15 @@
4
4
  = Prerequisites
5
5
  Ruby 1.8.0 or later.
6
6
  Ruby 1.8.2 or later is recommended on MS Windows.
7
+ A C compiler, except for MS Windows.
7
8
 
8
9
  = Installation
9
- === Unix:
10
- ruby extconf.rb
11
- make
12
- ruby test/tc_uptime.rb (optional)
13
- make install
14
-
15
- === Windows and Linux:
16
- ruby test\tc_uptime.rb (optional)
17
- ruby install.rb
10
+ === Manual
11
+ rake test (optional)
12
+ rake install
13
+ === Gems
14
+ ruby sys-uptime.gemspec
15
+ gem install sys-uptime-X.Y.Z.gem # Where 'X.Y.Z' are version numbers
18
16
 
19
17
  == Notes
20
- For additional documentation see doc/uptime.txt.
18
+ For additional documentation see doc/uptime.txt.
data/doc/uptime.txt CHANGED
@@ -43,10 +43,12 @@ Uptime.uptime
43
43
  seconds the system has been running as a colon-separated string.
44
44
 
45
45
  == Exceptions
46
- UptimeError
47
- Raised if something goes wrong. On Unix, this would likely mean a
48
- failure of the times() function. On Windows, it probably means you
49
- failed to connect to WMI properly.
46
+ Uptime::Error
47
+ Raised if something goes wrong. On Unix, this would likely mean a
48
+ failure of the times() function. That would be highly unusual.
49
+
50
+ On Windows, it probably means you failed to connect to WMI properly. The
51
+ mostly likely reason would be that the WMI service wasn't running.
50
52
 
51
53
  == Notes
52
54
  On MS Windows each of the class methods optionally takes a host name as
@@ -73,7 +75,7 @@ UptimeError
73
75
  Ruby's
74
76
 
75
77
  == Copyright
76
- Copyright 2002-2006, Daniel J. Berger
78
+ Copyright 2002-2007, Daniel J. Berger
77
79
 
78
80
  All Rights Reserved. This module is free software. It may be used,
79
81
  redistributed and/or modified under the same terms as Ruby itself.
@@ -90,7 +92,7 @@ UptimeError
90
92
 
91
93
  == Author
92
94
  Daniel J. Berger
93
- djberg96 at gmail dot com
95
+ djberg96 at nospam at gmail dot com
94
96
  imperator on IRC (Freenode)
95
97
 
96
98
  == See Also
data/lib/sys/uptime.rb CHANGED
@@ -1,14 +1,20 @@
1
1
  # On Linux, parse /proc/uptime
2
2
  module Sys
3
3
  class Uptime
4
- VERSION = '0.4.5'
4
+ class Error < StandardError; end
5
+
6
+ VERSION = '0.5.0'
5
7
 
6
8
  @@file = '/proc/uptime'
7
9
 
8
10
  # Returns the uptime in seconds
9
11
  #
10
12
  def self.seconds
11
- IO.readlines(@@file).to_s.split.first.to_i
13
+ begin
14
+ IO.readlines(@@file).to_s.split.first.to_i
15
+ rescue Exception => err
16
+ raise Error, err
17
+ end
12
18
  end
13
19
 
14
20
  # Returns the uptime in minutes
data/test/tc_uptime.rb CHANGED
@@ -1,35 +1,16 @@
1
- #################################
1
+ #####################################################################
2
2
  # tc_uptime.rb
3
3
  #
4
- # Test suite for sys-uptime.
5
- #################################
6
- base = File.basename(Dir.pwd)
7
- if base == 'test' || base =~ /sys-uptime.*/
8
- require 'fileutils'
9
- Dir.chdir('..') if base == 'test'
10
- Dir.mkdir('sys') unless File.exists?('sys')
11
-
12
- if RUBY_PLATFORM.match('mswin')
13
- FileUtils.cp('lib/sys/windows.rb', 'sys/uptime.rb') rescue nil
14
- elsif RUBY_PLATFORM.match('linux')
15
- FileUtils.cp('lib/sys/linux.rb', 'sys/uptime.rb') rescue nil
16
- else
17
- require 'rbconfig'
18
- file = 'ext/uptime.' + Config::CONFIG['DLEXT']
19
- FileUtils.cp(file, 'sys')
20
- end
21
-
22
- $LOAD_PATH.unshift(Dir.pwd)
23
- $LOAD_PATH.unshift(Dir.pwd + '/lib')
24
- end
25
-
4
+ # Test suite for sys-uptime. This should generally be run via the
5
+ # 'rake test' task, since it handles the pre-setup code for you.
6
+ #####################################################################
26
7
  require 'sys/uptime'
27
8
  require 'test/unit'
28
9
  include Sys
29
10
 
30
11
  class TC_Uptime < Test::Unit::TestCase
31
12
  def test_version
32
- assert_equal('0.4.5', Uptime::VERSION)
13
+ assert_equal('0.5.0', Uptime::VERSION)
33
14
  end
34
15
 
35
16
  def test_seconds
@@ -77,4 +58,8 @@ class TC_Uptime < Test::Unit::TestCase
77
58
  assert_nothing_raised{ Uptime.boot_time }
78
59
  assert_kind_of(Time, Uptime.boot_time)
79
60
  end
61
+
62
+ def test_uptime_error
63
+ assert_kind_of(StandardError, Uptime::Error.new)
64
+ end
80
65
  end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: sys-uptime
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.4.5
7
- date: 2006-11-20 00:00:00 -06:00
6
+ version: 0.5.0
7
+ date: 2007-03-30 00:00:00 -05:00
8
8
  summary: A Ruby interface for getting system uptime information.
9
9
  require_paths:
10
10
  - lib
@@ -34,7 +34,6 @@ files:
34
34
  - CHANGES
35
35
  - README
36
36
  - MANIFEST
37
- - ext/uptime.c
38
37
  - lib/sys/uptime.rb
39
38
  test_files:
40
39
  - test/tc_uptime.rb
@@ -45,7 +44,6 @@ extra_rdoc_files:
45
44
  - README
46
45
  - MANIFEST
47
46
  - doc/uptime.txt
48
- - ext/uptime.c
49
47
  executables: []
50
48
 
51
49
  extensions: []
data/ext/uptime.c DELETED
@@ -1,231 +0,0 @@
1
- /******************************************************************************
2
- * uptime.c
3
- *
4
- * Authors:
5
- * Daniel Berger
6
- * Mike Hall
7
- *
8
- * sys-uptime source code for most *nix platforms
9
- *****************************************************************************/
10
- #include <ruby.h>
11
-
12
- #if defined (__FreeBSD__) || defined (__NetBSD__)
13
- #include <sys/time.h>
14
-
15
- #if defined (__NetBSD__)
16
- #include <sys/param.h>
17
- #endif
18
-
19
- #if (__FreeBSD >= 5)
20
- #include <sys/types.h>
21
- #endif
22
-
23
- #include <sys/sysctl.h>
24
-
25
- #else
26
- #include <sys/times.h>
27
- #include <unistd.h>
28
- #include <time.h>
29
-
30
- #ifdef HAVE_UTMPX_H
31
- #include <utmpx.h>
32
- #endif
33
-
34
- #ifdef HAVE_SYS_LOADAVG_H
35
- #include <sys/loadavg.h>
36
- #endif
37
-
38
- #ifdef _SC_CLK_TCK
39
- #define TICKS sysconf(_SC_CLK_TCK)
40
- #else
41
- #define TICKS sysconf(CLOCKS_PER_SEC)
42
- #endif
43
-
44
- #endif
45
-
46
- #define MAXSTRINGSIZE 32 /* reasonable limit */
47
-
48
- #define SYS_UPTIME_VERSION "0.4.5"
49
-
50
- VALUE cUptimeError;
51
-
52
- unsigned long get_uptime_secs()
53
- {
54
- #if defined (__FreeBSD__) || defined (__NetBSD__)
55
- struct timeval tv;
56
- size_t tvlen = sizeof(tv);
57
- int mib[2];
58
-
59
- mib[0] = CTL_KERN;
60
- mib[1] = KERN_BOOTTIME;
61
- if(sysctl(mib, 2, &tv, &tvlen, NULL, 0)){
62
- rb_raise(cUptimeError, "sysctl() call failed");
63
- }
64
- return time(NULL) - tv.tv_sec;
65
- #else
66
- struct tms tms;
67
- unsigned long seconds;
68
- seconds = times(&tms) / TICKS;
69
-
70
- if(-1 == seconds)
71
- rb_raise(cUptimeError,"times() function failed");
72
-
73
- if(seconds < 0)
74
- rb_raise(cUptimeError,"value returned larger than type could handle");
75
-
76
- return seconds;
77
- #endif
78
- }
79
-
80
- /*
81
- * call-seq:
82
- * Uptime.seconds
83
- *
84
- * Returns the total number of seconds the system has been up.
85
- */
86
- static VALUE uptime_seconds()
87
- {
88
- return UINT2NUM(get_uptime_secs());
89
- }
90
-
91
- /*
92
- * call-seq:
93
- * Uptime.minutes
94
- *
95
- * Returns the total number of minutes the system has been up.
96
- */
97
- static VALUE uptime_minutes()
98
- {
99
- return UINT2NUM(get_uptime_secs() / 60);
100
- }
101
-
102
- /*
103
- * call-seq:
104
- * Uptime.hours
105
- *
106
- * Returns the total number of hours the system has been up.
107
- */
108
- static VALUE uptime_hours()
109
- {
110
- return UINT2NUM(get_uptime_secs() / 3600);
111
- }
112
-
113
- /*
114
- * call-seq:
115
- * Uptime.days
116
- *
117
- * Returns the total number of days the system has been up.
118
- */
119
- static VALUE uptime_days()
120
- {
121
- return UINT2NUM(get_uptime_secs() / 86400);
122
- }
123
-
124
- /*
125
- * call-seq:
126
- * Uptime.uptime
127
- *
128
- * Calculates and returns the number of days, hours, minutes and
129
- * seconds the system has been running as a colon-separated string.
130
- */
131
- static VALUE uptime_uptime()
132
- {
133
- char c_string[MAXSTRINGSIZE];
134
- long seconds, days, hours, minutes;
135
-
136
- seconds = get_uptime_secs();
137
- days = seconds/86400;
138
- seconds -= days*86400;
139
- hours = seconds/3600;
140
- seconds -= hours*3600;
141
- minutes = seconds/60;
142
- seconds -= minutes*60;
143
-
144
- sprintf(c_string, "%ld:%ld:%ld:%ld", days, hours, minutes, seconds);
145
- return rb_str_new2(c_string);
146
- }
147
-
148
- /*
149
- * call-seq:
150
- * Uptime.dhms
151
- *
152
- * Calculates and returns the number of days, hours, minutes and
153
- * seconds the system has been running as a four-element Array.
154
- */
155
- static VALUE uptime_dhms()
156
- {
157
- VALUE a = rb_ary_new2(4);
158
- long s, m, h, d;
159
-
160
- s = get_uptime_secs();
161
- d = s / (24*60*60);
162
- h = (s -= d*24*60*60) / ( 60*60);
163
- m = (s -= h* 60*60) / 60;
164
- s -= m* 60;
165
-
166
- rb_ary_push(a, INT2FIX(d));
167
- rb_ary_push(a, INT2FIX(h));
168
- rb_ary_push(a, INT2FIX(m));
169
- rb_ary_push(a, INT2FIX(s));
170
- return a;
171
- }
172
-
173
- /*
174
- * call-seq:
175
- * Uptime.boot_time
176
- *
177
- * Returns the boot time as a Time object.
178
- */
179
- static VALUE uptime_btime(){
180
- #if defined (__FreeBSD__) || defined (__NetBSD__)
181
- struct timeval tv;
182
- size_t tvlen = sizeof(tv);
183
- int mib[2];
184
-
185
- mib[0] = CTL_KERN;
186
- mib[1] = KERN_BOOTTIME;
187
- if(sysctl(mib, 2, &tv, &tvlen, NULL, 0)){
188
- rb_raise(cUptimeError,"sysctl() call failed");
189
- }
190
- return rb_time_new(tv.tv_sec,tv.tv_usec);
191
- #else
192
- #ifdef HAVE_UTMPX_H
193
- struct utmpx* ent;
194
-
195
- setutxent();
196
-
197
- while( (ent = getutxent()) ){
198
- if(ent->ut_type == BOOT_TIME){
199
- return rb_time_new(ent->ut_tv.tv_sec,ent->ut_tv.tv_usec);
200
- }
201
- }
202
-
203
- endutxent();
204
- #else
205
- rb_raise(cUptimeError,"boot_time() not implemented on this platform");
206
- #endif
207
- #endif
208
- return Qnil;
209
- }
210
-
211
- void Init_uptime()
212
- {
213
- VALUE mSys, cUptime;
214
-
215
- /* Modules and Classes */
216
- mSys = rb_define_module("Sys");
217
- cUptime = rb_define_class_under(mSys, "Uptime", rb_cObject);
218
- cUptimeError = rb_define_class_under(mSys, "UptimeError", rb_eStandardError);
219
-
220
- /* Constants */
221
- rb_define_const(cUptime, "VERSION", rb_str_new2(SYS_UPTIME_VERSION));
222
-
223
- /* Class Methods */
224
- rb_define_singleton_method(cUptime, "seconds", uptime_seconds, 0);
225
- rb_define_singleton_method(cUptime, "minutes", uptime_minutes, 0);
226
- rb_define_singleton_method(cUptime, "hours", uptime_hours, 0);
227
- rb_define_singleton_method(cUptime, "days", uptime_days, 0);
228
- rb_define_singleton_method(cUptime, "uptime", uptime_uptime, 0);
229
- rb_define_singleton_method(cUptime, "dhms", uptime_dhms, 0);
230
- rb_define_singleton_method(cUptime, "boot_time", uptime_btime, 0);
231
- }