diff options
author | Baptiste Daroussin <bapt@FreeBSD.org> | 2014-01-13 10:43:51 +0000 |
---|---|---|
committer | Baptiste Daroussin <bapt@FreeBSD.org> | 2014-01-13 10:43:51 +0000 |
commit | f208e06c695febcb6cd60ac7c20ba512376abc4c (patch) | |
tree | 5ac1d4ad2162f4516a6b0b43eb1c2730397e232f /databases/luasql-mysql | |
parent | d334c5a76f97fe8e574302acccc263f99433eadc (diff) | |
download | ports-f208e06c695febcb6cd60ac7c20ba512376abc4c.tar.gz ports-f208e06c695febcb6cd60ac7c20ba512376abc4c.zip |
Notes
Diffstat (limited to 'databases/luasql-mysql')
-rw-r--r-- | databases/luasql-mysql/Makefile | 31 | ||||
-rw-r--r-- | databases/luasql-mysql/distinfo | 4 | ||||
-rw-r--r-- | databases/luasql-mysql/files/patch-Makefile | 11 | ||||
-rw-r--r-- | databases/luasql-mysql/files/patch-config | 57 | ||||
-rw-r--r-- | databases/luasql-mysql/files/patch-src-ls_mysql.c | 87 | ||||
-rw-r--r-- | databases/luasql-mysql/files/patch-src-ls_sqlite3.c | 906 |
6 files changed, 19 insertions, 1077 deletions
diff --git a/databases/luasql-mysql/Makefile b/databases/luasql-mysql/Makefile index e7e3d0142ebc..93a6ff853131 100644 --- a/databases/luasql-mysql/Makefile +++ b/databases/luasql-mysql/Makefile @@ -2,49 +2,52 @@ # $FreeBSD$ PORTNAME= luasql -PORTVERSION= 2.1.1 -PORTREVISION= 1 +PORTVERSION= 2.3.0 CATEGORIES= databases -MASTER_SITES= http://luaforge.net/frs/download.php/${DISTFILE_REV}/ PKGNAMESUFFIX= -${LUASQL_DRIVER} -MAINTAINER= ports@FreeBSD.org +MAINTAINER= lua@FreeBSD.org COMMENT?= LuaSQL driver LICENSE= MIT -DISTFILE_REV= 2686 +USE_GITHUB= yes +GH_ACCOUNT= keplerproject +GH_COMMIT= c527024 +GH_TAGNAME= v${PORTVERSION} -USE_LUA= 5.1 -USE_GMAKE= yes +USES= lua gmake ALL_TARGET= lib LUASQL_DRIVER?= mysql -MAKE_ENV+= LUA_DIR=${LUA_SUBDIR} \ +MAKE_ARGS+= LUA_DIR=${LUA_SUBDIR} \ LUA_INC=${LUA_INCDIR} \ LUA_LIBDIR=${LUA_LIBDIR} \ LUA_VERSION_NUM="${LUA_VER_STR}0" \ - T=${LUASQL_DRIVER} -LDFLAGS+= -shared -CFLAGS+= -fPIC + T=${LUASQL_DRIVER} \ + WARN="${CFLAGS}" \ + CC="${CC}" + +USE_CSTD= gnu89 +CFLAGS+= -Wno-return-type PLIST_SUB+= LUA_MIDLIBDIR=${LUA_MODLIBDIR} .if ${LUASQL_DRIVER} == "mysql" COMMENT= Lua interface to MySQL USE_MYSQL= yes -MAKE_ENV+= DRIVER_LIBS="-L ${LOCALBASE}/lib/mysql -lmysqlclient" \ +MAKE_ARGS+= DRIVER_LIBS="-L ${LOCALBASE}/lib/mysql -lmysqlclient" \ DRIVER_INCS="-I ${LOCALBASE}/include/mysql" .elif ${LUASQL_DRIVER} == "postgres" COMMENT= Lua interface to PostgreSQL USE_PGSQL= yes -MAKE_ENV+= DRIVER_LIBS="-L ${LOCALBASE}/lib -lpq" \ +MAKE_ARGS+= DRIVER_LIBS="-L ${LOCALBASE}/lib -lpq" \ DRIVER_INCS="-I ${LOCALBASE}/include" .elif ${LUASQL_DRIVER} == "sqlite3" COMMENT= Lua interface to SQLite3 USE_SQLITE= 3 -MAKE_ENV+= DRIVER_LIBS="-L ${LOCALBASE}/lib -lsqlite3" \ +MAKE_ARGS+= DRIVER_LIBS="-L ${LOCALBASE}/lib -lsqlite3" \ DRIVER_INCS="-I ${LOCALBASE}/include" .else IGNORE= unknown or unsupported luasql driver diff --git a/databases/luasql-mysql/distinfo b/databases/luasql-mysql/distinfo index 7469906d8be2..f6567188e616 100644 --- a/databases/luasql-mysql/distinfo +++ b/databases/luasql-mysql/distinfo @@ -1,2 +1,2 @@ -SHA256 (luasql-2.1.1.tar.gz) = 608c79e84bb9a348ed2a9375a4e7ba4d42615c8b8ef6959c014661ddd9eda765 -SIZE (luasql-2.1.1.tar.gz) = 69466 +SHA256 (luasql-2.3.0.tar.gz) = a7f3a4be7155dd433eee35284703055746d816ac140ace63d048657c02d00aa3 +SIZE (luasql-2.3.0.tar.gz) = 80818 diff --git a/databases/luasql-mysql/files/patch-Makefile b/databases/luasql-mysql/files/patch-Makefile deleted file mode 100644 index 2be6aea894fc..000000000000 --- a/databases/luasql-mysql/files/patch-Makefile +++ /dev/null @@ -1,11 +0,0 @@ ---- Makefile.orig 2007-10-29 22:44:54.000000000 +0100 -+++ Makefile 2009-05-25 23:14:26.604465716 +0200 -@@ -24,7 +24,7 @@ - lib: src/$(LIBNAME) - - src/$(LIBNAME): $(OBJS) -- export MACOSX_DEPLOYMENT_TARGET="10.3"; $(CC) $(CFLAGS) -o $@ $(LIB_OPTION) $(OBJS) $(DRIVER_LIBS) -+ $(LD) $(LDFLAGS) -o $@ $(LIB_OPTION) $(OBJS) $(DRIVER_LIBS) - - $(COMPAT_DIR)/compat-5.1.o: $(COMPAT_DIR)/compat-5.1.c - $(CC) -c $(CFLAGS) -o $@ $(COMPAT_DIR)/compat-5.1.c diff --git a/databases/luasql-mysql/files/patch-config b/databases/luasql-mysql/files/patch-config deleted file mode 100644 index 6d261e2b14bb..000000000000 --- a/databases/luasql-mysql/files/patch-config +++ /dev/null @@ -1,57 +0,0 @@ ---- config.orig 2009-05-26 09:16:15.482231352 +0200 -+++ config 2009-05-26 09:17:24.739489638 +0200 -@@ -4,27 +4,27 @@ - #T= odbc - #T= postgres - #T= sqlite --T=sqlite3 -+T?=sqlite3 - - # Installation directories - - # Default prefix --PREFIX = /usr/local -+PREFIX?= /usr/local - - # System's libraries directory (where binary libraries are installed) --LUA_LIBDIR= $(PREFIX)/lib/lua/5.1 -+LUA_LIBDIR?= $(PREFIX)/lib/lua/5.1 - - # System's lua directory (where Lua libraries are installed) --LUA_DIR= $(PREFIX)/share/lua/5.1 -+LUA_DIR?= $(PREFIX)/share/lua/5.1 - - # Lua includes directory --LUA_INC= $(PREFIX)/include -+LUA_INC?= $(PREFIX)/include - - # Lua version number (first and second digits of target version) --LUA_VERSION_NUM= 501 -+LUA_VERSION_NUM?= 501 - - # OS dependent --LIB_OPTION= -shared #for Linux -+LIB_OPTION?= -shared #for Linux - #LIB_OPTION= -bundle -undefined dynamic_lookup #for MacOS X - - LIBNAME= $T.so -@@ -45,15 +45,15 @@ - #DRIVER_LIBS= -lsqlite - #DRIVER_INCS= - ######## SQLite3 --DRIVER_LIBS= -L/opt/local/lib -lsqlite3 --DRIVER_INCS= -I/opt/local/include -+#DRIVER_LIBS= -L/opt/local/lib -lsqlite3 -+#DRIVER_INCS= -I/opt/local/include - ######## ODBC - #DRIVER_LIBS= -L/usr/local/lib -lodbc - #DRIVER_INCS= -DUNIXODBC -I/usr/local/include - - WARN= -Wall -Wmissing-prototypes -Wmissing-declarations -ansi -pedantic - INCS= -I$(LUA_INC) --CFLAGS= -O2 $(WARN) -I$(COMPAT_DIR) $(DRIVER_INCS) $(INCS) $(DEFS) --CC= gcc -+CFLAGS+=$(WARN) -I$(COMPAT_DIR) $(DRIVER_INCS) $(INCS) $(DEFS) -+CC?= gcc - - # $Id: config,v 1.8 2007/10/27 22:55:27 carregal Exp $ diff --git a/databases/luasql-mysql/files/patch-src-ls_mysql.c b/databases/luasql-mysql/files/patch-src-ls_mysql.c deleted file mode 100644 index 7fea9cea0b5b..000000000000 --- a/databases/luasql-mysql/files/patch-src-ls_mysql.c +++ /dev/null @@ -1,87 +0,0 @@ ---- 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[] = { diff --git a/databases/luasql-mysql/files/patch-src-ls_sqlite3.c b/databases/luasql-mysql/files/patch-src-ls_sqlite3.c deleted file mode 100644 index 8fe6fffc879d..000000000000 --- a/databases/luasql-mysql/files/patch-src-ls_sqlite3.c +++ /dev/null @@ -1,906 +0,0 @@ ---- src/ls_sqlite3.c 2007/10/16 15:36:08 1.7 -+++ src/ls_sqlite3.c 2008/04/24 17:37:45 1.10 -@@ -28,27 +28,28 @@ - - typedef struct - { -- short closed; -+ short closed; - } env_data; - - - typedef struct - { -- short closed; -- int env; /* reference to environment */ -- short auto_commit; /* 0 for manual commit */ -- unsigned int cur_counter; -- sqlite3 *sql_conn; -+ short closed; -+ int env; /* reference to environment */ -+ short auto_commit; /* 0 for manual commit */ -+ unsigned int cur_counter; -+ sqlite3 *sql_conn; - } conn_data; - - - typedef struct - { -- short closed; -- int conn; /* reference to connection */ -- int numcols; /* number of columns */ -- int colnames, coltypes; /* reference to column information tables */ -- sqlite3_stmt *sql_vm; -+ short closed; -+ int conn; /* reference to connection */ -+ int numcols; /* number of columns */ -+ int colnames, coltypes; /* reference to column information tables */ -+ conn_data *conn_data; /* reference to connection for cursor */ -+ sqlite3_stmt *sql_vm; - } cur_data; - - LUASQL_API int luaopen_luasql_sqlite3(lua_State *L); -@@ -58,10 +59,10 @@ LUASQL_API int luaopen_luasql_sqlite3(lu - ** Check for valid environment. - */ - static env_data *getenvironment(lua_State *L) { -- env_data *env = (env_data *)luaL_checkudata(L, 1, LUASQL_ENVIRONMENT_SQLITE); -- luaL_argcheck(L, env != NULL, 1, LUASQL_PREFIX"environment expected"); -- luaL_argcheck(L, !env->closed, 1, LUASQL_PREFIX"environment is closed"); -- return env; -+ env_data *env = (env_data *)luaL_checkudata(L, 1, LUASQL_ENVIRONMENT_SQLITE); -+ luaL_argcheck(L, env != NULL, 1, LUASQL_PREFIX"environment expected"); -+ luaL_argcheck(L, !env->closed, 1, LUASQL_PREFIX"environment is closed"); -+ return env; - } - - -@@ -69,10 +70,10 @@ static env_data *getenvironment(lua_Stat - ** Check for valid connection. - */ - static conn_data *getconnection(lua_State *L) { -- conn_data *conn = (conn_data *)luaL_checkudata (L, 1, LUASQL_CONNECTION_SQLITE); -- luaL_argcheck(L, conn != NULL, 1, LUASQL_PREFIX"connection expected"); -- luaL_argcheck(L, !conn->closed, 1, LUASQL_PREFIX"connection is closed"); -- return conn; -+ conn_data *conn = (conn_data *)luaL_checkudata (L, 1, LUASQL_CONNECTION_SQLITE); -+ luaL_argcheck(L, conn != NULL, 1, LUASQL_PREFIX"connection expected"); -+ luaL_argcheck(L, !conn->closed, 1, LUASQL_PREFIX"connection is closed"); -+ return conn; - } - - -@@ -80,10 +81,10 @@ static conn_data *getconnection(lua_Stat - ** Check for valid cursor. - */ - static cur_data *getcursor(lua_State *L) { -- cur_data *cur = (cur_data *)luaL_checkudata (L, 1, LUASQL_CURSOR_SQLITE); -- luaL_argcheck(L, cur != NULL, 1, LUASQL_PREFIX"cursor expected"); -- luaL_argcheck(L, !cur->closed, 1, LUASQL_PREFIX"cursor is closed"); -- return cur; -+ cur_data *cur = (cur_data *)luaL_checkudata (L, 1, LUASQL_CURSOR_SQLITE); -+ luaL_argcheck(L, cur != NULL, 1, LUASQL_PREFIX"cursor expected"); -+ luaL_argcheck(L, !cur->closed, 1, LUASQL_PREFIX"cursor is closed"); -+ return cur; - } - - /* -@@ -91,80 +92,105 @@ static cur_data *getcursor(lua_State *L) - ** Return nil + errmsg or nil in case of sucess - */ - static int finalize(lua_State *L, cur_data *cur) { -- const char *errmsg; -- if (sqlite3_finalize(cur->sql_vm) != SQLITE_OK) -+ const char *errmsg; -+ if (sqlite3_finalize(cur->sql_vm) != SQLITE_OK) - { -- errmsg = sqlite3_errmsg(sqlite3_db_handle(cur->sql_vm)); -- cur->sql_vm = NULL; -- lua_pushnil(L); -- lua_pushliteral(L, LUASQL_PREFIX); -- lua_pushstring(L, errmsg); -- lua_concat(L, 2); -- return 2; -+ errmsg = sqlite3_errmsg(cur->conn_data->sql_conn); -+ cur->sql_vm = NULL; -+ lua_pushnil(L); -+ lua_pushliteral(L, LUASQL_PREFIX); -+ lua_pushstring(L, errmsg); -+ lua_concat(L, 2); -+ return 2; - } -- cur->sql_vm = NULL; -- lua_pushnil(L); -- return 1; -+ cur->sql_vm = NULL; -+ lua_pushnil(L); -+ return 1; - } - - -+static void push_column(lua_State *L, sqlite3_stmt *vm, int column) { -+ switch (sqlite3_column_type(vm, column)) { -+ case SQLITE_INTEGER: -+ lua_pushinteger(L, sqlite3_column_int64(vm, column)); -+ break; -+ case SQLITE_FLOAT: -+ lua_pushnumber(L, sqlite3_column_double(vm, column)); -+ break; -+ case SQLITE_TEXT: -+ lua_pushlstring(L, sqlite3_column_text(vm, column), -+ sqlite3_column_bytes(vm, column)); -+ break; -+ case SQLITE_BLOB: -+ lua_pushlstring(L, sqlite3_column_blob(vm, column), -+ sqlite3_column_bytes(vm, column)); -+ break; -+ case SQLITE_NULL: -+ lua_pushnil(L); -+ break; -+ default: -+ luaL_error(L, LUASQL_PREFIX"Unrecognized column type"); -+ break; -+ } -+} -+ - /* - ** Get another row of the given cursor. - */ - static int cur_fetch (lua_State *L) { -- cur_data *cur = getcursor(L); -- sqlite3_stmt *vm = cur->sql_vm; -- int res; -+ cur_data *cur = getcursor(L); -+ sqlite3_stmt *vm = cur->sql_vm; -+ int res; - -- if (vm == NULL) -- return 0; -+ if (vm == NULL) -+ return 0; - -- res = sqlite3_step(vm); -+ res = sqlite3_step(vm); - -- /* no more results? */ -- if (res == SQLITE_DONE) -- return finalize(L, cur); -+ /* no more results? */ -+ if (res == SQLITE_DONE) -+ return finalize(L, cur); - -- if (res != SQLITE_ROW) -- return finalize(L, cur); -+ if (res != SQLITE_ROW) -+ return finalize(L, cur); - -- if (lua_istable (L, 2)) -+ if (lua_istable (L, 2)) - { -- int i; -- const char *opts = luaL_optstring(L, 3, "n"); -+ int i; -+ const char *opts = luaL_optstring(L, 3, "n"); - -- if (strchr(opts, 'n') != NULL) -+ if (strchr(opts, 'n') != NULL) - { -- /* Copy values to numerical indices */ -- for (i = 0; i < cur->numcols;) -+ /* Copy values to numerical indices */ -+ for (i = 0; i < cur->numcols;) - { -- lua_pushstring(L, (const char *)sqlite3_column_text(vm, i)); -- lua_rawseti(L, 2, ++i); -- } -+ push_column(L, vm, i); -+ lua_rawseti(L, 2, ++i); -+ } - } -- if (strchr(opts, 'a') != NULL) -+ if (strchr(opts, 'a') != NULL) - { -- /* Copy values to alphanumerical indices */ -- lua_rawgeti(L, LUA_REGISTRYINDEX, cur->colnames); -+ /* Copy values to alphanumerical indices */ -+ lua_rawgeti(L, LUA_REGISTRYINDEX, cur->colnames); - -- for (i = 0; i < cur->numcols; i++) -+ for (i = 0; i < cur->numcols; i++) - { -- lua_rawgeti(L, -1, i+1); -- lua_pushstring(L, (const char*)sqlite3_column_text(vm,i)); -- lua_rawset (L, 2); -- } -+ lua_rawgeti(L, -1, i+1); -+ push_column(L, vm, i); -+ lua_rawset (L, 2); -+ } - } -- lua_pushvalue(L, 2); -- return 1; /* return table */ -- } -- else -- { -- int i; -- luaL_checkstack (L, cur->numcols, LUASQL_PREFIX"too many columns"); -- for (i = 0; i < cur->numcols; ++i) -- lua_pushstring(L, (const char *)sqlite3_column_text(vm, i)); -- return cur->numcols; /* return #numcols values */ -- } -+ lua_pushvalue(L, 2); -+ return 1; /* return table */ -+ } -+ else -+ { -+ int i; -+ luaL_checkstack (L, cur->numcols, LUASQL_PREFIX"too many columns"); -+ for (i = 0; i < cur->numcols; ++i) -+ push_column(L, vm, i); -+ return cur->numcols; /* return #numcols values */ -+ } - } - - -@@ -174,28 +200,28 @@ static int cur_fetch (lua_State *L) { - */ - static int cur_close(lua_State *L) - { -- conn_data *conn; -- cur_data *cur = (cur_data *)luaL_checkudata(L, 1, LUASQL_CURSOR_SQLITE); -- luaL_argcheck(L, cur != NULL, 1, LUASQL_PREFIX"cursor expected"); -- if (cur->closed) { -- lua_pushboolean(L, 0); -- return 1; -- } -- -- /* Nullify structure fields. */ -- cur->closed = 1; -- sqlite3_finalize(cur->sql_vm); -- /* Decrement cursor counter on connection object */ -- lua_rawgeti (L, LUA_REGISTRYINDEX, cur->conn); -- conn = lua_touserdata (L, -1); -- conn->cur_counter--; -- -- luaL_unref(L, LUA_REGISTRYINDEX, cur->conn); -- luaL_unref(L, LUA_REGISTRYINDEX, cur->colnames); -- luaL_unref(L, LUA_REGISTRYINDEX, cur->coltypes); -+ conn_data *conn; -+ cur_data *cur = (cur_data *)luaL_checkudata(L, 1, LUASQL_CURSOR_SQLITE); -+ luaL_argcheck(L, cur != NULL, 1, LUASQL_PREFIX"cursor expected"); -+ if (cur->closed) { -+ lua_pushboolean(L, 0); -+ return 1; -+ } - -- lua_pushboolean(L, 1); -- return 1; -+ /* Nullify structure fields. */ -+ cur->closed = 1; -+ sqlite3_finalize(cur->sql_vm); -+ /* Decrement cursor counter on connection object */ -+ lua_rawgeti (L, LUA_REGISTRYINDEX, cur->conn); -+ conn = lua_touserdata (L, -1); -+ conn->cur_counter--; -+ -+ luaL_unref(L, LUA_REGISTRYINDEX, cur->conn); -+ luaL_unref(L, LUA_REGISTRYINDEX, cur->colnames); -+ luaL_unref(L, LUA_REGISTRYINDEX, cur->coltypes); -+ -+ lua_pushboolean(L, 1); -+ return 1; - } - - -@@ -204,9 +230,9 @@ static int cur_close(lua_State *L) - */ - static int cur_getcolnames(lua_State *L) - { -- cur_data *cur = getcursor(L); -- lua_rawgeti(L, LUA_REGISTRYINDEX, cur->colnames); -- return 1; -+ cur_data *cur = getcursor(L); -+ lua_rawgeti(L, LUA_REGISTRYINDEX, cur->colnames); -+ return 1; - } - - -@@ -215,9 +241,9 @@ static int cur_getcolnames(lua_State *L) - */ - static int cur_getcoltypes(lua_State *L) - { -- cur_data *cur = getcursor(L); -- lua_rawgeti(L, LUA_REGISTRYINDEX, cur->coltypes); -- return 1; -+ cur_data *cur = getcursor(L); -+ lua_rawgeti(L, LUA_REGISTRYINDEX, cur->coltypes); -+ return 1; - } - - -@@ -225,47 +251,48 @@ static int cur_getcoltypes(lua_State *L) - ** Create a new Cursor object and push it on top of the stack. - */ - /* static int create_cursor(lua_State *L, int conn, sqlite3_stmt *sql_vm, -- int numcols, const char **row, const char **col_info)*/ -+ int numcols, const char **row, const char **col_info)*/ - static int create_cursor(lua_State *L, int o, conn_data *conn, -- sqlite3_stmt *sql_vm, int numcols) -+ sqlite3_stmt *sql_vm, int numcols) - { -- int i; -- cur_data *cur = (cur_data*)lua_newuserdata(L, sizeof(cur_data)); -- luasql_setmeta (L, LUASQL_CURSOR_SQLITE); -- -- /* increment cursor count for the connection creating this cursor */ -- conn->cur_counter++; -- -- /* fill in structure */ -- cur->closed = 0; -- cur->conn = LUA_NOREF; -- cur->numcols = numcols; -- cur->colnames = LUA_NOREF; -- cur->coltypes = LUA_NOREF; -- cur->sql_vm = sql_vm; -- -- lua_pushvalue(L, o); -- cur->conn = luaL_ref(L, LUA_REGISTRYINDEX); -- -- /* create table with column names */ -- lua_newtable(L); -- for (i = 0; i < numcols;) -+ int i; -+ cur_data *cur = (cur_data*)lua_newuserdata(L, sizeof(cur_data)); -+ luasql_setmeta (L, LUASQL_CURSOR_SQLITE); -+ -+ /* increment cursor count for the connection creating this cursor */ -+ conn->cur_counter++; -+ -+ /* fill in structure */ -+ cur->closed = 0; -+ cur->conn = LUA_NOREF; -+ cur->numcols = numcols; -+ cur->colnames = LUA_NOREF; -+ cur->coltypes = LUA_NOREF; -+ cur->sql_vm = sql_vm; -+ cur->conn_data = conn; -+ -+ lua_pushvalue(L, o); -+ cur->conn = luaL_ref(L, LUA_REGISTRYINDEX); -+ -+ /* create table with column names */ -+ lua_newtable(L); -+ for (i = 0; i < numcols;) - { -- lua_pushstring(L, sqlite3_column_name(sql_vm, i)); -- lua_rawseti(L, -2, ++i); -+ lua_pushstring(L, sqlite3_column_name(sql_vm, i)); -+ lua_rawseti(L, -2, ++i); - } -- cur->colnames = luaL_ref(L, LUA_REGISTRYINDEX); -- -- /* create table with column types */ -- lua_newtable(L); -- for (i = 0; i < numcols;) -+ cur->colnames = luaL_ref(L, LUA_REGISTRYINDEX); -+ -+ /* create table with column types */ -+ lua_newtable(L); -+ for (i = 0; i < numcols;) - { -- lua_pushstring(L, sqlite3_column_decltype(sql_vm, i)); -- lua_rawseti(L, -2, ++i); -+ lua_pushstring(L, sqlite3_column_decltype(sql_vm, i)); -+ lua_rawseti(L, -2, ++i); - } -- cur->coltypes = luaL_ref(L, LUA_REGISTRYINDEX); -+ cur->coltypes = luaL_ref(L, LUA_REGISTRYINDEX); - -- return 1; -+ return 1; - } - - -@@ -274,39 +301,39 @@ static int create_cursor(lua_State *L, i - */ - static int conn_close(lua_State *L) - { -- conn_data *conn = (conn_data *)luaL_checkudata(L, 1, LUASQL_CONNECTION_SQLITE); -- luaL_argcheck (L, conn != NULL, 1, LUASQL_PREFIX"connection expected"); -- if (conn->closed) -- { -- lua_pushboolean(L, 0); -- return 1; -- } -- -- if (conn->cur_counter > 0) -- return luaL_error (L, LUASQL_PREFIX"there are open cursors"); -- -- /* Nullify structure fields. */ -- conn->closed = 1; -- luaL_unref(L, LUA_REGISTRYINDEX, conn->env); -- sqlite3_close(conn->sql_conn); -- lua_pushboolean(L, 1); -- return 1; -+ conn_data *conn = (conn_data *)luaL_checkudata(L, 1, LUASQL_CONNECTION_SQLITE); -+ luaL_argcheck (L, conn != NULL, 1, LUASQL_PREFIX"connection expected"); -+ if (conn->closed) -+ { -+ lua_pushboolean(L, 0); -+ return 1; -+ } -+ -+ if (conn->cur_counter > 0) -+ return luaL_error (L, LUASQL_PREFIX"there are open cursors"); -+ -+ /* Nullify structure fields. */ -+ conn->closed = 1; -+ luaL_unref(L, LUA_REGISTRYINDEX, conn->env); -+ sqlite3_close(conn->sql_conn); -+ lua_pushboolean(L, 1); -+ return 1; - } - - static int conn_escape(lua_State *L) - { -- const char *from = luaL_checklstring (L, 2, 0); -- char *escaped = sqlite3_mprintf("%q", from); -- if (escaped == NULL) -+ const char *from = luaL_checklstring (L, 2, 0); -+ char *escaped = sqlite3_mprintf("%q", from); -+ if (escaped == NULL) - { -- lua_pushnil(L); -+ lua_pushnil(L); - } -- else -+ else - { -- lua_pushstring(L, escaped); -- sqlite3_free(escaped); -+ lua_pushstring(L, escaped); -+ sqlite3_free(escaped); - } -- return 1; -+ return 1; - } - - /* -@@ -316,52 +343,52 @@ static int conn_escape(lua_State *L) - */ - static int conn_execute(lua_State *L) - { -- conn_data *conn = getconnection(L); -- const char *statement = luaL_checkstring(L, 2); -- int res; -- sqlite3_stmt *vm; -- const char *errmsg; -- int numcols; -- const char *tail; -- -- res = sqlite3_prepare(conn->sql_conn, statement, -1, &vm, &tail); -- if (res != SQLITE_OK) -- { -- errmsg = sqlite3_errmsg(conn->sql_conn); -- lua_pushnil(L); -- lua_pushliteral(L, LUASQL_PREFIX); -- lua_pushstring(L, errmsg); -- lua_concat(L, 2); -- return 2; -- } -- -- /* process first result to retrive query information and type */ -- res = sqlite3_step(vm); -- numcols = sqlite3_column_count(vm); -- -- /* real query? if empty, must have numcols!=0 */ -- if ((res == SQLITE_ROW) || ((res == SQLITE_DONE) && numcols)) -- { -- sqlite3_reset(vm); -- return create_cursor(L, 1, conn, vm, numcols); -- } -- -- if (res == SQLITE_DONE) /* and numcols==0, INSERT,UPDATE,DELETE statement */ -- { -- sqlite3_finalize(vm); -- /* return number of columns changed */ -- lua_pushnumber(L, sqlite3_changes(conn->sql_conn)); -- return 1; -- } -- -- /* error */ -- errmsg = sqlite3_errmsg(sqlite3_db_handle(vm)); -- sqlite3_finalize(vm); -- lua_pushnil(L); -- lua_pushliteral(L, LUASQL_PREFIX); -- lua_pushstring(L, errmsg); -- lua_concat(L, 2); -- return 2; -+ conn_data *conn = getconnection(L); -+ const char *statement = luaL_checkstring(L, 2); -+ int res; -+ sqlite3_stmt *vm; -+ const char *errmsg; -+ int numcols; -+ const char *tail; -+ -+ res = sqlite3_prepare(conn->sql_conn, statement, -1, &vm, &tail); -+ if (res != SQLITE_OK) -+ { -+ errmsg = sqlite3_errmsg(conn->sql_conn); -+ lua_pushnil(L); -+ lua_pushliteral(L, LUASQL_PREFIX); -+ lua_pushstring(L, errmsg); -+ lua_concat(L, 2); -+ return 2; -+ } -+ -+ /* process first result to retrive query information and type */ -+ res = sqlite3_step(vm); -+ numcols = sqlite3_column_count(vm); -+ -+ /* real query? if empty, must have numcols!=0 */ -+ if ((res == SQLITE_ROW) || ((res == SQLITE_DONE) && numcols)) -+ { -+ sqlite3_reset(vm); -+ return create_cursor(L, 1, conn, vm, numcols); -+ } -+ -+ if (res == SQLITE_DONE) /* and numcols==0, INSERT,UPDATE,DELETE statement */ -+ { -+ sqlite3_finalize(vm); -+ /* return number of columns changed */ -+ lua_pushnumber(L, sqlite3_changes(conn->sql_conn)); -+ return 1; -+ } -+ -+ /* error */ -+ errmsg = sqlite3_errmsg(conn->sql_conn); -+ sqlite3_finalize(vm); -+ lua_pushnil(L); -+ lua_pushliteral(L, LUASQL_PREFIX); -+ lua_pushstring(L, errmsg); -+ lua_concat(L, 2); -+ return 2; - } - - -@@ -370,26 +397,26 @@ static int conn_execute(lua_State *L) - */ - static int conn_commit(lua_State *L) - { -- char *errmsg; -- conn_data *conn = getconnection(L); -- int res; -- const char *sql = "COMMIT"; -- -- if (conn->auto_commit == 0) sql = "COMMIT;BEGIN"; -- -- res = sqlite3_exec(conn->sql_conn, sql, NULL, NULL, &errmsg); -- -- if (res != SQLITE_OK) -- { -- lua_pushnil(L); -- lua_pushliteral(L, LUASQL_PREFIX); -- lua_pushstring(L, errmsg); -- sqlite3_free(errmsg); -- lua_concat(L, 2); -- return 2; -+ char *errmsg; -+ conn_data *conn = getconnection(L); -+ int res; -+ const char *sql = "COMMIT"; -+ -+ if (conn->auto_commit == 0) sql = "COMMIT;BEGIN"; -+ -+ res = sqlite3_exec(conn->sql_conn, sql, NULL, NULL, &errmsg); -+ -+ if (res != SQLITE_OK) -+ { -+ lua_pushnil(L); -+ lua_pushliteral(L, LUASQL_PREFIX); -+ lua_pushstring(L, errmsg); -+ sqlite3_free(errmsg); -+ lua_concat(L, 2); -+ return 2; - } -- lua_pushboolean(L, 1); -- return 1; -+ lua_pushboolean(L, 1); -+ return 1; - } - - -@@ -398,25 +425,25 @@ static int conn_commit(lua_State *L) - */ - static int conn_rollback(lua_State *L) - { -- char *errmsg; -- conn_data *conn = getconnection(L); -- int res; -- const char *sql = "ROLLBACK"; -- -- if (conn->auto_commit == 0) sql = "ROLLBACK;BEGIN"; -- -- res = sqlite3_exec(conn->sql_conn, sql, NULL, NULL, &errmsg); -- if (res != SQLITE_OK) -- { -- lua_pushnil(L); -- lua_pushliteral(L, LUASQL_PREFIX); -- lua_pushstring(L, errmsg); -- sqlite3_free(errmsg); -- lua_concat(L, 2); -- return 2; -+ char *errmsg; -+ conn_data *conn = getconnection(L); -+ int res; -+ const char *sql = "ROLLBACK"; -+ -+ if (conn->auto_commit == 0) sql = "ROLLBACK;BEGIN"; -+ -+ res = sqlite3_exec(conn->sql_conn, sql, NULL, NULL, &errmsg); -+ if (res != SQLITE_OK) -+ { -+ lua_pushnil(L); -+ lua_pushliteral(L, LUASQL_PREFIX); -+ lua_pushstring(L, errmsg); -+ sqlite3_free(errmsg); -+ lua_concat(L, 2); -+ return 2; - } -- lua_pushboolean(L, 1); -- return 1; -+ lua_pushboolean(L, 1); -+ return 1; - } - - static int conn_getlastautoid(lua_State *L) -@@ -434,30 +461,30 @@ static int conn_getlastautoid(lua_State - */ - static int conn_setautocommit(lua_State *L) - { -- conn_data *conn = getconnection(L); -- if (lua_toboolean(L, 2)) -+ conn_data *conn = getconnection(L); -+ if (lua_toboolean(L, 2)) -+ { -+ conn->auto_commit = 1; -+ /* undo active transaction - ignore errors */ -+ sqlite3_exec(conn->sql_conn, "ROLLBACK", NULL, NULL, NULL); -+ } -+ else - { -- conn->auto_commit = 1; -- /* undo active transaction - ignore errors */ -- sqlite3_exec(conn->sql_conn, "ROLLBACK", NULL, NULL, NULL); -- } -- else -- { -- char *errmsg; -- int res; -- conn->auto_commit = 0; -- res = sqlite3_exec(conn->sql_conn, "BEGIN", NULL, NULL, &errmsg); -- if (res != SQLITE_OK) -+ char *errmsg; -+ int res; -+ conn->auto_commit = 0; -+ res = sqlite3_exec(conn->sql_conn, "BEGIN", NULL, NULL, &errmsg); -+ if (res != SQLITE_OK) - { -- lua_pushliteral(L, LUASQL_PREFIX); -- lua_pushstring(L, errmsg); -- sqlite3_free(errmsg); -- lua_concat(L, 2); -- lua_error(L); -+ lua_pushliteral(L, LUASQL_PREFIX); -+ lua_pushstring(L, errmsg); -+ sqlite3_free(errmsg); -+ lua_concat(L, 2); -+ lua_error(L); - } -- } -- lua_pushboolean(L, 1); -- return 1; -+ } -+ lua_pushboolean(L, 1); -+ return 1; - } - - -@@ -466,18 +493,18 @@ static int conn_setautocommit(lua_State - */ - static int create_connection(lua_State *L, int env, sqlite3 *sql_conn) - { -- conn_data *conn = (conn_data*)lua_newuserdata(L, sizeof(conn_data)); -- luasql_setmeta(L, LUASQL_CONNECTION_SQLITE); -+ conn_data *conn = (conn_data*)lua_newuserdata(L, sizeof(conn_data)); -+ luasql_setmeta(L, LUASQL_CONNECTION_SQLITE); - -- /* fill in structure */ -- conn->closed = 0; -- conn->env = LUA_NOREF; -- conn->auto_commit = 1; -- conn->sql_conn = sql_conn; -- conn->cur_counter = 0; -- lua_pushvalue (L, env); -- conn->env = luaL_ref (L, LUA_REGISTRYINDEX); -- return 1; -+ /* fill in structure */ -+ conn->closed = 0; -+ conn->env = LUA_NOREF; -+ conn->auto_commit = 1; -+ conn->sql_conn = sql_conn; -+ conn->cur_counter = 0; -+ lua_pushvalue (L, env); -+ conn->env = luaL_ref (L, LUA_REGISTRYINDEX); -+ return 1; - } - - -@@ -486,24 +513,24 @@ static int create_connection(lua_State * - */ - static int env_connect(lua_State *L) - { -- const char *sourcename; -- sqlite3 *conn; -- const char *errmsg; -- int res; -- getenvironment(L); /* validate environment */ -- sourcename = luaL_checkstring(L, 2); -- res = sqlite3_open(sourcename, &conn); -- if (res != SQLITE_OK) -- { -- errmsg = sqlite3_errmsg(conn); -- lua_pushnil(L); -- lua_pushliteral(L, LUASQL_PREFIX); -- lua_pushstring(L, errmsg); -- lua_concat(L, 2); -- sqlite3_close(conn); -- return 2; -+ const char *sourcename; -+ sqlite3 *conn; -+ const char *errmsg; -+ int res; -+ getenvironment(L); /* validate environment */ -+ sourcename = luaL_checkstring(L, 2); -+ res = sqlite3_open(sourcename, &conn); -+ if (res != SQLITE_OK) -+ { -+ errmsg = sqlite3_errmsg(conn); -+ lua_pushnil(L); -+ lua_pushliteral(L, LUASQL_PREFIX); -+ lua_pushstring(L, errmsg); -+ lua_concat(L, 2); -+ sqlite3_close(conn); -+ return 2; - } -- return create_connection(L, 1, conn); -+ return create_connection(L, 1, conn); - } - - -@@ -512,16 +539,16 @@ static int env_connect(lua_State *L) - */ - static int env_close (lua_State *L) - { -- env_data *env = (env_data *)luaL_checkudata(L, 1, LUASQL_ENVIRONMENT_SQLITE); -- luaL_argcheck(L, env != NULL, 1, LUASQL_PREFIX"environment expected"); -- if (env->closed) { -- lua_pushboolean(L, 0); -- return 1; -- } -- -- env->closed = 1; -- lua_pushboolean(L, 1); -- return 1; -+ env_data *env = (env_data *)luaL_checkudata(L, 1, LUASQL_ENVIRONMENT_SQLITE); -+ luaL_argcheck(L, env != NULL, 1, LUASQL_PREFIX"environment expected"); -+ if (env->closed) { -+ lua_pushboolean(L, 0); -+ return 1; -+ } -+ -+ env->closed = 1; -+ lua_pushboolean(L, 1); -+ return 1; - } - - -@@ -531,32 +558,32 @@ static int env_close (lua_State *L) - */ - static void create_metatables (lua_State *L) - { -- struct luaL_reg environment_methods[] = { -- {"close", env_close}, -- {"connect", env_connect}, -- {NULL, NULL}, -- }; -- struct luaL_reg connection_methods[] = { -- {"close", conn_close}, -- {"escape", conn_escape}, -- {"execute", conn_execute}, -- {"commit", conn_commit}, -- {"rollback", conn_rollback}, -- {"setautocommit", conn_setautocommit}, -- {"getlastautoid", conn_getlastautoid}, -- {NULL, NULL}, -- }; -- struct luaL_reg cursor_methods[] = { -- {"close", cur_close}, -- {"getcolnames", cur_getcolnames}, -- {"getcoltypes", cur_getcoltypes}, -- {"fetch", cur_fetch}, -- {NULL, NULL}, -- }; -- luasql_createmeta(L, LUASQL_ENVIRONMENT_SQLITE, environment_methods); -- luasql_createmeta(L, LUASQL_CONNECTION_SQLITE, connection_methods); -- luasql_createmeta(L, LUASQL_CURSOR_SQLITE, cursor_methods); -- lua_pop (L, 3); -+ struct luaL_reg environment_methods[] = { -+ {"close", env_close}, -+ {"connect", env_connect}, -+ {NULL, NULL}, -+ }; -+ struct luaL_reg connection_methods[] = { -+ {"close", conn_close}, -+ {"escape", conn_escape}, -+ {"execute", conn_execute}, -+ {"commit", conn_commit}, -+ {"rollback", conn_rollback}, -+ {"setautocommit", conn_setautocommit}, -+ {"getlastautoid", conn_getlastautoid}, -+ {NULL, NULL}, -+ }; -+ struct luaL_reg cursor_methods[] = { -+ {"close", cur_close}, -+ {"getcolnames", cur_getcolnames}, -+ {"getcoltypes", cur_getcoltypes}, -+ {"fetch", cur_fetch}, -+ {NULL, NULL}, -+ }; -+ luasql_createmeta(L, LUASQL_ENVIRONMENT_SQLITE, environment_methods); -+ luasql_createmeta(L, LUASQL_CONNECTION_SQLITE, connection_methods); -+ luasql_createmeta(L, LUASQL_CURSOR_SQLITE, cursor_methods); -+ lua_pop (L, 3); - } - - /* -@@ -564,12 +591,12 @@ static void create_metatables (lua_State - */ - static int create_environment (lua_State *L) - { -- env_data *env = (env_data *)lua_newuserdata(L, sizeof(env_data)); -- luasql_setmeta(L, LUASQL_ENVIRONMENT_SQLITE); -+ env_data *env = (env_data *)lua_newuserdata(L, sizeof(env_data)); -+ luasql_setmeta(L, LUASQL_ENVIRONMENT_SQLITE); - -- /* fill in structure */ -- env->closed = 0; -- return 1; -+ /* fill in structure */ -+ env->closed = 0; -+ return 1; - } - - -@@ -579,12 +606,12 @@ static int create_environment (lua_State - */ - LUASQL_API int luaopen_luasql_sqlite3(lua_State *L) - { -- struct luaL_reg driver[] = { -- {"sqlite3", create_environment}, -- {NULL, NULL}, -- }; -- create_metatables (L); -- luaL_openlib (L, LUASQL_TABLENAME, driver, 0); -- luasql_set_info (L); -- return 1; -+ struct luaL_reg driver[] = { -+ {"sqlite3", create_environment}, -+ {NULL, NULL}, -+ }; -+ create_metatables (L); -+ luaL_openlib (L, LUASQL_TABLENAME, driver, 0); -+ luasql_set_info (L); -+ return 1; - } |