/* @(#)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]; }