aboutsummaryrefslogtreecommitdiffstats
path: root/src/sqlite.c
diff options
context:
space:
mode:
authorLars Ingebrigtsen2021-12-13 05:38:29 +0100
committerLars Ingebrigtsen2021-12-13 05:38:29 +0100
commitc86b86f9a9ee3c42aed9ede794e8c3e19ce35ec5 (patch)
treeede100840c61fee9116a117f663f01a6586ad793 /src/sqlite.c
parent2f6601054940e698184f4c9c60a47c16e5baa880 (diff)
downloademacs-c86b86f9a9ee3c42aed9ede794e8c3e19ce35ec5.tar.gz
emacs-c86b86f9a9ee3c42aed9ede794e8c3e19ce35ec5.zip
Introduce a new sqlite-locked-error
* src/sqlite.c (Fsqlite_execute): Use it. (syms_of_sqlite): Introduce a new error for locked databases so that we can catch that condition on higher levels.
Diffstat (limited to 'src/sqlite.c')
-rw-r--r--src/sqlite.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/sqlite.c b/src/sqlite.c
index d92dcf723c9..38e939cd84a 100644
--- a/src/sqlite.c
+++ b/src/sqlite.c
@@ -400,7 +400,9 @@ Value is the number of affected rows. */)
400 400
401 exit: 401 exit:
402 if (errmsg != NULL) 402 if (errmsg != NULL)
403 xsignal1 (Qerror, build_string (errmsg)); 403 xsignal1 (ret == SQLITE_LOCKED || ret == SQLITE_BUSY?
404 Qsqlite_locked_error: Qerror,
405 build_string (errmsg));
404 406
405 return retval; 407 return retval;
406} 408}
@@ -698,8 +700,15 @@ syms_of_sqlite (void)
698 DEFSYM (Qfull, "full"); 700 DEFSYM (Qfull, "full");
699#endif 701#endif
700 defsubr (&Ssqlitep); 702 defsubr (&Ssqlitep);
701 DEFSYM (Qsqlitep, "sqlitep");
702 defsubr (&Ssqlite_available_p); 703 defsubr (&Ssqlite_available_p);
704
705 DEFSYM (Qsqlite_locked_error, "sqlite-locked-error");
706 Fput (Qsqlite_locked_error, Qerror_conditions,
707 Fpurecopy (list2 (Qsqlite_locked_error, Qerror)));
708 Fput (Qsqlite_locked_error, Qerror_message,
709 build_pure_c_string ("Database locked"));
710
711 DEFSYM (Qsqlitep, "sqlitep");
703 DEFSYM (Qfalse, "false"); 712 DEFSYM (Qfalse, "false");
704 DEFSYM (Qsqlite, "sqlite"); 713 DEFSYM (Qsqlite, "sqlite");
705 DEFSYM (Qsqlite3, "sqlite3"); 714 DEFSYM (Qsqlite3, "sqlite3");