diff -r 7956401a0c5e -r fd78e9cdc6e9 dbd/sqlite3/connection.c --- 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} };