gchar *chksum;
chksum = cr_checksum_file(path, checksum_t, &tmp_err);
- if (tmp_err) {
+ if (!chksum) {
int code = tmp_err->code;
g_propagate_prefixed_error(err, tmp_err,
"Error while checksum calculation of %s:", path);
cr_CompressionType record_compression,
GError **err)
{
+ int ret = CRE_OK;
const char *suffix;
gchar *path, *cpath;
gchar *clocation_real, *clocation_href;
- gchar *checksum, *cchecksum;
+ gchar *checksum = NULL;
+ gchar *cchecksum = NULL;
int readed;
char buf[BUFFER_SIZE];
CR_FILE *cw_plain;
CR_CW_NO_COMPRESSION,
&tmp_err);
if (!cw_plain) {
- int code = tmp_err->code;
+ ret = tmp_err->code;
g_propagate_prefixed_error(err, tmp_err, "Cannot open %s: ", path);
- return code;
+ return ret;
}
cw_compressed = cr_open(cpath,
record_compression,
&tmp_err);
if (!cw_compressed) {
- int code = tmp_err->code;
+ ret = tmp_err->code;
g_propagate_prefixed_error(err, tmp_err, "Cannot open %s: ", cpath);
- return code;
+ return ret;
}
while ((readed = cr_read(cw_plain, buf, BUFFER_SIZE, &tmp_err)) > 0) {
cr_close(cw_plain, NULL);
if (tmp_err) {
- int code = tmp_err->code;
+ ret = tmp_err->code;
cr_close(cw_compressed, NULL);
g_debug("%s: Error while repomd record compression: %s", __func__,
tmp_err->message);
g_propagate_prefixed_error(err, tmp_err,
"Error while compression %s -> %s:", path, cpath);
- return code;
+ return ret;
}
cr_close(cw_compressed, &tmp_err);
if (tmp_err) {
- int code = tmp_err->code;
+ ret = tmp_err->code;
g_propagate_prefixed_error(err, tmp_err,
"Error while closing %s: ", path);
- return code;
+ return ret;
}
-
// Compute checksums
checksum = cr_checksum_file(path, checksum_type, &tmp_err);
- if (tmp_err) {
- int code = tmp_err->code;
+ if (!checksum) {
+ ret = tmp_err->code;
g_propagate_prefixed_error(err, tmp_err,
"Error while checksum calculation:");
- return code;
+ goto end;
}
cchecksum = cr_checksum_file(cpath, checksum_type, &tmp_err);
- if (tmp_err) {
- int code = tmp_err->code;
+ if (!cchecksum) {
+ ret = tmp_err->code;
g_propagate_prefixed_error(err, tmp_err,
"Error while checksum calculation:");
- return code;
+ goto end;
}
g_debug("%s: Error while stat() on %s", __func__, path);
g_set_error(err, CR_REPOMD_RECORD_ERROR, CRE_IO,
"Cannot stat %s", path);
- return CRE_IO;
- } else {
- gf_size = gf_stat.st_size;
- gf_time = gf_stat.st_mtime;
+ ret = CRE_IO;
+ goto end;
}
+ gf_size = gf_stat.st_size;
+ gf_time = gf_stat.st_mtime;
+
if (stat(cpath, &cgf_stat)) {
g_debug("%s: Error while stat() on %s", __func__, cpath);
g_set_error(err, CR_REPOMD_RECORD_ERROR, CRE_IO,
"Cannot stat %s", cpath);
- return CRE_IO;
- } else {
- cgf_size = cgf_stat.st_size;
- cgf_time = cgf_stat.st_mtime;
+ ret = CRE_IO;
+ goto end;
}
+ cgf_size = cgf_stat.st_size;
+ cgf_time = cgf_stat.st_mtime;
+
// Results
crecord->size = cgf_size;
crecord->size_open = gf_size;
+end:
g_free(checksum);
g_free(cchecksum);
- return CRE_OK;
+ return ret;
}
int
// Primary.sqlite interface
+void
+cr_db_destroy_primary_statements(cr_DbPrimaryStatements stmts)
+{
+ if (!stmts)
+ return;
+
+ if (stmts->pkg_handle)
+ sqlite3_finalize(stmts->pkg_handle);
+ if (stmts->provides_handle)
+ sqlite3_finalize(stmts->provides_handle);
+ if (stmts->conflicts_handle)
+ sqlite3_finalize(stmts->conflicts_handle);
+ if (stmts->obsoletes_handle)
+ sqlite3_finalize(stmts->obsoletes_handle);
+ if (stmts->requires_handle)
+ sqlite3_finalize(stmts->requires_handle);
+ if (stmts->suggests_handle)
+ sqlite3_finalize(stmts->suggests_handle);
+ if (stmts->enhances_handle)
+ sqlite3_finalize(stmts->enhances_handle);
+ if (stmts->recommends_handle)
+ sqlite3_finalize(stmts->recommends_handle);
+ if (stmts->supplements_handle)
+ sqlite3_finalize(stmts->supplements_handle);
+ if (stmts->files_handle)
+ sqlite3_finalize(stmts->files_handle);
+ free(stmts);
+}
+
+
cr_DbPrimaryStatements
cr_db_prepare_primary_statements(sqlite3 *db, GError **err)
{
+ assert(!err || *err == NULL);
+
GError *tmp_err = NULL;
cr_DbPrimaryStatements ret = malloc(sizeof(*ret));
- assert(!err || *err == NULL);
-
ret->db = db;
ret->pkg_handle = NULL;
ret->provides_handle = NULL;
ret->pkg_handle = db_package_prepare(db, &tmp_err);
if (tmp_err) {
g_propagate_error(err, tmp_err);
- return ret;
+ goto error;
}
ret->provides_handle = db_dependency_prepare(db, "provides", &tmp_err);
if (tmp_err) {
g_propagate_error(err, tmp_err);
- return ret;
+ goto error;
}
ret->conflicts_handle = db_dependency_prepare(db, "conflicts", &tmp_err);
if (tmp_err) {
g_propagate_error(err, tmp_err);
- return ret;
+ goto error;
}
ret->obsoletes_handle = db_dependency_prepare(db, "obsoletes", &tmp_err);
if (tmp_err) {
g_propagate_error(err, tmp_err);
- return ret;
+ goto error;
}
ret->requires_handle = db_dependency_prepare(db, "requires", &tmp_err);
if (tmp_err) {
g_propagate_error(err, tmp_err);
- return ret;
+ goto error;
}
ret->suggests_handle = db_dependency_prepare(db, "suggests", &tmp_err);
if (tmp_err) {
g_propagate_error(err, tmp_err);
- return ret;
+ goto error;
}
ret->enhances_handle = db_dependency_prepare(db, "enhances", &tmp_err);
if (tmp_err) {
g_propagate_error(err, tmp_err);
- return ret;
+ goto error;
}
ret->recommends_handle = db_dependency_prepare(db, "recommends", &tmp_err);
if (tmp_err) {
g_propagate_error(err, tmp_err);
- return ret;
+ goto error;
}
ret->supplements_handle = db_dependency_prepare(db, "supplements", &tmp_err);
if (tmp_err) {
g_propagate_error(err, tmp_err);
- return ret;
+ goto error;
}
ret->files_handle = db_file_prepare(db, &tmp_err);
if (tmp_err) {
g_propagate_error(err, tmp_err);
- return ret;
+ goto error;
}
return ret;
-}
-
-void
-cr_db_destroy_primary_statements(cr_DbPrimaryStatements stmts)
-{
- if (!stmts)
- return;
-
- if (stmts->pkg_handle)
- sqlite3_finalize(stmts->pkg_handle);
- if (stmts->provides_handle)
- sqlite3_finalize(stmts->provides_handle);
- if (stmts->conflicts_handle)
- sqlite3_finalize(stmts->conflicts_handle);
- if (stmts->obsoletes_handle)
- sqlite3_finalize(stmts->obsoletes_handle);
- if (stmts->requires_handle)
- sqlite3_finalize(stmts->requires_handle);
- if (stmts->suggests_handle)
- sqlite3_finalize(stmts->suggests_handle);
- if (stmts->enhances_handle)
- sqlite3_finalize(stmts->enhances_handle);
- if (stmts->recommends_handle)
- sqlite3_finalize(stmts->recommends_handle);
- if (stmts->supplements_handle)
- sqlite3_finalize(stmts->supplements_handle);
- if (stmts->files_handle)
- sqlite3_finalize(stmts->files_handle);
- free(stmts);
+error:
+ cr_db_destroy_primary_statements(ret);
+ return NULL;
}
// filelists.sqlite interface
+void
+cr_db_destroy_filelists_statements(cr_DbFilelistsStatements stmts)
+{
+ if (!stmts)
+ return;
+
+ if (stmts->package_id_handle)
+ sqlite3_finalize(stmts->package_id_handle);
+ if (stmts->filelists_handle)
+ sqlite3_finalize(stmts->filelists_handle);
+ free(stmts);
+}
+
+
cr_DbFilelistsStatements
cr_db_prepare_filelists_statements(sqlite3 *db, GError **err)
{
ret->package_id_handle = db_package_ids_prepare(db, &tmp_err);
if (tmp_err) {
g_propagate_error(err, tmp_err);
- return ret;
+ goto error;
}
ret->filelists_handle = db_filelists_prepare(db, &tmp_err);
if (tmp_err) {
g_propagate_error(err, tmp_err);
- return ret;
+ goto error;
}
return ret;
-}
-
-void
-cr_db_destroy_filelists_statements(cr_DbFilelistsStatements stmts)
-{
- if (!stmts)
- return;
-
- if (stmts->package_id_handle)
- sqlite3_finalize(stmts->package_id_handle);
- if (stmts->filelists_handle)
- sqlite3_finalize(stmts->filelists_handle);
- free(stmts);
+error:
+ cr_db_destroy_filelists_statements(ret);
+ return NULL;
}
// other.sqlite interface
+void
+cr_db_destroy_other_statements(cr_DbOtherStatements stmts)
+{
+ if (!stmts)
+ return;
+
+ if (stmts->package_id_handle)
+ sqlite3_finalize(stmts->package_id_handle);
+ if (stmts->changelog_handle)
+ sqlite3_finalize(stmts->changelog_handle);
+ free(stmts);
+}
+
+
cr_DbOtherStatements
cr_db_prepare_other_statements(sqlite3 *db, GError **err)
{
ret->package_id_handle = db_package_ids_prepare(db, &tmp_err);
if (tmp_err) {
g_propagate_error(err, tmp_err);
- return ret;
+ goto error;
}
ret->changelog_handle = db_changelog_prepare(db, &tmp_err);
if (tmp_err) {
g_propagate_error(err, tmp_err);
- return ret;
+ goto error;
}
return ret;
-}
-
-
-void
-cr_db_destroy_other_statements(cr_DbOtherStatements stmts)
-{
- if (!stmts)
- return;
- if (stmts->package_id_handle)
- sqlite3_finalize(stmts->package_id_handle);
- if (stmts->changelog_handle)
- sqlite3_finalize(stmts->changelog_handle);
- free(stmts);
+error:
+ cr_db_destroy_other_statements(ret);
+ return NULL;
}
return NULL;
}
- if (tmp_err) {
+ if (!statements) {
g_propagate_error(err, tmp_err);
sqlite3_close(db);
return NULL;