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); }
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); } }