| /* @(#)fmtlib.c 1.2 */ |
| #define MAXINTLENGTH 23 |
| #include "config.h" |
| |
| #include "f2c.h" |
| #ifndef Allow_TYQUAD |
| #undef longint |
| #define longint long |
| #undef ulongint |
| #define ulongint unsigned long |
| #endif |
| |
| char * |
| f__icvt (longint value, int *ndigit, int *sign, int base) |
| { |
| static char buf[MAXINTLENGTH + 1]; |
| register int i; |
| ulongint uvalue; |
| |
| if (value > 0) |
| { |
| uvalue = value; |
| *sign = 0; |
| } |
| else if (value < 0) |
| { |
| uvalue = -value; |
| *sign = 1; |
| } |
| else |
| { |
| *sign = 0; |
| *ndigit = 1; |
| buf[MAXINTLENGTH - 1] = '0'; |
| return &buf[MAXINTLENGTH - 1]; |
| } |
| i = MAXINTLENGTH; |
| do |
| { |
| buf[--i] = (uvalue % base) + '0'; |
| uvalue /= base; |
| } |
| while (uvalue > 0); |
| *ndigit = MAXINTLENGTH - i; |
| return &buf[i]; |
| } |