summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--generic/tclDecls.h3
-rw-r--r--generic/tclIOUtil.c24
-rw-r--r--generic/tclStubInit.c2
3 files changed, 16 insertions, 13 deletions
diff --git a/generic/tclDecls.h b/generic/tclDecls.h
index c521845..7718588 100644
--- a/generic/tclDecls.h
+++ b/generic/tclDecls.h
@@ -3984,5 +3984,8 @@ extern const TclStubs *tclStubsPtr;
#undef Tcl_GlobalEvalObj
#define Tcl_GlobalEvalObj(interp, objPtr) \
Tcl_EvalObjEx(interp, objPtr, TCL_EVAL_GLOBAL)
+#undef Tcl_EvalFile
+#define Tcl_EvalFile(interp, fileName) \
+ Tcl_FSEvalFileEx(interp, Tcl_NewStringObj(filename, -1), NULL);
#endif /* _TCLDECLS */
diff --git a/generic/tclIOUtil.c b/generic/tclIOUtil.c
index 2c389c6..39a9474 100644
--- a/generic/tclIOUtil.c
+++ b/generic/tclIOUtil.c
@@ -412,21 +412,18 @@ Tcl_GetCwd(
return Tcl_DStringValue(cwdPtr);
}
+#if !defined(TCL_NO_DEPRECATED) && TCL_MAJOR_VERSION < 9
/* Obsolete */
+#undef Tcl_EvalFile
int
Tcl_EvalFile(
Tcl_Interp *interp, /* Interpreter in which to process file. */
const char *fileName) /* Name of file to process. Tilde-substitution
* will be performed on this name. */
{
- int ret;
- Tcl_Obj *pathPtr = Tcl_NewStringObj(fileName,-1);
-
- Tcl_IncrRefCount(pathPtr);
- ret = Tcl_FSEvalFile(interp, pathPtr);
- Tcl_DecrRefCount(pathPtr);
- return ret;
+ return Tcl_FSEvalFileEx(interp, Tcl_NewStringObj(fileName, -1), NULL);
}
+#endif
/*
* Now move on to the basic filesystem implementation.
@@ -1740,8 +1737,11 @@ Tcl_FSEvalFileEx(
Tcl_Channel chan;
Tcl_Obj *objPtr;
+ Tcl_IncrRefCount(pathPtr);
+ objPtr = Tcl_NewObj();
+ Tcl_IncrRefCount(objPtr);
if (Tcl_FSGetNormalizedPath(interp, pathPtr) == NULL) {
- return result;
+ goto end;
}
if (Tcl_FSStat(pathPtr, &statBuf) == -1) {
@@ -1756,7 +1756,7 @@ Tcl_FSEvalFileEx(
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
"couldn't read file \"%s\": %s",
Tcl_GetString(pathPtr), Tcl_PosixError(interp)));
- return result;
+ goto end;
}
/*
@@ -1775,13 +1775,10 @@ Tcl_FSEvalFileEx(
if (Tcl_SetChannelOption(interp, chan, "-encoding", encodingName)
!= TCL_OK) {
Tcl_Close(interp,chan);
- return result;
+ goto end;
}
}
- objPtr = Tcl_NewObj();
- Tcl_IncrRefCount(objPtr);
-
/*
* Try to read first character of stream, so we can check for utf-8 BOM to
* be handled especially.
@@ -1857,6 +1854,7 @@ Tcl_FSEvalFileEx(
end:
Tcl_DecrRefCount(objPtr);
+ Tcl_DecrRefCount(pathPtr);
return result;
}
diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c
index 03ef7d6..eacc8ca 100644
--- a/generic/tclStubInit.c
+++ b/generic/tclStubInit.c
@@ -371,6 +371,8 @@ static int formatInt(char *buffer, int n){
# define Tcl_EvalObj 0
# undef Tcl_GlobalEvalObj
# define Tcl_GlobalEvalObj 0
+# undef Tcl_EvalFile
+# define Tcl_EvalFile 0
# define TclBackgroundException 0
# undef TclpReaddir
# define TclpReaddir 0