Gentoo Archives: gentoo-commits

From: William Hubbs <williamh@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/openrc:0.26.x commit in: src/rc/
Date: Tue, 30 May 2017 17:49:41
Message-Id: 1494893098.1967cd402caf6e229263f15aef40c6c4d8f60ce3.williamh@OpenRC
1 commit: 1967cd402caf6e229263f15aef40c6c4d8f60ce3
2 Author: William Hubbs <w.d.hubbs <AT> gmail <DOT> com>
3 AuthorDate: Mon May 15 23:55:35 2017 +0000
4 Commit: William Hubbs <williamh <AT> gentoo <DOT> org>
5 CommitDate: Tue May 16 00:04:58 2017 +0000
6 URL: https://gitweb.gentoo.org/proj/openrc.git/commit/?id=1967cd40
7
8 rc_status: calculate time differences in time_t and display seconds in uptime
9
10 src/rc/rc-status.c | 45 ++++++++++++++++++++++++---------------------
11 1 file changed, 24 insertions(+), 21 deletions(-)
12
13 diff --git a/src/rc/rc-status.c b/src/rc/rc-status.c
14 index a314bb1d..9a094d47 100644
15 --- a/src/rc/rc-status.c
16 +++ b/src/rc/rc-status.c
17 @@ -83,11 +83,11 @@ static void get_uptime(const char *service, char *uptime, int uptime_size)
18 time_t now;
19 char *start_time_string;
20 time_t start_time;
21 - double time_diff;
22 - double diff_tmp;
23 - double diff_days;
24 - double diff_hours;
25 - double diff_mins;
26 + time_t time_diff;
27 + time_t diff_days = (time_t) 0;
28 + time_t diff_hours = (time_t) 0;
29 + time_t diff_mins = (time_t) 0;
30 + time_t diff_secs = (time_t) 0;
31
32 uptime[0] = '\0';
33 if (state & RC_SERVICE_STARTED) {
34 @@ -96,26 +96,29 @@ static void get_uptime(const char *service, char *uptime, int uptime_size)
35 if (start_count && start_time_string) {
36 start_time = to_time_t(start_time_string);
37 now = time(NULL);
38 - time_diff = difftime(now, start_time);
39 - diff_tmp = time_diff;
40 - if (diff_tmp > 86400.0) {
41 - diff_days = diff_tmp / 86400.0;
42 - diff_tmp -= diff_days * 86400.0;
43 + time_diff = (time_t) difftime(now, start_time);
44 + diff_secs = time_diff;
45 + if (diff_secs > (time_t) 86400) {
46 + diff_days = diff_secs / (time_t) 86400;
47 + diff_secs %= diff_days * (time_t) 86400;
48 }
49 - if (diff_tmp > 3600.0) {
50 - diff_hours = diff_tmp / 3600.0;
51 - diff_tmp -= diff_hours * 3600.0;
52 + if (diff_secs > (time_t) 3600) {
53 + diff_hours = diff_secs / (time_t) 3600;
54 + diff_secs %= diff_hours * (time_t) 3600;
55 }
56 - if (diff_tmp > 60.0) {
57 - diff_mins = diff_tmp / 60.0;
58 - diff_tmp -= diff_mins * 60.0;
59 + if (diff_secs > (time_t) 60) {
60 + diff_mins = diff_secs / (time_t) 60;
61 + diff_secs %= diff_mins * (time_t) 60;
62 }
63 - if ((int) diff_days > 0)
64 - snprintf(uptime, uptime_size, "%.0f days %02.0f:%02.0f (%s)",
65 - diff_days, diff_hours, diff_mins, start_count);
66 + if (diff_days > 0)
67 + snprintf(uptime, uptime_size,
68 + "%ld day(s) %02ld:%02ld:%02ld (%s)",
69 + diff_days, diff_hours, diff_mins, diff_secs,
70 + start_count);
71 else
72 - snprintf(uptime, uptime_size, "%02.0f:%02.0f (%s)",
73 - diff_hours, diff_mins, start_count);
74 + snprintf(uptime, uptime_size,
75 + "%02ld:%02ld:%02ld (%s)",
76 + diff_hours, diff_mins, diff_secs, start_count);
77 }
78 }
79 }