+
+/* Provide a short human-readable rendition of the ETA. It never
+ occupies more than 7 characters of screen space. */
+
+static const char *
+eta_to_human_short (int secs)
+{
+ static char buf[10]; /* 8 is enough, but just in case */
+ static int last = -1;
+
+ /* Trivial optimization. This function can be called every 200
+ msecs (see bar_update) for fast downloads, but ETA will only
+ change once per 900 msecs (see create_image). */
+ if (secs == last)
+ return buf;
+ last = secs;
+
+ if (secs < 100)
+ sprintf (buf, _("%ds"), secs);
+ else if (secs < 100 * 60)
+ sprintf (buf, _("%dm %ds"), secs / 60, secs % 60);
+ else if (secs < 100 * 3600)
+ sprintf (buf, _("%dh %dm"), secs / 3600, (secs / 60) % 60);
+ else if (secs < 100 * 86400)
+ sprintf (buf, _("%dd %dh"), secs / 86400, (secs / 3600) % 60);
+ else
+ /* (2^31-1)/86400 doesn't overflow BUF. */
+ sprintf (buf, _("%dd"), secs / 86400);
+
+ return buf;
+}