Use configuration value for formatter bufsize.
authorlottaviano <lottaviano@38d2e660-2303-0410-9eaa-f027e97ec537>
Thu, 17 Sep 2009 10:29:29 +0000 (10:29 +0000)
committerlottaviano <lottaviano@38d2e660-2303-0410-9eaa-f027e97ec537>
Thu, 17 Sep 2009 10:29:29 +0000 (10:29 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@2962 38d2e660-2303-0410-9eaa-f027e97ec537

bertos/cfg/cfg_formatwr.h
bertos/mware/formatwr.c

index bafad70b81aa374640c4382a25f81e5f9e043e8c..ba08654cd790d7e6e3a7e6de13061ec11e0b3f66 100644 (file)
  */
 #define CONFIG_PRINTF PRINTF_FULL
 
+/**
+ * Size of buffer to format "%" sequences in printf.
+ *
+ * Warning: no check on buffer size is done when formatting, be careful especially
+ * with big numbers and %f formatting.
+ *
+ * $WIZ$ type = "int"
+ * $WIZ$ min = 4
+ */
+#define CONFIG_FRMWRI_BUFSIZE  20
 
 #endif /* CFG_FORMATWR_H */
 
index bf2672e9c1a29b5642671cdb682a68c83312fc6e..afc4976e269af94db0ec05c25d731364fa8e0101 100644 (file)
        /* Maximum precision for floating point values */
        typedef long double max_float_t;
 
-       /*luca: FIXME: this should be enough to print floating point values, must be investigated
-        * further.
-        */
-       #define FRMWRI_BUFSIZE 20
+       #warning FIXME: be sure to fix buffer size below
+       #if CONFIG_FRMWRI_BUFSIZE
+               #define FRMWRI_BUFSIZE CONFIG_FRMWRI_BUFSIZE
+       #else
+               /* Conservative estimate. Max float is 3.40282e+038, so %f (but not %e or %g) must have
+                * space for: sign + all 38 digits + '.' + 6 decimal digits (default)
+                */
+               #define FRMWRI_BUFSIZE 50
+       #endif
 #else
-       /*
-        * Conservative estimate. Should be (probably) 12 (which is the size necessary
-        * to represent (2^32-1) in octal plus the sign bit.
-        */
-       #define FRMWRI_BUFSIZE 16
+       #if CONFIG_FRMWRI_BUFSIZE
+               #define FRMWRI_BUFSIZE CONFIG_FRMWRI_BUFSIZE
+       #else
+               /*
+                * Conservative estimate. Should be (probably) 12 (which is the size necessary
+                * to represent (2^32-1) in octal plus the sign bit.
+                */
+               #define FRMWRI_BUFSIZE 16
+       #endif
 #endif
 
 /* Probably useful for fancy microcontrollers such as the PIC, nobody knows. */