summaryrefslogtreecommitdiff
path: root/apps/misc.c
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2011-02-20 11:33:25 +0000
committerMichael Sevakis <jethead71@rockbox.org>2011-02-20 11:33:25 +0000
commit03862292a2c619951053c58844e0346dbe1bbe5c (patch)
tree6966d7f65ddc56b8d836df92acadac6c1d926ed8 /apps/misc.c
parent9d2c7b8b672ce14c2e8cf52dc778ba8851ef07bf (diff)
downloadrockbox-03862292a2c619951053c58844e0346dbe1bbe5c.tar.gz
rockbox-03862292a2c619951053c58844e0346dbe1bbe5c.zip
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
Diffstat (limited to 'apps/misc.c')
-rw-r--r--apps/misc.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/apps/misc.c b/apps/misc.c
index e0496633e4..5b560dee16 100644
--- a/apps/misc.c
+++ b/apps/misc.c
@@ -894,16 +894,20 @@ char* skip_whitespace(char* const str)
894 */ 894 */
895void format_time(char* buf, int buf_size, long t) 895void format_time(char* buf, int buf_size, long t)
896{ 896{
897 if ( t < 3600000 ) 897 int const time = ABS(t / 1000);
898 int const hours = time / 3600;
899 int const minutes = time / 60 - hours * 60;
900 int const seconds = time % 60;
901 const char * const sign = &"-"[t < 0 ? 0 : 1];
902
903 if ( hours == 0 )
898 { 904 {
899 snprintf(buf, buf_size, "%d:%02d", 905 snprintf(buf, buf_size, "%s%d:%02d", sign, minutes, seconds);
900 (int) (t / 60000), (int) (t % 60000 / 1000));
901 } 906 }
902 else 907 else
903 { 908 {
904 snprintf(buf, buf_size, "%d:%02d:%02d", 909 snprintf(buf, buf_size, "%s%d:%02d:%02d", sign, hours, minutes,
905 (int) (t / 3600000), (int) (t % 3600000 / 60000), 910 seconds);
906 (int) (t % 60000 / 1000));
907 } 911 }
908} 912}
909 913