diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2021-12-13 05:38:29 +0100 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2021-12-13 05:38:29 +0100 |
commit | c86b86f9a9ee3c42aed9ede794e8c3e19ce35ec5 (patch) | |
tree | ede100840c61fee9116a117f663f01a6586ad793 /src/sqlite.c | |
parent | 2f6601054940e698184f4c9c60a47c16e5baa880 (diff) | |
download | emacs-c86b86f9a9ee3c42aed9ede794e8c3e19ce35ec5.tar.gz emacs-c86b86f9a9ee3c42aed9ede794e8c3e19ce35ec5.tar.bz2 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.c | 13 |
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. */) exit: if (errmsg != NULL) - xsignal1 (Qerror, build_string (errmsg)); + xsignal1 (ret == SQLITE_LOCKED || ret == SQLITE_BUSY? + Qsqlite_locked_error: Qerror, + build_string (errmsg)); return retval; } @@ -698,8 +700,15 @@ syms_of_sqlite (void) DEFSYM (Qfull, "full"); #endif defsubr (&Ssqlitep); - DEFSYM (Qsqlitep, "sqlitep"); defsubr (&Ssqlite_available_p); + + DEFSYM (Qsqlite_locked_error, "sqlite-locked-error"); + Fput (Qsqlite_locked_error, Qerror_conditions, + Fpurecopy (list2 (Qsqlite_locked_error, Qerror))); + Fput (Qsqlite_locked_error, Qerror_message, + build_pure_c_string ("Database locked")); + + DEFSYM (Qsqlitep, "sqlitep"); DEFSYM (Qfalse, "false"); DEFSYM (Qsqlite, "sqlite"); DEFSYM (Qsqlite3, "sqlite3"); |