#include #include #include #include #include #include "config.h" #if defined(CLOCK_BOOTTIME) #define CLOCK CLOCK_BOOTTIME #elif defined(CLOCK_UPTIME) #define CLOCK CLOCK_UPTIME #elif defined(__APPLE__) #define CLOCK CLOCK_MONOTONIC #endif int main(void) { /* Now date */ time_t current_secs; time(¤t_secs); struct tm *current_time = localtime(¤t_secs); printf("%02d:%02d:%02d ", current_time->tm_hour, current_time->tm_min, current_time->tm_sec); /* How long system has beep up */ struct timespec uptime; if (clock_gettime(CLOCK, &uptime) != -1) { int days = uptime.tv_sec / 86400; int hours = uptime.tv_sec / 3600; int mins = (uptime.tv_sec / 60) - (uptime.tv_sec / 3600 * 60); printf("up:"); if (days > 0) printf(" %d days", days); else if (hours > 0) printf(" %d hours", hours); printf(" %d mins", mins); } #ifdef UPTIME_LOADAVG /* Print 1, 5 and 15 minute load averages */ double avg[3] = {0, 0, 0}; if (getloadavg(avg, sizeof(avg) / sizeof(avg[0])) < 0) { fprintf(stderr, "uptime: %s\n", strerror(errno)); return 1; } printf(" load average: %.2f %.2f %.2f", avg[0], avg[1], avg[2]); #endif putchar('\n'); return 0; }