diff options
Diffstat (limited to 'lib/libI77/fmtlib.c')
-rw-r--r-- | lib/libI77/fmtlib.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/lib/libI77/fmtlib.c b/lib/libI77/fmtlib.c index 1c6801e..91483fc 100644 --- a/lib/libI77/fmtlib.c +++ b/lib/libI77/fmtlib.c @@ -5,6 +5,8 @@ #ifndef Allow_TYQUAD #undef longint #define longint long +#undef ulongint +#define ulongint unsigned long #endif #ifdef KR_headers @@ -13,13 +15,17 @@ char *f__icvt(value,ndigit,sign, base) longint value; int *ndigit,*sign; #else char *f__icvt(longint value, int *ndigit, int *sign, int base) #endif -{ static char buf[MAXINTLENGTH+1]; +{ + static char buf[MAXINTLENGTH+1]; register int i; + ulongint uvalue; - if(value > 0) + if(value > 0) { + uvalue = value; *sign = 0; + } else if (value < 0) { - value = -value; + uvalue = -value; *sign = 1; } else { @@ -30,10 +36,10 @@ char *f__icvt(longint value, int *ndigit, int *sign, int base) } i = MAXINTLENGTH; do { - buf[--i] = (value%base) + '0'; - value /= base; + buf[--i] = (uvalue%base) + '0'; + uvalue /= base; } - while(value > 0); + while(uvalue > 0); *ndigit = MAXINTLENGTH - i; return &buf[i]; } |