diff options
author | Tom Lane | 2002-12-30 22:10:54 +0000 |
---|---|---|
committer | Tom Lane | 2002-12-30 22:10:54 +0000 |
commit | 699782b69518e18c20211df315c49b8cd0dc9345 (patch) | |
tree | 6cdaf32e22691419846b9fdd42ac0867d7f3dd73 /src/interfaces/libpgtcl | |
parent | d82794ee33a043ade43db6c7aaa299a2a153ade5 (diff) |
Adjust Tcl-related code to compile cleanly with Tcl 8.4 (add const modifiers as
needed). Some desultory const-ification of SPI interface to support this.
Diffstat (limited to 'src/interfaces/libpgtcl')
-rw-r--r-- | src/interfaces/libpgtcl/pgtclCmds.c | 77 | ||||
-rw-r--r-- | src/interfaces/libpgtcl/pgtclCmds.h | 90 | ||||
-rw-r--r-- | src/interfaces/libpgtcl/pgtclId.c | 18 | ||||
-rw-r--r-- | src/interfaces/libpgtcl/pgtclId.h | 15 |
4 files changed, 105 insertions, 95 deletions
diff --git a/src/interfaces/libpgtcl/pgtclCmds.c b/src/interfaces/libpgtcl/pgtclCmds.c index ff57d2c3653..97deada3734 100644 --- a/src/interfaces/libpgtcl/pgtclCmds.c +++ b/src/interfaces/libpgtcl/pgtclCmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.70 2002/11/26 21:38:49 momjian Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.71 2002/12/30 22:10:54 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -23,7 +23,7 @@ /* * Local function forward declarations */ -static int execute_put_values(Tcl_Interp *interp, char *array_varname, +static int execute_put_values(Tcl_Interp *interp, CONST84 char *array_varname, PGresult *result, int tupno); @@ -241,7 +241,7 @@ tcl_value(char *value) **********************************/ int -Pg_conndefaults(ClientData cData, Tcl_Interp *interp, int argc, char **argv) +Pg_conndefaults(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { PQconninfoOption *options = PQconndefaults(); PQconninfoOption *option; @@ -287,13 +287,13 @@ Pg_conndefaults(ClientData cData, Tcl_Interp *interp, int argc, char **argv) **********************************/ int -Pg_connect(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_connect(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { - char *pghost = NULL; - char *pgtty = NULL; - char *pgport = NULL; - char *pgoptions = NULL; - char *dbName; + const char *pghost = NULL; + const char *pgtty = NULL; + const char *pgport = NULL; + const char *pgoptions = NULL; + const char *dbName; int i; PGconn *conn; @@ -397,7 +397,7 @@ Pg_connect(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) **********************************/ int -Pg_disconnect(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_disconnect(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { PGconn *conn; Tcl_Channel conn_chan; @@ -436,7 +436,7 @@ Pg_disconnect(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) **********************************/ int -Pg_exec(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_exec(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { Pg_ConnectionId *connid; PGconn *conn; @@ -538,13 +538,13 @@ Pg_exec(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) **********************************/ int -Pg_result(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_result(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { PGresult *result; - char *opt; + const char *opt; int i; int tupno; - char *arrVar; + CONST84 char *arrVar; char nameBuffer[256]; const char *appendstr; @@ -804,7 +804,7 @@ Pg_result_errReturn: **********************************/ int -Pg_execute(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_execute(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { Pg_ConnectionId *connid; PGconn *conn; @@ -813,8 +813,8 @@ Pg_execute(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) int tupno; int ntup; int loop_rc; - char *oid_varname = NULL; - char *array_varname = NULL; + CONST84 char *oid_varname = NULL; + CONST84 char *array_varname = NULL; char buf[64]; char *usage = "Wrong # of arguments\n" @@ -1025,7 +1025,7 @@ Pg_execute(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) column names, or into an array indexed by the column names. **********************************/ static int -execute_put_values(Tcl_Interp *interp, char *array_varname, +execute_put_values(Tcl_Interp *interp, CONST84 char *array_varname, PGresult *result, int tupno) { int i; @@ -1071,7 +1071,7 @@ execute_put_values(Tcl_Interp *interp, char *array_varname, **********************/ int -Pg_lo_open(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_lo_open(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { PGconn *conn; int lobjId; @@ -1141,7 +1141,7 @@ Pg_lo_open(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) **********************/ int -Pg_lo_close(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_lo_close(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { PGconn *conn; int fd; @@ -1230,7 +1230,7 @@ Pg_lo_read(ClientData cData, Tcl_Interp *interp, int objc, #else int -Pg_lo_read(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_lo_read(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { PGconn *conn; int fd; @@ -1328,7 +1328,7 @@ Pg_lo_write(ClientData cData, Tcl_Interp *interp, int objc, #else int -Pg_lo_write(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_lo_write(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { PGconn *conn; char *buf; @@ -1376,11 +1376,11 @@ whence can be either "SEEK_CUR", "SEEK_END", or "SEEK_SET" ***********************************/ int -Pg_lo_lseek(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_lo_lseek(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { PGconn *conn; int fd; - char *whenceStr; + const char *whenceStr; int offset, whence; @@ -1429,7 +1429,7 @@ for now, we don't support any additional storage managers. ***********************************/ int -Pg_lo_creat(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_lo_creat(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { PGconn *conn; char *modeStr; @@ -1447,7 +1447,7 @@ Pg_lo_creat(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) if (conn == (PGconn *) NULL) return TCL_ERROR; - modeStr = argv[2]; + modeStr = strdup(argv[2]); modeWord = strtok(modeStr, "|"); if (strcmp(modeWord, "INV_READ") == 0) @@ -1459,6 +1459,7 @@ Pg_lo_creat(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) Tcl_AppendResult(interp, "invalid mode argument to Pg_lo_creat\nmode argument must be some OR'd combination of INV_READ, and INV_WRITE", 0); + free(modeStr); return TCL_ERROR; } @@ -1473,10 +1474,12 @@ Pg_lo_creat(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) Tcl_AppendResult(interp, "invalid mode argument to Pg_lo_creat\nmode argument must be some OR'd combination of INV_READ, INV_WRITE", 0); + free(modeStr); return TCL_ERROR; } } sprintf(interp->result, "%d", lo_creat(conn, mode)); + free(modeStr); return TCL_OK; } @@ -1489,7 +1492,7 @@ Pg_lo_tell ***********************************/ int -Pg_lo_tell(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_lo_tell(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { PGconn *conn; int fd; @@ -1522,7 +1525,7 @@ Pg_lo_unlink ***********************************/ int -Pg_lo_unlink(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_lo_unlink(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { PGconn *conn; int lobjId; @@ -1564,10 +1567,10 @@ Pg_lo_import ***********************************/ int -Pg_lo_import(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_lo_import(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { PGconn *conn; - char *filename; + const char *filename; Oid lobjId; if (argc != 3) @@ -1607,10 +1610,10 @@ Pg_lo_export ***********************************/ int -Pg_lo_export(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_lo_export(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { PGconn *conn; - char *filename; + const char *filename; Oid lobjId; int retval; @@ -1659,7 +1662,7 @@ Pg_lo_export(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) **********************************/ int -Pg_select(ClientData cData, Tcl_Interp *interp, int argc, char **argv) +Pg_select(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { Pg_ConnectionId *connid; PGconn *conn; @@ -1816,9 +1819,9 @@ Pg_listen vwait or update can be used to enter the Tcl event loop. ***********************************/ int -Pg_listen(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_listen(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { - char *origrelname; + const char *origrelname; char *caserelname; char *callback = NULL; Pg_TclNotifies *notifies; @@ -1860,7 +1863,7 @@ Pg_listen(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) else { /* Downcase it */ - char *rels = origrelname; + const char *rels = origrelname; char *reld = caserelname; while (*rels) @@ -1997,7 +2000,7 @@ Pg_on_connection_loss vwait or update can be used to enter the Tcl event loop. ***********************************/ int -Pg_on_connection_loss(ClientData cData, Tcl_Interp *interp, int argc, char *argv[]) +Pg_on_connection_loss(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[]) { char *callback = NULL; Pg_TclNotifies *notifies; diff --git a/src/interfaces/libpgtcl/pgtclCmds.h b/src/interfaces/libpgtcl/pgtclCmds.h index 5cc802a6964..1e50cdcd94f 100644 --- a/src/interfaces/libpgtcl/pgtclCmds.h +++ b/src/interfaces/libpgtcl/pgtclCmds.h @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: pgtclCmds.h,v 1.28 2002/09/04 20:31:46 momjian Exp $ + * $Id: pgtclCmds.h,v 1.29 2002/12/30 22:10:54 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -15,8 +15,14 @@ #define PGTCLCMDS_H #include <tcl.h> + #include "libpq-fe.h" +/* Hack to deal with Tcl 8.4 const-ification without losing compatibility */ +#ifndef CONST84 +#define CONST84 +#endif + #define RES_HARD_MAX 128 #define RES_START 16 @@ -86,54 +92,52 @@ typedef struct Pg_ConnectionId_s /* **************************/ /* registered Tcl functions */ /* **************************/ -extern int Pg_conndefaults( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); -extern int Pg_connect( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); -extern int Pg_disconnect( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); -extern int Pg_exec( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); -extern int Pg_execute( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); -extern int Pg_select( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); -extern int Pg_result( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); -extern int Pg_lo_open( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); -extern int Pg_lo_close( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); +extern int Pg_conndefaults(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); +extern int Pg_connect(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); +extern int Pg_disconnect(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); +extern int Pg_exec(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); +extern int Pg_execute(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); +extern int Pg_select(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); +extern int Pg_result(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); +extern int Pg_lo_open(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); +extern int Pg_lo_close(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); #ifdef PGTCL_USE_TCLOBJ -extern int Pg_lo_read( - ClientData cData, Tcl_Interp *interp, int objc, +extern int Pg_lo_read(ClientData cData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]); -extern int Pg_lo_write( - ClientData cData, Tcl_Interp *interp, int objc, +extern int Pg_lo_write(ClientData cData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]); #else -extern int Pg_lo_read( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); -extern int Pg_lo_write( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); +extern int Pg_lo_read(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); +extern int Pg_lo_write(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); #endif -extern int Pg_lo_lseek( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); -extern int Pg_lo_creat( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); -extern int Pg_lo_tell( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); -extern int Pg_lo_unlink( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); -extern int Pg_lo_import( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); -extern int Pg_lo_export( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); -extern int Pg_listen( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); -extern int Pg_on_connection_loss( - ClientData cData, Tcl_Interp *interp, int argc, char *argv[]); +extern int Pg_lo_lseek(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); +extern int Pg_lo_creat(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); +extern int Pg_lo_tell(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); +extern int Pg_lo_unlink(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); +extern int Pg_lo_import(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); +extern int Pg_lo_export(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); +extern int Pg_listen(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); +extern int Pg_on_connection_loss(ClientData cData, Tcl_Interp *interp, + int argc, CONST84 char *argv[]); #endif /* PGTCLCMDS_H */ diff --git a/src/interfaces/libpgtcl/pgtclId.c b/src/interfaces/libpgtcl/pgtclId.c index cc79339c6be..ecf1e362e80 100644 --- a/src/interfaces/libpgtcl/pgtclId.c +++ b/src/interfaces/libpgtcl/pgtclId.c @@ -13,7 +13,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclId.c,v 1.37 2002/10/17 14:53:32 tgl Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclId.c,v 1.38 2002/12/30 22:10:54 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -218,7 +218,8 @@ PgSetConnectionId(Tcl_Interp *interp, PGconn *conn) * Get back the connection from the Id */ PGconn * -PgGetConnectionId(Tcl_Interp *interp, char *id, Pg_ConnectionId ** connid_p) +PgGetConnectionId(Tcl_Interp *interp, CONST84 char *id, + Pg_ConnectionId ** connid_p) { Tcl_Channel conn_chan; Pg_ConnectionId *connid; @@ -326,7 +327,7 @@ PgDelConnectionId(DRIVER_DEL_PROTO) * is probably just not clearing result handles like they should. */ int -PgSetResultId(Tcl_Interp *interp, char *connid_c, PGresult *res) +PgSetResultId(Tcl_Interp *interp, CONST84 char *connid_c, PGresult *res) { Tcl_Channel conn_chan; Pg_ConnectionId *connid; @@ -384,7 +385,7 @@ PgSetResultId(Tcl_Interp *interp, char *connid_c, PGresult *res) } static int -getresid(Tcl_Interp *interp, char *id, Pg_ConnectionId ** connid_p) +getresid(Tcl_Interp *interp, CONST84 char *id, Pg_ConnectionId ** connid_p) { Tcl_Channel conn_chan; char *mark; @@ -426,7 +427,7 @@ getresid(Tcl_Interp *interp, char *id, Pg_ConnectionId ** connid_p) * Get back the result pointer from the Id */ PGresult * -PgGetResultId(Tcl_Interp *interp, char *id) +PgGetResultId(Tcl_Interp *interp, CONST84 char *id) { Pg_ConnectionId *connid; int resid; @@ -444,7 +445,7 @@ PgGetResultId(Tcl_Interp *interp, char *id) * Remove a result Id from the hash tables */ void -PgDelResultId(Tcl_Interp *interp, char *id) +PgDelResultId(Tcl_Interp *interp, CONST84 char *id) { Pg_ConnectionId *connid; int resid; @@ -460,7 +461,7 @@ PgDelResultId(Tcl_Interp *interp, char *id) * Get the connection Id from the result Id */ int -PgGetConnByResultId(Tcl_Interp *interp, char *resid_c) +PgGetConnByResultId(Tcl_Interp *interp, CONST84 char *resid_c) { char *mark; Tcl_Channel conn_chan; @@ -472,7 +473,8 @@ PgGetConnByResultId(Tcl_Interp *interp, char *resid_c) *mark = '.'; if (conn_chan && Tcl_GetChannelType(conn_chan) == &Pg_ConnType) { - Tcl_SetResult(interp, Tcl_GetChannelName(conn_chan), TCL_VOLATILE); + Tcl_SetResult(interp, (char *) Tcl_GetChannelName(conn_chan), + TCL_VOLATILE); return TCL_OK; } diff --git a/src/interfaces/libpgtcl/pgtclId.h b/src/interfaces/libpgtcl/pgtclId.h index 4f5558561bf..102324f01d5 100644 --- a/src/interfaces/libpgtcl/pgtclId.h +++ b/src/interfaces/libpgtcl/pgtclId.h @@ -10,7 +10,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: pgtclId.h,v 1.21 2002/09/02 21:51:47 tgl Exp $ + * $Id: pgtclId.h,v 1.22 2002/12/30 22:10:54 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -27,22 +27,23 @@ extern void PgSetConnectionId(Tcl_Interp *interp, PGconn *conn); int bufSize, int *errorCodePtr #else /* Tcl 7.6 and beyond use this signature */ -#define DRIVER_OUTPUT_PROTO ClientData cData, char *buf, int bufSize, \ +#define DRIVER_OUTPUT_PROTO ClientData cData, CONST84 char *buf, int bufSize, \ int *errorCodePtr #define DRIVER_INPUT_PROTO ClientData cData, char *buf, int bufSize, \ int *errorCodePtr #define DRIVER_DEL_PROTO ClientData cData, Tcl_Interp *interp #endif -extern PGconn *PgGetConnectionId(Tcl_Interp *interp, char *id, +extern PGconn *PgGetConnectionId(Tcl_Interp *interp, CONST84 char *id, Pg_ConnectionId **); extern int PgDelConnectionId(DRIVER_DEL_PROTO); extern int PgOutputProc(DRIVER_OUTPUT_PROTO); extern int PgInputProc(DRIVER_INPUT_PROTO); -extern int PgSetResultId(Tcl_Interp *interp, char *connid, PGresult *res); -extern PGresult *PgGetResultId(Tcl_Interp *interp, char *id); -extern void PgDelResultId(Tcl_Interp *interp, char *id); -extern int PgGetConnByResultId(Tcl_Interp *interp, char *resid); +extern int PgSetResultId(Tcl_Interp *interp, CONST84 char *connid, + PGresult *res); +extern PGresult *PgGetResultId(Tcl_Interp *interp, CONST84 char *id); +extern void PgDelResultId(Tcl_Interp *interp, CONST84 char *id); +extern int PgGetConnByResultId(Tcl_Interp *interp, CONST84 char *resid); extern void PgStartNotifyEventSource(Pg_ConnectionId * connid); extern void PgStopNotifyEventSource(Pg_ConnectionId * connid, bool allevents); extern void PgNotifyTransferEvents(Pg_ConnectionId * connid); |