diff options
author | Pav Lucistnik <pav@FreeBSD.org> | 2006-01-14 19:47:12 +0000 |
---|---|---|
committer | Pav Lucistnik <pav@FreeBSD.org> | 2006-01-14 19:47:12 +0000 |
commit | d6986129a38bc404e63496ef598aa0cfd09224b5 (patch) | |
tree | 7a1491e12351979f2bef7d946e6154be5b858675 /databases | |
parent | 52e61d24118dbe9a89dac3a5857e52bf55ff4f0d (diff) | |
download | ports-d6986129a38bc404e63496ef598aa0cfd09224b5.tar.gz ports-d6986129a38bc404e63496ef598aa0cfd09224b5.zip |
Notes
Diffstat (limited to 'databases')
-rw-r--r-- | databases/mysqltcl/Makefile | 18 | ||||
-rw-r--r-- | databases/mysqltcl/files/patch-generic-mysqltcl.c | 305 | ||||
-rw-r--r-- | databases/mysqltcl/files/patch-warnings | 45 | ||||
-rw-r--r-- | databases/mysqltcl/pkg-descr | 19 | ||||
-rw-r--r-- | databases/mysqltcl/pkg-message-legacy | 25 |
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 + +###################################################################### |