/* modified w.c to only display uptime */ #include #include #define SECSPERHOUR (60 * 60) #define SECSPERDAY (24 * 60 * 60) int main(void) { struct timespec boottime; time_t uptime, now; int days, hrs, mins; time(&now); /* * Print how long system has been up. */ if (clock_gettime(CLOCK_BOOTTIME, &boottime) != -1) { uptime = boottime.tv_sec; if (uptime > 59) { uptime += 30; days = uptime / SECSPERDAY; uptime %= SECSPERDAY; hrs = uptime / SECSPERHOUR; uptime %= SECSPERHOUR; mins = uptime / 60; if (days > 0) printf("%d day%s", days, days > 1 ? "s" : ""); if (hrs > 0 && mins > 0) printf("%2d:%02d", hrs, mins); else { if (hrs > 0) printf("%d h", hrs); if (mins > 0 || (days == 0 && hrs == 0)) printf("%d min", mins); } } else printf("%d s", (int)uptime); } return 0; }