Mercurial > molko
diff src/libmlk-rpg/rpg/save.c @ 330:e0657709fbe3
rpg: add support for basic quests
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 06 Oct 2021 13:54:16 +0200 |
parents | ea4a3af71c18 |
children | 7d7991f97acf |
line wrap: on
line diff
--- a/src/libmlk-rpg/rpg/save.c Mon Oct 04 13:30:09 2021 +0200 +++ b/src/libmlk-rpg/rpg/save.c Wed Oct 06 13:54:16 2021 +0200 @@ -210,10 +210,10 @@ save_exec(struct save *db, const char *sql, const char *args, ...) { assert(save_ok(db)); - assert(sql && args); + assert(sql); struct save_stmt stmt; - int ret; + enum save_stmt_errno ret; va_list ap; va_start(ap, args); @@ -226,7 +226,7 @@ ret = save_stmt_next(&stmt, NULL); save_stmt_finish(&stmt); - return ret; + return ret == SAVE_STMT_ERROR ? -1 : 0; } void @@ -278,6 +278,7 @@ ret = SAVE_STMT_DONE; break; default: + errorf("%s", sqlite3_errmsg(stmt->parent->handle)); break; } @@ -292,3 +293,27 @@ sqlite3_finalize(stmt->handle); memset(stmt, 0, sizeof (*stmt)); } + +int +save_tx_begin(struct save *s) +{ + assert(save_ok(s)); + + return save_exec(s, "BEGIN EXCLUSIVE TRANSACTION", NULL); +} + +void +save_tx_rollback(struct save *s) +{ + assert(save_ok(s)); + + (void)save_exec(s, "ROLLBACK", NULL); +} + +void +save_tx_commit(struct save *s) +{ + assert(save_ok(s)); + + (void)save_exec(s, "COMMIT", NULL); +}