Index: opensync/opensync_db.c =================================================================== --- opensync/opensync_db.c (revision 1167) +++ opensync/opensync_db.c (working copy) @@ -103,8 +103,7 @@ OSyncDB *log_db = _open_changelog(group, error); if (!log_db) { - osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); - return FALSE; + goto error; } sqlite3 *sdb = log_db->db; @@ -132,14 +131,20 @@ if (sqlite3_exec(sdb, query, NULL, NULL, NULL) != SQLITE_OK) { osync_error_set(error, OSYNC_ERROR_PARAMETER, "Unable to remove all logs! %s", sqlite3_errmsg(sdb)); g_free(query); - osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); - return FALSE; + goto error_db_close; } g_free(query); osync_db_close(log_db); osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; + +error_db_close: + osync_db_close(log_db); + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } osync_bool osync_db_save_changelog(OSyncGroup *group, OSyncChange *change, OSyncError **error) @@ -148,8 +153,7 @@ OSyncDB *log_db = _open_changelog(group, error); if (!log_db) { - osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); - return FALSE; + goto error; } sqlite3 *sdb = log_db->db; @@ -160,14 +164,21 @@ if (sqlite3_exec(sdb, query, NULL, NULL, NULL) != SQLITE_OK) { osync_error_set(error, OSYNC_ERROR_PARAMETER, "Unable to insert log! %s", sqlite3_errmsg(sdb)); g_free(query); - osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); - return FALSE; + goto error_db_close; } g_free(query); osync_db_close(log_db); osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; + +error_db_close: + osync_db_close(log_db); + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; + } osync_bool osync_db_remove_changelog(OSyncGroup *group, OSyncChange *change, OSyncError **error) @@ -176,8 +187,7 @@ OSyncDB *log_db = _open_changelog(group, error); if (!log_db) { - osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); - return FALSE; + goto error; } sqlite3 *sdb = log_db->db; @@ -188,14 +198,20 @@ if (sqlite3_exec(sdb, query, NULL, NULL, NULL) != SQLITE_OK) { osync_error_set(error, OSYNC_ERROR_PARAMETER, "Unable to remove log! %s", sqlite3_errmsg(sdb)); g_free(query); - osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); - return FALSE; + goto error_db_close; } g_free(query); osync_db_close(log_db); osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; + +error_db_close: + osync_db_close(log_db); + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } osync_bool osync_db_open_changes(OSyncGroup *group, OSyncChange ***changes, OSyncError **error) @@ -207,8 +223,7 @@ char *filename = g_strdup_printf("%s/change.db", group->changes_path); if (!(group->changes_db = osync_db_open(filename, error))) { osync_error_update(error, "Unable to load changes: %s", osync_error_print(error)); - osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); - return FALSE; + goto error; } osync_debug("OSDB", 3, "Preparing to load changes from file %s", filename); g_free(filename); @@ -244,19 +259,22 @@ osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } osync_bool osync_db_save_change(OSyncChange *change, osync_bool save_format, OSyncError **error) { - osync_trace(TRACE_ENTRY, "osync_db_save_change(%p, %i, %p) (Table: %p)", change, save_format, error, change->changes_db); + osync_trace(TRACE_ENTRY, "%s(%p, %i, %p) (Table: %p)", __func__, change, save_format, error, change->changes_db); osync_assert_msg(change, "Need to set change"); osync_assert_msg(osync_change_get_objtype(change), "change->objtype was NULL while saving"); osync_assert_msg(osync_change_get_objformat(change), "change->objformat was NULL while saving"); if (!change || !change->changes_db) { osync_error_set(error, OSYNC_ERROR_PARAMETER, "osync_db_save_change was called with wrong parameters"); - osync_trace(TRACE_EXIT_ERROR, "osync_db_save_change: %s", osync_error_print(error)); - return FALSE; + goto error; } sqlite3 *sdb = change->changes_db->db; @@ -269,8 +287,7 @@ if (sqlite3_exec(sdb, query, NULL, NULL, NULL) != SQLITE_OK) { osync_error_set(error, OSYNC_ERROR_PARAMETER, "Unable to insert change! %s", sqlite3_errmsg(sdb)); g_free(query); - osync_trace(TRACE_EXIT_ERROR, "osync_db_save_change: %s", osync_error_print(error)); - return FALSE; + goto error; } change->id = sqlite3_last_insert_rowid(sdb); } else { @@ -284,23 +301,26 @@ if (sqlite3_exec(sdb, query, NULL, NULL, NULL) != SQLITE_OK) { osync_error_set(error, OSYNC_ERROR_PARAMETER, "Unable to update change! %s", sqlite3_errmsg(sdb)); g_free(query); - osync_trace(TRACE_EXIT_ERROR, "osync_db_save_change: %s", osync_error_print(error)); - return FALSE; + goto error; } } g_free(query); - osync_trace(TRACE_EXIT, "osync_db_save_change"); + osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; + } osync_bool osync_db_delete_change(OSyncChange *change, OSyncError **error) { - osync_trace(TRACE_ENTRY, "osync_db_delete_change(%p, %p)", change, error); + osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, change, error); if (!change || !change->changes_db) { osync_error_set(error, OSYNC_ERROR_PARAMETER, "osync_db_delete_change was called with wrong parameters"); - osync_trace(TRACE_EXIT_ERROR, "osync_db_delete_change: %s", osync_error_print(error)); - return FALSE; + goto error; } sqlite3 *sdb = change->changes_db->db; @@ -308,22 +328,24 @@ if (sqlite3_exec(sdb, query, NULL, NULL, NULL) != SQLITE_OK) { osync_error_set(error, OSYNC_ERROR_PARAMETER, "Unable to delete change! %s", sqlite3_errmsg(sdb)); g_free(query); - osync_trace(TRACE_EXIT_ERROR, "osync_db_delete_change: %s", osync_error_print(error)); - return FALSE; + goto error; } g_free(query); - osync_trace(TRACE_EXIT, "osync_db_delete_change"); + osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } osync_bool osync_db_reset_changes(OSyncGroup *group, const char *objtype, OSyncError **error) { - osync_trace(TRACE_ENTRY, "osync_db_reset_changes(%p, %s, %p)", group, objtype, error); + osync_trace(TRACE_ENTRY, "%s(%p, %s, %p)", __func__, group, objtype, error); if (!group || !objtype) { osync_error_set(error, OSYNC_ERROR_PARAMETER, "osync_db_reset_changes was called with wrong parameters"); - osync_trace(TRACE_EXIT_ERROR, "osync_db_reset_changes: %s", osync_error_print(error)); - return FALSE; + goto error; } sqlite3 *sdb = group->changes_db->db; @@ -333,73 +355,80 @@ } else { query = g_strdup_printf("DELETE FROM tbl_changes WHERE objtype='%s'", objtype); } + if (sqlite3_exec(sdb, query, NULL, NULL, NULL) != SQLITE_OK) { osync_error_set(error, OSYNC_ERROR_PARAMETER, "Unable to reset changes! %s", sqlite3_errmsg(sdb)); g_free(query); - osync_trace(TRACE_EXIT_ERROR, "osync_db_reset_changes: %s", osync_error_print(error)); - return FALSE; + goto error; } + g_free(query); - osync_trace(TRACE_EXIT, "osync_db_reset_changes"); + osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; + } osync_bool osync_db_reset_group(OSyncGroup *group, OSyncError **error) { - osync_trace(TRACE_ENTRY, "osync_db_reset_group(%p, %p)", group, error); + osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, group, error); OSyncDB *db = NULL; if (!group) { osync_error_set(error, OSYNC_ERROR_PARAMETER, "osync_db_reset_group was called with wrong parameters"); - osync_trace(TRACE_EXIT_ERROR, "osync_db_reset_group: %s", osync_error_print(error)); - return FALSE; + goto error; } char *changesdb = g_strdup_printf("%s/change.db", group->configdir); if (!(db = osync_db_open(changesdb, error))) { g_free(changesdb); - osync_trace(TRACE_EXIT_ERROR, "osync_db_reset_group: %s", osync_error_print(error)); - return FALSE; + goto error; } if (sqlite3_exec(db->db, "DELETE FROM tbl_changes", NULL, NULL, NULL) != SQLITE_OK) { osync_error_set(error, OSYNC_ERROR_PARAMETER, "Unable to reset changes! %s", sqlite3_errmsg(db->db)); g_free(changesdb); - osync_trace(TRACE_EXIT_ERROR, "osync_db_reset_group: %s", osync_error_print(error)); - return FALSE; + goto error_db_close; } osync_db_close(db); g_free(changesdb); - osync_trace(TRACE_EXIT, "osync_db_reset_member"); + osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; + +error_db_close: + osync_db_close(db); + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; } osync_bool osync_db_reset_member(OSyncMember *member, OSyncError **error) { - osync_trace(TRACE_ENTRY, "osync_db_reset_member(%p, %p)", member, error); + osync_trace(TRACE_ENTRY, "%s(%p, %p)", __func__, member, error); OSyncDB *db = NULL; if (!member) { osync_error_set(error, OSYNC_ERROR_PARAMETER, "osync_db_reset_member was called with wrong parameters"); - osync_trace(TRACE_EXIT_ERROR, "osync_db_reset_member: %s", osync_error_print(error)); - return FALSE; + goto error; } char *hashtable = g_strdup_printf("%s/hash.db", member->configdir); if (g_file_test(hashtable, G_FILE_TEST_EXISTS)) { if (!(db = osync_db_open(hashtable, error))) { g_free(hashtable); - osync_trace(TRACE_EXIT_ERROR, "osync_db_reset_member: %s", osync_error_print(error)); - return FALSE; + goto error; } if (sqlite3_exec(db->db, "DELETE FROM tbl_hash", NULL, NULL, NULL) != SQLITE_OK) { osync_error_set(error, OSYNC_ERROR_PARAMETER, "Unable to reset hashtable! %s", sqlite3_errmsg(db->db)); g_free(hashtable); - osync_trace(TRACE_EXIT_ERROR, "osync_db_reset_changes: %s", osync_error_print(error)); - return FALSE; + goto error_db_close; } osync_db_close(db); @@ -410,23 +439,29 @@ if (g_file_test(anchordb, G_FILE_TEST_EXISTS)) { if (!(db = osync_db_open(anchordb, error))) { g_free(anchordb); - osync_trace(TRACE_EXIT_ERROR, "osync_db_reset_member: %s", osync_error_print(error)); - return FALSE; + goto error; } if (sqlite3_exec(db->db, "DELETE FROM tbl_anchor", NULL, NULL, NULL) != SQLITE_OK) { osync_error_set(error, OSYNC_ERROR_PARAMETER, "Unable to reset anchors! %s", sqlite3_errmsg(db->db)); g_free(anchordb); - osync_trace(TRACE_EXIT_ERROR, "osync_db_reset_changes: %s", osync_error_print(error)); - return FALSE; + goto error_db_close; } osync_db_close(db); } g_free(anchordb); - osync_trace(TRACE_EXIT, "osync_db_reset_member"); + osync_trace(TRACE_EXIT, "%s", __func__); return TRUE; + +error_db_close: + osync_db_close(db); + +error: + osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); + return FALSE; + } void osync_db_close_changes(OSyncGroup *group)