@@ -128,106 +128,6 @@ static inline char *php_fcvt(double value, int ndigit, int *decpt, bool *sign) /
128
128
}
129
129
/* }}} */
130
130
131
- PHPAPI char * php_gcvt (double value , int ndigit , char dec_point , char exponent , char * buf ) /* {{{ */
132
- {
133
- char * digits , * dst , * src ;
134
- int i , decpt ;
135
- bool sign ;
136
- int mode = ndigit >= 0 ? 2 : 0 ;
137
-
138
- if (mode == 0 ) {
139
- ndigit = 17 ;
140
- }
141
- digits = zend_dtoa (value , mode , ndigit , & decpt , & sign , NULL );
142
- if (decpt == 9999 ) {
143
- /*
144
- * Infinity or NaN, convert to inf or nan with sign.
145
- * We assume the buffer is at least ndigit long.
146
- */
147
- snprintf (buf , ndigit + 1 , "%s%s" , (sign && * digits == 'I' ) ? "-" : "" , * digits == 'I' ? "INF" : "NAN" );
148
- zend_freedtoa (digits );
149
- return (buf );
150
- }
151
-
152
- dst = buf ;
153
- if (sign ) {
154
- * dst ++ = '-' ;
155
- }
156
-
157
- if ((decpt >= 0 && decpt > ndigit ) || decpt < -3 ) { /* use E-style */
158
- /* exponential format (e.g. 1.2345e+13) */
159
- if (-- decpt < 0 ) {
160
- sign = 1 ;
161
- decpt = - decpt ;
162
- } else {
163
- sign = 0 ;
164
- }
165
- src = digits ;
166
- * dst ++ = * src ++ ;
167
- * dst ++ = dec_point ;
168
- if (* src == '\0' ) {
169
- * dst ++ = '0' ;
170
- } else {
171
- do {
172
- * dst ++ = * src ++ ;
173
- } while (* src != '\0' );
174
- }
175
- * dst ++ = exponent ;
176
- if (sign ) {
177
- * dst ++ = '-' ;
178
- } else {
179
- * dst ++ = '+' ;
180
- }
181
- if (decpt < 10 ) {
182
- * dst ++ = '0' + decpt ;
183
- * dst = '\0' ;
184
- } else {
185
- /* XXX - optimize */
186
- int n ;
187
- for (n = decpt , i = 0 ; (n /= 10 ) != 0 ; i ++ );
188
- dst [i + 1 ] = '\0' ;
189
- while (decpt != 0 ) {
190
- dst [i -- ] = '0' + decpt % 10 ;
191
- decpt /= 10 ;
192
- }
193
- }
194
- } else if (decpt < 0 ) {
195
- /* standard format 0. */
196
- * dst ++ = '0' ; /* zero before decimal point */
197
- * dst ++ = dec_point ;
198
- do {
199
- * dst ++ = '0' ;
200
- } while (++ decpt < 0 );
201
- src = digits ;
202
- while (* src != '\0' ) {
203
- * dst ++ = * src ++ ;
204
- }
205
- * dst = '\0' ;
206
- } else {
207
- /* standard format */
208
- for (i = 0 , src = digits ; i < decpt ; i ++ ) {
209
- if (* src != '\0' ) {
210
- * dst ++ = * src ++ ;
211
- } else {
212
- * dst ++ = '0' ;
213
- }
214
- }
215
- if (* src != '\0' ) {
216
- if (src == digits ) {
217
- * dst ++ = '0' ; /* zero before decimal point */
218
- }
219
- * dst ++ = dec_point ;
220
- for (i = decpt ; digits [i ] != '\0' ; i ++ ) {
221
- * dst ++ = digits [i ];
222
- }
223
- }
224
- * dst = '\0' ;
225
- }
226
- zend_freedtoa (digits );
227
- return (buf );
228
- }
229
- /* }}} */
230
-
231
131
/* {{{ Apache license */
232
132
/* ====================================================================
233
133
* Copyright (c) 1995-1998 The Apache Group. All rights reserved.
@@ -1043,7 +943,7 @@ static size_t format_converter(buffy * odp, const char *fmt, va_list ap) /* {{{
1043
943
lconv = localeconv ();
1044
944
}
1045
945
#endif
1046
- s = php_gcvt (fp_num , precision , (* fmt == 'H' || * fmt == 'k' ) ? '.' : LCONV_DECIMAL_POINT , (* fmt == 'G' || * fmt == 'H' )?'E' :'e' , & num_buf [1 ]);
946
+ s = zend_gcvt (fp_num , precision , (* fmt == 'H' || * fmt == 'k' ) ? '.' : LCONV_DECIMAL_POINT , (* fmt == 'G' || * fmt == 'H' )?'E' :'e' , & num_buf [1 ]);
1047
947
if (* s == '-' ) {
1048
948
prefix_char = * s ++ ;
1049
949
} else if (print_sign ) {
0 commit comments