From: Lars Ingebrigtsen Date: Mon, 13 Dec 2021 04:38:29 +0000 (+0100) Subject: Introduce a new sqlite-locked-error X-Git-Tag: emacs-29.0.90~3595^2~1 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c86b86f9a9ee3c42aed9ede794e8c3e19ce35ec5;p=emacs.git 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. --- 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");