]> granicus.if.org Git - postgresql/commitdiff
Adjust Tcl-related code to compile cleanly with Tcl 8.4 (add const modifiers as
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 30 Dec 2002 22:10:54 +0000 (22:10 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 30 Dec 2002 22:10:54 +0000 (22:10 +0000)
needed).  Some desultory const-ification of SPI interface to support this.

doc/src/sgml/spi.sgml
src/backend/executor/spi.c
src/backend/utils/mmgr/portalmem.c
src/include/executor/spi.h
src/include/utils/portal.h
src/interfaces/libpgtcl/pgtclCmds.c
src/interfaces/libpgtcl/pgtclCmds.h
src/interfaces/libpgtcl/pgtclId.c
src/interfaces/libpgtcl/pgtclId.h
src/pl/tcl/pltcl.c

index e25c2a259cc0250f2b7cd3aca77f43559acce994..403baea4e38bc960b45f0fb8381295c4d4a1ae65 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/spi.sgml,v 1.23 2002/09/02 06:11:42 momjian Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/spi.sgml,v 1.24 2002/12/30 22:10:53 tgl Exp $
 -->
 
 <Chapter id="spi">
@@ -348,7 +348,7 @@ SPI_exec(<REPLACEABLE CLASS="PARAMETER">query</REPLACEABLE>, <REPLACEABLE CLASS=
 <VARIABLELIST>
 <VARLISTENTRY>
 <TERM>
-char *<REPLACEABLE CLASS="PARAMETER">query</REPLACEABLE>
+const char * <REPLACEABLE CLASS="PARAMETER">query</REPLACEABLE>
 </TERM>
 <LISTITEM>
 <PARA>
@@ -597,7 +597,7 @@ SPI_prepare(<REPLACEABLE CLASS="PARAMETER">query</REPLACEABLE>, <REPLACEABLE CLA
 <VARIABLELIST>
 <VARLISTENTRY>
 <TERM>
-<REPLACEABLE CLASS="PARAMETER">query</REPLACEABLE>
+const char * <REPLACEABLE CLASS="PARAMETER">query</REPLACEABLE>
 </TERM>
 <LISTITEM>
 <PARA>
@@ -607,7 +607,7 @@ Query string
 </VARLISTENTRY>
 <VARLISTENTRY>
 <TERM>
-<REPLACEABLE CLASS="PARAMETER">nargs</REPLACEABLE>
+int <REPLACEABLE CLASS="PARAMETER">nargs</REPLACEABLE>
 </TERM>
 <LISTITEM>
 <PARA>
@@ -617,7 +617,7 @@ Number of input parameters ($1 ... $nargs - as in SQL-functions)
 </VARLISTENTRY>
 <VARLISTENTRY>
 <TERM>
-<REPLACEABLE CLASS="PARAMETER">argtypes</REPLACEABLE>
+Oid * <REPLACEABLE CLASS="PARAMETER">argtypes</REPLACEABLE>
 </TERM>
 <LISTITEM>
 <PARA>
@@ -780,7 +780,7 @@ Actual parameter values
 </VARLISTENTRY>
 <VARLISTENTRY>
 <TERM>
-char *<REPLACEABLE CLASS="PARAMETER">nulls</REPLACEABLE>
+const char *<REPLACEABLE CLASS="PARAMETER">nulls</REPLACEABLE>
 </TERM>
 <LISTITEM>
 <PARA>
@@ -948,7 +948,7 @@ SPI_cursor_open(<REPLACEABLE CLASS="PARAMETER">name</REPLACEABLE>,
 <VARIABLELIST>
 <VARLISTENTRY>
 <TERM>
-char *<REPLACEABLE CLASS="PARAMETER">name</REPLACEABLE>
+const char *<REPLACEABLE CLASS="PARAMETER">name</REPLACEABLE>
 </TERM>
 <LISTITEM>
 <PARA>
@@ -978,7 +978,7 @@ Actual parameter values
 </VARLISTENTRY>
 <VARLISTENTRY>
 <TERM>
-char *<REPLACEABLE CLASS="PARAMETER">nulls</REPLACEABLE>
+const char *<REPLACEABLE CLASS="PARAMETER">nulls</REPLACEABLE>
 </TERM>
 <LISTITEM>
 <PARA>
@@ -1089,7 +1089,7 @@ SPI_cursor_find(<REPLACEABLE CLASS="PARAMETER">name</REPLACEABLE>)
 <VARIABLELIST>
 <VARLISTENTRY>
 <TERM>
-char *<REPLACEABLE CLASS="PARAMETER">name</REPLACEABLE>
+const char *<REPLACEABLE CLASS="PARAMETER">name</REPLACEABLE>
 </TERM>
 <LISTITEM>
 <PARA>
@@ -1699,7 +1699,7 @@ Input tuple description
 </VARLISTENTRY>
 <VARLISTENTRY>
 <TERM>
-char * <REPLACEABLE CLASS="PARAMETER">fname</REPLACEABLE>
+const char * <REPLACEABLE CLASS="PARAMETER">fname</REPLACEABLE>
 </TERM>
 <LISTITEM>
 <PARA>
@@ -3068,7 +3068,7 @@ New values for the attributes specified
 </VARLISTENTRY>
 <VARLISTENTRY>
 <TERM>
-char * <REPLACEABLE CLASS="PARAMETER">Nulls</REPLACEABLE>
+const char * <REPLACEABLE CLASS="PARAMETER">Nulls</REPLACEABLE>
 </TERM>
 <LISTITEM>
 <PARA>
index dba491e3d030b3c566fdd2f559a188639f7f18f7..abca504f2ae46c56667981a3b97b9e290bd01407 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/executor/spi.c,v 1.82 2002/12/17 15:51:59 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/executor/spi.c,v 1.83 2002/12/30 22:10:54 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -32,11 +32,11 @@ static _SPI_connection *_SPI_current = NULL;
 static int     _SPI_connected = -1;
 static int     _SPI_curid = -1;
 
-static int     _SPI_execute(char *src, int tcount, _SPI_plan *plan);
+static int     _SPI_execute(const char *src, int tcount, _SPI_plan *plan);
 static int     _SPI_pquery(QueryDesc *queryDesc, bool runit, int tcount);
 
 static int _SPI_execute_plan(_SPI_plan *plan,
-                                 Datum *Values, char *Nulls, int tcount);
+                                 Datum *Values, const char *Nulls, int tcount);
 
 static void _SPI_cursor_operation(Portal portal, bool forward, int count,
                                          CommandDest dest);
@@ -187,7 +187,7 @@ SPI_pop(void)
 }
 
 int
-SPI_exec(char *src, int tcount)
+SPI_exec(const char *src, int tcount)
 {
        int                     res;
 
@@ -205,7 +205,7 @@ SPI_exec(char *src, int tcount)
 }
 
 int
-SPI_execp(void *plan, Datum *Values, char *Nulls, int tcount)
+SPI_execp(void *plan, Datum *Values, const char *Nulls, int tcount)
 {
        int                     res;
 
@@ -226,7 +226,7 @@ SPI_execp(void *plan, Datum *Values, char *Nulls, int tcount)
 }
 
 void *
-SPI_prepare(char *src, int nargs, Oid *argtypes)
+SPI_prepare(const char *src, int nargs, Oid *argtypes)
 {
        _SPI_plan  *plan;
 
@@ -382,7 +382,7 @@ SPI_copytupleintoslot(HeapTuple tuple, TupleDesc tupdesc)
 
 HeapTuple
 SPI_modifytuple(Relation rel, HeapTuple tuple, int natts, int *attnum,
-                               Datum *Values, char *Nulls)
+                               Datum *Values, const char *Nulls)
 {
        MemoryContext oldcxt = NULL;
        HeapTuple       mtuple;
@@ -455,7 +455,7 @@ SPI_modifytuple(Relation rel, HeapTuple tuple, int natts, int *attnum,
 }
 
 int
-SPI_fnumber(TupleDesc tupdesc, char *fname)
+SPI_fnumber(TupleDesc tupdesc, const char *fname)
 {
        int                     res;
        Form_pg_attribute sysatt;
@@ -693,7 +693,7 @@ SPI_freetuptable(SPITupleTable *tuptable)
  *     Open a prepared SPI plan as a portal
  */
 Portal
-SPI_cursor_open(char *name, void *plan, Datum *Values, char *Nulls)
+SPI_cursor_open(const char *name, void *plan, Datum *Values, const char *Nulls)
 {
        static int      unnamed_portal_count = 0;
 
@@ -827,7 +827,7 @@ SPI_cursor_open(char *name, void *plan, Datum *Values, char *Nulls)
  *     Find the portal of an existing open cursor
  */
 Portal
-SPI_cursor_find(char *name)
+SPI_cursor_find(const char *name)
 {
        return GetPortalByName(name);
 }
@@ -944,7 +944,7 @@ spi_printtup(HeapTuple tuple, TupleDesc tupdesc, DestReceiver *self)
  * If plan != NULL, just prepare plan tree, else execute immediately.
  */
 static int
-_SPI_execute(char *src, int tcount, _SPI_plan *plan)
+_SPI_execute(const char *src, int tcount, _SPI_plan *plan)
 {
        StringInfoData stri;
        List       *raw_parsetree_list;
@@ -1110,7 +1110,8 @@ _SPI_execute(char *src, int tcount, _SPI_plan *plan)
 }
 
 static int
-_SPI_execute_plan(_SPI_plan *plan, Datum *Values, char *Nulls, int tcount)
+_SPI_execute_plan(_SPI_plan *plan, Datum *Values, const char *Nulls,
+                                 int tcount)
 {
        List       *query_list_list = plan->qtlist;
        List       *plan_list = plan->ptlist;
index eaead7dffc95fe0e54d2ad41985b1efe6830381b..520a55d64ae504cd45b975f1ed7df77ff0677b28 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/mmgr/portalmem.c,v 1.50 2002/12/05 15:50:35 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/mmgr/portalmem.c,v 1.51 2002/12/30 22:10:54 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -134,7 +134,7 @@ EnablePortalManager(void)
  *             Returns a portal given a portal name, or NULL if name not found.
  */
 Portal
-GetPortalByName(char *name)
+GetPortalByName(const char *name)
 {
        Portal          portal;
 
@@ -173,7 +173,7 @@ PortalSetQuery(Portal portal,
  *             "WARNING" if portal name is in use (existing portal is returned!)
  */
 Portal
-CreatePortal(char *name)
+CreatePortal(const char *name)
 {
        Portal          portal;
 
index 263661492da8de1341193283f95fb89b49544feb..85a987b14b23bccfdd53820849af37ad0fd6647a 100644 (file)
@@ -2,7 +2,7 @@
  *
  * spi.h
  *
- * $Id: spi.h,v 1.34 2002/12/13 19:45:56 tgl Exp $
+ * $Id: spi.h,v 1.35 2002/12/30 22:10:54 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -80,9 +80,10 @@ extern int   SPI_connect(void);
 extern int     SPI_finish(void);
 extern void SPI_push(void);
 extern void SPI_pop(void);
-extern int     SPI_exec(char *src, int tcount);
-extern int     SPI_execp(void *plan, Datum *values, char *Nulls, int tcount);
-extern void *SPI_prepare(char *src, int nargs, Oid *argtypes);
+extern int     SPI_exec(const char *src, int tcount);
+extern int     SPI_execp(void *plan, Datum *values, const char *Nulls,
+                                         int tcount);
+extern void *SPI_prepare(const char *src, int nargs, Oid *argtypes);
 extern void *SPI_saveplan(void *plan);
 extern int     SPI_freeplan(void *plan);
 
@@ -91,8 +92,8 @@ extern TupleDesc SPI_copytupledesc(TupleDesc tupdesc);
 extern TupleTableSlot *SPI_copytupleintoslot(HeapTuple tuple,
                                          TupleDesc tupdesc);
 extern HeapTuple SPI_modifytuple(Relation rel, HeapTuple tuple, int natts,
-                               int *attnum, Datum *Values, char *Nulls);
-extern int     SPI_fnumber(TupleDesc tupdesc, char *fname);
+                               int *attnum, Datum *Values, const char *Nulls);
+extern int     SPI_fnumber(TupleDesc tupdesc, const char *fname);
 extern char *SPI_fname(TupleDesc tupdesc, int fnumber);
 extern char *SPI_getvalue(HeapTuple tuple, TupleDesc tupdesc, int fnumber);
 extern Datum SPI_getbinval(HeapTuple tuple, TupleDesc tupdesc, int fnumber, bool *isnull);
@@ -105,9 +106,9 @@ extern void SPI_pfree(void *pointer);
 extern void SPI_freetuple(HeapTuple pointer);
 extern void SPI_freetuptable(SPITupleTable *tuptable);
 
-extern Portal SPI_cursor_open(char *name, void *plan,
-                               Datum *Values, char *Nulls);
-extern Portal SPI_cursor_find(char *name);
+extern Portal SPI_cursor_open(const char *name, void *plan,
+                               Datum *Values, const char *Nulls);
+extern Portal SPI_cursor_find(const char *name);
 extern void SPI_cursor_fetch(Portal portal, bool forward, int count);
 extern void SPI_cursor_move(Portal portal, bool forward, int count);
 extern void SPI_cursor_close(Portal portal);
index 40258acc32a34113804457127bb9b0f2339ff9af..41fa2f735c2b15b19504ecb3621658a5f2c50487 100644 (file)
@@ -9,7 +9,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: portal.h,v 1.36 2002/12/05 15:50:39 tgl Exp $
+ * $Id: portal.h,v 1.37 2002/12/30 22:10:54 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -53,9 +53,9 @@ typedef struct PortalData
 
 extern void EnablePortalManager(void);
 extern void AtEOXact_portals(void);
-extern Portal CreatePortal(char *name);
+extern Portal CreatePortal(const char *name);
 extern void PortalDrop(Portal portal);
-extern Portal GetPortalByName(char *name);
+extern Portal GetPortalByName(const char *name);
 extern void PortalSetQuery(Portal portal, QueryDesc *queryDesc,
                                                   void (*cleanup) (Portal portal));
 
index ff57d2c365367fb13786bb38e401a2d96d5cba2a..97deada373457f950bada6e9876db33acf9fb5d4 100644 (file)
@@ -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;
index 5cc802a6964829baa87b2a24b411475bbde80f25..1e50cdcd94ff76d92e5229dadb0a2644d2a66d17 100644 (file)
@@ -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 $
  *
  *-------------------------------------------------------------------------
  */
 #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 */
index cc79339c6bee8d2e7133ec8d30d6d09ed7c6d856..ecf1e362e80e0e7660da17ff988f83b53f4a6a88 100644 (file)
@@ -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;
        }
 
index 4f5558561bfb17c6b73adfaa33c5292156aa34fb..102324f01d5c6f74794fdda27b6dfef51d941237 100644 (file)
@@ -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);
index bebb82ebdf0b731d927c332623b6ec31de572f1f..ac8d6046c3157bdb4b7297569d362bbfeb9b0a47 100644 (file)
@@ -31,7 +31,7 @@
  *       ENHANCEMENTS, OR MODIFICATIONS.
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.67 2002/11/22 16:25:32 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.68 2002/12/30 22:10:54 tgl Exp $
  *
  **********************************************************************/
 
 #include <fcntl.h>
 #include <setjmp.h>
 
+/* Hack to deal with Tcl 8.4 const-ification without losing compatibility */
+#ifndef CONST84
+#define CONST84
+#endif
+
 #include "access/heapam.h"
 #include "catalog/pg_language.h"
 #include "catalog/pg_proc.h"
@@ -152,27 +157,28 @@ static HeapTuple pltcl_trigger_handler(PG_FUNCTION_ARGS);
 static pltcl_proc_desc *compile_pltcl_function(Oid fn_oid, bool is_trigger);
 
 static int pltcl_elog(ClientData cdata, Tcl_Interp *interp,
-                  int argc, char *argv[]);
+                  int argc, CONST84 char *argv[]);
 static int pltcl_quote(ClientData cdata, Tcl_Interp *interp,
-                       int argc, char *argv[]);
+                       int argc, CONST84 char *argv[]);
 static int pltcl_argisnull(ClientData cdata, Tcl_Interp *interp,
-                               int argc, char *argv[]);
+                               int argc, CONST84 char *argv[]);
 static int pltcl_returnnull(ClientData cdata, Tcl_Interp *interp,
-                                int argc, char *argv[]);
+                                int argc, CONST84 char *argv[]);
 
 static int pltcl_SPI_exec(ClientData cdata, Tcl_Interp *interp,
-                          int argc, char *argv[]);
+                          int argc, CONST84 char *argv[]);
 static int pltcl_SPI_prepare(ClientData cdata, Tcl_Interp *interp,
-                                 int argc, char *argv[]);
+                                 int argc, CONST84 char *argv[]);
 static int pltcl_SPI_execp(ClientData cdata, Tcl_Interp *interp,
-                               int argc, char *argv[]);
+                               int argc, CONST84 char *argv[]);
+static int pltcl_SPI_lastoid(ClientData cdata, Tcl_Interp *interp,
+                                 int argc, CONST84 char *argv[]);
 
-static void pltcl_set_tuple_values(Tcl_Interp *interp, char *arrayname,
+static void pltcl_set_tuple_values(Tcl_Interp *interp, CONST84 char *arrayname,
                                           int tupno, HeapTuple tuple, TupleDesc tupdesc);
 static void pltcl_build_tuple_argument(HeapTuple tuple, TupleDesc tupdesc,
                                                   Tcl_DString *retval);
-static int pltcl_SPI_lastoid(ClientData cdata, Tcl_Interp *interp,
-                                 int argc, char *argv[]);
+
 
 /*
  * This routine is a crock, and so is everyplace that calls it.  The problem
@@ -191,6 +197,7 @@ perm_fmgr_info(Oid functionId, FmgrInfo *finfo)
        fmgr_info_cxt(functionId, finfo, TopMemoryContext);
 }
 
+
 /**********************************************************************
  * pltcl_init_all()            - Initialize all
  **********************************************************************/
@@ -625,7 +632,7 @@ pltcl_trigger_handler(PG_FUNCTION_ARGS)
        char       *modnulls;
 
        int                     ret_numvals;
-       char      **ret_values;
+       CONST84 char **ret_values;
 
        sigjmp_buf      save_restart;
 
@@ -1246,7 +1253,7 @@ compile_pltcl_function(Oid fn_oid, bool is_trigger)
  **********************************************************************/
 static int
 pltcl_elog(ClientData cdata, Tcl_Interp *interp,
-                  int argc, char *argv[])
+                  int argc, CONST84 char *argv[])
 {
        int                     level;
        sigjmp_buf      save_restart;
@@ -1316,10 +1323,10 @@ pltcl_elog(ClientData cdata, Tcl_Interp *interp,
  **********************************************************************/
 static int
 pltcl_quote(ClientData cdata, Tcl_Interp *interp,
-                       int argc, char *argv[])
+                       int argc, CONST84 char *argv[])
 {
        char       *tmp;
-       char       *cp1;
+       const char *cp1;
        char       *cp2;
 
        /************************************************************
@@ -1369,7 +1376,7 @@ pltcl_quote(ClientData cdata, Tcl_Interp *interp,
  **********************************************************************/
 static int
 pltcl_argisnull(ClientData cdata, Tcl_Interp *interp,
-                               int argc, char *argv[])
+                               int argc, CONST84 char *argv[])
 {
        int                     argno;
        FunctionCallInfo fcinfo = pltcl_current_fcinfo;
@@ -1426,7 +1433,7 @@ pltcl_argisnull(ClientData cdata, Tcl_Interp *interp,
  **********************************************************************/
 static int
 pltcl_returnnull(ClientData cdata, Tcl_Interp *interp,
-                                int argc, char *argv[])
+                                int argc, CONST84 char *argv[])
 {
        FunctionCallInfo fcinfo = pltcl_current_fcinfo;
 
@@ -1465,12 +1472,12 @@ pltcl_returnnull(ClientData cdata, Tcl_Interp *interp,
  **********************************************************************/
 static int
 pltcl_SPI_exec(ClientData cdata, Tcl_Interp *interp,
-                          int argc, char *argv[])
+                          int argc, CONST84 char *argv[])
 {
        int                     spi_rc;
        char            buf[64];
        int                     count = 0;
-       char       *volatile arrayname = NULL;
+       CONST84 char *volatile arrayname = NULL;
        volatile int query_idx;
        int                     i;
        int                     loop_rc;
@@ -1709,10 +1716,10 @@ pltcl_SPI_exec(ClientData cdata, Tcl_Interp *interp,
  **********************************************************************/
 static int
 pltcl_SPI_prepare(ClientData cdata, Tcl_Interp *interp,
-                                 int argc, char *argv[])
+                                 int argc, CONST84 char *argv[])
 {
        int                     nargs;
-       char      **args;
+       CONST84 char **args;
        pltcl_query_desc *qdesc;
        void       *plan;
        int                     i;
@@ -1778,7 +1785,7 @@ pltcl_SPI_prepare(ClientData cdata, Tcl_Interp *interp,
        for (i = 0; i < nargs; i++)
        {
                /* XXX should extend this to allow qualified type names */
-               typeTup = typenameType(makeTypeName(args[i]));
+               typeTup = typenameType(makeTypeName((char *) args[i]));
                qdesc->argtypes[i] = HeapTupleGetOid(typeTup);
                perm_fmgr_info(((Form_pg_type) GETSTRUCT(typeTup))->typinput,
                                           &(qdesc->arginfuncs[i]));
@@ -1880,9 +1887,12 @@ pltcl_SPI_prepare(ClientData cdata, Tcl_Interp *interp,
                query_hash = pltcl_safe_query_hash;
 
        memcpy(&Warn_restart, &save_restart, sizeof(Warn_restart));
+
        hashent = Tcl_CreateHashEntry(query_hash, qdesc->qname, &hashnew);
        Tcl_SetHashValue(hashent, (ClientData) qdesc);
 
+       ckfree((char *) args);
+
        Tcl_SetResult(interp, qdesc->qname, TCL_VOLATILE);
        return TCL_OK;
 }
@@ -1893,7 +1903,7 @@ pltcl_SPI_prepare(ClientData cdata, Tcl_Interp *interp,
  **********************************************************************/
 static int
 pltcl_SPI_execp(ClientData cdata, Tcl_Interp *interp,
-                               int argc, char *argv[])
+                               int argc, CONST84 char *argv[])
 {
        int                     spi_rc;
        char            buf[64];
@@ -1903,11 +1913,11 @@ pltcl_SPI_execp(ClientData cdata, Tcl_Interp *interp,
        Tcl_HashEntry *hashent;
        pltcl_query_desc *qdesc;
        Datum      *volatile argvalues = NULL;
-       char       *volatile nulls = NULL;
-       char       *volatile arrayname = NULL;
+       const char *volatile nulls = NULL;
+       CONST84 char *volatile arrayname = NULL;
        int                     count = 0;
        int                     callnargs;
-       static char **callargs = NULL;
+       static CONST84 char **callargs = NULL;
        int                     loop_rc;
        int                     ntuples;
        HeapTuple  *volatile tuples = NULL;
@@ -2279,7 +2289,7 @@ pltcl_SPI_execp(ClientData cdata, Tcl_Interp *interp,
  **********************************************************************/
 static int
 pltcl_SPI_lastoid(ClientData cdata, Tcl_Interp *interp,
-                                 int argc, char *argv[])
+                                 int argc, CONST84 char *argv[])
 {
        char            buf[64];
 
@@ -2294,7 +2304,7 @@ pltcl_SPI_lastoid(ClientData cdata, Tcl_Interp *interp,
  *                               of a given tuple
  **********************************************************************/
 static void
-pltcl_set_tuple_values(Tcl_Interp *interp, char *arrayname,
+pltcl_set_tuple_values(Tcl_Interp *interp, CONST84 char *arrayname,
                                           int tupno, HeapTuple tuple, TupleDesc tupdesc)
 {
        int                     i;
@@ -2303,14 +2313,14 @@ pltcl_set_tuple_values(Tcl_Interp *interp, char *arrayname,
        Datum           attr;
        bool            isnull;
 
-       char       *attname;
+       CONST84 char *attname;
        HeapTuple       typeTup;
        Oid                     typoutput;
        Oid                     typelem;
 
-       char      **arrptr;
-       char      **nameptr;
-       char       *nullname = NULL;
+       CONST84 char **arrptr;
+       CONST84 char **nameptr;
+       CONST84 char  *nullname = NULL;
 
        /************************************************************
         * Prepare pointers for Tcl_SetVar2() below and in array