summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nserver/src/stats.c25
-rw-r--r--nserver/src/stats.h2
2 files changed, 20 insertions, 7 deletions
diff --git a/nserver/src/stats.c b/nserver/src/stats.c
index 68b99cc..6b99e7e 100644
--- a/nserver/src/stats.c
+++ b/nserver/src/stats.c
@@ -44,11 +44,24 @@ void Stats_sample(Stats *st, double s)
st->n += 1;
}
-void Stats_dump(Stats *st)
+char *Stats_dump(Stats *st)
{
- fprintf(stderr,
- "sum: %f, sumsq: %f, n: %ld, "
- "min: %f, max: %f, mean: %f, stddev: %f",
- st->sum, st->sumsq, st->n, st->min, st->max, Stats_mean(st),
- Stats_stddev(st));
+ size_t char_sz = sizeof(char);
+ size_t dstr_len = 280 * char_sz;
+
+ // allocate space for dump string.
+ char *dstr = calloc(dstr_len, char_sz);
+ check_mem(dstr);
+
+ // dump into dump str.
+ int rc = snprintf(dstr, dstr_len,
+ "sum: %f, sumsq: %f, n: %ld, "
+ "min: %f, max: %f, mean: %f, stddev: %f",
+ st->sum, st->sumsq, st->n, st->min, st->max,
+ Stats_mean(st), Stats_stddev(st));
+ check(rc > 0, "stats dump failed");
+
+ return dstr;
+ error:
+ return NULL;
}
diff --git a/nserver/src/stats.h b/nserver/src/stats.h
index 997a505..776eb21 100644
--- a/nserver/src/stats.h
+++ b/nserver/src/stats.h
@@ -17,7 +17,7 @@ Stats *Stats_create();
void Stats_sample(Stats *st, double s);
-void Stats_dump(Stats *st);
+char *Stats_dump(Stats *st);
static inline double Stats_mean(Stats *st)
{