123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /*
- htop - UptimeMeter.c
- (C) 2004-2011 Hisham H. Muhammad
- Released under the GNU GPLv2+, see the COPYING file
- in the source distribution for its full text.
- */
- #include "config.h" // IWYU pragma: keep
- #include "UptimeMeter.h"
- #include "CRT.h"
- #include "Object.h"
- #include "Platform.h"
- #include "XUtils.h"
- static const int UptimeMeter_attributes[] = {
- UPTIME
- };
- static void UptimeMeter_updateValues(Meter* this) {
- int totalseconds = Platform_getUptime();
- if (totalseconds <= 0) {
- xSnprintf(this->txtBuffer, sizeof(this->txtBuffer), "(unknown)");
- return;
- }
- int seconds = totalseconds % 60;
- int minutes = (totalseconds / 60) % 60;
- int hours = (totalseconds / 3600) % 24;
- int days = (totalseconds / 86400);
- char daysbuf[32];
- if (days > 100) {
- xSnprintf(daysbuf, sizeof(daysbuf), "%d days(!), ", days);
- } else if (days > 1) {
- xSnprintf(daysbuf, sizeof(daysbuf), "%d days, ", days);
- } else if (days == 1) {
- xSnprintf(daysbuf, sizeof(daysbuf), "1 day, ");
- } else {
- daysbuf[0] = '\0';
- }
- xSnprintf(this->txtBuffer, sizeof(this->txtBuffer), "%s%02d:%02d:%02d", daysbuf, hours, minutes, seconds);
- }
- const MeterClass UptimeMeter_class = {
- .super = {
- .extends = Class(Meter),
- .delete = Meter_delete
- },
- .updateValues = UptimeMeter_updateValues,
- .defaultMode = TEXT_METERMODE,
- .supportedModes = (1 << TEXT_METERMODE) | (1 << LED_METERMODE),
- .maxItems = 0,
- .total = 0.0,
- .attributes = UptimeMeter_attributes,
- .name = "Uptime",
- .uiName = "Uptime",
- .caption = "Uptime: "
- };
|