ash: times builtin: use unsigned type; take free-of-charge modulo
authorDenys Vlasenko <vda.linux@googlemail.com>
Fri, 18 Jun 2010 13:36:48 +0000 (15:36 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Fri, 18 Jun 2010 13:36:48 +0000 (15:36 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
shell/ash.c

index 1717407684b2d9317405ad8d6e0f6b14283f3074..f581b5bdf63bc415d44c6f83be8afa218fa0e1e6 100644 (file)
@@ -12508,7 +12508,7 @@ static const unsigned char timescmd_str[] ALIGN1 = {
 static int FAST_FUNC
 timescmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
 {
-       long clk_tck, s, t;
+       unsigned long clk_tck, s, t;
        const unsigned char *p;
        struct tms buf;
 
@@ -12519,9 +12519,10 @@ timescmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
        do {
                t = *(clock_t *)(((char *) &buf) + p[1]);
                s = t / clk_tck;
-               out1fmt("%ldm%ld.%.3lds%c",
-                       s/60, s%60,
-                       ((t - s * clk_tck) * 1000) / clk_tck,
+               t = t % clk_tck;
+               out1fmt("%lum%lu.%03lus%c",
+                       s / 60, s % 60,
+                       (t * 1000) / clk_tck,
                        p[0]);
                p += 2;
        } while (*p);