aboutsummaryrefslogtreecommitdiff
path: root/databases/mysqltcl
diff options
context:
space:
mode:
authorPav Lucistnik <pav@FreeBSD.org>2006-01-14 19:47:12 +0000
committerPav Lucistnik <pav@FreeBSD.org>2006-01-14 19:47:12 +0000
commitd6986129a38bc404e63496ef598aa0cfd09224b5 (patch)
tree7a1491e12351979f2bef7d946e6154be5b858675 /databases/mysqltcl
parent52e61d24118dbe9a89dac3a5857e52bf55ff4f0d (diff)
downloadports-d6986129a38bc404e63496ef598aa0cfd09224b5.tar.gz
ports-d6986129a38bc404e63496ef598aa0cfd09224b5.zip
- Add unoficial patch for MySQL 3.23 and 4.0 users
PR: ports/91684 Submitted by: Bjorn Konig <bkoenig@cs.tu-berlin.de> (maintainer)
Notes
Notes: svn path=/head/; revision=153496
Diffstat (limited to 'databases/mysqltcl')
-rw-r--r--databases/mysqltcl/Makefile18
-rw-r--r--databases/mysqltcl/files/patch-generic-mysqltcl.c305
-rw-r--r--databases/mysqltcl/files/patch-warnings45
-rw-r--r--databases/mysqltcl/pkg-descr19
-rw-r--r--databases/mysqltcl/pkg-message-legacy25
5 files changed, 350 insertions, 62 deletions
diff --git a/databases/mysqltcl/Makefile b/databases/mysqltcl/Makefile
index 0ce1c6aefdcc..34b1d2e1ba64 100644
--- a/databases/mysqltcl/Makefile
+++ b/databases/mysqltcl/Makefile
@@ -16,7 +16,6 @@ COMMENT= TCL module for accessing MySQL databases based on msqltcl
LIB_DEPENDS= ${TCL_NODOT}:${PORTSDIR}/lang/${TCL_NODOT}
USE_MYSQL= yes
-BROKEN_WITH_MYSQL= 323 40
TCL_VERSION?= tcl8.4
TCL_NODOT= ${TCL_VERSION:S/.//}
SQL_DIR= ${PREFIX}/lib/${TCL_VERSION}/mysqltcl
@@ -31,15 +30,22 @@ USE_REINPLACE= yes
REINPLACE_ARGS= -i ''
pre-patch:
- ${REINPLACE_CMD} -e 's, * ,,' ${WRKSRC}/generic/*.[ch]
+ @${REINPLACE_CMD} -e 's, * ,,' ${WRKSRC}/generic/*.[ch]
do-install:
- ${MKDIR} ${SQL_DIR}
- ${INSTALL_DATA} ${WRKSRC}/${LIB_NAME} ${SQL_DIR}
- ${ECHO} "package ifneeded mysqltcl ${PORTVERSION} {load ${SQL_DIR}/${LIB_NAME}}" \
+ @${MKDIR} ${SQL_DIR}
+ @${INSTALL_DATA} ${WRKSRC}/${LIB_NAME} ${SQL_DIR}
+ @${ECHO} "package ifneeded mysqltcl ${PORTVERSION} {load ${SQL_DIR}/${LIB_NAME}}" \
> ${SQL_DIR}/pkgIndex.tcl
- ${INSTALL_MAN} ${WRKSRC}/doc/${MANN} ${PREFIX}/man/mann
+ @${INSTALL_MAN} ${WRKSRC}/doc/${MANN} ${PREFIX}/man/mann
+
+post-install:
+ @${TEST} ! -f ${PKGMESSAGE} || ${CAT} ${PKGMESSAGE}
.include <bsd.port.mk>
+.if ${MYSQL_VER} == 323 || ${MYSQL_VER} == 40
+PKGMESSAGE= ${PKGDIR}/pkg-message-legacy
+.endif
+
LIB_NAME!= ${MAKE_ENV} ${MAKE} -f ${FILESDIR}/Makefile.bsd -V SHLIB_NAME
diff --git a/databases/mysqltcl/files/patch-generic-mysqltcl.c b/databases/mysqltcl/files/patch-generic-mysqltcl.c
new file mode 100644
index 000000000000..c913f8c94257
--- /dev/null
+++ b/databases/mysqltcl/files/patch-generic-mysqltcl.c
@@ -0,0 +1,305 @@
+--- generic/mysqltcl.c.orig Wed Jan 11 21:08:48 2006
++++ generic/mysqltcl.c Wed Jan 11 21:17:10 2006
+@@ -95,6 +95,8 @@
+ /* C variable corresponding to mysqlstatus(nullvalue) */
+ #define MYSQL_NULLV_INIT ""
+
++#define FUNCTION_NOT_AVAILABLE "function not available"
++
+ /* Check Level for mysql_prologue */
+ enum CONNLEVEL {CL_PLAIN,CL_CONN,CL_DB,CL_RES};
+
+@@ -183,7 +185,6 @@
+ static int MysqlNullSet(Tcl_Interp *interp, Tcl_Obj *objPtr)
+ {
+ Tcl_ObjType *oldTypePtr = objPtr->typePtr;
+- Tcl_HashEntry *entryPtr;
+
+ if ((oldTypePtr != NULL) && (oldTypePtr->freeIntRepProc != NULL)) {
+ oldTypePtr->freeIntRepProc(objPtr);
+@@ -803,6 +804,7 @@
+ if (booleanflag)
+ flags |= CLIENT_ODBC;
+ break;
++#if (MYSQL_VERSION_ID >= 40107)
+ case MYSQL_MULTISTATEMENT_OPT:
+ if (Tcl_GetBooleanFromObj(interp,objv[++i],&booleanflag) != TCL_OK )
+ return TCL_ERROR;
+@@ -817,6 +819,7 @@
+ if (booleanflag)
+ flags |= CLIENT_MULTI_RESULTS;
+ break;
++#endif
+
+ case MYSQL_LOCALFILES_OPT:
+ if (Tcl_GetBooleanFromObj(interp,objv[++i],&booleanflag) != TCL_OK )
+@@ -876,9 +879,11 @@
+ #if (MYSQL_VERSION_ID>=32350)
+ mysql_options(handle->connection,MYSQL_READ_DEFAULT_GROUP,groupname);
+ #endif
++#if (MYSQL_VERSION_ID >= 40107)
+ if (isSSL) {
+ mysql_ssl_set(handle->connection,sslkey,sslcert, sslca, sslcapath, sslcipher);
+ }
++#endif
+
+ if (!mysql_real_connect(handle->connection, hostname, user,
+ password, db, port, socket, flags)) {
+@@ -1388,8 +1393,8 @@
+ static int Mysqltcl_Receive(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
+ {
+ MysqltclState *statePtr = (MysqltclState *)clientData;
+- int code ;
+- int count ;
++ int code = TCL_ERROR;
++ int count = 0;
+
+ MysqlTclHandle *handle;
+ int idx ;
+@@ -1397,7 +1402,6 @@
+ Tcl_Obj** listObjv ;
+ MYSQL_ROW row ;
+ int *val = NULL;
+- int breakLoop = 0;
+ unsigned long *lengths;
+
+
+@@ -1455,15 +1459,9 @@
+ switch(code=Tcl_EvalObjEx(interp, objv[4],0)) {
+ case TCL_CONTINUE:
+ case TCL_OK:
+- break ;
+- case TCL_BREAK:
+- breakLoop=1;
+- break;
+- default:
+- breakLoop=1;
+- break;
++ continue;
+ }
+- if (breakLoop==1) break;
++ break;
+ }
+ }
+ if (val!=NULL) {
+@@ -1592,6 +1590,7 @@
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(val,-1));
+ }
+ break;
++#if (MYSQL_VERSION_ID >= 40107)
+ case MYSQL_INF_SERVERVERSION:
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(mysql_get_server_info(handle->connection),-1));
+ break;
+@@ -1604,6 +1603,7 @@
+ case MYSQL_INFO_STATE:
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(mysql_stat(handle->connection),-1));
+ break;
++#endif
+ default: /* should never happen */
+ return mysql_prim_confl(interp,objc,objv,"weirdness in Mysqltcl_Info") ;
+ }
+@@ -1625,6 +1625,7 @@
+ int idx ;
+ Tcl_Obj *resList;
+ char **option;
++#if (MYSQL_VERSION_ID >= 40107)
+ static CONST char* MysqlInfoOpt[] =
+ {
+ "connectparameters", "clientversion","clientversionid", NULL
+@@ -1632,6 +1633,15 @@
+ enum baseoption {
+ MYSQL_BINFO_CONNECT, MYSQL_BINFO_CLIENTVERSION,MYSQL_BINFO_CLIENTVERSIONID
+ };
++#else
++ static CONST char* MysqlInfoOpt[] =
++ {
++ "connectparameters", "clientversion", NULL
++ };
++ enum baseoption {
++ MYSQL_BINFO_CONNECT, MYSQL_BINFO_CLIENTVERSION
++ };
++#endif
+
+ if (objc <2) {
+ Tcl_WrongNumArgs(interp, 1, objv, "connectparameters | clientversion");
+@@ -1657,9 +1667,11 @@
+ case MYSQL_BINFO_CLIENTVERSION:
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(mysql_get_client_info(),-1));
+ break;
++#if (MYSQL_VERSION_ID >= 40107)
+ case MYSQL_BINFO_CLIENTVERSIONID:
+ Tcl_SetObjResult(interp, Tcl_NewIntObj(mysql_get_client_version()));
+ break;
++#endif
+ }
+ return TCL_OK ;
+ }
+@@ -1974,6 +1986,10 @@
+
+ static int Mysqltcl_AutoCommit(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
+ {
++#if (MYSQL_VERSION_ID < 40107)
++ Tcl_AddErrorInfo(interp, FUNCTION_NOT_AVAILABLE);
++ return TCL_ERROR;
++#else
+ MysqlTclHandle *handle;
+ int isAutocommit = 0;
+
+@@ -1986,6 +2002,7 @@
+ mysql_server_confl(interp,objc,objv,handle->connection);
+ }
+ return TCL_OK;
++#endif
+ }
+ /*
+ *----------------------------------------------------------------------
+@@ -1997,6 +2014,10 @@
+
+ static int Mysqltcl_Commit(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
+ {
++#if (MYSQL_VERSION_ID < 40107)
++ Tcl_AddErrorInfo(interp, FUNCTION_NOT_AVAILABLE);
++ return TCL_ERROR;
++#else
+ MysqlTclHandle *handle;
+
+ if ((handle = mysql_prologue(interp, objc, objv, 2, 2, CL_CONN,
+@@ -2006,6 +2027,7 @@
+ mysql_server_confl(interp,objc,objv,handle->connection);
+ }
+ return TCL_OK;
++#endif
+ }
+ /*
+ *----------------------------------------------------------------------
+@@ -2017,6 +2039,10 @@
+
+ static int Mysqltcl_Rollback(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
+ {
++#if (MYSQL_VERSION_ID < 40107)
++ Tcl_AddErrorInfo(interp, FUNCTION_NOT_AVAILABLE);
++ return TCL_ERROR;
++#else
+ MysqlTclHandle *handle;
+
+ if ((handle = mysql_prologue(interp, objc, objv, 2, 2, CL_CONN,
+@@ -2026,6 +2052,7 @@
+ mysql_server_confl(interp,objc,objv,handle->connection);
+ }
+ return TCL_OK;
++#endif
+ }
+ /*
+ *----------------------------------------------------------------------
+@@ -2037,6 +2064,10 @@
+
+ static int Mysqltcl_MoreResult(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
+ {
++#if (MYSQL_VERSION_ID < 40107)
++ Tcl_AddErrorInfo(interp, FUNCTION_NOT_AVAILABLE);
++ return TCL_ERROR;
++#else
+ MysqlTclHandle *handle;
+ int boolResult = 0;
+
+@@ -2046,6 +2077,7 @@
+ boolResult = mysql_more_results(handle->connection);
+ Tcl_SetObjResult(interp,Tcl_NewBooleanObj(boolResult));
+ return TCL_OK;
++#endif
+ }
+ /*
+
+@@ -2059,6 +2091,10 @@
+
+ static int Mysqltcl_NextResult(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
+ {
++#if (MYSQL_VERSION_ID < 40107)
++ Tcl_AddErrorInfo(interp, FUNCTION_NOT_AVAILABLE);
++ return TCL_ERROR;
++#else
+ MysqlTclHandle *handle;
+ int result = 0;
+
+@@ -2085,6 +2121,7 @@
+ Tcl_SetObjResult(interp, Tcl_NewIntObj(handle->res_count));
+ }
+ return TCL_OK;
++#endif
+ }
+ /*
+ *----------------------------------------------------------------------
+@@ -2096,6 +2133,10 @@
+
+ static int Mysqltcl_WarningCount(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
+ {
++#if (MYSQL_VERSION_ID < 40107)
++ Tcl_AddErrorInfo(interp, FUNCTION_NOT_AVAILABLE);
++ return TCL_ERROR;
++#else
+ MysqlTclHandle *handle;
+ int count = 0;
+
+@@ -2105,6 +2146,7 @@
+ count = mysql_warning_count(handle->connection);
+ Tcl_SetObjResult(interp,Tcl_NewIntObj(count));
+ return TCL_OK;
++#endif
+ }
+ /*
+ *----------------------------------------------------------------------
+@@ -2149,7 +2191,6 @@
+
+ static int Mysqltcl_NewNull(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
+ {
+- Tcl_Obj *objPtr;
+ if (objc != 1) {
+ Tcl_WrongNumArgs(interp, 1, objv, "");
+ return TCL_ERROR;
+@@ -2164,13 +2205,19 @@
+ * usage: mysql::setserveroption (-
+ *
+ */
++#if (MYSQL_VERSION_ID >= 40107)
+ static CONST char* MysqlServerOpt[] =
+ {
+ "-multi_statment_on", "-multi_statment_off",NULL
+ };
++#endif
+
+ static int Mysqltcl_SetServerOption(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
+ {
++#if (MYSQL_VERSION_ID < 40107)
++ Tcl_AddErrorInfo(interp, FUNCTION_NOT_AVAILABLE);
++ return TCL_ERROR;
++#else
+ MysqlTclHandle *handle;
+ int idx;
+ enum enum_mysql_set_option mysqlServerOption;
+@@ -2201,6 +2248,7 @@
+ mysql_server_confl(interp,objc,objv,handle->connection);
+ }
+ return TCL_OK;
++#endif
+ }
+ /*
+ *----------------------------------------------------------------------
+@@ -2211,6 +2259,10 @@
+ */
+ static int Mysqltcl_ShutDown(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
+ {
++#if (MYSQL_VERSION_ID < 40107)
++ Tcl_AddErrorInfo(interp, FUNCTION_NOT_AVAILABLE);
++ return TCL_ERROR;
++#else
+ MysqlTclHandle *handle;
+
+ if ((handle = mysql_prologue(interp, objc, objv, 2, 2, CL_CONN,
+@@ -2220,6 +2272,7 @@
+ mysql_server_confl(interp,objc,objv,handle->connection);
+ }
+ return TCL_OK;
++#endif
+ }
+ /*
+ *----------------------------------------------------------------------
diff --git a/databases/mysqltcl/files/patch-warnings b/databases/mysqltcl/files/patch-warnings
deleted file mode 100644
index 009553a384bc..000000000000
--- a/databases/mysqltcl/files/patch-warnings
+++ /dev/null
@@ -1,45 +0,0 @@
---- generic/mysqltcl.c Mon Dec 27 07:34:33 2004
-+++ generic/mysqltcl.c Sun Jul 31 19:43:08 2005
-@@ -184,5 +184,4 @@
- {
- Tcl_ObjType *oldTypePtr = objPtr->typePtr;
-- Tcl_HashEntry *entryPtr;
-
- if ((oldTypePtr != NULL) && (oldTypePtr->freeIntRepProc != NULL)) {
-@@ -1389,6 +1388,6 @@
- {
- MysqltclState *statePtr = (MysqltclState *)clientData;
-- int code ;
-- int count ;
-+ int code = TCL_ERROR;
-+ int count = 0;
-
- MysqlTclHandle *handle;
-@@ -1398,5 +1397,4 @@
- MYSQL_ROW row ;
- int *val = NULL;
-- int breakLoop = 0;
- unsigned long *lengths;
-
-@@ -1456,13 +1454,7 @@
- case TCL_CONTINUE:
- case TCL_OK:
-- break ;
-- case TCL_BREAK:
-- breakLoop=1;
-- break;
-+ continue;
-- default:
-- breakLoop=1;
-- break;
- }
-- if (breakLoop==1) break;
-+ break;
- }
- }
-@@ -2150,5 +2143,4 @@
- static int Mysqltcl_NewNull(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
- {
-- Tcl_Obj *objPtr;
- if (objc != 1) {
- Tcl_WrongNumArgs(interp, 1, objv, "");
diff --git a/databases/mysqltcl/pkg-descr b/databases/mysqltcl/pkg-descr
index b07b2922ab6b..a6d04f8d6d6c 100644
--- a/databases/mysqltcl/pkg-descr
+++ b/databases/mysqltcl/pkg-descr
@@ -1,17 +1,14 @@
From the package man-page:
- MySQLTcl is a collection of Tcl commands and a Tcl global
- array that provide access to one or more mysql database
- servers.
+ MySQLTcl is a collection of Tcl commands and a Tcl global array that
+ provide access to MySQL database servers.
- MySQLTcl is nothing more than a patched version of a
- patched version of Hakan Soderstrom's patch of Tom
- Poindexter's Sybtcl. Most of the documentention has been
- left as it was when I started to work with this interface
- (a patch of msqltcl-1.50). However, I have tried to
- replace appropriate occurrences of msql by MySQL.
+ MySQLTcl is nothing more than a patched version of a patched version of
+ Hakan Soderstrom's patch of Tom Poindexter's Sybtcl.
-This port makes use of some of the Tcl-8.x niceties, but more on that
-front can be done.
+ Mysqltcl is binary Tcl library (extension) written in C language that
+ use direkt official MySQL C-API. Almost all Tcl commands correspond to
+ MySQL C-API functions. For detail documentation see official MySQL C-
+ API manual.
WWW: http://www.xdobry.de/mysqltcl/
diff --git a/databases/mysqltcl/pkg-message-legacy b/databases/mysqltcl/pkg-message-legacy
new file mode 100644
index 000000000000..9b93a1bd9b00
--- /dev/null
+++ b/databases/mysqltcl/pkg-message-legacy
@@ -0,0 +1,25 @@
+######################################################################
+
+ Attention!
+
+ This version of mysqltcl contains an unofficial patch that
+ allows you to use this Tcl module with MySQL 3.23 and 4.0.
+ Due to restrictions of the underlying MySQL version the
+ use of the following functions will always cause an error:
+
+ - autocommit
+ - commit
+ - rollback
+ - moreresult
+ - nextresult
+ - warningcount
+ - setserverversion
+ - shutdown
+
+ This is not supported by the author of mysqltcl. Please
+ send comments and questions solely to me.
+
+ - Björn König
+ bkoenig@cs.tu-berlin.de
+
+######################################################################