/* 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);
}
Beispiel #2
0
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;
}
Beispiel #3
0
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;
}
Beispiel #4
0
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;
}