diff options
Diffstat (limited to 'gnu/lib/libf2c/libI77/fmtlib.c')
-rw-r--r-- | gnu/lib/libf2c/libI77/fmtlib.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/gnu/lib/libf2c/libI77/fmtlib.c b/gnu/lib/libf2c/libI77/fmtlib.c new file mode 100644 index 00000000000..69c0d9b406f --- /dev/null +++ b/gnu/lib/libf2c/libI77/fmtlib.c @@ -0,0 +1,46 @@ +/* @(#)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 + +#ifdef KR_headers +char *f__icvt(value,ndigit,sign, base) longint value; int *ndigit,*sign; + register int base; +#else +char *f__icvt(longint value, int *ndigit, int *sign, int base) +#endif +{ + 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]; + } |