Deleted Added
full compact
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 }