Exemplo n.º 1
0
int
_citrus_lookup_factory_convert(FILE *out, FILE *in)
{
	struct _citrus_db_factory *df;
	struct _region r;
	char *line;
	size_t size;
	int ret;

	ret = _db_factory_create(&df, &_db_hash_std, NULL);
	if (ret)
		return (ret);

	while ((line = fgetln(in, &size)) != NULL)
		if ((ret = convert_line(df, line, size))) {
			_db_factory_free(df);
			return (ret);
		}

	ret = dump_db(df, &r);
	_db_factory_free(df);
	if (ret)
		return (ret);

	if (fwrite(_region_head(&r), _region_size(&r), 1, out) != 1)
		return (errno);

	return (0);
}
Exemplo n.º 2
0
static void
free_src(struct src_head *sh)
{
	struct src_entry *se;

	while ((se = STAILQ_FIRST(sh)) != NULL) {
		STAILQ_REMOVE_HEAD(sh, se_entry);
		_db_factory_free(se->se_df);
		free(se->se_name);
		free(se);
	}
}