g__fmt.c (112158) | g__fmt.c (112415) |
---|---|
1/**************************************************************** 2 3The author of this software is David M. Gay. 4 5Copyright (C) 1998 by Lucent Technologies 6All Rights Reserved 7 8Permission to use, copy, modify, and distribute this software and --- 23 unchanged lines hidden (view full) --- 32 600 Mountain Avenue 33 Murray Hill, NJ 07974-0636 34 U.S.A. 35 dmg@bell-labs.com 36 */ 37 38#include "gdtoaimp.h" 39 | 1/**************************************************************** 2 3The author of this software is David M. Gay. 4 5Copyright (C) 1998 by Lucent Technologies 6All Rights Reserved 7 8Permission to use, copy, modify, and distribute this software and --- 23 unchanged lines hidden (view full) --- 32 600 Mountain Avenue 33 Murray Hill, NJ 07974-0636 34 U.S.A. 35 dmg@bell-labs.com 36 */ 37 38#include "gdtoaimp.h" 39 |
40#ifdef USE_LOCALE 41#include "locale.h" 42#endif 43 |
|
40 char * 41#ifdef KR_headers 42g__fmt(b, s, se, decpt, sign) char *b; char *s; char *se; int decpt; ULong sign; 43#else 44g__fmt(char *b, char *s, char *se, int decpt, ULong sign) 45#endif 46{ 47 int i, j, k; 48 char *s0 = s; | 44 char * 45#ifdef KR_headers 46g__fmt(b, s, se, decpt, sign) char *b; char *s; char *se; int decpt; ULong sign; 47#else 48g__fmt(char *b, char *s, char *se, int decpt, ULong sign) 49#endif 50{ 51 int i, j, k; 52 char *s0 = s; |
49 | 53#ifdef USE_LOCALE 54 char decimalpoint = *localeconv()->decimal_point; 55#else 56#define decimalpoint '.' 57#endif |
50 if (sign) 51 *b++ = '-'; 52 if (decpt <= -4 || decpt > se - s + 5) { 53 *b++ = *s++; 54 if (*s) { | 58 if (sign) 59 *b++ = '-'; 60 if (decpt <= -4 || decpt > se - s + 5) { 61 *b++ = *s++; 62 if (*s) { |
55 *b++ = '.'; | 63 *b++ = decimalpoint; |
56 while((*b = *s++) !=0) 57 b++; 58 } 59 *b++ = 'e'; 60 /* sprintf(b, "%+.2d", decpt - 1); */ 61 if (--decpt < 0) { 62 *b++ = '-'; 63 decpt = -decpt; --- 7 unchanged lines hidden (view full) --- 71 if (--j <= 0) 72 break; 73 decpt -= i*k; 74 decpt *= 10; 75 } 76 *b = 0; 77 } 78 else if (decpt <= 0) { | 64 while((*b = *s++) !=0) 65 b++; 66 } 67 *b++ = 'e'; 68 /* sprintf(b, "%+.2d", decpt - 1); */ 69 if (--decpt < 0) { 70 *b++ = '-'; 71 decpt = -decpt; --- 7 unchanged lines hidden (view full) --- 79 if (--j <= 0) 80 break; 81 decpt -= i*k; 82 decpt *= 10; 83 } 84 *b = 0; 85 } 86 else if (decpt <= 0) { |
79 *b++ = '.'; | 87 *b++ = decimalpoint; |
80 for(; decpt < 0; decpt++) 81 *b++ = '0'; 82 while((*b = *s++) !=0) 83 b++; 84 } 85 else { 86 while((*b = *s++) !=0) { 87 b++; 88 if (--decpt == 0 && *s) | 88 for(; decpt < 0; decpt++) 89 *b++ = '0'; 90 while((*b = *s++) !=0) 91 b++; 92 } 93 else { 94 while((*b = *s++) !=0) { 95 b++; 96 if (--decpt == 0 && *s) |
89 *b++ = '.'; | 97 *b++ = decimalpoint; |
90 } 91 for(; decpt > 0; decpt--) 92 *b++ = '0'; 93 *b = 0; 94 } 95 freedtoa(s0); 96 return b; 97 } | 98 } 99 for(; decpt > 0; decpt--) 100 *b++ = '0'; 101 *b = 0; 102 } 103 freedtoa(s0); 104 return b; 105 } |