From ocaml-sqlite3-port@kotka.de  Mon Feb 27 23:52:46 2006
Return-Path: <ocaml-sqlite3-port@kotka.de>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id E0AC416A420
	for <FreeBSD-gnats-submit@freebsd.org>; Mon, 27 Feb 2006 23:52:45 +0000 (GMT)
	(envelope-from ocaml-sqlite3-port@kotka.de)
Received: from rohrpostix.kotka.de (vs247120.vserver.de [62.75.247.120])
	by mx1.FreeBSD.org (Postfix) with SMTP id C0A7243D46
	for <FreeBSD-gnats-submit@freebsd.org>; Mon, 27 Feb 2006 23:52:44 +0000 (GMT)
	(envelope-from ocaml-sqlite3-port@kotka.de)
Received: (qmail 29536 invoked from network); 27 Feb 2006 23:52:30 -0000
Received: from localhost (127.0.0.1)
  by localhost with SMTP; 27 Feb 2006 23:52:30 -0000
Received: (qmail 84796 invoked by uid 1001); 28 Feb 2006 00:50:00 +0100
Message-Id: <20060227235000.84795.qmail@ceres.kotka.de>
Date: 28 Feb 2006 00:50:00 +0100
From: Meikel Brandmeyer <ocaml-sqlite3-port@kotka.de>
Reply-To: Meikel Brandmeyer <ocaml-sqlite3-port@kotka.de>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: New port: databases/ocaml-sqlite3 OCaml bindings for databases/sqlite3
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         93920
>Category:       ports
>Synopsis:       New port: databases/ocaml-sqlite3 OCaml bindings for databases/sqlite3
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    aaron
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Tue Feb 28 00:00:22 GMT 2006
>Closed-Date:    Mon Jul 24 21:19:56 GMT 2006
>Last-Modified:  Mon Jul 24 21:19:56 GMT 2006
>Originator:     Meikel Brandmeyer
>Release:        FreeBSD 6.0-RELEASE i386
>Organization:
>Environment:
System: FreeBSD ceres.kotka.de 6.0-RELEASE FreeBSD 6.0-RELEASE #0: Thu Nov 3 09:36:13 UTC 2005 root@x64.samsco.home:/usr/obj/usr/src/sys/GENERIC i386


	
>Description:
	OCaml bindings for the SQLite3 database engine.
>How-To-Repeat:
	
>Fix:

	

--- ocaml-sqlite3.shar begins here ---
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	/usr/ports/databases/ocaml-sqlite3
#	/usr/ports/databases/ocaml-sqlite3/files
#	/usr/ports/databases/ocaml-sqlite3/files/patch-sqlite3_stubs.c
#	/usr/ports/databases/ocaml-sqlite3/files/patch-Makefile.in
#	/usr/ports/databases/ocaml-sqlite3/files/pkg-deinstall.in
#	/usr/ports/databases/ocaml-sqlite3/files/pkg-install.in
#	/usr/ports/databases/ocaml-sqlite3/pkg-plist
#	/usr/ports/databases/ocaml-sqlite3/pkg-descr
#	/usr/ports/databases/ocaml-sqlite3/distinfo
#	/usr/ports/databases/ocaml-sqlite3/Makefile
#
echo c - /usr/ports/databases/ocaml-sqlite3
mkdir -p /usr/ports/databases/ocaml-sqlite3 > /dev/null 2>&1
echo c - /usr/ports/databases/ocaml-sqlite3/files
mkdir -p /usr/ports/databases/ocaml-sqlite3/files > /dev/null 2>&1
echo x - /usr/ports/databases/ocaml-sqlite3/files/patch-sqlite3_stubs.c
sed 's/^X//' >/usr/ports/databases/ocaml-sqlite3/files/patch-sqlite3_stubs.c << 'END-of-/usr/ports/databases/ocaml-sqlite3/files/patch-sqlite3_stubs.c'
X--- sqlite3_stubs.c.orig	Mon Feb 27 20:51:46 2006
X+++ sqlite3_stubs.c	Mon Feb 27 23:23:43 2006
X@@ -24,7 +24,10 @@
X 
X #include <stdio.h>
X #include <string.h> 
X+/* FIXME: This should go into configure script. */
X+#if defined(HAVE_ALLOCA_H)
X #include <alloca.h>
X+#endif
X 
X #include <caml/mlvalues.h>
X #include <caml/memory.h>
END-of-/usr/ports/databases/ocaml-sqlite3/files/patch-sqlite3_stubs.c
echo x - /usr/ports/databases/ocaml-sqlite3/files/patch-Makefile.in
sed 's/^X//' >/usr/ports/databases/ocaml-sqlite3/files/patch-Makefile.in << 'END-of-/usr/ports/databases/ocaml-sqlite3/files/patch-Makefile.in'
X--- Makefile.in.orig	Mon Feb 27 21:11:25 2006
X+++ Makefile.in	Mon Feb 27 21:12:12 2006
X@@ -36,7 +36,7 @@
X install: sqlite3.cma sqlite3.cmxa sqlite3top
X 	ocamlfind install sqlite3 META sqlite3.cmi sqlite3.mli sqlite3.cma *.cmxa *.a *.cmx *.so
X 	ocamlfind ocamlmktop -o sqlite3top -package "sqlite3" sqlite3.cma
X-	$(INSTALL) sqlite3top $(bindir)/sqlite3top
X+	$(INSTALL) sqlite3top $(bindir)/ocamlsqlite3
X 
X remove: uninstall
X uninstall:
END-of-/usr/ports/databases/ocaml-sqlite3/files/patch-Makefile.in
echo x - /usr/ports/databases/ocaml-sqlite3/files/pkg-deinstall.in
sed 's/^X//' >/usr/ports/databases/ocaml-sqlite3/files/pkg-deinstall.in << 'END-of-/usr/ports/databases/ocaml-sqlite3/files/pkg-deinstall.in'
X#! /bin/sh
X#
X
Xif [ "x$2" = "xPOST-DEINSTALL" ]; then
X	ldconf="%%PREFIX%%/lib/ocaml/ld.conf"
X
X	cat ${ldconf} | grep -v sqlite3 > ${ldconf}.tmp
X	mv ${ldconf}.tmp ${ldconf}
Xfi
X
Xexit 0
X
END-of-/usr/ports/databases/ocaml-sqlite3/files/pkg-deinstall.in
echo x - /usr/ports/databases/ocaml-sqlite3/files/pkg-install.in
sed 's/^X//' >/usr/ports/databases/ocaml-sqlite3/files/pkg-install.in << 'END-of-/usr/ports/databases/ocaml-sqlite3/files/pkg-install.in'
X#! /bin/sh
X#
X
Xif [ "x$2" = "xPOST-INSTALL" ]; then
X	ldconf="%%PREFIX%%/lib/ocaml/ld.conf"
X
X	echo "%%PREFIX%%/lib/ocaml/site-lib/sqlite3" >> ${ldconf}
Xfi
X
Xexit 0
X
END-of-/usr/ports/databases/ocaml-sqlite3/files/pkg-install.in
echo x - /usr/ports/databases/ocaml-sqlite3/pkg-plist
sed 's/^X//' >/usr/ports/databases/ocaml-sqlite3/pkg-plist << 'END-of-/usr/ports/databases/ocaml-sqlite3/pkg-plist'
Xbin/ocamlsqlite3
Xlib/ocaml/site-lib/sqlite3/dllsqlite3.so
Xlib/ocaml/site-lib/sqlite3/sqlite3.cmx
Xlib/ocaml/site-lib/sqlite3/sqlite3.a
Xlib/ocaml/site-lib/sqlite3/libsqlite3.a
Xlib/ocaml/site-lib/sqlite3/sqlite3.cmxa
Xlib/ocaml/site-lib/sqlite3/sqlite3.cma
Xlib/ocaml/site-lib/sqlite3/sqlite3.mli
Xlib/ocaml/site-lib/sqlite3/sqlite3.cmi
Xlib/ocaml/site-lib/sqlite3/META
X@dirrm lib/ocaml/site-lib/sqlite3
X@unexec ocamlfind remove sqlite3 2> /dev/null || true
X@unexec cat %%PREFIX%%/lib/ocaml/ld.conf | grep -v sqlite3 > %%PREFIX%%/lib/ocaml/ld.conf.tmp && mv %%PREFIX%%/lib/ocaml/ld.conf.tmp %%PREFIX%%/lib/ocaml/ld.conf
END-of-/usr/ports/databases/ocaml-sqlite3/pkg-plist
echo x - /usr/ports/databases/ocaml-sqlite3/pkg-descr
sed 's/^X//' >/usr/ports/databases/ocaml-sqlite3/pkg-descr << 'END-of-/usr/ports/databases/ocaml-sqlite3/pkg-descr'
XSqlite3 bindings for Objective Caml
X
XCopyright (c) 2005 Christian Szegedy <csdontdpam871@metamatix.org>
X
XSqlite 3 database library wrapper for ocaml.
XSqlite 3 is available from http://www.sqlite.org 
XThis wrapper is written in a way that enables a friendly 
Xcoexistence with the old (version 2) sqlite and its
Xocaml wrapper ocaml-sqlite.
X
XWWW: http://metamatix.org/~ocaml/
END-of-/usr/ports/databases/ocaml-sqlite3/pkg-descr
echo x - /usr/ports/databases/ocaml-sqlite3/distinfo
sed 's/^X//' >/usr/ports/databases/ocaml-sqlite3/distinfo << 'END-of-/usr/ports/databases/ocaml-sqlite3/distinfo'
XMD5 (ocaml-sqlite3-0.2.0.tar.bz2) = e1c98f9815f63b50c9868484e17bac97
XSHA256 (ocaml-sqlite3-0.2.0.tar.bz2) = ccdd6c7f7ab60ef6896471bd70a2051f551e028000d26f5ed37757b78f3ad80f
XSIZE (ocaml-sqlite3-0.2.0.tar.bz2) = 41852
END-of-/usr/ports/databases/ocaml-sqlite3/distinfo
echo x - /usr/ports/databases/ocaml-sqlite3/Makefile
sed 's/^X//' >/usr/ports/databases/ocaml-sqlite3/Makefile << 'END-of-/usr/ports/databases/ocaml-sqlite3/Makefile'
X# Ports collection makefile for: ocaml-sqlite3
X# Date created: 27th February 2006
X# Whom: "Meikel Brandmeyer" <ocaml-sqlite3-port@kotka.de>
X#
X# $FreeBSD$
X#
X
XPORTNAME=	sqlite3
XPORTVERSION=	0.2.0
XCATEGORIES=	databases
XMASTER_SITES=	http://metamatix.org/~ocaml/
XPKGNAMEPREFIX=	ocaml-
XDISTNAME=	${PKGNAMEPREFIX}${PORTNAME}-${PORTVERSION}
X
XMAINTAINER=	ocaml-sqlite3-port@kotka.de
XCOMMENT=	OCaml bindings to sqlite3 library
X
XBUILD_DEPENDS=	ocamlc:${PORTSDIR}/lang/ocaml \
X		ocamlfind:${PORTSDIR}/devel/ocaml-findlib
XLIB_DEPENDS=	sqlite3.8:${PORTSDIR}/databases/sqlite3
X
XWRKSRC=		${WRKDIR}/ocaml-sqlite3
X
XGNU_CONFIGURE=	yes
XCONFIGURE_ARGS=	CC="${CC}"\
X		CFLAGS="${CFLAGS}"\
X		CPPFLAGS="-UHAVE_ALLOCA_H -I${PREFIX}/include"\
X		LDFLAGS="-L${PREFIX}/lib"
X
XUSE_BZIP2=	yes
X
XSUB_FILES=	pkg-install pkg-deinstall
X
XDOCSDIR=	${PREFIX}/share/doc/${PKGNAMEPREFIX}${PORTNAME}
XPORTDOCS=	README style.css *.html
X
Xdo-install:
X	@${ECHO_MSG} "==>  Installing port files for ${PKGORIGIN}..."
X	@( cd ${WRKSRC};\
X	   OCAMLFIND_DESTDIR="${PREFIX}/lib/ocaml/site-lib"\
X	   OCAMLFIND_LDCONF="${PREFIX}/lib/ocaml/ld.conf"\
X	   ocamlfind install\
X		sqlite3 META sqlite3.cmi sqlite3.mli sqlite3.cma\
X		*.cmxa *.a *.cmx *.so;\
X	   OCAMLPATH="${PREFIX}/lib/ocaml/site-lib"\
X	   ocamlfind ocamlmktop -o sqlite3top -package "sqlite3" sqlite3.cma;\
X	   ${INSTALL_SCRIPT} sqlite3top ${PREFIX}/bin/ocamlsqlite3 )
X.if !defined(NOPORTDOCS)
X	@${ECHO_MSG} "==>  Installing port documentation for ${PKGORIGIN}..."
X	@${MKDIR} ${DOCSDIR}
X	@( cd ${WRKSRC}; ${INSTALL_DATA} README ${DOCSDIR} )
X	@( cd ${WRKSRC}/doc;\
X	   for f in `${FIND} . -type f -print`; do\
X		${INSTALL_DATA} $${f} ${DOCSDIR};\
X	   done )
X.endif
X
X.include <bsd.port.mk>
END-of-/usr/ports/databases/ocaml-sqlite3/Makefile
exit
--- ocaml-sqlite3.shar ends here ---


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-ports-bugs->aaron 
Responsible-Changed-By: aaron 
Responsible-Changed-When: Sat Jun 3 04:11:29 UTC 2006 
Responsible-Changed-Why:  
I'll take it. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=93920 
State-Changed-From-To: open->feedback 
State-Changed-By: aaron 
State-Changed-When: Sat Jun 3 04:12:40 UTC 2006 
State-Changed-Why:  
Ask for submitter fix. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=93920 

From: Aaron Dalton <aaron@freebsd.org>
To: bug-followup@FreeBSD.org, ocaml-sqlite3-port@kotka.de
Cc:  
Subject: Re: ports/93920: New port: databases/ocaml-sqlite3 OCaml bindings
 for databases/sqlite3
Date: Fri, 02 Jun 2006 22:16:05 -0600

 The shar failed to extract properly.  Please resubmit, this time running 
 the shar command from the *parent* directory.
 
 $ shar `find ocaml-sqlite3` > ocaml-sqlite3.shar
 
 Please verify that everything is working properly by trying to extract 
 it.  Do not open a new PR!  Simply reply to this email.  If you have any 
 questions or problems, please let me know.
 
 Cheers!
 -- 
 Aaron Dalton
 aaron@FreeBSD.org
 FreeBSD Ports Committer

From: Aaron Dalton <aaron@freebsd.org>
To: bug-followup@FreeBSD.org, ocaml-sqlite3-port@kotka.de
Cc:  
Subject: Re: ports/93920: New port: databases/ocaml-sqlite3 OCaml bindings
 for databases/sqlite3
Date: Thu, 08 Jun 2006 23:55:20 -0600

 Thanks for the updated shar.  It worked fine.  An error occured, 
 however, while testing the port on a FreeBSD 4.11 box running GCC v2.95. 
     Please see if you can track down the source of the problem and how 
 to best fix it.  Maybe there's an include file missing.  Maybe it needs 
 a newer GCC, that sort of thing.  Below is the build log.
 
 Cheers!
 -- 
 Aaron Dalton
 aaron@FreeBSD.org
 FreeBSD Ports Committer
 
 ==BUILD LOG==
 ===>  Building for ocaml-sqlite3-0.2.0
 ocamlc -c sqlite3.mli
 ocamlc -pp camlp4o -c sqlite3.ml
 File "sqlite3.ml", line 160, characters 4-5:
 cc -UHAVE_ALLOCA_H -I/usr/local/include -I/usr/local/lib/ocaml -O -pipe 
 -c sqlite3_stubs.c
 Warning U: this match case is unused.
 sqlite3_stubs.c: In function `caml_sqlite3_open':
 sqlite3_stubs.c:241: syntax error before `char'
 sqlite3_stubs.c:242: `buf' undeclared (first use in this function)
 sqlite3_stubs.c:242: (Each undeclared identifier is reported only once
 sqlite3_stubs.c:242: for each function it appears in.)
 sqlite3_stubs.c: In function `caml_sqlite3_exec':
 sqlite3_stubs.c:320: syntax error before `struct'
 sqlite3_stubs.c:323: `sql' undeclared (first use in this function)
 sqlite3_stubs.c:323: `len' undeclared (first use in this function)
 sqlite3_stubs.c:324: `cbx' undeclared (first use in this function)
 sqlite3_stubs.c:326: syntax error before `int'
 sqlite3_stubs.c:336: syntax error before `const'
 sqlite3_stubs.c:337: `rc' undeclared (first use in this function)
 sqlite3_stubs.c:337: `msg' undeclared (first use in this function)
 sqlite3_stubs.c: In function `prepare_allocated':
 sqlite3_stubs.c:431: syntax error before `*'
 sqlite3_stubs.c:432: `db' undeclared (first use in this function)
 sqlite3_stubs.c:436: syntax error before `int'
 sqlite3_stubs.c:443: `rc' undeclared (first use in this function)
 sqlite3_stubs.c: In function `caml_sqlite3_prepare_it':
 sqlite3_stubs.c:473: syntax error before `*'
 sqlite3_stubs.c:475: `stmt_p' undeclared (first use in this function)
 sqlite3_stubs.c: In function `caml_sqlite3_recompile':
 sqlite3_stubs.c:496: syntax error before `const'
 sqlite3_stubs.c:497: `sql' undeclared (first use in this function)
 sqlite3_stubs.c: In function `caml_sqlite3_bind_parameter_name':
 sqlite3_stubs.c:518: syntax error before `int'
 sqlite3_stubs.c:519: `i' undeclared (first use in this function)
 sqlite3_stubs.c:521: syntax error before `const'
 sqlite3_stubs.c:522: `str' undeclared (first use in this function)
 sqlite3_stubs.c: In function `caml_sqlite3_bind':
 sqlite3_stubs.c:568: syntax error before `int'
 sqlite3_stubs.c:569: `i' undeclared (first use in this function)
 sqlite3_stubs.c: In function `caml_sqlite3_transfer_bindings':
 sqlite3_stubs.c:624: syntax error before `*'
 sqlite3_stubs.c:626: `stmt2' undeclared (first use in this function)
 sqlite3_stubs.c: In function `caml_sqlite3_column_name':
 sqlite3_stubs.c:686: syntax error before `int'
 sqlite3_stubs.c:687: `i' undeclared (first use in this function)
 sqlite3_stubs.c: In function `caml_sqlite3_column_decltype':
 *** Error code 1
 
 Stop in /usr/ports/databases/ocaml-sqlite3/work/ocaml-sqlite3.
 *** Error code 1
 
 Stop in /usr/ports/databases/ocaml-sqlite3.
 sqlite3_stubs.c:702: syntax error before `int'
 sqlite3_stubs.c:703: `i' undeclared (first use in this function)
 sqlite3_stubs.c: In function `caml_sqlite3_column':
 sqlite3_stubs.c:744: syntax error before `int'
 sqlite3_stubs.c:745: `i' undeclared (first use in this function)
 sqlite3_stubs.c:746: syntax error before `int'
 sqlite3_stubs.c:761: `len' undeclared (first use in this function)
 A problem building things on 4.11

From: Meikel Brandmeyer <mb@kotka.de>
To: Aaron Dalton <aaron@freebsd.org>
Cc: bug-followup@FreeBSD.org
Subject: Re: ports/93920: New port: databases/ocaml-sqlite3 OCaml bindings for databases/sqlite3
Date: Tue, 13 Jun 2006 19:49:41 +0200

 ------- =_aaaaaaaaaa0
 Content-Type: text/plain; charset="us-ascii"
 Content-ID: <5734.1150220937.1@kotka.de>
 
 Hello,
 
 > Thanks for the updated shar.  It worked fine.  An error occured, 
 > however, while testing the port on a FreeBSD 4.11 box running GCC v2.95. 
 >     Please see if you can track down the source of the problem and how 
 > to best fix it.  Maybe there's an include file missing.  Maybe it needs 
 > a newer GCC, that sort of thing.  Below is the build log.
 I tried to track down the problem. However, since I do not have access
 to such a machine, I can only guess what the problem is.
 
 Going through the source code I noticed that variable declarations are
 mixed with normal code. This is actually contained in the C99 standard.
 However for C89 this is a gcc extension. My assumptions is that the gcc
 2.95 of your build machine, does not contain such a extension, yet.
 
 I changed the declarations to the "correct" way. But I cannot test this
 change. Please the attached diff.
 
 Sincerely
 Meikel
 
 
 ------- =_aaaaaaaaaa0
 Content-Type: text/plain; name="patch-sqlite3_stubs.c"; charset="us-ascii"
 Content-ID: <5734.1150220937.2@kotka.de>
 
 --- sqlite3_stubs.c.orig	Thu Oct 20 00:58:04 2005
 +++ sqlite3_stubs.c	Tue Jun 13 19:29:45 2006
 @@ -24,7 +24,10 @@
  
  #include <stdio.h>
  #include <string.h> 
 +/* FIXME: This should go into configure script. */
 +#if defined(HAVE_ALLOCA_H)
  #include <alloca.h>
 +#endif
  
  #include <caml/mlvalues.h>
  #include <caml/memory.h>
 @@ -230,12 +233,12 @@
     CAMLlocal1(result);
     struct db_wrap st = {NULL, SQLITE_OK};
     struct db_wrap st2 = {NULL, SQLITE_OK};
 -
     const char *fname = String_val(filename);
 +
     if( sqlite3_open(fname, &(st.db)) ) {
 +      char buf[1024];
        const char *msg = st.db ? sqlite3_errmsg(st.db) : NULL;
        if(!msg) { msg = "<unknown_error>"; }
 -      char buf[1024];
        snprintf(buf, (sizeof buf)-1, "Can't open database: %s",msg);
        if( st.db ) {
           sqlite3_close(st.db);
 @@ -312,15 +315,20 @@
  {
     CAMLparam3(db,sql_,cb);
     CAMLlocal1(errmsg_v);
 +   struct callback_with_xcp cbx;
 +   size_t len;
 +   char *sql;
 +   int rc;
 +   const char *msg;
 +
     caml_sqlite3_check_db(db,"exec");
     
 -   struct callback_with_xcp cbx;
 -   size_t len = string_length(sql_);
 -   char *sql = memcpy(alloca(len+1),String_val(sql_),len);
 +   len = string_length(sql_);
 +   sql = memcpy(alloca(len+1),String_val(sql_),len);
     sql[len]='\0';
     cbx.cb  = cb;
     cbx.xcp = Val_unit;
 -   int rc = sqlite3_exec(Sqlite3_val(db).db,
 +   rc = sqlite3_exec(Sqlite3_val(db).db,
                           sql,
                           exec_callback,
                           (void *)&cbx,
 @@ -330,7 +338,7 @@
        caml_raise(cbx.xcp);
     }
  
 -   const char *msg = sqlite3_errmsg(Sqlite3_val(db).db);
 +   msg = sqlite3_errmsg(Sqlite3_val(db).db);
     if(rc && strcmp(msg,"not an error")) {
        raise_sqlite3_error("%s",msg); 
     }
 @@ -389,8 +397,11 @@
     CAMLlocal1(errmsg);
     char *zErrmsg = NULL;
     int   ret_code = SQLITE_OK;
 -   stmt_wrap *stmt_p = &Sqlite3_stmt_val(stmt_);
 -   struct sqlite3_stmt *stmt = stmt_p->stmt;
 +   stmt_wrap *stmt_p;
 +   struct sqlite3_stmt *stmt;
 +
 +   stmt_p = &Sqlite3_stmt_val(stmt_);
 +   stmt = stmt_p->stmt;
     if(!stmt) {
        raise_sqlite3_misuse_stmt("Sqlite3.finalize "
                                  "called with finalized stmt");
 @@ -421,6 +432,8 @@
     CAMLparam1(stmt);
     stmt_p->stmt    = NULL;
     stmt_p->tail    = NULL;
 +   int rc;
 +
  #if  DEBUG
     printf("sql = \"%s\"\n",stmt_p->sql); fflush(0);
  #endif
 @@ -430,7 +443,7 @@
        raise_sqlite3_misuse_stmt("Sqlite3.prepare_allocated "
                                  "called with nonexistent db");
     }
 -   int rc = sqlite3_prepare(stmt_p->db,stmt_p->sql,stmt_p->sql_len,
 +   rc = sqlite3_prepare(stmt_p->db,stmt_p->sql,stmt_p->sql_len,
                              &(stmt_p->stmt),
                              (const char **)&(stmt_p->tail));
  #ifdef DEBUG
 @@ -465,9 +478,11 @@
  {
     CAMLparam0();
     CAMLlocal1(stmt);
 +   stmt_wrap *stmt_p;
 +
     stmt = alloc_custom(&caml_sqlite3_stmt_ops,
                         1 + sizeof(stmt_wrap), 1, 10);
 -   stmt_wrap *stmt_p = &Sqlite3_stmt_val(stmt);
 +   stmt_p = &Sqlite3_stmt_val(stmt);
  
     stmt_p->db      = db;
     stmt_p->sql     = memcpy(malloc(sql_len+1),sql,sql_len);
 @@ -484,13 +499,15 @@
  caml_sqlite3_recompile(value stmt_)
  {
     CAMLparam1(stmt_);
 +   const char *sql;
     stmt_wrap    *stmt_p = &Sqlite3_stmt_val(stmt_);
     sqlite3_stmt *stmt = stmt_p->stmt;
 +
     if(!stmt) {
        raise_sqlite3_misuse_stmt("Sqlite3.recompile "
                                  "called with finalized stmt");
     }
 -   const char *sql = Sqlite3_stmt_val(stmt_).sql;
 +   sql = Sqlite3_stmt_val(stmt_).sql;
     if( !sql ) {
        raise_sqlite3_misuse_stmt("Sqlite3.recompile "
                                  "called with empty string");
 @@ -506,16 +523,18 @@
  {
     CAMLparam1(stmt_);
     CAMLlocal2(result,tmp);
 +   int i;
 +   const char *str;
     stmt_wrap    *stmt_p = &Sqlite3_stmt_val(stmt_);
     sqlite3_stmt *stmt = stmt_p->stmt;
     if(!stmt) {
        raise_sqlite3_misuse_stmt("Sqlite3.bind_parameter_name "
                                  "called with finalized stmt");
     }
 -   int i = Int_val(index);
 +   i = Int_val(index);
     range_check(i-1,sqlite3_bind_parameter_count(stmt));
  
 -   const char *str = sqlite3_bind_parameter_name(stmt,i);
 +   str = sqlite3_bind_parameter_name(stmt,i);
     if( str ) {
        result          = alloc_small(1,0);
        tmp             = copy_string(str); /* tmp is needed to make GC happy! */
 @@ -557,12 +576,13 @@
  {
     CAMLparam2(stmt_,data);
     CAMLlocal1(field);
 +   int i;
     sqlite3_stmt *stmt = Sqlite3_stmt_val(stmt_).stmt;
     if(!stmt) {
        raise_sqlite3_misuse_stmt("Sqlite3.bind "
                                  "called with finalized stmt");
     }
 -   int i = Int_val(index);
 +   i = Int_val(index);
     range_check(i-1,sqlite3_bind_parameter_count(stmt));
     if(Is_long(data)) {
        switch(Int_val(data)) {
 @@ -612,13 +632,14 @@
  {
     CAMLparam2(stmt1_,stmt2_);
     sqlite3_stmt *stmt1 = Sqlite3_stmt_val(stmt1_).stmt;
 +   sqlite3_stmt *stmt2;
  
     if(!stmt1) {
        raise_sqlite3_misuse_stmt("Sqlite3.transfer_bindings "
                                  "called with finalized source stmt");
     } 
  
 -   sqlite3_stmt *stmt2 = Sqlite3_stmt_val(stmt2_).stmt;
 +   stmt2 = Sqlite3_stmt_val(stmt2_).stmt;
  
     if(!stmt2) {
        raise_sqlite3_misuse_stmt("Sqlite3.transfer_bindings "
 @@ -634,8 +655,11 @@
  {
     CAMLparam2(db,sql_);
     CAMLlocal1(result);
 -   int len         = string_length(sql_);
 -   const char *sql = memcpy(alloca(len),String_val(sql_),len);
 +   int len;
 +   const char *sql;
 +
 +   len = string_length(sql_);
 +   sql = memcpy(alloca(len),String_val(sql_),len);
     result = caml_sqlite3_prepare_it(Sqlite3_val(db).db,sql,len);
  
     CAMLreturn(result);
 @@ -674,13 +698,15 @@
  caml_sqlite3_column_name(value stmt_, value index)
  {
     CAMLparam1(stmt_);
 +   int i;
 +
     sqlite3_stmt *stmt = Sqlite3_stmt_val(stmt_).stmt;
     if(!stmt) {
        raise_sqlite3_misuse_stmt("Sqlite3.column_name "
                                  "called with finalized stmt");
     }
  
 -   int i = Int_val(index);
 +   i = Int_val(index);
     range_check(i,sqlite3_data_count(stmt));
  
     CAMLreturn(copy_string(sqlite3_column_name(stmt,i)));
 @@ -690,13 +716,15 @@
  caml_sqlite3_column_decltype(value stmt_, value index)
  {
     CAMLparam1(stmt_);
 +   int i;
     sqlite3_stmt *stmt = Sqlite3_stmt_val(stmt_).stmt;
 +
     if(!stmt) {
        raise_sqlite3_misuse_stmt("Sqlite3.column_decltype "
                                  "called with finalized stmt");
     }
  
 -   int i = Int_val(index);
 +   i = Int_val(index);
     range_check(i,sqlite3_data_count(stmt));
  
     CAMLreturn(copy_string(sqlite3_column_decltype(stmt,i)));
 @@ -733,14 +761,17 @@
  {
     CAMLparam1(stmt_);
     CAMLlocal2(result,tmp);
 +   int i;
 +   int len;
     sqlite3_stmt *stmt = Sqlite3_stmt_val(stmt_).stmt;
 +
     if( !stmt ) {
        raise_sqlite3_misuse_stmt("Sqlite3.column "
                                  "called with finalized stmt");
     }
 -   int i = Int_val(index);
 +   i = Int_val(index);
     range_check(i,sqlite3_data_count(stmt));
 -   int len;
 +   len;
     
     switch(sqlite3_column_type(stmt,i)) {
        /* WARNING : we need the tmp variable to make GC happy! */
 
 ------- =_aaaaaaaaaa0--
State-Changed-From-To: feedback->open 
State-Changed-By: aaron 
State-Changed-When: Wed Jun 14 23:52:24 UTC 2006 
State-Changed-Why:  
Sufficient feedback received. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=93920 
State-Changed-From-To: open->closed 
State-Changed-By: aaron 
State-Changed-When: Mon Jul 24 21:19:55 UTC 2006 
State-Changed-Why:  
New port added. Thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=93920 
>Unformatted:
