diff options
| author | Michael Sevakis <jethead71@rockbox.org> | 2011-02-20 11:33:25 +0000 |
|---|---|---|
| committer | Michael Sevakis <jethead71@rockbox.org> | 2011-02-20 11:33:25 +0000 |
| commit | 03862292a2c619951053c58844e0346dbe1bbe5c (patch) | |
| tree | 6966d7f65ddc56b8d836df92acadac6c1d926ed8 | |
| parent | 9d2c7b8b672ce14c2e8cf52dc778ba8851ef07bf (diff) | |
| download | rockbox-03862292a2c619951053c58844e0346dbe1bbe5c.zip rockbox-03862292a2c619951053c58844e0346dbe1bbe5c.tar.gz rockbox-03862292a2c619951053c58844e0346dbe1bbe5c.tar.bz2 rockbox-03862292a2c619951053c58844e0346dbe1bbe5c.tar.xz | |
Make format_time properly format negative times because sometimes they are shown if track length estimates are off from seeking. Example: -0:15 instead of 0:-15. -1000ms < t < 0 is shown as -0:00.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29343 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | apps/misc.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/apps/misc.c b/apps/misc.c index e049663..5b560de 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -894,16 +894,20 @@ char* skip_whitespace(char* const str) */ void format_time(char* buf, int buf_size, long t) { - if ( t < 3600000 ) + int const time = ABS(t / 1000); + int const hours = time / 3600; + int const minutes = time / 60 - hours * 60; + int const seconds = time % 60; + const char * const sign = &"-"[t < 0 ? 0 : 1]; + + if ( hours == 0 ) { - snprintf(buf, buf_size, "%d:%02d", - (int) (t / 60000), (int) (t % 60000 / 1000)); + snprintf(buf, buf_size, "%s%d:%02d", sign, minutes, seconds); } else { - snprintf(buf, buf_size, "%d:%02d:%02d", - (int) (t / 3600000), (int) (t % 3600000 / 60000), - (int) (t % 60000 / 1000)); + snprintf(buf, buf_size, "%s%d:%02d:%02d", sign, hours, minutes, + seconds); } } |