Use a struct for the journal.

This commit is contained in:
Andreas Schneider 2008-04-29 09:23:51 +02:00
parent 69a4f9f1c1
commit 98962337c4
3 changed files with 19 additions and 15 deletions

View file

@ -324,8 +324,8 @@ int csync_destroy(CSYNC *ctx) {
/* TODO: write journal */
if (ctx->journal) {
sqlite3_close(ctx->journal);
if (ctx->journal.db != NULL) {
sqlite3_close(ctx->journal.db);
/* TODO if we successfully synchronized, overwrite the original journal */
}

View file

@ -63,7 +63,7 @@ static int csync_journal_check(const char *journal) {
}
/* create database */
if (sqlite3_open(journal, &db ) == SQLITE_OK) {
if (sqlite3_open(journal, &db) == SQLITE_OK) {
sqlite3_close(db);
return 0;
}
@ -110,16 +110,16 @@ int csync_journal_load(CSYNC *ctx, const char *journal) {
}
/* Open the temporary database */
if (sqlite3_open(journal_tmp, &ctx->journal) != SQLITE_OK) {
if (sqlite3_open(journal_tmp, &ctx->journal.db) != SQLITE_OK) {
rc = -1;
goto out;
}
if (csync_journal_is_empty(ctx)) {
CSYNC_LOG(CSYNC_LOG_PRIORITY_NOTICE, "Journal doesn't exist");
ctx->journal_exists = 0;
ctx->journal.exists = 0;
} else {
ctx->journal_exists = 1;
ctx->journal.exists = 1;
}
out:
@ -149,14 +149,14 @@ c_strlist_t *csync_journal_query(CSYNC *ctx, const char *statement) {
usleep(100000);
CSYNC_LOG(CSYNC_LOG_PRIORITY_DEBUG, "sqlite3_prepare: BUSY counter: %d", busy_count);
}
err = sqlite3_prepare(ctx->journal, statement, -1, &stmt, &tail);
err = sqlite3_prepare(ctx->journal.db, statement, -1, &stmt, &tail);
} while (err == SQLITE_BUSY && busy_count ++ < 120);
if (err != SQLITE_OK) {
if (err == SQLITE_BUSY) {
CSYNC_LOG(CSYNC_LOG_PRIORITY_ERROR, "Gave up waiting for lock to clear");
}
CSYNC_LOG(CSYNC_LOG_PRIORITY_WARN, "sqlite3_compile error: %s - on query %s", sqlite3_errmsg(ctx->journal), statement);
CSYNC_LOG(CSYNC_LOG_PRIORITY_WARN, "sqlite3_compile error: %s - on query %s", sqlite3_errmsg(ctx->journal.db), statement);
result = c_strlist_new(1);
break;
} else {
@ -205,7 +205,7 @@ c_strlist_t *csync_journal_query(CSYNC *ctx, const char *statement) {
rc = sqlite3_finalize(stmt);
if (err != SQLITE_DONE && rc != SQLITE_SCHEMA) {
CSYNC_LOG(CSYNC_LOG_PRIORITY_ERROR, "sqlite_step error: %s - on query: %s", sqlite3_errmsg(ctx->journal), statement);
CSYNC_LOG(CSYNC_LOG_PRIORITY_ERROR, "sqlite_step error: %s - on query: %s", sqlite3_errmsg(ctx->journal.db), statement);
result = c_strlist_new(1);
}
@ -245,14 +245,14 @@ int csync_journal_insert(CSYNC *ctx, const char *statement) {
usleep(100000);
CSYNC_LOG(CSYNC_LOG_PRIORITY_DEBUG, "sqlite3_prepare: BUSY counter: %d", busy_count);
}
err = sqlite3_prepare(ctx->journal, statement, -1, &stmt, &tail);
err = sqlite3_prepare(ctx->journal.db, statement, -1, &stmt, &tail);
} while (err == SQLITE_BUSY && busy_count++ < 120);
if (err != SQLITE_OK) {
if (err == SQLITE_BUSY) {
CSYNC_LOG(CSYNC_LOG_PRIORITY_ERROR, "Gave up waiting for lock to clear");
}
CSYNC_LOG(CSYNC_LOG_PRIORITY_ERROR, "sqlite3_compile error: %s on query %s", sqlite3_errmsg(ctx->journal), statement);
CSYNC_LOG(CSYNC_LOG_PRIORITY_ERROR, "sqlite3_compile error: %s on query %s", sqlite3_errmsg(ctx->journal.db), statement);
break;
} else {
busy_count = 0;
@ -284,7 +284,7 @@ int csync_journal_insert(CSYNC *ctx, const char *statement) {
rc = sqlite3_finalize(stmt);
if (err != SQLITE_DONE && rc != SQLITE_SCHEMA) {
CSYNC_LOG(CSYNC_LOG_PRIORITY_ERROR, "sqlite_step error: %s on insert: %s", sqlite3_errmsg(ctx->journal), statement);
CSYNC_LOG(CSYNC_LOG_PRIORITY_ERROR, "sqlite_step error: %s on insert: %s", sqlite3_errmsg(ctx->journal.db), statement);
}
if (rc == SQLITE_SCHEMA) {
@ -299,6 +299,6 @@ int csync_journal_insert(CSYNC *ctx, const char *statement) {
}
} while (rc == SQLITE_SCHEMA && retry_count < 10);
return sqlite3_last_insert_rowid(ctx->journal);
return sqlite3_last_insert_rowid(ctx->journal.db);
}

View file

@ -68,7 +68,11 @@ enum csync_replica_e {
*/
struct csync_s {
c_strlist_t *excludes;
sqlite3 *journal;
struct {
sqlite3 *db;
int exists;
} journal;
struct {
char *uri;
@ -97,7 +101,7 @@ struct csync_s {
enum csync_replica_e current;
enum csync_replica_e replica;
int journal_exists;
int status;
int initialized;
};