aboutsummaryrefslogtreecommitdiff
path: root/databases/luasql-mysql
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2014-01-13 10:43:51 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2014-01-13 10:43:51 +0000
commitf208e06c695febcb6cd60ac7c20ba512376abc4c (patch)
tree5ac1d4ad2162f4516a6b0b43eb1c2730397e232f /databases/luasql-mysql
parentd334c5a76f97fe8e574302acccc263f99433eadc (diff)
downloadports-f208e06c695febcb6cd60ac7c20ba512376abc4c.tar.gz
ports-f208e06c695febcb6cd60ac7c20ba512376abc4c.zip
Notes
Diffstat (limited to 'databases/luasql-mysql')
-rw-r--r--databases/luasql-mysql/Makefile31
-rw-r--r--databases/luasql-mysql/distinfo4
-rw-r--r--databases/luasql-mysql/files/patch-Makefile11
-rw-r--r--databases/luasql-mysql/files/patch-config57
-rw-r--r--databases/luasql-mysql/files/patch-src-ls_mysql.c87
-rw-r--r--databases/luasql-mysql/files/patch-src-ls_sqlite3.c906
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;
- }