1 /* @(#)fmtlib.c 1.2 */
2 #define MAXINTLENGTH 23
3
4 #include "f2c.h"
5 #ifndef Allow_TYQUAD
6 #undef longint
7 #define longint long
8 #undef ulongint
9 #define ulongint unsigned long
10 #endif
11
12 #ifdef KR_headers
f__icvt(value,ndigit,sign,base)13 char *f__icvt(value,ndigit,sign, base) longint value; int *ndigit,*sign;
14 register int base;
15 #else
16 char *f__icvt(longint value, int *ndigit, int *sign, int base)
17 #endif
18 {
19 static char buf[MAXINTLENGTH+1];
20 register int i;
21 ulongint uvalue;
22
23 if(value > 0) {
24 uvalue = value;
25 *sign = 0;
26 }
27 else if (value < 0) {
28 uvalue = -value;
29 *sign = 1;
30 }
31 else {
32 *sign = 0;
33 *ndigit = 1;
34 buf[MAXINTLENGTH-1] = '0';
35 return &buf[MAXINTLENGTH-1];
36 }
37 i = MAXINTLENGTH;
38 do {
39 buf[--i] = (uvalue%base) + '0';
40 uvalue /= base;
41 }
42 while(uvalue > 0);
43 *ndigit = MAXINTLENGTH - i;
44 return &buf[i];
45 }
46