aboutsummaryrefslogtreecommitdiffstats
path: root/UptimeMeter.c
diff options
context:
space:
mode:
authorDaniel Lange <DLange@git.local>2016-04-11 13:00:20 +0200
committerDaniel Lange <DLange@git.local>2016-04-11 13:00:20 +0200
commitea859f50d9438bc61ae96721a4d255b49de78653 (patch)
treebfb52a5f403ad1e86c562b2f4d608d1268fe8fcf /UptimeMeter.c
parent266ab52b3a741a58fb17c48b0f7939d7c5d266de (diff)
downloaddebian_htop-ea859f50d9438bc61ae96721a4d255b49de78653.tar.gz
debian_htop-ea859f50d9438bc61ae96721a4d255b49de78653.tar.bz2
debian_htop-ea859f50d9438bc61ae96721a4d255b49de78653.zip
Imported Upstream version 0.6.2upstream/0.6.2
Diffstat (limited to 'UptimeMeter.c')
-rw-r--r--UptimeMeter.c85
1 files changed, 33 insertions, 52 deletions
diff --git a/UptimeMeter.c b/UptimeMeter.c
index ced1e1a..4b21245 100644
--- a/UptimeMeter.c
+++ b/UptimeMeter.c
@@ -1,6 +1,6 @@
/*
htop
-(C) 2004 Hisham H. Muhammad
+(C) 2004-2006 Hisham H. Muhammad
Released under the GNU GPL, see the COPYING file
in the source distribution for its full text.
*/
@@ -14,64 +14,45 @@ in the source distribution for its full text.
#include "debug.h"
-/*{
-
-typedef struct UptimeMeter_ UptimeMeter;
-
-struct UptimeMeter_ {
- Meter super;
- ProcessList* pl;
- int seconds;
- int minutes;
- int hours;
- int days;
+/* private property */
+static int UptimeMeter_attributes[] = { UPTIME };
+
+/* private */
+MeterType UptimeMeter = {
+ .setValues = UptimeMeter_setValues,
+ .display = NULL,
+ .mode = TEXT_METERMODE,
+ .items = 1,
+ .total = 100.0,
+ .attributes = UptimeMeter_attributes,
+ .name = "Uptime",
+ .uiName = "Uptime",
+ .caption = "Uptime: "
};
-}*/
-
-UptimeMeter* UptimeMeter_new() {
- UptimeMeter* this = malloc(sizeof(UptimeMeter));
- Meter_init((Meter*)this, String_copy("Uptime"), String_copy("Uptime: "), 1);
- ((Meter*)this)->attributes[0] = UPTIME;
- ((Object*)this)->display = UptimeMeter_display;
- ((Meter*)this)->setValues = UptimeMeter_setValues;
- Meter_setMode((Meter*)this, TEXT);
- ((Meter*)this)->total = 100.0;
- return this;
-}
-
-void UptimeMeter_setValues(Meter* cast) {
- UptimeMeter* this = (UptimeMeter*)cast;
+void UptimeMeter_setValues(Meter* this, char* buffer, int len) {
double uptime;
FILE* fd = fopen(PROCDIR "/uptime", "r");
fscanf(fd, "%lf", &uptime);
fclose(fd);
int totalseconds = (int) ceil(uptime);
- this->seconds = totalseconds % 60;
- this->minutes = (totalseconds-this->seconds) % 3600 / 60;
- this->hours = (totalseconds-this->seconds-(this->minutes*60)) % 86400 / 3600;
- this->days = (totalseconds-this->seconds-(this->minutes*60)-(this->hours*3600)) / 86400;
- cast->values[0] = this->days;
- if (this->days > cast->total) {
- cast->total = this->days;
+ int seconds = totalseconds % 60;
+ int minutes = (totalseconds-seconds) % 3600 / 60;
+ int hours = (totalseconds-seconds-(minutes*60)) % 86400 / 3600;
+ int days = (totalseconds-seconds-(minutes*60)-(hours*3600)) / 86400;
+ this->values[0] = days;
+ if (days > this->total) {
+ this->total = days;
}
- snprintf(cast->displayBuffer.c, 14, "%d", this->days);
-}
-
-void UptimeMeter_display(Object* cast, RichString* out) {
- UptimeMeter* this = (UptimeMeter*)cast;
- char buffer[20];
- RichString_prune(out);
- if (this->days > 100) {
- sprintf(buffer, "%d days, ", this->days);
- RichString_write(out, CRT_colors[LARGE_NUMBER], buffer);
- } else if (this->days > 1) {
- sprintf(buffer, "%d days, ", this->days);
- RichString_write(out, CRT_colors[UPTIME], buffer);
- } else if (this->days == 1) {
- sprintf(buffer, "%d day, ", this->days);
- RichString_write(out, CRT_colors[UPTIME], buffer);
+ char daysbuf[10];
+ if (days > 100) {
+ sprintf(daysbuf, "%d days(!), ", days);
+ } else if (days > 1) {
+ sprintf(daysbuf, "%d days, ", days);
+ } else if (days == 1) {
+ sprintf(daysbuf, "1 day, ");
+ } else {
+ daysbuf[0] = '\0';
}
- sprintf(buffer, "%02d:%02d:%02d ", this->hours, this->minutes, this->seconds);
- RichString_append(out, CRT_colors[UPTIME], buffer);
+ snprintf(buffer, len, "%s%02d:%02d:%02d", daysbuf, hours, minutes, seconds);
}

© 2014-2024 Faster IT GmbH | imprint | privacy policy