- static char tbuf[10];
- int h, m, n = 0;
- h = s / 3600;
- m = (s / 60) % 60;
- s = s % 60;
- if ( h )
- n = snprintf(tbuf, sizeof tbuf, "%02d:", h);
- snprintf(tbuf + n, sizeof tbuf - n, "%02d:%02d", m, s);
+ static char tbuf[20];
+ int d, h, m, n = 0;
+
+ d = s / 86400; s %= 86400;
+ h = s / 3600; s %= 3600;
+ m = s / 60; s %= 60;
+ if ( d )
+ n = snprintf(tbuf, sizeof tbuf, "%dd ", d);
+ if ( d || h )
+ n += snprintf(tbuf + n, sizeof tbuf - n, "%dh ", h);
+ if ( !d && ( h || m ) )
+ n += snprintf(tbuf + n, sizeof tbuf - n, "%dm ", m);
+ if ( !d && !h )
+ n += snprintf(tbuf + n, sizeof tbuf - n, "%ds", s);