summaryrefslogtreecommitdiffstats
path: root/generic/tclStubInit.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2024-03-08 15:15:51 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2024-03-08 15:15:51 (GMT)
commitc42145fb01f8930c18688e62eebc438576d624dd (patch)
tree109f87c7f6909698dfbc7e20787ff88e8ba6b4df /generic/tclStubInit.c
parente2289c9ee3d4e7c6427d60926f2c05696812f359 (diff)
downloadtcl-c42145fb01f8930c18688e62eebc438576d624dd.zip
tcl-c42145fb01f8930c18688e62eebc438576d624dd.tar.gz
tcl-c42145fb01f8930c18688e62eebc438576d624dd.tar.bz2
Add Tcl_GetAlias/Tcl_GetAliasObj to TIP #616
Diffstat (limited to 'generic/tclStubInit.c')
-rw-r--r--generic/tclStubInit.c42
1 files changed, 38 insertions, 4 deletions
diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c
index 9072796..58b0465 100644
--- a/generic/tclStubInit.c
+++ b/generic/tclStubInit.c
@@ -98,6 +98,8 @@
# define TclSplitPath 0
# define TclFSSplitPath 0
# define TclParseArgsObjv 0
+# define TclGetAlias 0
+# define TclGetAliasObj 0
#else /* !defined(TCL_NO_DEPRECATED) */
int TclListObjGetElements(Tcl_Interp *interp, Tcl_Obj *listPtr,
void *objcPtr, Tcl_Obj ***objvPtr) {
@@ -192,6 +194,38 @@ int TclParseArgsObjv(Tcl_Interp *interp,
*(int *)objcPtr = (int)n;
return result;
}
+int TclGetAlias(Tcl_Interp *interp, const char *childCmd,
+ Tcl_Interp **targetInterpPtr, const char **targetCmdPtr,
+ int *argcPtr, const char ***argvPtr) {
+ Tcl_Size n = TCL_INDEX_NONE;
+ int result = Tcl_GetAlias(interp, childCmd, targetInterpPtr, targetCmdPtr, &n, argvPtr);
+ if (argcPtr) {
+ if ((sizeof(int) != sizeof(size_t)) && (result == TCL_OK) && (n > INT_MAX)) {
+ if (interp) {
+ Tcl_AppendResult(interp, "List too large to be processed", NULL);
+ }
+ return TCL_ERROR;
+ }
+ *argcPtr = (int)n;
+ }
+ return result;
+}
+int TclGetAliasObj(Tcl_Interp *interp, const char *childCmd,
+ Tcl_Interp **targetInterpPtr, const char **targetCmdPtr,
+ int *objcPtr, Tcl_Obj ***objv) {
+ Tcl_Size n = TCL_INDEX_NONE;
+ int result = Tcl_GetAliasObj(interp, childCmd, targetInterpPtr, targetCmdPtr, &n, objv);
+ if (objcPtr) {
+ if ((sizeof(int) != sizeof(size_t)) && (result == TCL_OK) && (n > INT_MAX)) {
+ if (interp) {
+ Tcl_AppendResult(interp, "List too large to be processed", NULL);
+ }
+ return TCL_ERROR;
+ }
+ *objcPtr = (int)n;
+ }
+ return result;
+}
#endif /* !defined(TCL_NO_DEPRECATED) */
#define TclBN_mp_add mp_add
@@ -939,12 +973,12 @@ const TclStubs tclStubs = {
Tcl_ExprObj, /* 141 */
Tcl_ExprString, /* 142 */
Tcl_Finalize, /* 143 */
- 0, /* 144 */
+ Tcl_GetAlias, /* 144 */
Tcl_FirstHashEntry, /* 145 */
Tcl_Flush, /* 146 */
- 0, /* 147 */
- Tcl_GetAlias, /* 148 */
- Tcl_GetAliasObj, /* 149 */
+ Tcl_GetAliasObj, /* 147 */
+ TclGetAlias, /* 148 */
+ TclGetAliasObj, /* 149 */
Tcl_GetAssocData, /* 150 */
Tcl_GetChannel, /* 151 */
Tcl_GetChannelBufferSize, /* 152 */