+
+#define show_it(data,letter) \
+ do { \
+ if (precision == -1 && length == -1) { \
+ p += snprintf(p, XBT_LOG_BUFF_SIZE - (p - ev->buffer), "%" letter, data); \
+ } else if (precision == -1) { \
+ sprintf(tmpfmt,"%%%d" letter,length); \
+ p += snprintf(p, XBT_LOG_BUFF_SIZE - (p - ev->buffer), tmpfmt, data); \
+ length = -1; \
+ } else if (length == -1) { \
+ p += sprintf(p, "%.*" letter, \
+ (int) MIN(XBT_LOG_BUFF_SIZE - (p - ev->buffer), precision), \
+ data);\
+ precision = -1; \
+ } else { \
+ sprintf(tmpfmt,"%%%d.%d" letter,length, \
+ (int) MIN(XBT_LOG_BUFF_SIZE - (p - ev->buffer), precision));\
+ p += sprintf(p, tmpfmt, data);\
+ length = precision = -1; \
+ } \
+ check_overflow; \
+ } while (0)
+
+#define show_string(data) show_it(data, "s")
+#define show_int(data) show_it(data, "d")
+#define show_double(data) show_it(data, "f")
+