sysinfo_format_uptime (gint64 uptime)
{
char buffer[128];
- int weeks;
- int days;
- int hours;
- int minutes;
- int seconds;
- seconds = uptime%60;
- minutes = (uptime/60)%60;
- hours = (uptime/3600)%24;
- days = (uptime/86400)%7;
- weeks = uptime/604800;
+ gint64 weeks = uptime / 604800;
+ int days = (uptime / 86400) % 7;
+ int hours = (uptime / 3600) % 24;
+ int minutes = (uptime / 60) % 60;
+ int seconds = uptime % 60;
- if (minutes != 0 || hours != 0 || days != 0 || weeks != 0)
+ if (weeks != 0)
{
- if (hours != 0 || days != 0 || weeks != 0)
- {
- if (days !=0 || weeks != 0)
- {
- if (weeks != 0)
- g_snprintf (buffer, sizeof(buffer), "%dw %dd %dh %dm %ds", weeks, days, hours, minutes, seconds);
- else
- g_snprintf (buffer, sizeof(buffer), "%dd %dh %dm %ds", days, hours, minutes, seconds);
- }
- else
- {
- g_snprintf (buffer, sizeof(buffer), "%dh %dm %ds", hours, minutes, seconds);
- }
- }
- else
- {
- g_snprintf (buffer, sizeof(buffer), "%dm %ds", minutes, seconds);
- }
+ g_snprintf (buffer, sizeof(buffer), "%" G_GINT64_FORMAT "w %dd %dh %dm %ds", weeks, days, hours, minutes, seconds);
}
+ else if (days != 0)
+ {
+ g_snprintf (buffer, sizeof(buffer), "%dd %dh %dm %ds", days, hours, minutes, seconds);
+ }
+ else if (hours != 0)
+ {
+ g_snprintf (buffer, sizeof(buffer), "%dh %dm %ds", hours, minutes, seconds);
+ }
+ else if (minutes != 0)
+ {
+ g_snprintf (buffer, sizeof(buffer), "%dm %ds", minutes, seconds);
+ }
+ else
+ {
+ g_snprintf (buffer, sizeof(buffer), "%ds", seconds);
+ }
+
return g_strdup (buffer);
}