}
}
+static void check_latency(
+ int value,
+ const char *expected)
+{
+ char buf[16];
+
+ memset(buf, 0, sizeof(buf));
+ mtr_format_latency_ms(value, buf, sizeof(buf));
+
+ if (strcmp(buf, expected) != 0) {
+ fprintf(stderr, "%d usec formatted as '%s', expected '%s'\n",
+ value, buf, expected);
+ exit(EXIT_FAILURE);
+ }
+}
+
int main(
void)
{
check_count(999999999, "999M9");
check_count(1000000000, "1G000");
+ check_latency(0, "0.0");
+ check_latency(250, "0.2");
+ check_latency(999, "1.0");
+ check_latency(1000, "1");
+ check_latency(1250, "1.2");
+ check_latency(9999, "10.0");
+ check_latency(10000, "10");
+ check_latency(12345, "12");
+
return EXIT_SUCCESS;
}
#endif
for (i = 0; i < NUM_FACTORS; i++) {
+ char latency[16];
+
printw(" ");
attrset(block_col[i + 1]);
#ifdef WITH_BRAILLE_DISPLAY
printw("%c", block_map[i]);
attrset(A_NORMAL);
if (i < NUM_FACTORS-1)
- printw(":%d ms", scale[i] / 1000);
+ printw(":%s ms",
+ mtr_format_latency_ms(scale[i], latency,
+ sizeof(latency)));
}
}
#include "config.h"
#include <stdio.h>
+#include <string.h>
#include "format.h"
return buf;
}
+
+char *mtr_format_latency_ms(
+ int usec,
+ char *buf,
+ size_t buf_size)
+{
+ int abs_usec = usec < 0 ? -usec : usec;
+
+ if (abs_usec < 1000) {
+ snprintf(buf, buf_size, "%.1f", usec / 1000.0);
+ } else if (abs_usec < 10000 && usec % 1000 != 0) {
+ snprintf(buf, buf_size, "%.1f", usec / 1000.0);
+ } else {
+ snprintf(buf, buf_size, "%d", usec / 1000);
+ }
+
+ return buf;
+}