12#if defined __FreeBSD__
14#include <sys/sysctl.h>
17#if defined(Q_OS_NETBSD)
20#include <sys/sysctl.h>
23#include "uptimesensor.h"
25UptimeSensor::UptimeSensor(
int interval ) : Sensor( interval )
27UptimeSensor::~UptimeSensor()
30void UptimeSensor::update()
32#if defined __FreeBSD__ || defined(Q_OS_NETBSD)
33 struct timeval boottime;
38 int days, hours, i, mins, secs;
53 mib[1] = KERN_BOOTTIME;
54 size =
sizeof(boottime);
55 if (sysctl(mib, 2, &boottime, &size, NULL, 0) != -1 &&
56 boottime.tv_sec != 0) {
57 uptime = now - boottime.tv_sec;
60 days = uptime / 86400;
62 hours = uptime / 3600;
68 TQFile file(
"/proc/uptime");
70 if ( file.open(IO_ReadOnly | IO_Translate) )
73 TQTextStream t( &file );
77 TQRegExp rx(
"^\\d+" );
79 int uptime = rx.cap(0).toInt();
80 int days = uptime / 86400;
81 uptime -= days * 86400;
82 int hours = uptime / 3600;
83 uptime -= hours * 3600;
84 int mins = uptime / 60;
93 TQObjectListIt it( *objList );
97 meter = sp->getMeter();
98 format = sp->getParam(
"FORMAT");
100 if (format.length() == 0 )
102 format =
"%dd %h:%M";
104 format.replace( TQRegExp(
"%d"), TQString::number(days));
105 format.replace( TQRegExp(
"%H"), TQString::number(hours).rightJustify(2,
'0'));
106 format.replace( TQRegExp(
"%M"), TQString::number(mins).rightJustify(2,
'0'));
107 format.replace( TQRegExp(
"%S"), TQString::number(secs).rightJustify(2,
'0'));
108 format.replace( TQRegExp(
"%h"), TQString::number(hours));
109 format.replace( TQRegExp(
"%m"), TQString::number(mins));
110 format.replace( TQRegExp(
"%s"), TQString::number(secs));
112 meter->setValue(format);
116#if !defined __FreeBSD__ && !defined(Q_OS_NETBSD)