/* * Allocate and initialize a struct counters. Data entries up to the size are * set to 0. */ struct counters * counters_init(size_t initial_size) { struct counters *c = x_malloc(sizeof(*c)); c->data = NULL; c->size = 0; c->allocated = 0; counters_resize(c, initial_size); return c; }
// Parse a stats file from a buffer, adding to the counters. static void parse_stats(struct counters *counters, const char *buf) { size_t i = 0; const char *p = buf; while (true) { char *p2; long val = strtol(p, &p2, 10); if (p2 == p) { break; } if (counters->size < i + 1) { counters_resize(counters, i + 1); } counters->data[i] += val; i++; p = p2; } }