| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclInt.h:
* generic/tclUtil.c:
* generic/tclIntDecls.h: `make genstubs`
* generic/tclStubInit.c:
* generic/tclBasic.c: Added callers of TclMatchIsTrivial where
* generic/tclCmdIL.c: a search can be done more efficiently
* generic/tclCompCmds.c:when it is recognized that a pattern match
* generic/tclDictObj.c: is really an exact match. [Patch 1076088]
* generic/tclIO.c:
* generic/tclNamesp.c:
* generic/tclVar.c:
|
|
|
|
|
|
|
|
| |
* generic/tclCompile.c: TCL_OUT_LINE_COMPILE with TCL_ERROR.
* generic/tclInt.h: Now that we've eradicated the mistaken
* tests/appendComp.test: notion of a "compile-time error", we
can use the TCL_ERROR return code to signal any failure to produce
bytecode.
|
|
|
|
|
|
|
|
|
| |
* generic/tclIOUtil.c (TclGetOpenModeEx): New routine.
* generic/tclInt.h:
* generic/tclIO.c (Tcl_OpenObjCmd): Support for "b" and
* doc/open.n: "BINARY" in "access" argument to [open].
* tests/ioCmd.test:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
it into agreement with its docs. Further investigation reveals it
was the docs that were incorrect.
* doc/BoolObj.3: Corrections to the documentation of
Tcl_GetBooleanFromObj to bring it into agreement with what this
public interface has always done, including noting the difference
in function between Tcl_GetBooleanFromObj and Tcl_GetBoolean.
* generic/tclGet.c: Revised Tcl_GetBoolean to no longer be a
wrapper around Tcl_GetBooleanFromObj (different function!).
* generic/tclObj.c: Removed TclGetTruthValueFromObj routine
that was added yesterday. Revisions so that only
Tcl_GetBoolean-approved values get the "boolean" Tcl_ObjType.
This retains the fix for [Bug 1187123].
* generic/tclInt.h: Revert most recent change.
* generic/tclBasic.c:
* generic/tclCompCmds.c:
* generic/tclDictObj.c:
* generic/tclExecute.c:
* tests/obj.test:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Tcl_GetFoo() routines into wrappers around Tcl_GetFooFromObj().
Reduces code duplication, and the resulting potential for inconsistency.
* generic/tclObj.c: Several changes:
- Fixed Tcl_GetBooleanFromObj to agree with its documentation and
with Tcl_GetBoolean, accepting only "0" and "1" and not other
numeric strings. [Bug 1187123]
- Added new private routine TclGetTruthValueFromObj to perform
the more permissive conversion of numeric values to boolean
that is needed by the [expr] machinery.
* generic/tclInt.h (TclGetTruthValueFromObj): New routine.
* generic/tclExecute.c: Updated callers to call new routine.
* tests/obj.test: Corrected bad tests that actually expected
values like "47" and "0xac" to be accepted as booleans.
|
|
|
|
|
|
|
|
| |
* generic/tclCmdAH.c: [::tcl::unsupported::EncodingDirs] to permit
* generic/tclInt.h: query/set of the encoding search path at
* generic/tclInterp.c: the script level. Updated init.tcl to make
* library/init.tcl: use of the new command. Also updated several
coding practices in init.tcl ("eq" for [string equal], etc.)
|
| |
|
|
|
|
|
|
|
|
|
| |
* generic/tclEncoding.c (TclGetEncodingFromObj): retrieve a
Tcl_Encoding value, as well as cache it in the internal rep
of a new "encoding" Tcl_ObjType.
* generic/tclCmdAH.c (Tcl_EncodingObjCmd): Updated to call
new function so that Tcl_Encoding's used by [encoding convert*]
routines are not freed too quickly. [Bug 1077262]
|
|
|
|
|
| |
* generic/tclObj.c: Change in TclDecrRefCount and TclFreeObj, to
speed up the freeing of simple Tcl_Obj [Patch 1174551]
|
|
|
|
|
|
|
|
| |
calls at list creation (from 2 to 1), (b) reduce the cost of handling empty
lists (we now never create a list internal rep for them), (c) allow
refcounting of the list internal rep. The latter permits insuring that the
pointers returned by Tcl_ListObjGetElements remain valid even if the object
shimmers away from its original list type. This is [Patch 1158008]
|
|
|
|
|
| |
* generic/tclInt.h: ExecEnv now stores two Tcl_Obj* pointing to
the constants "0" and "1", for use by TEBC.
|
|
|
|
|
|
|
|
|
| |
* generic/tclInt.h:
* generic/tclObj.c:
* generic/tclStringObj.c: defined new internal macros for creating
and setting frequently used obj types (int,long, wideInt, double,
string). Changed TEBC to use eg 'TclNewIntObj(objPtr, i)' to avoid
the function call in 'objPtr = Tcl_NewIntObj(i)'
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclInt.h: tclCompile.h to tclInt.h. Should have
been done as part of the 1115904 bug fix on 2005-03-18.
* generic/tclThreadTest.c: Stop providing the phony package
"Thread 1.0" when the [::testthread] command is defined. It's
never used by anything, and conflicts with loading the real
"Thread" package.
|
|
|
|
|
|
|
|
|
| |
cast of ClientData to (TraceCommandInfo *) when not warranted.
Thanks to Yuri Victorovich for the report. [Bug 1153871]
* generic/tcl.h: Moved flag values TCL_TRACE_ENTER_EXEC and
* generic/tclInt.h: TCL_TRACE_LEAVE_EXEC from public interface
into private. Should be used only by internal workings of
execution traces.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclDecls.h: Regenerated from tcl.decls.
* generic/tclStubInit.c:
* doc/CrtChannel.3: Documentation of extended API,
* generic/tcl.decls: extended testsuite, and
* generic/tcl.h: implementation. Removal of old
* generic/tclIO.c: driver-specific TclpCut/Splice
* generic/tclInt.h: functions. Replaced with generic
* tests/io.test: thread-action calls through the
* unix/tclUnixChan.c: new hooks. Update of all builtin
* unix/tclUnixPipe.c: channel drivers to version 4.
* unix/tclUnixSock.c: Windows drivers extended to
* win/tclWinChan.c: manage thread state in a thread
* win/tclWinConsole.c: action handler.
* win/tclWinPipe.c:
* win/tclWinSerial.c:
* win/tclWinSock.c:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclDecls.h: the modified tcl.decls (TIP #233, see below).
* doc/GetTime.3: Implemented TIP #233, i.e. the
* generic/tcl.decls: 'Virtualization of Tcl's Sense of Time'.
* generic/tcl.h: Declared, implemented, and documented the
* generic/tclInt.h: specified new API functions. Moved the
* unix/tclUnixEvent.c: native (OS) access to time information
* unix/tclUnixNotfy.c: into standard handler functions. Inserted
* unix/tclUnixTime.c: hooks calling on the handlers where native
* win/tclWinNotify.c: access was done before, and where scaling
* win/tclWinTime.c: between domains (real/virtual) is required.
|
|
|
|
| |
Ensembles now have a C API. :^)
|
| |
|
| |
|
|
|
|
| |
the TclRegisterNewLiteral macro [Patch 1090905]
|
|
|
|
| |
of the processing of the event loop or during a blocking [after]. [Bug 1085023]
|
|
|
|
| |
to flags. Should be perfectly backwards compatible.
|
|
|
|
| |
TclGetNamespaceFromObj().
|
|
|
|
| |
variables, removing tests from inner loops.
|
| |
|
|
|
|
|
|
|
|
|
| |
* generic/tclEvent.c: Broke apart TclpSetInitialEncodings() on
* generic/tclInt.h: Windows into TclpSetInterfaces(), that is
* unix/tclUnixInit.c: fundamentally essential, and the initialization
* win/tclWinInit.c: of the system encoding, which is not. Made
the TclpSetInterfaces call part of TclInitSubsystems so it cannot be
overlooked.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclEncoding.c: make use of a ProcessGlobalValue for
* generic/tclEvent.c: storing the executable name.
Added internal routines Tcl(Get|Set)ObjNameOfExecutable() to access
that storage in Tcl_Obj, rather than string format.
* unix/tclUnixFile.c: Rewrote TclpFindExecutable() to use
* win/tclWinFile.c: TclSetObjNameOfExecutable to store the
executable name it computes.
* generic/tclInt.h: Added internal stub entries for
* generic/tclInt.decls: TclpFindExecutable and
Tcl(Get|Set)ObjNameOfExecutable.
* generic/tclIntDecls.h: make genstubs
* generic/tclStubInit.c:
* generic/tclCmdIL.c: Retrieve executable name in Tcl_Obj form
* win/tclWinPipe.c: instead of string form.
* unix/tclUnixTest.c: Update [testfindexecutable] command to use
new internal interfaces.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
startup/initialization of the Tcl library, focused on the
activities of Tcl_FindExecutable().
* generic/tclIO.c: Removed bogus claim in comment that
encoding "iso8859-1" is "built-in" to Tcl.
* generic/tclInt.h: Created a new struct ProcessGlobalValue,
* generic/tclUtil.c: routines Tcl(Get|Set)ProcessGlobalValue,
and function type TclInitProcessGlobalValueProc. Together, these
take care of the housekeeping for "values" (things that can be
held in a Tcl_Obj) that are global across a whole process. That is,
they are shared among multiple threads, and epoch and mutex
protection must govern the validity of cached copies maintained
in each thread.
* generic/tclNotify.c: Modified TclInitNotifier() to tolerate
being called multiple times in the same thread.
* generic/tclEvent.c: Dropped the unused argv0 argument to
TclInitSubsystems(). Removed machinery to unsure only one
TclInitNotifier() call per thread, now that that is safe.
Converted Tcl(Get|Set)LibraryPath to use a ProcessGlobalValue,
and moved them to tclEncoding.c.
* generic/tclBasic.c: Updated caller.
* generic/tclInt.h: TclpFindExecutable now returns void.
* unix/tclUnixFile.c:
* win/tclWinFile.c:
* win/tclWinPipe.c:
* generic/tclEncoding.c: Built new encoding search initialization
on a foundation of ProcessGlobalValues, exposing new routines
Tcl(Get|Set)EncodingSearchPath. A cache of a map from encoding name
to directory pathname keeps track of where encodings are available
for loading. Tcl_FindExecutable greatly simplified into just
three function calls. The "library path" is now misnamed, as its
only remaining purpose is as a foundation for the default encoding
search path.
* generic/tclInterp.c: Inlined the initScript that is evaluated
by Tcl_Init(). Added verification after initScript evaluation
that Tcl can find its installed *.enc files, and that it has
initialized [encoding system] in agreement with what the environment
expects. [tclInit] no longer driven by the value of $::tcl_libPath;
it largely constructs its own search path now, rather than attempt
to share one with the encoding system.
* unix/tclUnixInit.c: TclpSetInitialEncodings factored so that a new
* win/tclWinInit.c: routine TclpGetEncodingNameFromEnvironment
can reveal that Tcl thinks the [encoding system] should be, even
when an incomplete encoding search path, or a missing *.enc file
won't allow that initialization to succeed. TclpInitLibraryPath
reworked as an initializer of a ProcessGlobalValue.
* unix/tclUnixTest.c: Update implementations of [testfindexecutable],
[testgetdefenc], and [testsetdefenc].
* tests/unixInit.test: Corrected tests to operate properly even
when a value of TCL_LIBRARY is required to find encodings.
* generic/tclInt.decls: New internal stubs: TclGetEncodingSearchPath,
TclSetEncodingSearchPath, TclpGetEncodingNameFromEnvironment. These
are candidates for public exposure by future TIPs.
* generic/tclIntDecls.h: make genstubs
* generic/tclStubInit.c:
* generic/tclTest.c: Updated [testencoding] to use
* tests/encoding.test: Tcl(Get|Set)EncodingSearchPath. Updated tests.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
data type Tcl_StatBuf relies on config information. For now,
disabled the use of the tclConfig.h file until its full impact
on Tcl's interface can be assessed.
* unix/configure: autoconf-2.57
* generic/tcl.h: Moved the #include "tclConfig.h" out of
* generic/tclInt.h: tcl.h. The config settings are not part of
* generic/tclPort.: the public interface, and having it there
breaks compiled against uninstalled Tcl and extensions using
autoconf-2.5*.
|
|
|
|
|
|
|
|
|
|
| |
ERR_IN_PROGRESS and ERROR_CODE_SET flag values should not be re-used
for the sake of those extensions that have accessed them.
* generic/tclCmdMZ.c (Tcl_TraceObjCmd): Fixed Bug 1065378 which failed
* tests/trace.test (trace-33.1): to permit a variable trace
created with [trace variable] to be destroyed with [trace remove].
Thanks to Keith Vetter for the report.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclBasic.c: Define [::tcl::Bgerror] in new interps.
* generic/tclEvent.c: Update Tcl_BackgroundError to make use
of the registered [interp bgerror] command.
* generic/tclInterp.c: New [interp bgerror] subcommand.
* tests/interp.test: syntax tests updated.
TIP #226 IMPLEMENTATION
* generic/tcl.decls: Stubs for Tcl_(Save|Restore|Discard)InterpState
* generic/tcl.h: New public opaque type, Tcl_InterpState.
* generic/tclInt.h: Drop old private declarations. Add
Tcl(Get|Set)BgErrorHandler
* generic/tclResult.c: Tcl_*InterpState implementations.
* generic/tclDictObj.c: Update callers.
* generic/tclIOGT.c:
* generic/tclTrace.c:
TIP #227 IMPLEMENTATION
* generic/tcl.decls: Stubs for Tcl_(Get|Set)ReturnOptions.
* generic/tclInt.h: Drop old private declarations.
* generic/tclResult.c: Tcl_*ReturnOptions implementations.
* generic/tclCmdAH.c: Update callers.
* generic/tclMain.c:
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclInt.h:
* unix/Makefile.in: include tclConfig.h from tcl.h and install it
as a public header. Normalized compiler include path order to
-I${BUILD_DIR} -I${UNIX_DIR} -I${GENERIC_DIR}.
* unix/dltest/Makefile.in: add ${BUILD_DIR}/.. to include path
to pick up tclConfig.h.
|
|
|
|
|
| |
* generic/tclExecute.c: multiple .c files into one common header where
* generic/tclVar.c: it is verifiably after tclConfig.h inclusion.
|
|
|
|
|
|
|
|
|
|
|
| |
* unix/tclConfig.h.in: renamed
* unix/Makefile.in: Completed support for config header,
* unix/configure.in: fixed building outside of the unix dir,
* unix/tclAppinit.c: and reflected the name change of config.h.
* generic/tclInt.h:
* unix/configure: generated
|
|
|
|
|
| |
command line. Third parties using generic/tclInt.h, unix/tclAppInit.c or
unix/tcl.m4 should be unaffected. Part of the general TIP#34 project.
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclDecls.h: from tclInt.h of setting the
* generic/tclInt.h: TCL_STORAGE_CLASS macro to the
* generic/tclIntDecls.h: tcl*Decls.h files now that no
* generic/tclIntPlatDecls.h: use of EXTERN is left in tclInt.h.
* generic/tclPlatDecls.h: Proto for Tcl_Main moved in tcl.h
* win/tclWinPort.h: to prior the inclusion of the Stubs
headers as they are now resetting TCL_STORAGE_CLASS. Removed
extrainious reset from tclWinPort.h. [Patch 1055668]
|
|
|
|
|
|
| |
of MODULE_SCOPE. About the only time it would be problem is when someone
is statically linking to Tcl and accessing internals from a C++ file and has name
mangling issues.
|
|
|
|
| |
tclInt.h are now no longer EXTERN but instead MODULE_SCOPE.
|
|
|
|
|
|
| |
relevant to users. [Patch 1056864]
Also patches to core to take advantage of this
Also other general cleaning up of Tcl_WrongNumArgs usage
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclInt.h: tclInt.h to the internal Stubs table for
* generic/tclIntDecls.h: use by the test suite. As tclTest.obj is
* generic/tclStubInit.c: linked to the shell, these functions need
"blessed" status so as to always be exported from the library. Being
placed in the Stubs table guarantees this [Bug 1054748]:
TclpObjRemoveDirectory, TclpObjCopyDirectory,
TclpObjCreateDirectory, TclpObjDeleteFile,
TclpObjCopyFile, TclpObjRenameFile,
TclpObjStat, TclpObjAccess,
TclpOpenFileChannel
|
|
|
|
| |
macros.
|
| |
|
|
|
|
|
|
|
|
| |
* generic/tclBasic.c (Tcl_CreateInterp,Tcl_DeleteInterp):
* generic/tclResult.c (GetKeys,ReleaseKeys,etc.):
Moved the key values of the return options dictionary out of
private fields of the Interp struct and into thread-static
values managed in tclResult.c.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Updated to call the new TclGet/SetReturnOptions routines to do
much of their work.
* generic/tclInt.h (TclGetReturnOptions,TclSetReturnOptions):
* generic/tclResult.c (TclGetReturnOptions,TclSetReturnOptions):
New utility routines to get/set the return options of an interp.
Intent is that these routines will be converted to public routines
after TIP approval.
* generic/tclCmdMZ.c (TclProcessReturn,TclMergeReturnOptions):
* generic/tclResult.c (TclProcessReturn,TclMergeReturnOptions):
Move internal utility routines from tclCmdMZ.c to tclResult.c.
* generic/tclBasic.c (Tcl_CreateInterp, Tcl_DeleteInterp):
* generic/tclResult.c (TclTransferResult): Rework so that
iPtr->returnOpts can be NULL when there are no special options.
* generic/tclResult.c (TclRestoreInterpState): Plug potential
memory leak.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclResult.c (Tcl*InterpState): TclSaveInterpState,
TclRestoreInterpState, and TclDiscardInterpState are superior
replacements for Tcl_(Save|Restore|Discard)Result. Intent is that
these routines will be converted to public routines after TIP approval.
* generic/tclBasic.c (TclEvalObjvInternal):
* generic/tclDictObj.c (DictUpdateCmd, DictWithCmd):
* generic/tclIOGT.c (ExecuteCallback):
* generic/tclTrace.c (Trace*Proc,TclCheck*Traces,TclCallVarTraces):
Callers of Tcl_*Result updated to call the new routines. The
calls were relocated in several cases to perform save/restore
operations only when needed.
* generic/tclEvent.c (HandleBgErrors):
* generic/tclFCmd.c (CopyRenameOneFile):
Calls to Tcl_*Result that were eliminated because they appeared
to serve no useful purpose, typically saving/restoring an error
message, only to throw it away.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclCmdAH.c (Tcl_CatchObjCmd):
* generic/tclCmdMZ.c (TclMergeReturnOptions,TclProcessReturn):
* generic/tclCompCmds.c (TclCompileReturnCmd):
* generic/tclExecute.c (TclCompEvalObj):
* generic/tclInt.h (Interp):
* generic/tclProc.c (TclUpdateReturnInfo):
Place primary storage of the -level and -code information in private
fields of the Interp struct, rather than in a DictObj. This should
significantly improve performance of TclUpdateReturnInfo.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
TclEvalObjvInternal,Tcl_LogCommandInfo,TclAddObjErrorInfo):
* generic/tclCmdAH.c (Tcl_CatchObjCmd):
* generic/tclEvent.c (BgError,ErrAssocData,Tcl_BackgroundError,
HandleBgErrors,BgErrorDeleteProc):
* generic/tclExecute.c (TclCreateExecEnv,TclDeleteExecEnv):
* generic/tclIOUtil.c (comments only):
* generic/tclInt.h (ExecEnv,Interp, ERR_IN_PROGRESS):
* generic/tclInterp.c ([tclInit]):
* generic/tclMain.c (comments only):
* generic/tclNamesp.c
(Tcl_CreateNamespace,Tcl_DeleteNamespace,TclTeardownNamespace):
* generic/tclProc.c (TclUpdateReturnInfo):
* generic/tclResult.c
(Tcl_ResetResult,TclTransferResult):
* generic/tclTrace.c (CallVarTraces):
Reworked management of the "errorInfo" data of an interp.
That information is now primarily stored in a new private
(Tcl_Obj *) field of the Interp struct, rather than using a
global variable ::errorInfo as the primary storage. The
ERR_IN_PROGRESS flag bit value is no longer required to manage
the value in its new location, and is removed. Variable traces
are established to support compatibility for any code expecting
the ::errorInfo variable to hold the information.
***POTENTIAL INCOMPATIBILITY***
Code that sets traces on the ::errorInfo variable may notice a
difference in timing of the firing of those traces. Code that
uses the value ERR_IN_PROGRESS.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
TclEvalObjvInternal,Tcl_LogCommandInfo):
* generic/tclCmdAH.c (Tcl_CatchObjCmd):
* generic/tclEvent.c (BgError,Tcl_BackgroundError,HandleBgErrors):
* generic/tclInt.h (Interp, ERROR_CODE_SET):
* generic/tclNamesp.c
(Tcl_CreateNamespace,Tcl_DeleteNamespace,TclTeardownNamespace):
* generic/tclResult.c
(Tcl_ResetResult,Tcl_SetObjErrorCode,TclTransferResult):
* generic/tclTrace.c (CallVarTraces):
Reworked management of the "errorCode" data of an interp.
That information is now primarily stored in a new private
(Tcl_Obj *) field of the Interp struct, rather than using a
global variable ::errorCode as the primary storage. The
ERROR_CODE_SET flag bit value is no longer required to manage
the value in its new location, and is removed. Variable traces
are established to support compatibility for any code expecting
the ::errorCode variable to hold the information.
|
|
|
|
| |
as strings every time through. [Patch 1037357]
|