Merge from vendor branch GCC:
[dragonfly.git] / contrib / libf2c / libI77 / fmtlib.c
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
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         }