/* we shouldn't get any errors from this one */ static void check_object_growth() { int i; struct dm_pool *p = dm_pool_create("", 32); char data[100]; void *obj; memset(data, 0, sizeof(data)); dm_pool_begin_object(p, 43); for (i = 1; i < 100; i++) dm_pool_grow_object(p, data, i); obj = dm_pool_end_object(p); dm_pool_destroy(p); }
static int _line_end(struct output_line *outline) { const char *line; if (!dm_pool_grow_object(outline->mem, "\0", 1)) { log_error("dm_pool_grow_object failed for config line"); return 0; } line = dm_pool_end_object(outline->mem); if (outline->putline) outline->putline(line, outline->putline_baton); else { if (!outline->fp) log_print("%s", line); else fprintf(outline->fp, "%s\n", line); } return 1; }
static int _line_append(struct output_line *outline, const char *fmt, ...) { char buf[4096]; va_list ap; int n; va_start(ap, fmt); n = vsnprintf(&buf[0], sizeof buf - 1, fmt, ap); va_end(ap); if (n < 0 || n > (int) sizeof buf - 1) { log_error("vsnprintf failed for config line"); return 0; } if (!dm_pool_grow_object(outline->mem, &buf[0], strlen(buf))) { log_error("dm_pool_grow_object failed for config line"); return 0; } return 1; }
static int _line_end(const struct dm_config_node *cn, struct config_output *out) { const char *line; if (!dm_pool_grow_object(out->mem, "\0", 1)) { log_error("dm_pool_grow_object failed for config line"); return 0; } line = dm_pool_end_object(out->mem); if (!out->putline && !out->spec) return 0; if (out->putline) out->putline(line, out->baton); if (out->spec && out->spec->line_fn) out->spec->line_fn(cn, line, out->baton); return 1; }