]> granicus.if.org Git - php/commitdiff
Fixed bug #4232. (Added support for %e and %E to printf/sprintf)
authorIlia Alshanetsky <iliaa@php.net>
Tue, 15 Oct 2002 12:07:36 +0000 (12:07 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Tue, 15 Oct 2002 12:07:36 +0000 (12:07 +0000)
ext/standard/formatted_print.c

index f2160c974510857c46499525b421eab5407711e7..8dc3d2f9a806d5e09699cfa636c52ff7f6998514 100644 (file)
@@ -333,6 +333,31 @@ php_sprintf_appenddouble(char **buffer, int *pos,
                        if (precision > 0)
                                numbuf[i++] = decimal_point;
                }
+       } else if (fmt == 'e' || fmt == 'E') {
+               char *exp_p;
+               int dec2;
+               
+               decpt--;
+               
+               numbuf[i++] = cvt[j++];
+               numbuf[i++] = decimal_point;    
+
+               if (precision > 0) {
+                       int k = precision;
+                               
+                       while (k-- && cvt[j]) {
+                               numbuf[i++] = cvt[j++];
+                       }
+               } else {
+                       numbuf[i++] = '0';
+               }
+               
+               numbuf[i++] = fmt;
+               exp_p = php_convert_to_decimal(decpt, 0, &dec2, &sign, 0);
+               numbuf[i++] = sign ? '-' : '+';
+               while (*exp_p) {
+                       numbuf[i++] = *(exp_p++);
+               }
        } else {
                numbuf[i++] = cvt[j++];
                if (precision > 0)