diff options
Diffstat (limited to 'databases/luasql-mysql/files/patch-src-ls_mysql.c')
-rw-r--r-- | databases/luasql-mysql/files/patch-src-ls_mysql.c | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/databases/luasql-mysql/files/patch-src-ls_mysql.c b/databases/luasql-mysql/files/patch-src-ls_mysql.c new file mode 100644 index 000000000000..7fea9cea0b5b --- /dev/null +++ b/databases/luasql-mysql/files/patch-src-ls_mysql.c @@ -0,0 +1,87 @@ +--- src/ls_mysql.c 2007/08/22 18:37:06 1.24 ++++ src/ls_mysql.c 2008/02/18 05:14:09 1.28 +@@ -362,6 +362,22 @@ static int conn_close (lua_State *L) { + } + + ++static int escape_string (lua_State *L) { ++ size_t size, new_size; ++ conn_data *conn = getconnection (L); ++ const char *from = luaL_checklstring(L, 2, &size); ++ char *to; ++ to = (char*)malloc(sizeof(char) * (2 * size + 1)); ++ if(to) { ++ new_size = mysql_real_escape_string(conn->my_conn, to, from, size); ++ lua_pushlstring(L, to, new_size); ++ free(to); ++ return 1; ++ } ++ luaL_error(L, "could not allocate escaped string"); ++ return 0; ++} ++ + /* + ** Execute an SQL statement. + ** Return a Cursor object if the statement is a query, otherwise +@@ -385,8 +385,8 @@ static int escape_string (lua_State *L) + */ + static int conn_execute (lua_State *L) { + conn_data *conn = getconnection (L); +- const char *statement = luaL_checkstring (L, 2); +- unsigned long st_len = strlen(statement); ++ size_t st_len; ++ const char *statement = luaL_checklstring (L, 2, &st_len); + if (mysql_real_query(conn->my_conn, statement, st_len)) + /* error executing query */ + return luasql_failmessage(L, "Error executing query. MySQL: ", mysql_error(conn->my_conn)); +@@ -400,8 +416,8 @@ static int conn_execute (lua_State *L) { + */ + static int conn_commit (lua_State *L) { + conn_data *conn = getconnection (L); +- mysql_commit(conn->my_conn); +- return 0; ++ lua_pushboolean(L, !mysql_commit(conn->my_conn)); ++ return 1; + } + + +@@ -410,8 +426,8 @@ static int conn_commit (lua_State *L) { + */ + static int conn_rollback (lua_State *L) { + conn_data *conn = getconnection (L); +- mysql_rollback(conn->my_conn); +- return 0; ++ lua_pushboolean(L, !mysql_rollback(conn->my_conn)); ++ return 1; + } + + +@@ -432,6 +448,15 @@ static int conn_setautocommit (lua_State + + + /* ++** Get Last auto-increment id generated ++*/ ++static int conn_getlastautoid (lua_State *L) { ++ conn_data *conn = getconnection(L); ++ lua_pushnumber(L, mysql_insert_id(conn->my_conn)); ++ return 1; ++} ++ ++/* + ** Create a new Connection object and push it on top of the stack. + */ + static int create_connection (lua_State *L, int env, MYSQL *const my_conn) { +@@ -507,10 +532,12 @@ static void create_metatables (lua_State + }; + struct luaL_reg connection_methods[] = { + {"close", conn_close}, ++ {"escape", escape_string}, + {"execute", conn_execute}, + {"commit", conn_commit}, + {"rollback", conn_rollback}, + {"setautocommit", conn_setautocommit}, ++ {"getlastautoid", conn_getlastautoid}, + {NULL, NULL}, + }; + struct luaL_reg cursor_methods[] = { |