Mercurial > molko
comparison 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 |
comparison
equal
deleted
inserted
replaced
329:ea4a3af71c18 | 330:e0657709fbe3 |
---|---|
208 | 208 |
209 int | 209 int |
210 save_exec(struct save *db, const char *sql, const char *args, ...) | 210 save_exec(struct save *db, const char *sql, const char *args, ...) |
211 { | 211 { |
212 assert(save_ok(db)); | 212 assert(save_ok(db)); |
213 assert(sql && args); | 213 assert(sql); |
214 | 214 |
215 struct save_stmt stmt; | 215 struct save_stmt stmt; |
216 int ret; | 216 enum save_stmt_errno ret; |
217 va_list ap; | 217 va_list ap; |
218 | 218 |
219 va_start(ap, args); | 219 va_start(ap, args); |
220 ret = prepare(db, &stmt, sql, args, ap); | 220 ret = prepare(db, &stmt, sql, args, ap); |
221 va_end(ap); | 221 va_end(ap); |
224 return -1; | 224 return -1; |
225 | 225 |
226 ret = save_stmt_next(&stmt, NULL); | 226 ret = save_stmt_next(&stmt, NULL); |
227 save_stmt_finish(&stmt); | 227 save_stmt_finish(&stmt); |
228 | 228 |
229 return ret; | 229 return ret == SAVE_STMT_ERROR ? -1 : 0; |
230 } | 230 } |
231 | 231 |
232 void | 232 void |
233 save_finish(struct save *db) | 233 save_finish(struct save *db) |
234 { | 234 { |
276 break; | 276 break; |
277 case SQLITE_DONE: | 277 case SQLITE_DONE: |
278 ret = SAVE_STMT_DONE; | 278 ret = SAVE_STMT_DONE; |
279 break; | 279 break; |
280 default: | 280 default: |
281 errorf("%s", sqlite3_errmsg(stmt->parent->handle)); | |
281 break; | 282 break; |
282 } | 283 } |
283 | 284 |
284 return ret; | 285 return ret; |
285 } | 286 } |
290 assert(stmt); | 291 assert(stmt); |
291 | 292 |
292 sqlite3_finalize(stmt->handle); | 293 sqlite3_finalize(stmt->handle); |
293 memset(stmt, 0, sizeof (*stmt)); | 294 memset(stmt, 0, sizeof (*stmt)); |
294 } | 295 } |
296 | |
297 int | |
298 save_tx_begin(struct save *s) | |
299 { | |
300 assert(save_ok(s)); | |
301 | |
302 return save_exec(s, "BEGIN EXCLUSIVE TRANSACTION", NULL); | |
303 } | |
304 | |
305 void | |
306 save_tx_rollback(struct save *s) | |
307 { | |
308 assert(save_ok(s)); | |
309 | |
310 (void)save_exec(s, "ROLLBACK", NULL); | |
311 } | |
312 | |
313 void | |
314 save_tx_commit(struct save *s) | |
315 { | |
316 assert(save_ok(s)); | |
317 | |
318 (void)save_exec(s, "COMMIT", NULL); | |
319 } |