summaryrefslogtreecommitdiffstats
path: root/generic/tclInterp.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclInterp.c')
-rw-r--r--generic/tclInterp.c169
1 files changed, 160 insertions, 9 deletions
diff --git a/generic/tclInterp.c b/generic/tclInterp.c
index 96c0c7f..db7bb98 100644
--- a/generic/tclInterp.c
+++ b/generic/tclInterp.c
@@ -9,13 +9,14 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclInterp.c,v 1.5.12.2 2001/09/11 00:53:27 hobbs Exp $
+ * RCS: @(#) $Id: tclInterp.c,v 1.5.12.2.2.1 2001/11/28 17:58:37 andreas_kupries Exp $
*/
#include <stdio.h>
#include "tclInt.h"
#include "tclPort.h"
+#ifndef TCL_NO_CMDALIASES
/*
* Counter for how many aliases were created (global)
*/
@@ -57,7 +58,9 @@ typedef struct Alias {
* hash table is never required - we are using
* a hash table only for convenience. */
} Alias;
+#endif
+#if !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES))
/*
*
* struct Slave:
@@ -81,7 +84,9 @@ typedef struct Slave {
* in slave interpreter to struct Alias
* defined below. */
} Slave;
+#endif /* !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES)) */
+#ifndef TCL_NO_CMDALIASES
/*
* struct Target:
*
@@ -100,7 +105,9 @@ typedef struct Target {
Tcl_Command slaveCmd; /* Command for alias in slave interp. */
Tcl_Interp *slaveInterp; /* Slave Interpreter. */
} Target;
+#endif
+#if !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES))
/*
* struct Master:
*
@@ -120,6 +127,7 @@ typedef struct Target {
typedef struct Master {
Tcl_HashTable slaveTable; /* Hash table for slave interpreters.
* Maps from command names to Slave records. */
+#ifndef TCL_NO_CMDALIASES
Tcl_HashTable targetTable; /* Hash table for Target Records. Contains
* all Target records which denote aliases
* from slaves or sibling interpreters that
@@ -127,6 +135,7 @@ typedef struct Master {
* table is used to remove dangling pointers
* from the slave (or sibling) interpreters
* when this interpreter is deleted. */
+#endif
} Master;
/*
@@ -140,11 +149,13 @@ typedef struct InterpInfo {
Slave slave; /* Information necessary for this interp to
* function as a slave. */
} InterpInfo;
+#endif /* !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES)) */
/*
* Prototypes for local static procedures:
*/
+#ifndef TCL_NO_CMDALIASES
static int AliasCreate _ANSI_ARGS_((Tcl_Interp *interp,
Tcl_Interp *slaveInterp, Tcl_Interp *masterInterp,
Tcl_Obj *namePtr, Tcl_Obj *targetPtr, int objc,
@@ -160,13 +171,17 @@ static int AliasObjCmd _ANSI_ARGS_((ClientData dummy,
Tcl_Obj *CONST objv[]));
static void AliasObjCmdDeleteProc _ANSI_ARGS_((
ClientData clientData));
+#endif
+#if !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES))
static Tcl_Interp * GetInterp _ANSI_ARGS_((Tcl_Interp *interp,
Tcl_Obj *pathPtr));
static Tcl_Interp * GetInterp2 _ANSI_ARGS_((Tcl_Interp *interp, int objc,
Tcl_Obj *CONST objv[]));
static void InterpInfoDeleteProc _ANSI_ARGS_((
ClientData clientData, Tcl_Interp *interp));
+#endif /* !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES)) */
+#ifndef TCL_NO_SLAVEINTERP
static Tcl_Interp * SlaveCreate _ANSI_ARGS_((Tcl_Interp *interp,
Tcl_Obj *pathPtr, int safe));
static int SlaveEval _ANSI_ARGS_((Tcl_Interp *interp,
@@ -190,6 +205,7 @@ static int SlaveObjCmd _ANSI_ARGS_((ClientData dummy,
Tcl_Obj *CONST objv[]));
static void SlaveObjCmdDeleteProc _ANSI_ARGS_((
ClientData clientData));
+#endif
/*
*---------------------------------------------------------------------------
@@ -210,6 +226,7 @@ static void SlaveObjCmdDeleteProc _ANSI_ARGS_((
*---------------------------------------------------------------------------
*/
+#if !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES))
int
TclInterpInit(interp)
Tcl_Interp *interp; /* Interpreter to initialize. */
@@ -223,7 +240,9 @@ TclInterpInit(interp)
masterPtr = &interpInfoPtr->master;
Tcl_InitHashTable(&masterPtr->slaveTable, TCL_STRING_KEYS);
+#ifndef TCL_NO_CMDALIASES
Tcl_InitHashTable(&masterPtr->targetTable, TCL_ONE_WORD_KEYS);
+#endif
slavePtr = &interpInfoPtr->slave;
slavePtr->masterInterp = NULL;
@@ -237,6 +256,7 @@ TclInterpInit(interp)
Tcl_CallWhenDeleted(interp, InterpInfoDeleteProc, NULL);
return TCL_OK;
}
+#endif /* !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES)) */
/*
*---------------------------------------------------------------------------
@@ -256,6 +276,7 @@ TclInterpInit(interp)
*---------------------------------------------------------------------------
*/
+#if !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES))
static void
InterpInfoDeleteProc(clientData, interp)
ClientData clientData; /* Ignored. */
@@ -265,9 +286,11 @@ InterpInfoDeleteProc(clientData, interp)
InterpInfo *interpInfoPtr;
Slave *slavePtr;
Master *masterPtr;
+#ifndef TCL_NO_CMDALIASES
Tcl_HashSearch hSearch;
Tcl_HashEntry *hPtr;
Target *targetPtr;
+#endif
interpInfoPtr = (InterpInfo *) ((Interp *) interp)->interpInfo;
@@ -281,6 +304,7 @@ InterpInfoDeleteProc(clientData, interp)
}
Tcl_DeleteHashTable(&masterPtr->slaveTable);
+#ifndef TCL_NO_CMDALIASES
/*
* Tell any interps that have aliases to this interp that they should
* delete those aliases. If the other interp was already dead, it
@@ -295,6 +319,7 @@ InterpInfoDeleteProc(clientData, interp)
hPtr = Tcl_NextHashEntry(&hSearch);
}
Tcl_DeleteHashTable(&masterPtr->targetTable);
+#endif
slavePtr = &interpInfoPtr->slave;
if (slavePtr->interpCmd != NULL) {
@@ -321,6 +346,7 @@ InterpInfoDeleteProc(clientData, interp)
ckfree((char *) interpInfoPtr);
}
+#endif /* !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES)) */
/*
*----------------------------------------------------------------------
@@ -338,6 +364,8 @@ InterpInfoDeleteProc(clientData, interp)
*
*----------------------------------------------------------------------
*/
+
+#if !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES))
/* ARGSUSED */
int
Tcl_InterpObjCmd(clientData, interp, objc, objv)
@@ -348,17 +376,58 @@ Tcl_InterpObjCmd(clientData, interp, objc, objv)
{
int index;
static char *options[] = {
- "alias", "aliases", "create", "delete",
+#ifndef TCL_NO_CMDALIASES
+ "alias", "aliases",
+#endif
+#ifndef TCL_NO_SLAVEINTERP
+ "create", "delete",
"eval", "exists", "expose", "hide",
"hidden", "issafe", "invokehidden", "marktrusted",
- "slaves", "share", "target", "transfer",
+ "slaves",
+#endif
+#ifndef TCL_NO_SLAVEINTERP
+#ifndef TCL_NO_NONSTDCHAN
+ "share",
+#endif
+#endif
+#ifndef TCL_NO_CMDALIASES
+ "target",
+#endif
+#ifndef TCL_NO_SLAVEINTERP
+#ifndef TCL_NO_NONSTDCHAN
+ "transfer",
+#endif
+#endif
NULL
};
enum option {
- OPT_ALIAS, OPT_ALIASES, OPT_CREATE, OPT_DELETE,
- OPT_EVAL, OPT_EXISTS, OPT_EXPOSE, OPT_HIDE,
- OPT_HIDDEN, OPT_ISSAFE, OPT_INVOKEHID, OPT_MARKTRUSTED,
- OPT_SLAVES, OPT_SHARE, OPT_TARGET, OPT_TRANSFER
+#ifndef TCL_NO_CMDALIASES
+ OPT_ALIAS
+ ,OPT_ALIASES
+#endif
+#ifndef TCL_NO_SLAVEINTERP
+#ifndef TCL_NO_CMDALIASES
+ ,
+#endif
+ OPT_CREATE
+ ,OPT_DELETE
+ ,OPT_EVAL, OPT_EXISTS, OPT_EXPOSE, OPT_HIDE
+ ,OPT_HIDDEN, OPT_ISSAFE, OPT_INVOKEHID, OPT_MARKTRUSTED
+ ,OPT_SLAVES
+#endif
+#ifndef TCL_NO_SLAVEINTERP
+#ifndef TCL_NO_NONSTDCHAN
+ ,OPT_SHARE
+#endif
+#endif
+#ifndef TCL_NO_CMDALIASES
+ ,OPT_TARGET
+#endif
+#ifndef TCL_NO_SLAVEINTERP
+#ifndef TCL_NO_NONSTDCHAN
+ ,OPT_TRANSFER
+#endif
+#endif
};
@@ -371,6 +440,7 @@ Tcl_InterpObjCmd(clientData, interp, objc, objv)
return TCL_ERROR;
}
switch ((enum option) index) {
+#ifndef TCL_NO_CMDALIASES
case OPT_ALIAS: {
Tcl_Interp *slaveInterp, *masterInterp;
@@ -415,6 +485,8 @@ Tcl_InterpObjCmd(clientData, interp, objc, objv)
}
return AliasList(interp, slaveInterp);
}
+#endif
+#ifndef TCL_NO_SLAVEINTERP
case OPT_CREATE: {
int i, last, safe;
Tcl_Obj *slavePtr;
@@ -652,6 +724,9 @@ Tcl_InterpObjCmd(clientData, interp, objc, objv)
}
return TCL_OK;
}
+#endif
+#ifndef TCL_NO_NONSTDCHAN
+#ifndef TCL_NO_SLAVEINTERP
case OPT_SHARE: {
Tcl_Interp *slaveInterp; /* A slave. */
Tcl_Interp *masterInterp; /* Its master. */
@@ -678,6 +753,9 @@ Tcl_InterpObjCmd(clientData, interp, objc, objv)
Tcl_RegisterChannel(slaveInterp, chan);
return TCL_OK;
}
+#endif
+#endif
+#ifndef TCL_NO_CMDALIASES
case OPT_TARGET: {
Tcl_Interp *slaveInterp;
InterpInfo *iiPtr;
@@ -717,6 +795,9 @@ Tcl_InterpObjCmd(clientData, interp, objc, objv)
}
return TCL_OK;
}
+#endif
+#ifndef TCL_NO_NONSTDCHAN
+#ifndef TCL_NO_SLAVEINTERP
case OPT_TRANSFER: {
Tcl_Interp *slaveInterp; /* A slave. */
Tcl_Interp *masterInterp; /* Its master. */
@@ -747,9 +828,12 @@ Tcl_InterpObjCmd(clientData, interp, objc, objv)
}
return TCL_OK;
}
+#endif
+#endif
}
return TCL_OK;
}
+#endif /* !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES)) */
/*
*---------------------------------------------------------------------------
@@ -772,6 +856,7 @@ Tcl_InterpObjCmd(clientData, interp, objc, objv)
*---------------------------------------------------------------------------
*/
+#if !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES))
static Tcl_Interp *
GetInterp2(interp, objc, objv)
Tcl_Interp *interp; /* Default interp if no interp was specified
@@ -788,6 +873,7 @@ GetInterp2(interp, objc, objv)
return NULL;
}
}
+#endif /* !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES)) */
/*
*----------------------------------------------------------------------
@@ -805,6 +891,7 @@ GetInterp2(interp, objc, objv)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_CMDALIASES
int
Tcl_CreateAlias(slaveInterp, slaveCmd, targetInterp, targetCmd, argc, argv)
Tcl_Interp *slaveInterp; /* Interpreter for source command. */
@@ -843,6 +930,7 @@ Tcl_CreateAlias(slaveInterp, slaveCmd, targetInterp, targetCmd, argc, argv)
return result;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -860,6 +948,7 @@ Tcl_CreateAlias(slaveInterp, slaveCmd, targetInterp, targetCmd, argc, argv)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_CMDALIASES
int
Tcl_CreateAliasObj(slaveInterp, slaveCmd, targetInterp, targetCmd, objc, objv)
Tcl_Interp *slaveInterp; /* Interpreter for source command. */
@@ -885,6 +974,7 @@ Tcl_CreateAliasObj(slaveInterp, slaveCmd, targetInterp, targetCmd, objc, objv)
Tcl_DecrRefCount(targetObjPtr);
return result;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -902,6 +992,7 @@ Tcl_CreateAliasObj(slaveInterp, slaveCmd, targetInterp, targetCmd, objc, objv)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_CMDALIASES
int
Tcl_GetAlias(interp, aliasName, targetInterpPtr, targetNamePtr, argcPtr,
argvPtr)
@@ -945,6 +1036,7 @@ Tcl_GetAlias(interp, aliasName, targetInterpPtr, targetNamePtr, argcPtr,
}
return TCL_OK;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -962,6 +1054,7 @@ Tcl_GetAlias(interp, aliasName, targetInterpPtr, targetNamePtr, argcPtr,
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_CMDALIASES
int
Tcl_GetAliasObj(interp, aliasName, targetInterpPtr, targetNamePtr, objcPtr,
objvPtr)
@@ -1002,6 +1095,7 @@ Tcl_GetAliasObj(interp, aliasName, targetInterpPtr, targetNamePtr, objcPtr,
}
return TCL_OK;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -1025,6 +1119,7 @@ Tcl_GetAliasObj(interp, aliasName, targetInterpPtr, targetNamePtr, objcPtr,
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_CMDALIASES
int
TclPreventAliasLoop(interp, cmdInterp, cmd)
Tcl_Interp *interp; /* Interp in which to report errors. */
@@ -1095,6 +1190,7 @@ TclPreventAliasLoop(interp, cmdInterp, cmd)
/* NOTREACHED */
}
+#endif
/*
*----------------------------------------------------------------------
@@ -1113,6 +1209,7 @@ TclPreventAliasLoop(interp, cmdInterp, cmd)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_CMDALIASES
static int
AliasCreate(interp, slaveInterp, masterInterp, namePtr, targetNamePtr,
objc, objv)
@@ -1224,6 +1321,7 @@ AliasCreate(interp, slaveInterp, masterInterp, namePtr, targetNamePtr,
Tcl_SetObjResult(interp, namePtr);
return TCL_OK;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -1241,6 +1339,7 @@ AliasCreate(interp, slaveInterp, masterInterp, namePtr, targetNamePtr,
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_CMDALIASES
static int
AliasDelete(interp, slaveInterp, namePtr)
Tcl_Interp *interp; /* Interpreter for result & errors. */
@@ -1268,6 +1367,7 @@ AliasDelete(interp, slaveInterp, namePtr)
Tcl_DeleteCommandFromToken(slaveInterp, aliasPtr->slaveCmd);
return TCL_OK;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -1288,6 +1388,7 @@ AliasDelete(interp, slaveInterp, namePtr)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_CMDALIASES
static int
AliasDescribe(interp, slaveInterp, namePtr)
Tcl_Interp *interp; /* Interpreter for result & errors. */
@@ -1313,6 +1414,7 @@ AliasDescribe(interp, slaveInterp, namePtr)
Tcl_SetObjResult(interp, aliasPtr->prefixPtr);
return TCL_OK;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -1330,6 +1432,7 @@ AliasDescribe(interp, slaveInterp, namePtr)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_CMDALIASES
static int
AliasList(interp, slaveInterp)
Tcl_Interp *interp; /* Interp for data return. */
@@ -1351,6 +1454,7 @@ AliasList(interp, slaveInterp)
}
return TCL_OK;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -1374,6 +1478,7 @@ AliasList(interp, slaveInterp)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_CMDALIASES
static int
AliasObjCmd(clientData, interp, objc, objv)
ClientData clientData; /* Alias record. */
@@ -1460,6 +1565,7 @@ AliasObjCmd(clientData, interp, objc, objv)
Tcl_Release((ClientData) targetInterp);
return result;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -1479,6 +1585,7 @@ AliasObjCmd(clientData, interp, objc, objv)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_CMDALIASES
static void
AliasObjCmdDeleteProc(clientData)
ClientData clientData; /* The alias record for this alias. */
@@ -1498,6 +1605,7 @@ AliasObjCmdDeleteProc(clientData)
ckfree((char *) aliasPtr);
}
+#endif
/*
*----------------------------------------------------------------------
@@ -1522,6 +1630,7 @@ AliasObjCmdDeleteProc(clientData)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_SLAVEINTERP
Tcl_Interp *
Tcl_CreateSlave(interp, slavePath, isSafe)
Tcl_Interp *interp; /* Interpreter to start search at. */
@@ -1537,6 +1646,7 @@ Tcl_CreateSlave(interp, slavePath, isSafe)
return slaveInterp;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -1555,6 +1665,7 @@ Tcl_CreateSlave(interp, slavePath, isSafe)
*----------------------------------------------------------------------
*/
+#if !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES))
Tcl_Interp *
Tcl_GetSlave(interp, slavePath)
Tcl_Interp *interp; /* Interpreter to start search from. */
@@ -1569,6 +1680,7 @@ Tcl_GetSlave(interp, slavePath)
return slaveInterp;
}
+#endif /* !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES)) */
/*
*----------------------------------------------------------------------
@@ -1586,6 +1698,7 @@ Tcl_GetSlave(interp, slavePath)
*----------------------------------------------------------------------
*/
+#if !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES))
Tcl_Interp *
Tcl_GetMaster(interp)
Tcl_Interp *interp; /* Get the master of this interpreter. */
@@ -1598,6 +1711,7 @@ Tcl_GetMaster(interp)
slavePtr = &((InterpInfo *) ((Interp *) interp)->interpInfo)->slave;
return slavePtr->masterInterp;
}
+#endif /* !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES)) */
/*
*----------------------------------------------------------------------
@@ -1625,6 +1739,7 @@ Tcl_GetMaster(interp)
*----------------------------------------------------------------------
*/
+#if !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES))
int
Tcl_GetInterpPath(askingInterp, targetInterp)
Tcl_Interp *askingInterp; /* Interpreter to start search from. */
@@ -1647,6 +1762,7 @@ Tcl_GetInterpPath(askingInterp, targetInterp)
iiPtr->slave.slaveEntryPtr));
return TCL_OK;
}
+#endif /* !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES)) */
/*
*----------------------------------------------------------------------
@@ -1665,6 +1781,7 @@ Tcl_GetInterpPath(askingInterp, targetInterp)
*----------------------------------------------------------------------
*/
+#if !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES))
static Tcl_Interp *
GetInterp(interp, pathPtr)
Tcl_Interp *interp; /* Interp. to start search from. */
@@ -1704,6 +1821,7 @@ GetInterp(interp, pathPtr)
}
return searchInterp;
}
+#endif /* !(defined(TCL_NO_SLAVEINTERP) && defined(TCL_NO_CMDALIASES)) */
/*
*----------------------------------------------------------------------
@@ -1724,6 +1842,7 @@ GetInterp(interp, pathPtr)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_SLAVEINTERP
static Tcl_Interp *
SlaveCreate(interp, pathPtr, safe)
Tcl_Interp *interp; /* Interp. to start search from. */
@@ -1802,6 +1921,7 @@ SlaveCreate(interp, pathPtr, safe)
return NULL;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -1820,6 +1940,7 @@ SlaveCreate(interp, pathPtr, safe)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_SLAVEINTERP
static int
SlaveObjCmd(clientData, interp, objc, objv)
ClientData clientData; /* Slave interpreter. */
@@ -1830,12 +1951,18 @@ SlaveObjCmd(clientData, interp, objc, objv)
Tcl_Interp *slaveInterp;
int index;
static char *options[] = {
- "alias", "aliases", "eval", "expose",
+#ifndef TCL_NO_CMDALIASES
+ "alias", "aliases",
+#endif
+ "eval", "expose",
"hide", "hidden", "issafe", "invokehidden",
"marktrusted", NULL
};
enum options {
- OPT_ALIAS, OPT_ALIASES, OPT_EVAL, OPT_EXPOSE,
+#ifndef TCL_NO_CMDALIASES
+ OPT_ALIAS, OPT_ALIASES,
+#endif
+ OPT_EVAL, OPT_EXPOSE,
OPT_HIDE, OPT_HIDDEN, OPT_ISSAFE, OPT_INVOKEHIDDEN,
OPT_MARKTRUSTED
};
@@ -1855,6 +1982,7 @@ SlaveObjCmd(clientData, interp, objc, objv)
}
switch ((enum options) index) {
+#ifndef TCL_NO_CMDALIASES
case OPT_ALIAS: {
if (objc == 3) {
return AliasDescribe(interp, slaveInterp, objv[2]);
@@ -1874,6 +2002,7 @@ SlaveObjCmd(clientData, interp, objc, objv)
case OPT_ALIASES: {
return AliasList(interp, slaveInterp);
}
+#endif
case OPT_EVAL: {
if (objc < 3) {
Tcl_WrongNumArgs(interp, 2, objv, "arg ?arg ...?");
@@ -1949,6 +2078,7 @@ SlaveObjCmd(clientData, interp, objc, objv)
return TCL_ERROR;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -1969,6 +2099,7 @@ SlaveObjCmd(clientData, interp, objc, objv)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_SLAVEINTERP
static void
SlaveObjCmdDeleteProc(clientData)
ClientData clientData; /* The SlaveRecord for the command. */
@@ -1997,6 +2128,7 @@ SlaveObjCmdDeleteProc(clientData)
Tcl_DeleteInterp(slavePtr->slaveInterp);
}
}
+#endif
/*
*----------------------------------------------------------------------
@@ -2014,6 +2146,7 @@ SlaveObjCmdDeleteProc(clientData)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_SLAVEINTERP
static int
SlaveEval(interp, slaveInterp, objc, objv)
Tcl_Interp *interp; /* Interp for error return. */
@@ -2041,6 +2174,7 @@ SlaveEval(interp, slaveInterp, objc, objv)
Tcl_Release((ClientData) slaveInterp);
return result;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -2059,6 +2193,7 @@ SlaveEval(interp, slaveInterp, objc, objv)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_SLAVEINTERP
static int
SlaveExpose(interp, slaveInterp, objc, objv)
Tcl_Interp *interp; /* Interp for error return. */
@@ -2083,6 +2218,7 @@ SlaveExpose(interp, slaveInterp, objc, objv)
}
return TCL_OK;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -2101,6 +2237,7 @@ SlaveExpose(interp, slaveInterp, objc, objv)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_SLAVEINTERP
static int
SlaveHide(interp, slaveInterp, objc, objv)
Tcl_Interp *interp; /* Interp for error return. */
@@ -2125,6 +2262,7 @@ SlaveHide(interp, slaveInterp, objc, objv)
}
return TCL_OK;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -2143,6 +2281,7 @@ SlaveHide(interp, slaveInterp, objc, objv)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_SLAVEINTERP
static int
SlaveHidden(interp, slaveInterp)
Tcl_Interp *interp; /* Interp for data return. */
@@ -2166,6 +2305,7 @@ SlaveHidden(interp, slaveInterp)
}
return TCL_OK;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -2183,6 +2323,7 @@ SlaveHidden(interp, slaveInterp)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_SLAVEINTERP
static int
SlaveInvokeHidden(interp, slaveInterp, global, objc, objv)
Tcl_Interp *interp; /* Interp for error return. */
@@ -2216,6 +2357,7 @@ SlaveInvokeHidden(interp, slaveInterp, global, objc, objv)
Tcl_Release((ClientData) slaveInterp);
return result;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -2234,6 +2376,7 @@ SlaveInvokeHidden(interp, slaveInterp, global, objc, objv)
*----------------------------------------------------------------------
*/
+#ifndef TCL_NO_SLAVEINTERP
static int
SlaveMarkTrusted(interp, slaveInterp)
Tcl_Interp *interp; /* Interp for error return. */
@@ -2249,6 +2392,7 @@ SlaveMarkTrusted(interp, slaveInterp)
((Interp *) slaveInterp)->flags &= ~SAFE_INTERP;
return TCL_OK;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -2340,6 +2484,13 @@ Tcl_MakeSafe(interp)
Tcl_UnsetVar(interp, "tcl_library", TCL_GLOBAL_ONLY);
Tcl_UnsetVar(interp, "tcl_pkgPath", TCL_GLOBAL_ONLY);
+#ifdef TCL_NO_NONSTDCHAN
+ /* IOS FIXME: Unregister is still required to make sub interpreters safe by
+ * removing the std* channels from them.
+ * This means that removal of sub interp fucntionality allows the removal of this
+ * functionality too.
+ */
+#endif
/*
* Remove the standard channels from the interpreter; safe interpreters
* do not ordinarily have access to stdin, stdout and stderr.