emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 4cdc59f: Minor cleanups in sqlite.c


From: Eli Zaretskii
Subject: master 4cdc59f: Minor cleanups in sqlite.c
Date: Sat, 11 Dec 2021 04:56:12 -0500 (EST)

branch: master
commit 4cdc59f33a0759a238184e67d59ea8e5143b7cc2
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>

    Minor cleanups in sqlite.c
    
    * src/sqlite.c (Fsqlite_open): Signal an error if
    'init_sqlite_functions' fails.  Encode FILE using UTF-8.
    (Fsqlite_close, Fsqlite_execute, Fsqlite_select)
    (Fsqlite_load_extension): Doc fixes.
    (Fsqlite_load_extension): Encode MODULE using UTF-8.
---
 src/sqlite.c | 28 ++++++++++++++++------------
 1 file changed, 16 insertions(+), 12 deletions(-)

diff --git a/src/sqlite.c b/src/sqlite.c
index 47829cb..87cebb1 100644
--- a/src/sqlite.c
+++ b/src/sqlite.c
@@ -241,12 +241,14 @@ If FILE is nil, an in-memory database will be opened 
instead.  */)
   (Lisp_Object file)
 {
   char *name;
-  init_sqlite_functions ();
+  if (!init_sqlite_functions ())
+    xsignal1 (Qerror, build_string ("sqlite support is not available"));
 
   if (!NILP (file))
     {
       CHECK_STRING (file);
-      name = xstrdup (SSDATA (Fexpand_file_name (file, Qnil)));
+      file = encode_string (Fexpand_file_name (file, Qnil));
+      name = xstrdup (SSDATA (file));
     }
   else
     /* In-memory database.  These have to have different names to
@@ -273,7 +275,7 @@ If FILE is nil, an in-memory database will be opened 
instead.  */)
 }
 
 DEFUN ("sqlite-close", Fsqlite_close, Ssqlite_close, 1, 1, 0,
-       doc: /* Close the database DB.  */)
+       doc: /* Close the sqlite database DB.  */)
   (Lisp_Object db)
 {
   check_sqlite (db, false);
@@ -341,12 +343,12 @@ bind_values (sqlite3 *db, sqlite3_stmt *stmt, Lisp_Object 
values)
 
 DEFUN ("sqlite-execute", Fsqlite_execute, Ssqlite_execute, 2, 3, 0,
        doc: /* Execute a non-select SQL statement.
-If VALUES is non-nil, it should be a list of values to bind when
-executing a statement like
+If VALUES is non-nil, it should be a vector or a list of values
+to bind when executing a statement like
 
    insert into foo values (?, ?, ...)
 
-The number of affected rows is returned.  */)
+Value is the number of affected rows.  */)
   (Lisp_Object db, Lisp_Object query, Lisp_Object values)
 {
   check_sqlite (db, false);
@@ -463,8 +465,8 @@ column_names (sqlite3_stmt *stmt)
 
 DEFUN ("sqlite-select", Fsqlite_select, Ssqlite_select, 2, 4, 0,
        doc: /* Select data from the database DB that matches QUERY.
-If VALUES is non-nil, they are values that will be interpolated into a
-parametrised statement.
+If VALUES is non-nil, it should be a list or a vector specifying the
+values that will be interpolated into a parameterized statement.
 
 By default, the return value is a list where the first element is a
 list of column names, and the rest of the elements are the matching data.
@@ -573,16 +575,18 @@ DEFUN ("sqlite-rollback", Fsqlite_rollback, 
Ssqlite_rollback, 1, 1, 0,
 #ifdef HAVE_SQLITE3_LOAD_EXTENSION
 DEFUN ("sqlite-load-extension", Fsqlite_load_extension,
        Ssqlite_load_extension, 2, 2, 0,
-       doc: /* Load an SQlite module into DB.
-MODULE should be the file name of an SQlite module .so file.  */)
+       doc: /* Load an SQlite MODULE into DB.
+MODULE should be the name of an SQlite module's file, a
+shared library in the system-dependent format and having a
+system-dependent file-name extension.  */)
   (Lisp_Object db, Lisp_Object module)
 {
   check_sqlite (db, false);
   CHECK_STRING (module);
+  Lisp_Object module_encoded = encode_string (Fexpand_file_name (module, 
Qnil));
 
   sqlite3 *sdb = XSQLITE (db)->db;
-  int result = sqlite3_load_extension (sdb,
-                                      SSDATA (Fexpand_file_name (module, 
Qnil)),
+  int result = sqlite3_load_extension (sdb, SSDATA (module_encoded),
                                       NULL, NULL);
   if (result ==  SQLITE_OK)
     return Qt;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]