Strangely, the BLI_timestr() function returns nonsense on linux for
authorChris Want <cwant@ualberta.ca>
Wed, 1 Feb 2006 20:16:50 +0000 (20:16 +0000)
committerChris Want <cwant@ualberta.ca>
Wed, 1 Feb 2006 20:16:50 +0000 (20:16 +0000)
ia64. It appears that if I get rid of the fmod expression, and
use integer math I get the right values. Hopefully this isn't a
problem for anybody.

source/blender/blenlib/intern/util.c

index d6ed130c9bc865b44e362ea47f4199fe7b9e2f7f..04c2092e56d1ca3c49e6966dc27430f3c2845abd 100644 (file)
@@ -1137,10 +1137,10 @@ int BLI_strncasecmp(const char *s1, const char *s2, int n) {
 void BLI_timestr(double time, char *str)
 {
        /* format 00:00:00.00 (hr:min:sec) string has to be 12 long */
-       int  hr= (int)      time/(60*60);
-       int min= (int) fmod(time/60, 60.0);
-       int sec= (int) fmod(time, 60.0);
-       int hun= (int) fmod(time*100.0, 100.0);
+       int  hr= ((int) time) / (60*60);
+       int min= ( ((int) time) / 60 ) % 60;
+       int sec= ((int) (time)) % 60;
+       int hun= ((int) (time * 100.0)) % 100;
        
        if (hr) {
                sprintf(str, "%.2d:%.2d:%.2d.%.2d",hr,min,sec,hun);