From fbf67d7a29ccac6e1b75892a0a3145e1b9a0c488 Mon Sep 17 00:00:00 2001 From: ceriel Date: Fri, 10 Jul 1987 09:06:19 +0000 Subject: [PATCH] some fixes --- lang/cem/libcc/gen/asctime.c | 12 ++++++------ lang/cem/libcc/gen/ecvt.c | 6 +++--- lang/cem/libcc/gen/rand.c | 6 +++++- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/lang/cem/libcc/gen/asctime.c b/lang/cem/libcc/gen/asctime.c index 5332b8e70..b3709f1bf 100644 --- a/lang/cem/libcc/gen/asctime.c +++ b/lang/cem/libcc/gen/asctime.c @@ -28,20 +28,20 @@ asctime(tm) pb = two_digits( two_digits( two_digits( - two_digits(pb, tm->tm_mday), - tm->tm_hour), - tm->tm_min), - tm->tm_sec); + two_digits(pb, tm->tm_mday, 0), + tm->tm_hour, 1), + tm->tm_min, 1), + tm->tm_sec, 1); four_digits(pb, tm->tm_year+1900); return(buf); } static char * -two_digits(pb, i) +two_digits(pb, i, nospace) register char *pb; { *pb = (i / 10) % 10 + '0'; - if (*pb == '0') *pb = ' '; + if (!nospace && *pb == '0') *pb = ' '; pb++; *pb++ = (i % 10) + '0'; return ++pb; diff --git a/lang/cem/libcc/gen/ecvt.c b/lang/cem/libcc/gen/ecvt.c index f91fcf352..84ca9f36b 100644 --- a/lang/cem/libcc/gen/ecvt.c +++ b/lang/cem/libcc/gen/ecvt.c @@ -52,9 +52,9 @@ cvt(value, ndigit, decpt, sign, ecvtflag) the conversion to "int" truncates */ if (pe >= &buf1[NDIGITS]) { - pb = &buf1[NDIGITS-10]; - while (pb > buf1) *--pb = *--pe; - pe = &buf[NDIGITS-10]; + pb = &buf1[10]; + pe = &buf1[0]; + while (pb < &buf1[NDIGITS]) *pe++ = *pb++; } *pe++ = (int)((value+.05) * 10) + '0'; pointpos++; diff --git a/lang/cem/libcc/gen/rand.c b/lang/cem/libcc/gen/rand.c index e0fef459f..7395bf07a 100644 --- a/lang/cem/libcc/gen/rand.c +++ b/lang/cem/libcc/gen/rand.c @@ -4,7 +4,11 @@ static long seed = 1L; int rand() { seed = (1103515245L * seed + 12345) & 0x7FFFFFFF; - return((int) ((seed >> 8) & 077777)); +#if EM_WSIZE == 4 + return (int) seed; +#else + return ((int)(seed >> 8) & 0x7FFF); +#endif } srand(n) -- 2.34.1