Initial revision
[official-gcc.git] / gcc / f / runtime / libI77 / fmtlib.c
blob91483fc5290ffa5d8c53f9d97c57c46cb32b256e
1 /* @(#)fmtlib.c 1.2 */
2 #define MAXINTLENGTH 23
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
12 #ifdef KR_headers
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
19 static char buf[MAXINTLENGTH+1];
20 register int i;
21 ulongint uvalue;
23 if(value > 0) {
24 uvalue = value;
25 *sign = 0;
27 else if (value < 0) {
28 uvalue = -value;
29 *sign = 1;
31 else {
32 *sign = 0;
33 *ndigit = 1;
34 buf[MAXINTLENGTH-1] = '0';
35 return &buf[MAXINTLENGTH-1];
37 i = MAXINTLENGTH;
38 do {
39 buf[--i] = (uvalue%base) + '0';
40 uvalue /= base;
42 while(uvalue > 0);
43 *ndigit = MAXINTLENGTH - i;
44 return &buf[i];