From cde1e25f28ec5ce5672dd549d332cd9986a19835 Mon Sep 17 00:00:00 2001 From: Cyrille Bagard Date: Sat, 12 May 2018 23:43:23 +0200 Subject: Improved a little bit the Chrysalide database support. --- src/analysis/db/cdb.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/analysis/db/cdb.c b/src/analysis/db/cdb.c index bcd3ed3..7044853 100644 --- a/src/analysis/db/cdb.c +++ b/src/analysis/db/cdb.c @@ -316,7 +316,7 @@ GCdbArchive *g_cdb_archive_new(const char *basedir, const rle_string *hash, cons result->filename = strdup(basedir); result->filename = stradd(result->filename, G_DIR_SEPARATOR_S); result->filename = stradd(result->filename, hash->data); - result->filename = stradd(result->filename, ".tar.xz"); + result->filename = stradd(result->filename, ".cdb.tar.xz"); if (!mkpath(result->filename)) goto gcan_error; @@ -415,7 +415,7 @@ static bool g_cdb_archive_read(GCdbArchive *archive) archive_read_support_format_all(in); ret = archive_read_open_filename(in, archive->filename, 10240 /* ?! */); - if (ret != ARCHIVE_OK) goto gcar_exit; + if (ret != ARCHIVE_OK) goto gcar_bad_archive; for (ret = archive_read_next_header(in, &entry); ret == ARCHIVE_OK; @@ -445,13 +445,18 @@ static bool g_cdb_archive_read(GCdbArchive *archive) } - archive_read_close(in); - archive_read_free(in); + if (ret != ARCHIVE_EOF) + goto gcar_exit; result = true; gcar_exit: + gcar_bad_archive: + + archive_read_close(in); + archive_read_free(in); + return result; } @@ -483,7 +488,7 @@ DBError g_cdb_archive_write(const GCdbArchive *archive) archive_write_set_format_gnutar(out); ret = archive_write_open_filename(out, archive->filename); - if (ret != ARCHIVE_OK) goto gcaw_exit; + if (ret != ARCHIVE_OK) goto gcaw_bad_archive; status = add_file_into_archive(out, archive->xml_desc, "desc.xml"); @@ -525,8 +530,9 @@ DBError g_cdb_archive_write(const GCdbArchive *archive) } - gcaw_exit: + gcaw_bad_archive: + archive_write_close(out); archive_write_free(out); return result; -- cgit v0.11.2-87-g4458