forked from Lainports/freebsd-ports
172 lines
4.9 KiB
Text
172 lines
4.9 KiB
Text
--- mysqltcl.c Mon Jul 6 11:35:17 1998
|
|
+++ mysqltcl.c Wed Jul 12 17:46:20 2000
|
|
@@ -34,7 +34,7 @@
|
|
#include <string.h>
|
|
#include <ctype.h>
|
|
#include <unistd.h>
|
|
-
|
|
+#include <stdlib.h>
|
|
|
|
#define MYSQL_HANDLES 15 /* Default number of handles available. */
|
|
#define MYSQL_BUFF_SIZE 1024 /* Conversion buffer size for various needs. */
|
|
@@ -60,7 +60,7 @@
|
|
#define MYSQL_HPREFIX_LEN 5
|
|
|
|
/* Array for status info, and its elements. */
|
|
-static char *MysqlStatusArr = "mysqlstatus";
|
|
+#define MysqlStatusArr "mysqlstatus"
|
|
#define MYSQL_STATUS_CODE "code"
|
|
#define MYSQL_STATUS_CMD "command"
|
|
#define MYSQL_STATUS_MSG "message"
|
|
@@ -686,7 +686,6 @@
|
|
Mysqltcl_Init (interp)
|
|
Tcl_Interp *interp;
|
|
{
|
|
- int i;
|
|
char nbuf[MYSQL_SMALL_SIZE];
|
|
|
|
/*
|
|
@@ -742,7 +739,7 @@
|
|
* If this message appears you must change the source code and recompile.
|
|
*/
|
|
if (strlen (MysqlHandlePrefix) == MYSQL_HPREFIX_LEN)
|
|
- return TCL_OK;
|
|
+ return Tcl_PkgProvide(interp, "mysql", "1.53");
|
|
else
|
|
{
|
|
fprintf (stderr, "*** mysqltcl (mysqltcl.c): handle prefix inconsistency!\n") ;
|
|
@@ -921,13 +917,13 @@
|
|
|
|
if ((MysqlHandle[hand].result = mysql_store_result (MysqlHandle[hand].mysql)) == NULL)
|
|
{
|
|
- (void)strcpy (interp->result, "-1") ;
|
|
+ Tcl_SetObjResult(interp, Tcl_NewIntObj(-1));
|
|
}
|
|
else
|
|
{
|
|
MysqlHandle[hand].res_count = mysql_num_rows (MysqlHandle[hand].result) ;
|
|
MysqlHandle[hand].col_count = mysql_num_fields (MysqlHandle[hand].result) ;
|
|
- (void)sprintf (interp->result, "%d", MysqlHandle[hand].res_count) ;
|
|
+ Tcl_SetObjResult(interp, Tcl_NewIntObj(MysqlHandle[hand].res_count));
|
|
}
|
|
|
|
return TCL_OK;
|
|
@@ -1073,7 +1069,7 @@
|
|
MysqlHandle[hand].res_count = total - row;
|
|
}
|
|
|
|
- (void)sprintf (interp->result, "%d", MysqlHandle[hand].res_count) ;
|
|
+ Tcl_SetObjResult(interp, Tcl_NewIntObj(MysqlHandle[hand].res_count));
|
|
return TCL_OK;
|
|
}
|
|
|
|
@@ -1244,7 +1240,7 @@
|
|
{
|
|
case MYSQL_INFNAME_OPT:
|
|
case MYSQL_INFNAMEQ_OPT:
|
|
- strcpy (interp->result, MysqlHandle[hand].database) ;
|
|
+ Tcl_SetResult(interp, MysqlHandle[hand].database, TCL_STATIC);
|
|
break ;
|
|
case MYSQL_INFTABLES_OPT:
|
|
if ((list = mysql_list_tables (MysqlHandle[hand].mysql,(char*)NULL)) == NULL)
|
|
@@ -1259,7 +1255,7 @@
|
|
break ;
|
|
case MYSQL_INFHOST_OPT:
|
|
case MYSQL_INFHOSTQ_OPT:
|
|
- strcpy (interp->result, MysqlHandle[hand].host) ;
|
|
+ Tcl_SetResult(interp, MysqlHandle[hand].host, TCL_STATIC);
|
|
break ;
|
|
case MYSQL_INFLIST_OPT:
|
|
if ((list = mysql_list_dbs (MysqlHandle[hand].mysql,(char*)NULL)) == NULL)
|
|
@@ -1299,8 +1295,6 @@
|
|
int count ;
|
|
int hand ;
|
|
int idx ;
|
|
- MYSQL_RES* list ;
|
|
- MYSQL_ROW row ;
|
|
|
|
|
|
/* We can't fully check the handle at this stage. */
|
|
@@ -1342,19 +1336,20 @@
|
|
{
|
|
case MYSQL_RESROWS_OPT:
|
|
case MYSQL_RESROWSQ_OPT:
|
|
- sprintf (interp->result, "%d", MysqlHandle[hand].res_count) ;
|
|
+ count = MysqlHandle[hand].res_count;
|
|
break ;
|
|
case MYSQL_RESCOLS_OPT:
|
|
case MYSQL_RESCOLSQ_OPT:
|
|
- sprintf (interp->result, "%d", MysqlHandle[hand].col_count) ;
|
|
+ count = MysqlHandle[hand].col_count;
|
|
break ;
|
|
case MYSQL_RESCUR_OPT:
|
|
case MYSQL_RESCURQ_OPT:
|
|
- sprintf (interp->result, "%d", mysql_num_rows (MysqlHandle[hand].result)
|
|
- - MysqlHandle[hand].res_count) ;
|
|
+ count = mysql_num_rows (MysqlHandle[hand].result)
|
|
+ - MysqlHandle[hand].res_count;
|
|
default:
|
|
- ;
|
|
+ return TCL_OK; /* none of the above -- return without touching result */
|
|
}
|
|
+ Tcl_SetObjResult(interp, Tcl_NewIntObj(count));
|
|
return TCL_OK ;
|
|
}
|
|
|
|
@@ -1500,8 +1495,12 @@
|
|
int hi;
|
|
char* hp ;
|
|
int numeric ;
|
|
- char* res ;
|
|
-
|
|
+ register short res;
|
|
+
|
|
+ static const char *states[] = {
|
|
+ "NOT_A_HANDLE", "UNCONNECTED", "CONNECTED", "IN_USE", "RESULT_PENDING"
|
|
+ };
|
|
+
|
|
if (mysql_prologue(interp, argc, argv, 2, NULL, "?-numeric? handle") < 0)
|
|
return TCL_ERROR;
|
|
|
|
@@ -1511,17 +1510,18 @@
|
|
hp = (numeric)?argv[2]:argv[1] ;
|
|
|
|
if (HSYNTAX(hp,hi) < 0)
|
|
- res = (numeric)?"0":"NOT_A_HANDLE" ;
|
|
+ res = 0;
|
|
else if (MysqlHandle[hi].connection == 0)
|
|
- res = (numeric)?"1":"UNCONNECTED" ;
|
|
+ res = 1;
|
|
else if (MysqlHandle[hi].database[0] == '\0')
|
|
- res = (numeric)?"2":"CONNECTED" ;
|
|
+ res = 2;
|
|
else if (MysqlHandle[hi].result == NULL)
|
|
- res = (numeric)?"3":"IN_USE" ;
|
|
+ res = 3;
|
|
else
|
|
- res = (numeric)?"4":"RESULT_PENDING" ;
|
|
+ res = 4;
|
|
|
|
- (void)strcpy (interp->result, res) ;
|
|
+ if (numeric) Tcl_SetObjResult(interp, Tcl_NewIntObj(res));
|
|
+ else Tcl_SetResult(interp, (char *)states[res], TCL_STATIC);
|
|
return TCL_OK ;
|
|
}
|
|
|
|
@@ -1543,7 +1543,6 @@
|
|
char **argv;
|
|
{
|
|
int hand;
|
|
- char* res ;
|
|
MYSQL* mysql;
|
|
|
|
if ((hand = mysql_prologue(interp, argc, argv, 2, get_handle_conn,
|
|
@@ -1552,7 +1551,7 @@
|
|
|
|
mysql = MysqlHandle[hand].mysql;
|
|
|
|
- (void)sprintf (interp->result, "%d", mysql_insert_id(mysql)) ;
|
|
+ Tcl_SetObjResult(interp, Tcl_NewIntObj(mysql_insert_id(mysql)));
|
|
|
|
return TCL_OK;
|
|
}
|