dbd/sqlite3/connection.c

changeset 22
fd78e9cdc6e9
parent 14
98192b7d4e89
child 32
03ed0ca09837
--- a/dbd/sqlite3/connection.c	Fri Dec 19 09:17:16 2008 +0000
+++ b/dbd/sqlite3/connection.c	Sat Dec 20 02:37:22 2008 +0000
@@ -148,6 +148,27 @@
 }
 
 /*
+ * quoted = connection:quote(str)
+ */
+static int connection_quote(lua_State *L) {
+    connection_t *conn = (connection_t *)luaL_checkudata(L, 1, DBD_SQLITE_CONNECTION);
+    size_t len;
+    const char *from = luaL_checklstring(L, 2, &len);
+    char *to;
+
+    if (!conn->sqlite) {
+        luaL_error(L, DBI_ERR_DB_UNAVAILABLE);
+    }
+
+    to = sqlite3_mprintf("%q", from);
+
+    lua_pushstring(L, to);
+    sqlite3_free(to);
+
+    return 1;
+}
+
+/*
  * success = connection:rollback()
  */
 static int connection_rollback(lua_State *L) {
@@ -187,6 +208,7 @@
 	{"commit", connection_commit},
 	{"ping", connection_ping},
 	{"prepare", connection_prepare},
+	{"quote", connection_quote},
 	{"rollback", connection_rollback},
 	{NULL, NULL}
     };

mercurial