diff options
Diffstat (limited to 'unix')
-rw-r--r-- | unix/dltest/pkgf.c | 46 | ||||
-rw-r--r-- | unix/mkLinks | 1937 | ||||
-rw-r--r-- | unix/mkLinks.tcl | 119 | ||||
-rw-r--r-- | unix/tclLoadAout.c | 536 | ||||
-rw-r--r-- | unix/tclLoadDld.c | 209 |
5 files changed, 2847 insertions, 0 deletions
diff --git a/unix/dltest/pkgf.c b/unix/dltest/pkgf.c new file mode 100644 index 0000000..c32aaf0 --- /dev/null +++ b/unix/dltest/pkgf.c @@ -0,0 +1,46 @@ +/* + * pkgf.c -- + * + * This file contains a simple Tcl package "pkgf" that is intended for + * testing the Tcl dynamic loading facilities. Its Init procedure returns + * an error in order to test how this is handled. + * + * Copyright (c) 1995 Sun Microsystems, Inc. + * + * See the file "license.terms" for information on usage and redistribution of + * this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: pkgf.c,v 1.7 2007/05/29 14:05:53 dgp Exp $ + */ + +#include "tcl.h" + + +/* + *---------------------------------------------------------------------- + * + * Pkgf_Init -- + * + * This is a package initialization procedure, which is called by Tcl + * when this package is to be added to an interpreter. + * + * Results: + * Returns TCL_ERROR and leaves an error message in interp->result. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int +Pkgf_Init( + Tcl_Interp *interp) /* Interpreter in which the package is to be + * made available. */ +{ + static char script[] = "if 44 {open non_existent}"; + if (Tcl_InitStubs(interp, TCL_VERSION, 0) == NULL) { + return TCL_ERROR; + } + return Tcl_Eval(interp, script); +} diff --git a/unix/mkLinks b/unix/mkLinks new file mode 100644 index 0000000..edfbeb4 --- /dev/null +++ b/unix/mkLinks @@ -0,0 +1,1937 @@ +#!/bin/sh +# This script is invoked when installing manual entries. It generates +# additional links to manual entries, corresponding to the procedure +# and command names described by the manual entry. For example, the +# Tcl manual entry Hash.3 describes procedures Tcl_InitHashTable, +# Tcl_CreateHashEntry, and many more. This script will make hard +# links so that Tcl_InitHashTable.3, Tcl_CreateHashEntry.3, and so +# on all refer to Hash.3 in the installed directory. +# +# Because of the length of command and procedure names, this mechanism +# only works on machines that support file names longer than 14 characters. +# This script checks to see if long file names are supported, and it +# doesn't make any links if they are not. +# +# The script takes one argument, which is the name of the directory +# where the manual entries have been installed. + +ZIP=true +while true; do + case $1 in + -s | --symlinks ) + S=-s + ;; + -z | --compress ) + ZIP=$2 + shift + ;; + *) break + ;; + esac + shift +done + +if test $# != 1; then + echo "Usage: mkLinks <options> dir" + exit 1 +fi + +if test "x$ZIP" != "xtrue"; then + touch TeST + $ZIP TeST + Z=`ls TeST* | sed 's/^[^.]*//'` + rm -f TeST* +fi + +cd $1 +echo foo > xyzzyTestingAVeryLongFileName.foo +x=`echo xyzzyTe*` +echo foo > xyzzyTestingaverylongfilename.foo +y=`echo xyzzyTestingav*` +rm xyzzyTe* +if test "$x" != "xyzzyTestingAVeryLongFileName.foo"; then + exit +fi +if test "$y" != "xyzzyTestingaverylongfilename.foo"; then + CASEINSENSITIVEFS=1 +fi + +if test -r Access.3; then + rm -f Access.3.* + $ZIP Access.3 + rm -f Tcl_Access.3 Tcl_Access.3.* + rm -f Tcl_Stat.3 Tcl_Stat.3.* + ln $S Access.3$Z Tcl_Access.3$Z + ln $S Access.3$Z Tcl_Stat.3$Z +fi +if test -r AddErrInfo.3; then + rm -f AddErrInfo.3.* + $ZIP AddErrInfo.3 + rm -f Tcl_AddObjErrorInfo.3 Tcl_AddObjErrorInfo.3.* + rm -f Tcl_AddErrorInfo.3 Tcl_AddErrorInfo.3.* + rm -f Tcl_SetObjErrorCode.3 Tcl_SetObjErrorCode.3.* + rm -f Tcl_SetErrorCode.3 Tcl_SetErrorCode.3.* + rm -f Tcl_SetErrorCodeVA.3 Tcl_SetErrorCodeVA.3.* + rm -f Tcl_PosixError.3 Tcl_PosixError.3.* + rm -f Tcl_LogCommandInfo.3 Tcl_LogCommandInfo.3.* + ln $S AddErrInfo.3$Z Tcl_AddObjErrorInfo.3$Z + ln $S AddErrInfo.3$Z Tcl_AddErrorInfo.3$Z + ln $S AddErrInfo.3$Z Tcl_SetObjErrorCode.3$Z + ln $S AddErrInfo.3$Z Tcl_SetErrorCode.3$Z + ln $S AddErrInfo.3$Z Tcl_SetErrorCodeVA.3$Z + ln $S AddErrInfo.3$Z Tcl_PosixError.3$Z + ln $S AddErrInfo.3$Z Tcl_LogCommandInfo.3$Z +fi +if test -r Alloc.3; then + rm -f Alloc.3.* + $ZIP Alloc.3 + rm -f Tcl_Alloc.3 Tcl_Alloc.3.* + rm -f Tcl_Free.3 Tcl_Free.3.* + rm -f Tcl_Realloc.3 Tcl_Realloc.3.* + rm -f Tcl_AttemptAlloc.3 Tcl_AttemptAlloc.3.* + rm -f Tcl_AttemptRealloc.3 Tcl_AttemptRealloc.3.* + rm -f ckalloc.3 ckalloc.3.* + rm -f ckfree.3 ckfree.3.* + rm -f ckrealloc.3 ckrealloc.3.* + rm -f attemptckalloc.3 attemptckalloc.3.* + rm -f attemptckrealloc.3 attemptckrealloc.3.* + ln $S Alloc.3$Z Tcl_Alloc.3$Z + ln $S Alloc.3$Z Tcl_Free.3$Z + ln $S Alloc.3$Z Tcl_Realloc.3$Z + ln $S Alloc.3$Z Tcl_AttemptAlloc.3$Z + ln $S Alloc.3$Z Tcl_AttemptRealloc.3$Z + ln $S Alloc.3$Z ckalloc.3$Z + ln $S Alloc.3$Z ckfree.3$Z + ln $S Alloc.3$Z ckrealloc.3$Z + ln $S Alloc.3$Z attemptckalloc.3$Z + ln $S Alloc.3$Z attemptckrealloc.3$Z +fi +if test -r AllowExc.3; then + rm -f AllowExc.3.* + $ZIP AllowExc.3 + rm -f Tcl_AllowExceptions.3 Tcl_AllowExceptions.3.* + ln $S AllowExc.3$Z Tcl_AllowExceptions.3$Z +fi +if test -r AppInit.3; then + rm -f AppInit.3.* + $ZIP AppInit.3 + rm -f Tcl_AppInit.3 Tcl_AppInit.3.* + ln $S AppInit.3$Z Tcl_AppInit.3$Z +fi +if test -r AssocData.3; then + rm -f AssocData.3.* + $ZIP AssocData.3 + rm -f Tcl_GetAssocData.3 Tcl_GetAssocData.3.* + rm -f Tcl_SetAssocData.3 Tcl_SetAssocData.3.* + rm -f Tcl_DeleteAssocData.3 Tcl_DeleteAssocData.3.* + ln $S AssocData.3$Z Tcl_GetAssocData.3$Z + ln $S AssocData.3$Z Tcl_SetAssocData.3$Z + ln $S AssocData.3$Z Tcl_DeleteAssocData.3$Z +fi +if test -r Async.3; then + rm -f Async.3.* + $ZIP Async.3 + rm -f Tcl_AsyncCreate.3 Tcl_AsyncCreate.3.* + rm -f Tcl_AsyncMark.3 Tcl_AsyncMark.3.* + rm -f Tcl_AsyncInvoke.3 Tcl_AsyncInvoke.3.* + rm -f Tcl_AsyncDelete.3 Tcl_AsyncDelete.3.* + rm -f Tcl_AsyncReady.3 Tcl_AsyncReady.3.* + ln $S Async.3$Z Tcl_AsyncCreate.3$Z + ln $S Async.3$Z Tcl_AsyncMark.3$Z + ln $S Async.3$Z Tcl_AsyncInvoke.3$Z + ln $S Async.3$Z Tcl_AsyncDelete.3$Z + ln $S Async.3$Z Tcl_AsyncReady.3$Z +fi +if test -r BackgdErr.3; then + rm -f BackgdErr.3.* + $ZIP BackgdErr.3 + rm -f Tcl_BackgroundError.3 Tcl_BackgroundError.3.* + ln $S BackgdErr.3$Z Tcl_BackgroundError.3$Z +fi +if test -r Backslash.3; then + rm -f Backslash.3.* + $ZIP Backslash.3 + rm -f Tcl_Backslash.3 Tcl_Backslash.3.* + ln $S Backslash.3$Z Tcl_Backslash.3$Z +fi +if test -r BoolObj.3; then + rm -f BoolObj.3.* + $ZIP BoolObj.3 + rm -f Tcl_NewBooleanObj.3 Tcl_NewBooleanObj.3.* + rm -f Tcl_SetBooleanObj.3 Tcl_SetBooleanObj.3.* + rm -f Tcl_GetBooleanFromObj.3 Tcl_GetBooleanFromObj.3.* + ln $S BoolObj.3$Z Tcl_NewBooleanObj.3$Z + ln $S BoolObj.3$Z Tcl_SetBooleanObj.3$Z + ln $S BoolObj.3$Z Tcl_GetBooleanFromObj.3$Z +fi +if test -r ByteArrObj.3; then + rm -f ByteArrObj.3.* + $ZIP ByteArrObj.3 + rm -f Tcl_NewByteArrayObj.3 Tcl_NewByteArrayObj.3.* + rm -f Tcl_SetByteArrayObj.3 Tcl_SetByteArrayObj.3.* + rm -f Tcl_GetByteArrayFromObj.3 Tcl_GetByteArrayFromObj.3.* + rm -f Tcl_SetByteArrayLength.3 Tcl_SetByteArrayLength.3.* + ln $S ByteArrObj.3$Z Tcl_NewByteArrayObj.3$Z + ln $S ByteArrObj.3$Z Tcl_SetByteArrayObj.3$Z + ln $S ByteArrObj.3$Z Tcl_GetByteArrayFromObj.3$Z + ln $S ByteArrObj.3$Z Tcl_SetByteArrayLength.3$Z +fi +if test -r CallDel.3; then + rm -f CallDel.3.* + $ZIP CallDel.3 + rm -f Tcl_CallWhenDeleted.3 Tcl_CallWhenDeleted.3.* + rm -f Tcl_DontCallWhenDeleted.3 Tcl_DontCallWhenDeleted.3.* + ln $S CallDel.3$Z Tcl_CallWhenDeleted.3$Z + ln $S CallDel.3$Z Tcl_DontCallWhenDeleted.3$Z +fi +if test -r ChnlStack.3; then + rm -f ChnlStack.3.* + $ZIP ChnlStack.3 + rm -f Tcl_StackChannel.3 Tcl_StackChannel.3.* + rm -f Tcl_UnstackChannel.3 Tcl_UnstackChannel.3.* + rm -f Tcl_GetStackedChannel.3 Tcl_GetStackedChannel.3.* + rm -f Tcl_GetTopChannel.3 Tcl_GetTopChannel.3.* + ln $S ChnlStack.3$Z Tcl_StackChannel.3$Z + ln $S ChnlStack.3$Z Tcl_UnstackChannel.3$Z + ln $S ChnlStack.3$Z Tcl_GetStackedChannel.3$Z + ln $S ChnlStack.3$Z Tcl_GetTopChannel.3$Z +fi +if test -r CmdCmplt.3; then + rm -f CmdCmplt.3.* + $ZIP CmdCmplt.3 + rm -f Tcl_CommandComplete.3 Tcl_CommandComplete.3.* + ln $S CmdCmplt.3$Z Tcl_CommandComplete.3$Z +fi +if test -r Concat.3; then + rm -f Concat.3.* + $ZIP Concat.3 + rm -f Tcl_Concat.3 Tcl_Concat.3.* + ln $S Concat.3$Z Tcl_Concat.3$Z +fi +if test -r CrtChannel.3; then + rm -f CrtChannel.3.* + $ZIP CrtChannel.3 + rm -f Tcl_CreateChannel.3 Tcl_CreateChannel.3.* + rm -f Tcl_GetChannelInstanceData.3 Tcl_GetChannelInstanceData.3.* + rm -f Tcl_GetChannelType.3 Tcl_GetChannelType.3.* + rm -f Tcl_GetChannelName.3 Tcl_GetChannelName.3.* + rm -f Tcl_GetChannelHandle.3 Tcl_GetChannelHandle.3.* + rm -f Tcl_GetChannelMode.3 Tcl_GetChannelMode.3.* + rm -f Tcl_GetChannelBufferSize.3 Tcl_GetChannelBufferSize.3.* + rm -f Tcl_SetChannelBufferSize.3 Tcl_SetChannelBufferSize.3.* + rm -f Tcl_NotifyChannel.3 Tcl_NotifyChannel.3.* + rm -f Tcl_BadChannelOption.3 Tcl_BadChannelOption.3.* + rm -f Tcl_ChannelName.3 Tcl_ChannelName.3.* + rm -f Tcl_ChannelVersion.3 Tcl_ChannelVersion.3.* + rm -f Tcl_ChannelBlockModeProc.3 Tcl_ChannelBlockModeProc.3.* + rm -f Tcl_ChannelCloseProc.3 Tcl_ChannelCloseProc.3.* + rm -f Tcl_ChannelClose2Proc.3 Tcl_ChannelClose2Proc.3.* + rm -f Tcl_ChannelInputProc.3 Tcl_ChannelInputProc.3.* + rm -f Tcl_ChannelOutputProc.3 Tcl_ChannelOutputProc.3.* + rm -f Tcl_ChannelSeekProc.3 Tcl_ChannelSeekProc.3.* + rm -f Tcl_ChannelWideSeekProc.3 Tcl_ChannelWideSeekProc.3.* + rm -f Tcl_ChannelSetOptionProc.3 Tcl_ChannelSetOptionProc.3.* + rm -f Tcl_ChannelGetOptionProc.3 Tcl_ChannelGetOptionProc.3.* + rm -f Tcl_ChannelWatchProc.3 Tcl_ChannelWatchProc.3.* + rm -f Tcl_ChannelGetHandleProc.3 Tcl_ChannelGetHandleProc.3.* + rm -f Tcl_ChannelFlushProc.3 Tcl_ChannelFlushProc.3.* + rm -f Tcl_ChannelHandlerProc.3 Tcl_ChannelHandlerProc.3.* + rm -f Tcl_IsChannelShared.3 Tcl_IsChannelShared.3.* + rm -f Tcl_IsChannelRegistered.3 Tcl_IsChannelRegistered.3.* + rm -f Tcl_CutChannel.3 Tcl_CutChannel.3.* + rm -f Tcl_SpliceChannel.3 Tcl_SpliceChannel.3.* + rm -f Tcl_IsChannelExisting.3 Tcl_IsChannelExisting.3.* + rm -f Tcl_ClearChannelHandlers.3 Tcl_ClearChannelHandlers.3.* + rm -f Tcl_GetChannelThread.3 Tcl_GetChannelThread.3.* + rm -f Tcl_ChannelBuffered.3 Tcl_ChannelBuffered.3.* + ln $S CrtChannel.3$Z Tcl_CreateChannel.3$Z + ln $S CrtChannel.3$Z Tcl_GetChannelInstanceData.3$Z + ln $S CrtChannel.3$Z Tcl_GetChannelType.3$Z + ln $S CrtChannel.3$Z Tcl_GetChannelName.3$Z + ln $S CrtChannel.3$Z Tcl_GetChannelHandle.3$Z + ln $S CrtChannel.3$Z Tcl_GetChannelMode.3$Z + ln $S CrtChannel.3$Z Tcl_GetChannelBufferSize.3$Z + ln $S CrtChannel.3$Z Tcl_SetChannelBufferSize.3$Z + ln $S CrtChannel.3$Z Tcl_NotifyChannel.3$Z + ln $S CrtChannel.3$Z Tcl_BadChannelOption.3$Z + ln $S CrtChannel.3$Z Tcl_ChannelName.3$Z + ln $S CrtChannel.3$Z Tcl_ChannelVersion.3$Z + ln $S CrtChannel.3$Z Tcl_ChannelBlockModeProc.3$Z + ln $S CrtChannel.3$Z Tcl_ChannelCloseProc.3$Z + ln $S CrtChannel.3$Z Tcl_ChannelClose2Proc.3$Z + ln $S CrtChannel.3$Z Tcl_ChannelInputProc.3$Z + ln $S CrtChannel.3$Z Tcl_ChannelOutputProc.3$Z + ln $S CrtChannel.3$Z Tcl_ChannelSeekProc.3$Z + ln $S CrtChannel.3$Z Tcl_ChannelWideSeekProc.3$Z + ln $S CrtChannel.3$Z Tcl_ChannelSetOptionProc.3$Z + ln $S CrtChannel.3$Z Tcl_ChannelGetOptionProc.3$Z + ln $S CrtChannel.3$Z Tcl_ChannelWatchProc.3$Z + ln $S CrtChannel.3$Z Tcl_ChannelGetHandleProc.3$Z + ln $S CrtChannel.3$Z Tcl_ChannelFlushProc.3$Z + ln $S CrtChannel.3$Z Tcl_ChannelHandlerProc.3$Z + ln $S CrtChannel.3$Z Tcl_IsChannelShared.3$Z + ln $S CrtChannel.3$Z Tcl_IsChannelRegistered.3$Z + ln $S CrtChannel.3$Z Tcl_CutChannel.3$Z + ln $S CrtChannel.3$Z Tcl_SpliceChannel.3$Z + ln $S CrtChannel.3$Z Tcl_IsChannelExisting.3$Z + ln $S CrtChannel.3$Z Tcl_ClearChannelHandlers.3$Z + ln $S CrtChannel.3$Z Tcl_GetChannelThread.3$Z + ln $S CrtChannel.3$Z Tcl_ChannelBuffered.3$Z +fi +if test -r CrtChnlHdlr.3; then + rm -f CrtChnlHdlr.3.* + $ZIP CrtChnlHdlr.3 + rm -f Tcl_CreateChannelHandler.3 Tcl_CreateChannelHandler.3.* + rm -f Tcl_DeleteChannelHandler.3 Tcl_DeleteChannelHandler.3.* + ln $S CrtChnlHdlr.3$Z Tcl_CreateChannelHandler.3$Z + ln $S CrtChnlHdlr.3$Z Tcl_DeleteChannelHandler.3$Z +fi +if test -r CrtCloseHdlr.3; then + rm -f CrtCloseHdlr.3.* + $ZIP CrtCloseHdlr.3 + rm -f Tcl_CreateCloseHandler.3 Tcl_CreateCloseHandler.3.* + rm -f Tcl_DeleteCloseHandler.3 Tcl_DeleteCloseHandler.3.* + ln $S CrtCloseHdlr.3$Z Tcl_CreateCloseHandler.3$Z + ln $S CrtCloseHdlr.3$Z Tcl_DeleteCloseHandler.3$Z +fi +if test -r CrtCommand.3; then + rm -f CrtCommand.3.* + $ZIP CrtCommand.3 + rm -f Tcl_CreateCommand.3 Tcl_CreateCommand.3.* + ln $S CrtCommand.3$Z Tcl_CreateCommand.3$Z +fi +if test -r CrtFileHdlr.3; then + rm -f CrtFileHdlr.3.* + $ZIP CrtFileHdlr.3 + rm -f Tcl_CreateFileHandler.3 Tcl_CreateFileHandler.3.* + rm -f Tcl_DeleteFileHandler.3 Tcl_DeleteFileHandler.3.* + ln $S CrtFileHdlr.3$Z Tcl_CreateFileHandler.3$Z + ln $S CrtFileHdlr.3$Z Tcl_DeleteFileHandler.3$Z +fi +if test -r CrtInterp.3; then + rm -f CrtInterp.3.* + $ZIP CrtInterp.3 + rm -f Tcl_CreateInterp.3 Tcl_CreateInterp.3.* + rm -f Tcl_DeleteInterp.3 Tcl_DeleteInterp.3.* + rm -f Tcl_InterpDeleted.3 Tcl_InterpDeleted.3.* + ln $S CrtInterp.3$Z Tcl_CreateInterp.3$Z + ln $S CrtInterp.3$Z Tcl_DeleteInterp.3$Z + ln $S CrtInterp.3$Z Tcl_InterpDeleted.3$Z +fi +if test -r CrtMathFnc.3; then + rm -f CrtMathFnc.3.* + $ZIP CrtMathFnc.3 + rm -f Tcl_CreateMathFunc.3 Tcl_CreateMathFunc.3.* + rm -f Tcl_GetMathFuncInfo.3 Tcl_GetMathFuncInfo.3.* + rm -f Tcl_ListMathFuncs.3 Tcl_ListMathFuncs.3.* + ln $S CrtMathFnc.3$Z Tcl_CreateMathFunc.3$Z + ln $S CrtMathFnc.3$Z Tcl_GetMathFuncInfo.3$Z + ln $S CrtMathFnc.3$Z Tcl_ListMathFuncs.3$Z +fi +if test -r CrtObjCmd.3; then + rm -f CrtObjCmd.3.* + $ZIP CrtObjCmd.3 + rm -f Tcl_CreateObjCommand.3 Tcl_CreateObjCommand.3.* + rm -f Tcl_DeleteCommand.3 Tcl_DeleteCommand.3.* + rm -f Tcl_DeleteCommandFromToken.3 Tcl_DeleteCommandFromToken.3.* + rm -f Tcl_GetCommandInfo.3 Tcl_GetCommandInfo.3.* + rm -f Tcl_GetCommandInfoFromToken.3 Tcl_GetCommandInfoFromToken.3.* + rm -f Tcl_SetCommandInfo.3 Tcl_SetCommandInfo.3.* + rm -f Tcl_SetCommandInfoFromToken.3 Tcl_SetCommandInfoFromToken.3.* + rm -f Tcl_GetCommandName.3 Tcl_GetCommandName.3.* + rm -f Tcl_GetCommandFullName.3 Tcl_GetCommandFullName.3.* + rm -f Tcl_GetCommandFromObj.3 Tcl_GetCommandFromObj.3.* + ln $S CrtObjCmd.3$Z Tcl_CreateObjCommand.3$Z + ln $S CrtObjCmd.3$Z Tcl_DeleteCommand.3$Z + ln $S CrtObjCmd.3$Z Tcl_DeleteCommandFromToken.3$Z + ln $S CrtObjCmd.3$Z Tcl_GetCommandInfo.3$Z + ln $S CrtObjCmd.3$Z Tcl_GetCommandInfoFromToken.3$Z + ln $S CrtObjCmd.3$Z Tcl_SetCommandInfo.3$Z + ln $S CrtObjCmd.3$Z Tcl_SetCommandInfoFromToken.3$Z + ln $S CrtObjCmd.3$Z Tcl_GetCommandName.3$Z + ln $S CrtObjCmd.3$Z Tcl_GetCommandFullName.3$Z + ln $S CrtObjCmd.3$Z Tcl_GetCommandFromObj.3$Z +fi +if test -r CrtSlave.3; then + rm -f CrtSlave.3.* + $ZIP CrtSlave.3 + rm -f Tcl_IsSafe.3 Tcl_IsSafe.3.* + rm -f Tcl_MakeSafe.3 Tcl_MakeSafe.3.* + rm -f Tcl_CreateSlave.3 Tcl_CreateSlave.3.* + rm -f Tcl_GetSlave.3 Tcl_GetSlave.3.* + rm -f Tcl_GetMaster.3 Tcl_GetMaster.3.* + rm -f Tcl_GetInterpPath.3 Tcl_GetInterpPath.3.* + rm -f Tcl_CreateAlias.3 Tcl_CreateAlias.3.* + rm -f Tcl_CreateAliasObj.3 Tcl_CreateAliasObj.3.* + rm -f Tcl_GetAlias.3 Tcl_GetAlias.3.* + rm -f Tcl_GetAliasObj.3 Tcl_GetAliasObj.3.* + rm -f Tcl_ExposeCommand.3 Tcl_ExposeCommand.3.* + rm -f Tcl_HideCommand.3 Tcl_HideCommand.3.* + ln $S CrtSlave.3$Z Tcl_IsSafe.3$Z + ln $S CrtSlave.3$Z Tcl_MakeSafe.3$Z + ln $S CrtSlave.3$Z Tcl_CreateSlave.3$Z + ln $S CrtSlave.3$Z Tcl_GetSlave.3$Z + ln $S CrtSlave.3$Z Tcl_GetMaster.3$Z + ln $S CrtSlave.3$Z Tcl_GetInterpPath.3$Z + ln $S CrtSlave.3$Z Tcl_CreateAlias.3$Z + ln $S CrtSlave.3$Z Tcl_CreateAliasObj.3$Z + ln $S CrtSlave.3$Z Tcl_GetAlias.3$Z + ln $S CrtSlave.3$Z Tcl_GetAliasObj.3$Z + ln $S CrtSlave.3$Z Tcl_ExposeCommand.3$Z + ln $S CrtSlave.3$Z Tcl_HideCommand.3$Z +fi +if test -r CrtTimerHdlr.3; then + rm -f CrtTimerHdlr.3.* + $ZIP CrtTimerHdlr.3 + rm -f Tcl_CreateTimerHandler.3 Tcl_CreateTimerHandler.3.* + rm -f Tcl_DeleteTimerHandler.3 Tcl_DeleteTimerHandler.3.* + ln $S CrtTimerHdlr.3$Z Tcl_CreateTimerHandler.3$Z + ln $S CrtTimerHdlr.3$Z Tcl_DeleteTimerHandler.3$Z +fi +if test -r CrtTrace.3; then + rm -f CrtTrace.3.* + $ZIP CrtTrace.3 + rm -f Tcl_CreateTrace.3 Tcl_CreateTrace.3.* + rm -f Tcl_CreateObjTrace.3 Tcl_CreateObjTrace.3.* + rm -f Tcl_DeleteTrace.3 Tcl_DeleteTrace.3.* + ln $S CrtTrace.3$Z Tcl_CreateTrace.3$Z + ln $S CrtTrace.3$Z Tcl_CreateObjTrace.3$Z + ln $S CrtTrace.3$Z Tcl_DeleteTrace.3$Z +fi +if test -r DString.3; then + rm -f DString.3.* + $ZIP DString.3 + rm -f Tcl_DStringInit.3 Tcl_DStringInit.3.* + rm -f Tcl_DStringAppend.3 Tcl_DStringAppend.3.* + rm -f Tcl_DStringAppendElement.3 Tcl_DStringAppendElement.3.* + rm -f Tcl_DStringStartSublist.3 Tcl_DStringStartSublist.3.* + rm -f Tcl_DStringEndSublist.3 Tcl_DStringEndSublist.3.* + rm -f Tcl_DStringLength.3 Tcl_DStringLength.3.* + rm -f Tcl_DStringValue.3 Tcl_DStringValue.3.* + rm -f Tcl_DStringSetLength.3 Tcl_DStringSetLength.3.* + rm -f Tcl_DStringTrunc.3 Tcl_DStringTrunc.3.* + rm -f Tcl_DStringFree.3 Tcl_DStringFree.3.* + rm -f Tcl_DStringResult.3 Tcl_DStringResult.3.* + rm -f Tcl_DStringGetResult.3 Tcl_DStringGetResult.3.* + ln $S DString.3$Z Tcl_DStringInit.3$Z + ln $S DString.3$Z Tcl_DStringAppend.3$Z + ln $S DString.3$Z Tcl_DStringAppendElement.3$Z + ln $S DString.3$Z Tcl_DStringStartSublist.3$Z + ln $S DString.3$Z Tcl_DStringEndSublist.3$Z + ln $S DString.3$Z Tcl_DStringLength.3$Z + ln $S DString.3$Z Tcl_DStringValue.3$Z + ln $S DString.3$Z Tcl_DStringSetLength.3$Z + ln $S DString.3$Z Tcl_DStringTrunc.3$Z + ln $S DString.3$Z Tcl_DStringFree.3$Z + ln $S DString.3$Z Tcl_DStringResult.3$Z + ln $S DString.3$Z Tcl_DStringGetResult.3$Z +fi +if test -r DetachPids.3; then + rm -f DetachPids.3.* + $ZIP DetachPids.3 + rm -f Tcl_DetachPids.3 Tcl_DetachPids.3.* + rm -f Tcl_ReapDetachedProcs.3 Tcl_ReapDetachedProcs.3.* + rm -f Tcl_WaitPid.3 Tcl_WaitPid.3.* + ln $S DetachPids.3$Z Tcl_DetachPids.3$Z + ln $S DetachPids.3$Z Tcl_ReapDetachedProcs.3$Z + ln $S DetachPids.3$Z Tcl_WaitPid.3$Z +fi +if test -r DictObj.3; then + rm -f DictObj.3.* + $ZIP DictObj.3 + rm -f Tcl_NewDictObj.3 Tcl_NewDictObj.3.* + rm -f Tcl_DictObjPut.3 Tcl_DictObjPut.3.* + rm -f Tcl_DictObjGet.3 Tcl_DictObjGet.3.* + rm -f Tcl_DictObjRemove.3 Tcl_DictObjRemove.3.* + rm -f Tcl_DictObjSize.3 Tcl_DictObjSize.3.* + rm -f Tcl_DictObjFirst.3 Tcl_DictObjFirst.3.* + rm -f Tcl_DictObjNext.3 Tcl_DictObjNext.3.* + rm -f Tcl_DictObjDone.3 Tcl_DictObjDone.3.* + rm -f Tcl_DictObjPutKeyList.3 Tcl_DictObjPutKeyList.3.* + rm -f Tcl_DictObjRemoveKeyList.3 Tcl_DictObjRemoveKeyList.3.* + ln $S DictObj.3$Z Tcl_NewDictObj.3$Z + ln $S DictObj.3$Z Tcl_DictObjPut.3$Z + ln $S DictObj.3$Z Tcl_DictObjGet.3$Z + ln $S DictObj.3$Z Tcl_DictObjRemove.3$Z + ln $S DictObj.3$Z Tcl_DictObjSize.3$Z + ln $S DictObj.3$Z Tcl_DictObjFirst.3$Z + ln $S DictObj.3$Z Tcl_DictObjNext.3$Z + ln $S DictObj.3$Z Tcl_DictObjDone.3$Z + ln $S DictObj.3$Z Tcl_DictObjPutKeyList.3$Z + ln $S DictObj.3$Z Tcl_DictObjRemoveKeyList.3$Z +fi +if test -r DoOneEvent.3; then + rm -f DoOneEvent.3.* + $ZIP DoOneEvent.3 + rm -f Tcl_DoOneEvent.3 Tcl_DoOneEvent.3.* + ln $S DoOneEvent.3$Z Tcl_DoOneEvent.3$Z +fi +if test -r DoWhenIdle.3; then + rm -f DoWhenIdle.3.* + $ZIP DoWhenIdle.3 + rm -f Tcl_DoWhenIdle.3 Tcl_DoWhenIdle.3.* + rm -f Tcl_CancelIdleCall.3 Tcl_CancelIdleCall.3.* + ln $S DoWhenIdle.3$Z Tcl_DoWhenIdle.3$Z + ln $S DoWhenIdle.3$Z Tcl_CancelIdleCall.3$Z +fi +if test -r DoubleObj.3; then + rm -f DoubleObj.3.* + $ZIP DoubleObj.3 + rm -f Tcl_NewDoubleObj.3 Tcl_NewDoubleObj.3.* + rm -f Tcl_SetDoubleObj.3 Tcl_SetDoubleObj.3.* + rm -f Tcl_GetDoubleFromObj.3 Tcl_GetDoubleFromObj.3.* + ln $S DoubleObj.3$Z Tcl_NewDoubleObj.3$Z + ln $S DoubleObj.3$Z Tcl_SetDoubleObj.3$Z + ln $S DoubleObj.3$Z Tcl_GetDoubleFromObj.3$Z +fi +if test -r DumpActiveMemory.3; then + rm -f DumpActiveMemory.3.* + $ZIP DumpActiveMemory.3 + rm -f Tcl_DumpActiveMemory.3 Tcl_DumpActiveMemory.3.* + rm -f Tcl_InitMemory.3 Tcl_InitMemory.3.* + rm -f Tcl_ValidateAllMemory.3 Tcl_ValidateAllMemory.3.* + ln $S DumpActiveMemory.3$Z Tcl_DumpActiveMemory.3$Z + ln $S DumpActiveMemory.3$Z Tcl_InitMemory.3$Z + ln $S DumpActiveMemory.3$Z Tcl_ValidateAllMemory.3$Z +fi +if test -r Encoding.3; then + rm -f Encoding.3.* + $ZIP Encoding.3 + rm -f Tcl_GetEncoding.3 Tcl_GetEncoding.3.* + rm -f Tcl_FreeEncoding.3 Tcl_FreeEncoding.3.* + rm -f Tcl_ExternalToUtfDString.3 Tcl_ExternalToUtfDString.3.* + rm -f Tcl_ExternalToUtf.3 Tcl_ExternalToUtf.3.* + rm -f Tcl_UtfToExternalDString.3 Tcl_UtfToExternalDString.3.* + rm -f Tcl_UtfToExternal.3 Tcl_UtfToExternal.3.* + rm -f Tcl_WinTCharToUtf.3 Tcl_WinTCharToUtf.3.* + rm -f Tcl_WinUtfToTChar.3 Tcl_WinUtfToTChar.3.* + rm -f Tcl_GetEncodingName.3 Tcl_GetEncodingName.3.* + rm -f Tcl_SetSystemEncoding.3 Tcl_SetSystemEncoding.3.* + rm -f Tcl_GetEncodingNames.3 Tcl_GetEncodingNames.3.* + rm -f Tcl_CreateEncoding.3 Tcl_CreateEncoding.3.* + rm -f Tcl_GetDefaultEncodingDir.3 Tcl_GetDefaultEncodingDir.3.* + rm -f Tcl_SetDefaultEncodingDir.3 Tcl_SetDefaultEncodingDir.3.* + ln $S Encoding.3$Z Tcl_GetEncoding.3$Z + ln $S Encoding.3$Z Tcl_FreeEncoding.3$Z + ln $S Encoding.3$Z Tcl_ExternalToUtfDString.3$Z + ln $S Encoding.3$Z Tcl_ExternalToUtf.3$Z + ln $S Encoding.3$Z Tcl_UtfToExternalDString.3$Z + ln $S Encoding.3$Z Tcl_UtfToExternal.3$Z + ln $S Encoding.3$Z Tcl_WinTCharToUtf.3$Z + ln $S Encoding.3$Z Tcl_WinUtfToTChar.3$Z + ln $S Encoding.3$Z Tcl_GetEncodingName.3$Z + ln $S Encoding.3$Z Tcl_SetSystemEncoding.3$Z + ln $S Encoding.3$Z Tcl_GetEncodingNames.3$Z + ln $S Encoding.3$Z Tcl_CreateEncoding.3$Z + ln $S Encoding.3$Z Tcl_GetDefaultEncodingDir.3$Z + ln $S Encoding.3$Z Tcl_SetDefaultEncodingDir.3$Z +fi +if test -r Environment.3; then + rm -f Environment.3.* + $ZIP Environment.3 + rm -f Tcl_PutEnv.3 Tcl_PutEnv.3.* + ln $S Environment.3$Z Tcl_PutEnv.3$Z +fi +if test -r Eval.3; then + rm -f Eval.3.* + $ZIP Eval.3 + rm -f Tcl_EvalObjEx.3 Tcl_EvalObjEx.3.* + rm -f Tcl_EvalFile.3 Tcl_EvalFile.3.* + rm -f Tcl_EvalObjv.3 Tcl_EvalObjv.3.* + rm -f Tcl_Eval.3 Tcl_Eval.3.* + rm -f Tcl_EvalEx.3 Tcl_EvalEx.3.* + rm -f Tcl_GlobalEval.3 Tcl_GlobalEval.3.* + rm -f Tcl_GlobalEvalObj.3 Tcl_GlobalEvalObj.3.* + rm -f Tcl_VarEval.3 Tcl_VarEval.3.* + rm -f Tcl_VarEvalVA.3 Tcl_VarEvalVA.3.* + ln $S Eval.3$Z Tcl_EvalObjEx.3$Z + ln $S Eval.3$Z Tcl_EvalFile.3$Z + ln $S Eval.3$Z Tcl_EvalObjv.3$Z + ln $S Eval.3$Z Tcl_Eval.3$Z + ln $S Eval.3$Z Tcl_EvalEx.3$Z + ln $S Eval.3$Z Tcl_GlobalEval.3$Z + ln $S Eval.3$Z Tcl_GlobalEvalObj.3$Z + ln $S Eval.3$Z Tcl_VarEval.3$Z + ln $S Eval.3$Z Tcl_VarEvalVA.3$Z +fi +if test -r Exit.3; then + rm -f Exit.3.* + $ZIP Exit.3 + rm -f Tcl_Exit.3 Tcl_Exit.3.* + rm -f Tcl_Finalize.3 Tcl_Finalize.3.* + rm -f Tcl_CreateExitHandler.3 Tcl_CreateExitHandler.3.* + rm -f Tcl_DeleteExitHandler.3 Tcl_DeleteExitHandler.3.* + rm -f Tcl_ExitThread.3 Tcl_ExitThread.3.* + rm -f Tcl_FinalizeThread.3 Tcl_FinalizeThread.3.* + rm -f Tcl_CreateThreadExitHandler.3 Tcl_CreateThreadExitHandler.3.* + rm -f Tcl_DeleteThreadExitHandler.3 Tcl_DeleteThreadExitHandler.3.* + rm -f Tcl_SetExitProc.3 Tcl_SetExitProc.3.* + ln $S Exit.3$Z Tcl_Exit.3$Z + ln $S Exit.3$Z Tcl_Finalize.3$Z + ln $S Exit.3$Z Tcl_CreateExitHandler.3$Z + ln $S Exit.3$Z Tcl_DeleteExitHandler.3$Z + ln $S Exit.3$Z Tcl_ExitThread.3$Z + ln $S Exit.3$Z Tcl_FinalizeThread.3$Z + ln $S Exit.3$Z Tcl_CreateThreadExitHandler.3$Z + ln $S Exit.3$Z Tcl_DeleteThreadExitHandler.3$Z + ln $S Exit.3$Z Tcl_SetExitProc.3$Z +fi +if test -r ExprLong.3; then + rm -f ExprLong.3.* + $ZIP ExprLong.3 + rm -f Tcl_ExprLong.3 Tcl_ExprLong.3.* + rm -f Tcl_ExprDouble.3 Tcl_ExprDouble.3.* + rm -f Tcl_ExprBoolean.3 Tcl_ExprBoolean.3.* + rm -f Tcl_ExprString.3 Tcl_ExprString.3.* + ln $S ExprLong.3$Z Tcl_ExprLong.3$Z + ln $S ExprLong.3$Z Tcl_ExprDouble.3$Z + ln $S ExprLong.3$Z Tcl_ExprBoolean.3$Z + ln $S ExprLong.3$Z Tcl_ExprString.3$Z +fi +if test -r ExprLongObj.3; then + rm -f ExprLongObj.3.* + $ZIP ExprLongObj.3 + rm -f Tcl_ExprLongObj.3 Tcl_ExprLongObj.3.* + rm -f Tcl_ExprDoubleObj.3 Tcl_ExprDoubleObj.3.* + rm -f Tcl_ExprBooleanObj.3 Tcl_ExprBooleanObj.3.* + rm -f Tcl_ExprObj.3 Tcl_ExprObj.3.* + ln $S ExprLongObj.3$Z Tcl_ExprLongObj.3$Z + ln $S ExprLongObj.3$Z Tcl_ExprDoubleObj.3$Z + ln $S ExprLongObj.3$Z Tcl_ExprBooleanObj.3$Z + ln $S ExprLongObj.3$Z Tcl_ExprObj.3$Z +fi +if test -r FileSystem.3; then + rm -f FileSystem.3.* + $ZIP FileSystem.3 + rm -f Tcl_FSRegister.3 Tcl_FSRegister.3.* + rm -f Tcl_FSUnregister.3 Tcl_FSUnregister.3.* + rm -f Tcl_FSData.3 Tcl_FSData.3.* + rm -f Tcl_FSMountsChanged.3 Tcl_FSMountsChanged.3.* + rm -f Tcl_FSGetFileSystemForPath.3 Tcl_FSGetFileSystemForPath.3.* + rm -f Tcl_FSGetPathType.3 Tcl_FSGetPathType.3.* + rm -f Tcl_FSCopyFile.3 Tcl_FSCopyFile.3.* + rm -f Tcl_FSCopyDirectory.3 Tcl_FSCopyDirectory.3.* + rm -f Tcl_FSCreateDirectory.3 Tcl_FSCreateDirectory.3.* + rm -f Tcl_FSDeleteFile.3 Tcl_FSDeleteFile.3.* + rm -f Tcl_FSRemoveDirectory.3 Tcl_FSRemoveDirectory.3.* + rm -f Tcl_FSRenameFile.3 Tcl_FSRenameFile.3.* + rm -f Tcl_FSListVolumes.3 Tcl_FSListVolumes.3.* + rm -f Tcl_FSEvalFile.3 Tcl_FSEvalFile.3.* + rm -f Tcl_FSLoadFile.3 Tcl_FSLoadFile.3.* + rm -f Tcl_FSMatchInDirectory.3 Tcl_FSMatchInDirectory.3.* + rm -f Tcl_FSLink.3 Tcl_FSLink.3.* + rm -f Tcl_FSLstat.3 Tcl_FSLstat.3.* + rm -f Tcl_FSUtime.3 Tcl_FSUtime.3.* + rm -f Tcl_FSFileAttrsGet.3 Tcl_FSFileAttrsGet.3.* + rm -f Tcl_FSFileAttrsSet.3 Tcl_FSFileAttrsSet.3.* + rm -f Tcl_FSFileAttrStrings.3 Tcl_FSFileAttrStrings.3.* + rm -f Tcl_FSStat.3 Tcl_FSStat.3.* + rm -f Tcl_FSAccess.3 Tcl_FSAccess.3.* + rm -f Tcl_FSOpenFileChannel.3 Tcl_FSOpenFileChannel.3.* + rm -f Tcl_FSGetCwd.3 Tcl_FSGetCwd.3.* + rm -f Tcl_FSChdir.3 Tcl_FSChdir.3.* + rm -f Tcl_FSPathSeparator.3 Tcl_FSPathSeparator.3.* + rm -f Tcl_FSJoinPath.3 Tcl_FSJoinPath.3.* + rm -f Tcl_FSSplitPath.3 Tcl_FSSplitPath.3.* + rm -f Tcl_FSEqualPaths.3 Tcl_FSEqualPaths.3.* + rm -f Tcl_FSGetNormalizedPath.3 Tcl_FSGetNormalizedPath.3.* + rm -f Tcl_FSJoinToPath.3 Tcl_FSJoinToPath.3.* + rm -f Tcl_FSConvertToPathType.3 Tcl_FSConvertToPathType.3.* + rm -f Tcl_FSGetInternalRep.3 Tcl_FSGetInternalRep.3.* + rm -f Tcl_FSGetTranslatedPath.3 Tcl_FSGetTranslatedPath.3.* + rm -f Tcl_FSGetTranslatedStringPath.3 Tcl_FSGetTranslatedStringPath.3.* + rm -f Tcl_FSNewNativePath.3 Tcl_FSNewNativePath.3.* + rm -f Tcl_FSGetNativePath.3 Tcl_FSGetNativePath.3.* + rm -f Tcl_FSFileSystemInfo.3 Tcl_FSFileSystemInfo.3.* + rm -f Tcl_AllocStatBuf.3 Tcl_AllocStatBuf.3.* + ln $S FileSystem.3$Z Tcl_FSRegister.3$Z + ln $S FileSystem.3$Z Tcl_FSUnregister.3$Z + ln $S FileSystem.3$Z Tcl_FSData.3$Z + ln $S FileSystem.3$Z Tcl_FSMountsChanged.3$Z + ln $S FileSystem.3$Z Tcl_FSGetFileSystemForPath.3$Z + ln $S FileSystem.3$Z Tcl_FSGetPathType.3$Z + ln $S FileSystem.3$Z Tcl_FSCopyFile.3$Z + ln $S FileSystem.3$Z Tcl_FSCopyDirectory.3$Z + ln $S FileSystem.3$Z Tcl_FSCreateDirectory.3$Z + ln $S FileSystem.3$Z Tcl_FSDeleteFile.3$Z + ln $S FileSystem.3$Z Tcl_FSRemoveDirectory.3$Z + ln $S FileSystem.3$Z Tcl_FSRenameFile.3$Z + ln $S FileSystem.3$Z Tcl_FSListVolumes.3$Z + ln $S FileSystem.3$Z Tcl_FSEvalFile.3$Z + ln $S FileSystem.3$Z Tcl_FSLoadFile.3$Z + ln $S FileSystem.3$Z Tcl_FSMatchInDirectory.3$Z + ln $S FileSystem.3$Z Tcl_FSLink.3$Z + ln $S FileSystem.3$Z Tcl_FSLstat.3$Z + ln $S FileSystem.3$Z Tcl_FSUtime.3$Z + ln $S FileSystem.3$Z Tcl_FSFileAttrsGet.3$Z + ln $S FileSystem.3$Z Tcl_FSFileAttrsSet.3$Z + ln $S FileSystem.3$Z Tcl_FSFileAttrStrings.3$Z + ln $S FileSystem.3$Z Tcl_FSStat.3$Z + ln $S FileSystem.3$Z Tcl_FSAccess.3$Z + ln $S FileSystem.3$Z Tcl_FSOpenFileChannel.3$Z + ln $S FileSystem.3$Z Tcl_FSGetCwd.3$Z + ln $S FileSystem.3$Z Tcl_FSChdir.3$Z + ln $S FileSystem.3$Z Tcl_FSPathSeparator.3$Z + ln $S FileSystem.3$Z Tcl_FSJoinPath.3$Z + ln $S FileSystem.3$Z Tcl_FSSplitPath.3$Z + ln $S FileSystem.3$Z Tcl_FSEqualPaths.3$Z + ln $S FileSystem.3$Z Tcl_FSGetNormalizedPath.3$Z + ln $S FileSystem.3$Z Tcl_FSJoinToPath.3$Z + ln $S FileSystem.3$Z Tcl_FSConvertToPathType.3$Z + ln $S FileSystem.3$Z Tcl_FSGetInternalRep.3$Z + ln $S FileSystem.3$Z Tcl_FSGetTranslatedPath.3$Z + ln $S FileSystem.3$Z Tcl_FSGetTranslatedStringPath.3$Z + ln $S FileSystem.3$Z Tcl_FSNewNativePath.3$Z + ln $S FileSystem.3$Z Tcl_FSGetNativePath.3$Z + ln $S FileSystem.3$Z Tcl_FSFileSystemInfo.3$Z + ln $S FileSystem.3$Z Tcl_AllocStatBuf.3$Z +fi +if test -r FindExec.3; then + rm -f FindExec.3.* + $ZIP FindExec.3 + rm -f Tcl_FindExecutable.3 Tcl_FindExecutable.3.* + rm -f Tcl_GetNameOfExecutable.3 Tcl_GetNameOfExecutable.3.* + ln $S FindExec.3$Z Tcl_FindExecutable.3$Z + ln $S FindExec.3$Z Tcl_GetNameOfExecutable.3$Z +fi +if test -r GetCwd.3; then + rm -f GetCwd.3.* + $ZIP GetCwd.3 + rm -f Tcl_GetCwd.3 Tcl_GetCwd.3.* + rm -f Tcl_Chdir.3 Tcl_Chdir.3.* + ln $S GetCwd.3$Z Tcl_GetCwd.3$Z + ln $S GetCwd.3$Z Tcl_Chdir.3$Z +fi +if test -r GetHostName.3; then + rm -f GetHostName.3.* + $ZIP GetHostName.3 + rm -f Tcl_GetHostName.3 Tcl_GetHostName.3.* + ln $S GetHostName.3$Z Tcl_GetHostName.3$Z +fi +if test -r GetIndex.3; then + rm -f GetIndex.3.* + $ZIP GetIndex.3 + rm -f Tcl_GetIndexFromObj.3 Tcl_GetIndexFromObj.3.* + rm -f Tcl_GetIndexFromObjStruct.3 Tcl_GetIndexFromObjStruct.3.* + ln $S GetIndex.3$Z Tcl_GetIndexFromObj.3$Z + ln $S GetIndex.3$Z Tcl_GetIndexFromObjStruct.3$Z +fi +if test -r GetInt.3; then + rm -f GetInt.3.* + $ZIP GetInt.3 + rm -f Tcl_GetInt.3 Tcl_GetInt.3.* + rm -f Tcl_GetDouble.3 Tcl_GetDouble.3.* + rm -f Tcl_GetBoolean.3 Tcl_GetBoolean.3.* + ln $S GetInt.3$Z Tcl_GetInt.3$Z + ln $S GetInt.3$Z Tcl_GetDouble.3$Z + ln $S GetInt.3$Z Tcl_GetBoolean.3$Z +fi +if test -r GetOpnFl.3; then + rm -f GetOpnFl.3.* + $ZIP GetOpnFl.3 + rm -f Tcl_GetOpenFile.3 Tcl_GetOpenFile.3.* + ln $S GetOpnFl.3$Z Tcl_GetOpenFile.3$Z +fi +if test -r GetStdChan.3; then + rm -f GetStdChan.3.* + $ZIP GetStdChan.3 + rm -f Tcl_GetStdChannel.3 Tcl_GetStdChannel.3.* + rm -f Tcl_SetStdChannel.3 Tcl_SetStdChannel.3.* + ln $S GetStdChan.3$Z Tcl_GetStdChannel.3$Z + ln $S GetStdChan.3$Z Tcl_SetStdChannel.3$Z +fi +if test -r GetTime.3; then + rm -f GetTime.3.* + $ZIP GetTime.3 + rm -f Tcl_GetTime.3 Tcl_GetTime.3.* + ln $S GetTime.3$Z Tcl_GetTime.3$Z +fi +if test -r GetVersion.3; then + rm -f GetVersion.3.* + $ZIP GetVersion.3 + rm -f Tcl_GetVersion.3 Tcl_GetVersion.3.* + ln $S GetVersion.3$Z Tcl_GetVersion.3$Z +fi +if test -r Hash.3; then + rm -f Hash.3.* + $ZIP Hash.3 + rm -f Tcl_InitHashTable.3 Tcl_InitHashTable.3.* + rm -f Tcl_InitCustomHashTable.3 Tcl_InitCustomHashTable.3.* + rm -f Tcl_InitObjHashTable.3 Tcl_InitObjHashTable.3.* + rm -f Tcl_DeleteHashTable.3 Tcl_DeleteHashTable.3.* + rm -f Tcl_CreateHashEntry.3 Tcl_CreateHashEntry.3.* + rm -f Tcl_DeleteHashEntry.3 Tcl_DeleteHashEntry.3.* + rm -f Tcl_FindHashEntry.3 Tcl_FindHashEntry.3.* + rm -f Tcl_GetHashValue.3 Tcl_GetHashValue.3.* + rm -f Tcl_SetHashValue.3 Tcl_SetHashValue.3.* + rm -f Tcl_GetHashKey.3 Tcl_GetHashKey.3.* + rm -f Tcl_FirstHashEntry.3 Tcl_FirstHashEntry.3.* + rm -f Tcl_NextHashEntry.3 Tcl_NextHashEntry.3.* + rm -f Tcl_HashStats.3 Tcl_HashStats.3.* + ln $S Hash.3$Z Tcl_InitHashTable.3$Z + ln $S Hash.3$Z Tcl_InitCustomHashTable.3$Z + ln $S Hash.3$Z Tcl_InitObjHashTable.3$Z + ln $S Hash.3$Z Tcl_DeleteHashTable.3$Z + ln $S Hash.3$Z Tcl_CreateHashEntry.3$Z + ln $S Hash.3$Z Tcl_DeleteHashEntry.3$Z + ln $S Hash.3$Z Tcl_FindHashEntry.3$Z + ln $S Hash.3$Z Tcl_GetHashValue.3$Z + ln $S Hash.3$Z Tcl_SetHashValue.3$Z + ln $S Hash.3$Z Tcl_GetHashKey.3$Z + ln $S Hash.3$Z Tcl_FirstHashEntry.3$Z + ln $S Hash.3$Z Tcl_NextHashEntry.3$Z + ln $S Hash.3$Z Tcl_HashStats.3$Z +fi +if test -r Init.3; then + rm -f Init.3.* + $ZIP Init.3 + rm -f Tcl_Init.3 Tcl_Init.3.* + ln $S Init.3$Z Tcl_Init.3$Z +fi +if test -r InitStubs.3; then + rm -f InitStubs.3.* + $ZIP InitStubs.3 + rm -f Tcl_InitStubs.3 Tcl_InitStubs.3.* + ln $S InitStubs.3$Z Tcl_InitStubs.3$Z +fi +if test -r IntObj.3; then + rm -f IntObj.3.* + $ZIP IntObj.3 + rm -f Tcl_NewIntObj.3 Tcl_NewIntObj.3.* + rm -f Tcl_NewLongObj.3 Tcl_NewLongObj.3.* + rm -f Tcl_NewWideIntObj.3 Tcl_NewWideIntObj.3.* + rm -f Tcl_SetIntObj.3 Tcl_SetIntObj.3.* + rm -f Tcl_SetLongObj.3 Tcl_SetLongObj.3.* + rm -f Tcl_SetWideIntObj.3 Tcl_SetWideIntObj.3.* + rm -f Tcl_GetIntFromObj.3 Tcl_GetIntFromObj.3.* + rm -f Tcl_GetLongFromObj.3 Tcl_GetLongFromObj.3.* + rm -f Tcl_GetWideIntFromObj.3 Tcl_GetWideIntFromObj.3.* + ln $S IntObj.3$Z Tcl_NewIntObj.3$Z + ln $S IntObj.3$Z Tcl_NewLongObj.3$Z + ln $S IntObj.3$Z Tcl_NewWideIntObj.3$Z + ln $S IntObj.3$Z Tcl_SetIntObj.3$Z + ln $S IntObj.3$Z Tcl_SetLongObj.3$Z + ln $S IntObj.3$Z Tcl_SetWideIntObj.3$Z + ln $S IntObj.3$Z Tcl_GetIntFromObj.3$Z + ln $S IntObj.3$Z Tcl_GetLongFromObj.3$Z + ln $S IntObj.3$Z Tcl_GetWideIntFromObj.3$Z +fi +if test -r Interp.3; then + rm -f Interp.3.* + $ZIP Interp.3 + rm -f Tcl_Interp.3 Tcl_Interp.3.* + ln $S Interp.3$Z Tcl_Interp.3$Z +fi +if test -r Limit.3; then + rm -f Limit.3.* + $ZIP Limit.3 + rm -f Tcl_LimitAddHandler.3 Tcl_LimitAddHandler.3.* + rm -f Tcl_LimitCheck.3 Tcl_LimitCheck.3.* + rm -f Tcl_LimitExceeded.3 Tcl_LimitExceeded.3.* + rm -f Tcl_LimitGetCommands.3 Tcl_LimitGetCommands.3.* + rm -f Tcl_LimitGetGranularity.3 Tcl_LimitGetGranularity.3.* + rm -f Tcl_LimitGetTime.3 Tcl_LimitGetTime.3.* + rm -f Tcl_LimitReady.3 Tcl_LimitReady.3.* + rm -f Tcl_LimitRemoveHandler.3 Tcl_LimitRemoveHandler.3.* + rm -f Tcl_LimitSetCommands.3 Tcl_LimitSetCommands.3.* + rm -f Tcl_LimitSetGranularity.3 Tcl_LimitSetGranularity.3.* + rm -f Tcl_LimitSetTime.3 Tcl_LimitSetTime.3.* + rm -f Tcl_LimitTypeEnabled.3 Tcl_LimitTypeEnabled.3.* + rm -f Tcl_LimitTypeExceeded.3 Tcl_LimitTypeExceeded.3.* + rm -f Tcl_LimitTypeReset.3 Tcl_LimitTypeReset.3.* + rm -f Tcl_LimitTypeSet.3 Tcl_LimitTypeSet.3.* + ln $S Limit.3$Z Tcl_LimitAddHandler.3$Z + ln $S Limit.3$Z Tcl_LimitCheck.3$Z + ln $S Limit.3$Z Tcl_LimitExceeded.3$Z + ln $S Limit.3$Z Tcl_LimitGetCommands.3$Z + ln $S Limit.3$Z Tcl_LimitGetGranularity.3$Z + ln $S Limit.3$Z Tcl_LimitGetTime.3$Z + ln $S Limit.3$Z Tcl_LimitReady.3$Z + ln $S Limit.3$Z Tcl_LimitRemoveHandler.3$Z + ln $S Limit.3$Z Tcl_LimitSetCommands.3$Z + ln $S Limit.3$Z Tcl_LimitSetGranularity.3$Z + ln $S Limit.3$Z Tcl_LimitSetTime.3$Z + ln $S Limit.3$Z Tcl_LimitTypeEnabled.3$Z + ln $S Limit.3$Z Tcl_LimitTypeExceeded.3$Z + ln $S Limit.3$Z Tcl_LimitTypeReset.3$Z + ln $S Limit.3$Z Tcl_LimitTypeSet.3$Z +fi +if test -r LinkVar.3; then + rm -f LinkVar.3.* + $ZIP LinkVar.3 + rm -f Tcl_LinkVar.3 Tcl_LinkVar.3.* + rm -f Tcl_UnlinkVar.3 Tcl_UnlinkVar.3.* + rm -f Tcl_UpdateLinkedVar.3 Tcl_UpdateLinkedVar.3.* + ln $S LinkVar.3$Z Tcl_LinkVar.3$Z + ln $S LinkVar.3$Z Tcl_UnlinkVar.3$Z + ln $S LinkVar.3$Z Tcl_UpdateLinkedVar.3$Z +fi +if test -r ListObj.3; then + rm -f ListObj.3.* + $ZIP ListObj.3 + rm -f Tcl_ListObjAppendList.3 Tcl_ListObjAppendList.3.* + rm -f Tcl_ListObjAppendElement.3 Tcl_ListObjAppendElement.3.* + rm -f Tcl_NewListObj.3 Tcl_NewListObj.3.* + rm -f Tcl_SetListObj.3 Tcl_SetListObj.3.* + rm -f Tcl_ListObjGetElements.3 Tcl_ListObjGetElements.3.* + rm -f Tcl_ListObjLength.3 Tcl_ListObjLength.3.* + rm -f Tcl_ListObjIndex.3 Tcl_ListObjIndex.3.* + rm -f Tcl_ListObjReplace.3 Tcl_ListObjReplace.3.* + ln $S ListObj.3$Z Tcl_ListObjAppendList.3$Z + ln $S ListObj.3$Z Tcl_ListObjAppendElement.3$Z + ln $S ListObj.3$Z Tcl_NewListObj.3$Z + ln $S ListObj.3$Z Tcl_SetListObj.3$Z + ln $S ListObj.3$Z Tcl_ListObjGetElements.3$Z + ln $S ListObj.3$Z Tcl_ListObjLength.3$Z + ln $S ListObj.3$Z Tcl_ListObjIndex.3$Z + ln $S ListObj.3$Z Tcl_ListObjReplace.3$Z +fi +if test -r Namespace.3; then + rm -f Namespace.3.* + $ZIP Namespace.3 + rm -f Tcl_AppendExportList.3 Tcl_AppendExportList.3.* + rm -f Tcl_CreateNamespace.3 Tcl_CreateNamespace.3.* + rm -f Tcl_DeleteNamespace.3 Tcl_DeleteNamespace.3.* + rm -f Tcl_Export.3 Tcl_Export.3.* + rm -f Tcl_FindCommand.3 Tcl_FindCommand.3.* + rm -f Tcl_FindNamespace.3 Tcl_FindNamespace.3.* + rm -f Tcl_ForgetImport.3 Tcl_ForgetImport.3.* + rm -f Tcl_GetCurrentNamespace.3 Tcl_GetCurrentNamespace.3.* + rm -f Tcl_GetGloblaNamespace.3 Tcl_GetGloblaNamespace.3.* + rm -f Tcl_Import.3 Tcl_Import.3.* + ln $S Namespace.3$Z Tcl_AppendExportList.3$Z + ln $S Namespace.3$Z Tcl_CreateNamespace.3$Z + ln $S Namespace.3$Z Tcl_DeleteNamespace.3$Z + ln $S Namespace.3$Z Tcl_Export.3$Z + ln $S Namespace.3$Z Tcl_FindCommand.3$Z + ln $S Namespace.3$Z Tcl_FindNamespace.3$Z + ln $S Namespace.3$Z Tcl_ForgetImport.3$Z + ln $S Namespace.3$Z Tcl_GetCurrentNamespace.3$Z + ln $S Namespace.3$Z Tcl_GetGloblaNamespace.3$Z + ln $S Namespace.3$Z Tcl_Import.3$Z +fi +if test -r Notifier.3; then + rm -f Notifier.3.* + $ZIP Notifier.3 + rm -f Tcl_CreateEventSource.3 Tcl_CreateEventSource.3.* + rm -f Tcl_DeleteEventSource.3 Tcl_DeleteEventSource.3.* + rm -f Tcl_SetMaxBlockTime.3 Tcl_SetMaxBlockTime.3.* + rm -f Tcl_QueueEvent.3 Tcl_QueueEvent.3.* + rm -f Tcl_ThreadQueueEvent.3 Tcl_ThreadQueueEvent.3.* + rm -f Tcl_ThreadAlert.3 Tcl_ThreadAlert.3.* + rm -f Tcl_GetCurrentThread.3 Tcl_GetCurrentThread.3.* + rm -f Tcl_DeleteEvents.3 Tcl_DeleteEvents.3.* + rm -f Tcl_InitNotifier.3 Tcl_InitNotifier.3.* + rm -f Tcl_FinalizeNotifier.3 Tcl_FinalizeNotifier.3.* + rm -f Tcl_WaitForEvent.3 Tcl_WaitForEvent.3.* + rm -f Tcl_AlertNotifier.3 Tcl_AlertNotifier.3.* + rm -f Tcl_SetTimer.3 Tcl_SetTimer.3.* + rm -f Tcl_ServiceAll.3 Tcl_ServiceAll.3.* + rm -f Tcl_ServiceEvent.3 Tcl_ServiceEvent.3.* + rm -f Tcl_GetServiceMode.3 Tcl_GetServiceMode.3.* + rm -f Tcl_SetServiceMode.3 Tcl_SetServiceMode.3.* + ln $S Notifier.3$Z Tcl_CreateEventSource.3$Z + ln $S Notifier.3$Z Tcl_DeleteEventSource.3$Z + ln $S Notifier.3$Z Tcl_SetMaxBlockTime.3$Z + ln $S Notifier.3$Z Tcl_QueueEvent.3$Z + ln $S Notifier.3$Z Tcl_ThreadQueueEvent.3$Z + ln $S Notifier.3$Z Tcl_ThreadAlert.3$Z + ln $S Notifier.3$Z Tcl_GetCurrentThread.3$Z + ln $S Notifier.3$Z Tcl_DeleteEvents.3$Z + ln $S Notifier.3$Z Tcl_InitNotifier.3$Z + ln $S Notifier.3$Z Tcl_FinalizeNotifier.3$Z + ln $S Notifier.3$Z Tcl_WaitForEvent.3$Z + ln $S Notifier.3$Z Tcl_AlertNotifier.3$Z + ln $S Notifier.3$Z Tcl_SetTimer.3$Z + ln $S Notifier.3$Z Tcl_ServiceAll.3$Z + ln $S Notifier.3$Z Tcl_ServiceEvent.3$Z + ln $S Notifier.3$Z Tcl_GetServiceMode.3$Z + ln $S Notifier.3$Z Tcl_SetServiceMode.3$Z +fi +if test -r Object.3; then + rm -f Object.3.* + $ZIP Object.3 + rm -f Tcl_NewObj.3 Tcl_NewObj.3.* + rm -f Tcl_DuplicateObj.3 Tcl_DuplicateObj.3.* + rm -f Tcl_IncrRefCount.3 Tcl_IncrRefCount.3.* + rm -f Tcl_DecrRefCount.3 Tcl_DecrRefCount.3.* + rm -f Tcl_IsShared.3 Tcl_IsShared.3.* + rm -f Tcl_InvalidateStringRep.3 Tcl_InvalidateStringRep.3.* + ln $S Object.3$Z Tcl_NewObj.3$Z + ln $S Object.3$Z Tcl_DuplicateObj.3$Z + ln $S Object.3$Z Tcl_IncrRefCount.3$Z + ln $S Object.3$Z Tcl_DecrRefCount.3$Z + ln $S Object.3$Z Tcl_IsShared.3$Z + ln $S Object.3$Z Tcl_InvalidateStringRep.3$Z +fi +if test -r ObjectType.3; then + rm -f ObjectType.3.* + $ZIP ObjectType.3 + rm -f Tcl_RegisterObjType.3 Tcl_RegisterObjType.3.* + rm -f Tcl_GetObjType.3 Tcl_GetObjType.3.* + rm -f Tcl_AppendAllObjTypes.3 Tcl_AppendAllObjTypes.3.* + rm -f Tcl_ConvertToType.3 Tcl_ConvertToType.3.* + ln $S ObjectType.3$Z Tcl_RegisterObjType.3$Z + ln $S ObjectType.3$Z Tcl_GetObjType.3$Z + ln $S ObjectType.3$Z Tcl_AppendAllObjTypes.3$Z + ln $S ObjectType.3$Z Tcl_ConvertToType.3$Z +fi +if test -r OpenFileChnl.3; then + rm -f OpenFileChnl.3.* + $ZIP OpenFileChnl.3 + rm -f Tcl_OpenFileChannel.3 Tcl_OpenFileChannel.3.* + rm -f Tcl_OpenCommandChannel.3 Tcl_OpenCommandChannel.3.* + rm -f Tcl_MakeFileChannel.3 Tcl_MakeFileChannel.3.* + rm -f Tcl_GetChannel.3 Tcl_GetChannel.3.* + rm -f Tcl_GetChannelNames.3 Tcl_GetChannelNames.3.* + rm -f Tcl_GetChannelNamesEx.3 Tcl_GetChannelNamesEx.3.* + rm -f Tcl_RegisterChannel.3 Tcl_RegisterChannel.3.* + rm -f Tcl_UnregisterChannel.3 Tcl_UnregisterChannel.3.* + rm -f Tcl_DetachChannel.3 Tcl_DetachChannel.3.* + rm -f Tcl_IsStandardChannel.3 Tcl_IsStandardChannel.3.* + rm -f Tcl_Close.3 Tcl_Close.3.* + rm -f Tcl_ReadChars.3 Tcl_ReadChars.3.* + rm -f Tcl_Read.3 Tcl_Read.3.* + rm -f Tcl_GetsObj.3 Tcl_GetsObj.3.* + rm -f Tcl_Gets.3 Tcl_Gets.3.* + rm -f Tcl_WriteObj.3 Tcl_WriteObj.3.* + rm -f Tcl_WriteChars.3 Tcl_WriteChars.3.* + rm -f Tcl_Write.3 Tcl_Write.3.* + rm -f Tcl_Flush.3 Tcl_Flush.3.* + rm -f Tcl_Seek.3 Tcl_Seek.3.* + rm -f Tcl_Tell.3 Tcl_Tell.3.* + rm -f Tcl_GetChannelOption.3 Tcl_GetChannelOption.3.* + rm -f Tcl_SetChannelOption.3 Tcl_SetChannelOption.3.* + rm -f Tcl_Eof.3 Tcl_Eof.3.* + rm -f Tcl_InputBlocked.3 Tcl_InputBlocked.3.* + rm -f Tcl_InputBuffered.3 Tcl_InputBuffered.3.* + rm -f Tcl_OutputBuffered.3 Tcl_OutputBuffered.3.* + rm -f Tcl_Ungets.3 Tcl_Ungets.3.* + rm -f Tcl_ReadRaw.3 Tcl_ReadRaw.3.* + rm -f Tcl_WriteRaw.3 Tcl_WriteRaw.3.* + ln $S OpenFileChnl.3$Z Tcl_OpenFileChannel.3$Z + ln $S OpenFileChnl.3$Z Tcl_OpenCommandChannel.3$Z + ln $S OpenFileChnl.3$Z Tcl_MakeFileChannel.3$Z + ln $S OpenFileChnl.3$Z Tcl_GetChannel.3$Z + ln $S OpenFileChnl.3$Z Tcl_GetChannelNames.3$Z + ln $S OpenFileChnl.3$Z Tcl_GetChannelNamesEx.3$Z + ln $S OpenFileChnl.3$Z Tcl_RegisterChannel.3$Z + ln $S OpenFileChnl.3$Z Tcl_UnregisterChannel.3$Z + ln $S OpenFileChnl.3$Z Tcl_DetachChannel.3$Z + ln $S OpenFileChnl.3$Z Tcl_IsStandardChannel.3$Z + ln $S OpenFileChnl.3$Z Tcl_Close.3$Z + ln $S OpenFileChnl.3$Z Tcl_ReadChars.3$Z + ln $S OpenFileChnl.3$Z Tcl_Read.3$Z + ln $S OpenFileChnl.3$Z Tcl_GetsObj.3$Z + ln $S OpenFileChnl.3$Z Tcl_Gets.3$Z + ln $S OpenFileChnl.3$Z Tcl_WriteObj.3$Z + ln $S OpenFileChnl.3$Z Tcl_WriteChars.3$Z + ln $S OpenFileChnl.3$Z Tcl_Write.3$Z + ln $S OpenFileChnl.3$Z Tcl_Flush.3$Z + ln $S OpenFileChnl.3$Z Tcl_Seek.3$Z + ln $S OpenFileChnl.3$Z Tcl_Tell.3$Z + ln $S OpenFileChnl.3$Z Tcl_GetChannelOption.3$Z + ln $S OpenFileChnl.3$Z Tcl_SetChannelOption.3$Z + ln $S OpenFileChnl.3$Z Tcl_Eof.3$Z + ln $S OpenFileChnl.3$Z Tcl_InputBlocked.3$Z + ln $S OpenFileChnl.3$Z Tcl_InputBuffered.3$Z + ln $S OpenFileChnl.3$Z Tcl_OutputBuffered.3$Z + ln $S OpenFileChnl.3$Z Tcl_Ungets.3$Z + ln $S OpenFileChnl.3$Z Tcl_ReadRaw.3$Z + ln $S OpenFileChnl.3$Z Tcl_WriteRaw.3$Z +fi +if test -r OpenTcp.3; then + rm -f OpenTcp.3.* + $ZIP OpenTcp.3 + rm -f Tcl_OpenTcpClient.3 Tcl_OpenTcpClient.3.* + rm -f Tcl_MakeTcpClientChannel.3 Tcl_MakeTcpClientChannel.3.* + rm -f Tcl_OpenTcpServer.3 Tcl_OpenTcpServer.3.* + ln $S OpenTcp.3$Z Tcl_OpenTcpClient.3$Z + ln $S OpenTcp.3$Z Tcl_MakeTcpClientChannel.3$Z + ln $S OpenTcp.3$Z Tcl_OpenTcpServer.3$Z +fi +if test -r Panic.3; then + rm -f Panic.3.* + $ZIP Panic.3 + rm -f Tcl_Panic.3 Tcl_Panic.3.* + rm -f Tcl_PanicVA.3 Tcl_PanicVA.3.* + rm -f Tcl_SetPanicProc.3 Tcl_SetPanicProc.3.* + ln $S Panic.3$Z Tcl_Panic.3$Z + ln $S Panic.3$Z Tcl_PanicVA.3$Z + ln $S Panic.3$Z Tcl_SetPanicProc.3$Z +fi +if test -r ParseCmd.3; then + rm -f ParseCmd.3.* + $ZIP ParseCmd.3 + rm -f Tcl_ParseCommand.3 Tcl_ParseCommand.3.* + rm -f Tcl_ParseExpr.3 Tcl_ParseExpr.3.* + rm -f Tcl_ParseBraces.3 Tcl_ParseBraces.3.* + rm -f Tcl_ParseQuotedString.3 Tcl_ParseQuotedString.3.* + rm -f Tcl_ParseVarName.3 Tcl_ParseVarName.3.* + rm -f Tcl_ParseVar.3 Tcl_ParseVar.3.* + rm -f Tcl_FreeParse.3 Tcl_FreeParse.3.* + rm -f Tcl_EvalTokens.3 Tcl_EvalTokens.3.* + rm -f Tcl_EvalTokensStandard.3 Tcl_EvalTokensStandard.3.* + ln $S ParseCmd.3$Z Tcl_ParseCommand.3$Z + ln $S ParseCmd.3$Z Tcl_ParseExpr.3$Z + ln $S ParseCmd.3$Z Tcl_ParseBraces.3$Z + ln $S ParseCmd.3$Z Tcl_ParseQuotedString.3$Z + ln $S ParseCmd.3$Z Tcl_ParseVarName.3$Z + ln $S ParseCmd.3$Z Tcl_ParseVar.3$Z + ln $S ParseCmd.3$Z Tcl_FreeParse.3$Z + ln $S ParseCmd.3$Z Tcl_EvalTokens.3$Z + ln $S ParseCmd.3$Z Tcl_EvalTokensStandard.3$Z +fi +if test -r PkgRequire.3; then + rm -f PkgRequire.3.* + $ZIP PkgRequire.3 + rm -f Tcl_PkgRequire.3 Tcl_PkgRequire.3.* + rm -f Tcl_PkgRequireEx.3 Tcl_PkgRequireEx.3.* + rm -f Tcl_PkgPresent.3 Tcl_PkgPresent.3.* + rm -f Tcl_PkgPresentEx.3 Tcl_PkgPresentEx.3.* + rm -f Tcl_PkgProvide.3 Tcl_PkgProvide.3.* + rm -f Tcl_PkgProvideEx.3 Tcl_PkgProvideEx.3.* + ln $S PkgRequire.3$Z Tcl_PkgRequire.3$Z + ln $S PkgRequire.3$Z Tcl_PkgRequireEx.3$Z + ln $S PkgRequire.3$Z Tcl_PkgPresent.3$Z + ln $S PkgRequire.3$Z Tcl_PkgPresentEx.3$Z + ln $S PkgRequire.3$Z Tcl_PkgProvide.3$Z + ln $S PkgRequire.3$Z Tcl_PkgProvideEx.3$Z +fi +if test -r Preserve.3; then + rm -f Preserve.3.* + $ZIP Preserve.3 + rm -f Tcl_Preserve.3 Tcl_Preserve.3.* + rm -f Tcl_Release.3 Tcl_Release.3.* + rm -f Tcl_EventuallyFree.3 Tcl_EventuallyFree.3.* + ln $S Preserve.3$Z Tcl_Preserve.3$Z + ln $S Preserve.3$Z Tcl_Release.3$Z + ln $S Preserve.3$Z Tcl_EventuallyFree.3$Z +fi +if test -r PrintDbl.3; then + rm -f PrintDbl.3.* + $ZIP PrintDbl.3 + rm -f Tcl_PrintDouble.3 Tcl_PrintDouble.3.* + ln $S PrintDbl.3$Z Tcl_PrintDouble.3$Z +fi +if test -r RecEvalObj.3; then + rm -f RecEvalObj.3.* + $ZIP RecEvalObj.3 + rm -f Tcl_RecordAndEvalObj.3 Tcl_RecordAndEvalObj.3.* + ln $S RecEvalObj.3$Z Tcl_RecordAndEvalObj.3$Z +fi +if test -r RecordEval.3; then + rm -f RecordEval.3.* + $ZIP RecordEval.3 + rm -f Tcl_RecordAndEval.3 Tcl_RecordAndEval.3.* + ln $S RecordEval.3$Z Tcl_RecordAndEval.3$Z +fi +if test -r RegConfig.3; then + rm -f RegConfig.3.* + $ZIP RegConfig.3 + rm -f Tcl_RegisterConfig.3 Tcl_RegisterConfig.3.* + ln $S RegConfig.3$Z Tcl_RegisterConfig.3$Z +fi +if test -r RegExp.3; then + rm -f RegExp.3.* + $ZIP RegExp.3 + rm -f Tcl_RegExpMatch.3 Tcl_RegExpMatch.3.* + rm -f Tcl_RegExpCompile.3 Tcl_RegExpCompile.3.* + rm -f Tcl_RegExpExec.3 Tcl_RegExpExec.3.* + rm -f Tcl_RegExpRange.3 Tcl_RegExpRange.3.* + rm -f Tcl_GetRegExpFromObj.3 Tcl_GetRegExpFromObj.3.* + rm -f Tcl_RegExpMatchObj.3 Tcl_RegExpMatchObj.3.* + rm -f Tcl_RegExpExecObj.3 Tcl_RegExpExecObj.3.* + rm -f Tcl_RegExpGetInfo.3 Tcl_RegExpGetInfo.3.* + ln $S RegExp.3$Z Tcl_RegExpMatch.3$Z + ln $S RegExp.3$Z Tcl_RegExpCompile.3$Z + ln $S RegExp.3$Z Tcl_RegExpExec.3$Z + ln $S RegExp.3$Z Tcl_RegExpRange.3$Z + ln $S RegExp.3$Z Tcl_GetRegExpFromObj.3$Z + ln $S RegExp.3$Z Tcl_RegExpMatchObj.3$Z + ln $S RegExp.3$Z Tcl_RegExpExecObj.3$Z + ln $S RegExp.3$Z Tcl_RegExpGetInfo.3$Z +fi +if test -r SaveResult.3; then + rm -f SaveResult.3.* + $ZIP SaveResult.3 + rm -f Tcl_SaveResult.3 Tcl_SaveResult.3.* + rm -f Tcl_RestoreResult.3 Tcl_RestoreResult.3.* + rm -f Tcl_DiscardResult.3 Tcl_DiscardResult.3.* + ln $S SaveResult.3$Z Tcl_SaveResult.3$Z + ln $S SaveResult.3$Z Tcl_RestoreResult.3$Z + ln $S SaveResult.3$Z Tcl_DiscardResult.3$Z +fi +if test -r SetErrno.3; then + rm -f SetErrno.3.* + $ZIP SetErrno.3 + rm -f Tcl_SetErrno.3 Tcl_SetErrno.3.* + rm -f Tcl_GetErrno.3 Tcl_GetErrno.3.* + rm -f Tcl_ErrnoId.3 Tcl_ErrnoId.3.* + rm -f Tcl_ErrnoMsg.3 Tcl_ErrnoMsg.3.* + ln $S SetErrno.3$Z Tcl_SetErrno.3$Z + ln $S SetErrno.3$Z Tcl_GetErrno.3$Z + ln $S SetErrno.3$Z Tcl_ErrnoId.3$Z + ln $S SetErrno.3$Z Tcl_ErrnoMsg.3$Z +fi +if test -r SetRecLmt.3; then + rm -f SetRecLmt.3.* + $ZIP SetRecLmt.3 + rm -f Tcl_SetRecursionLimit.3 Tcl_SetRecursionLimit.3.* + ln $S SetRecLmt.3$Z Tcl_SetRecursionLimit.3$Z +fi +if test -r SetResult.3; then + rm -f SetResult.3.* + $ZIP SetResult.3 + rm -f Tcl_SetObjResult.3 Tcl_SetObjResult.3.* + rm -f Tcl_GetObjResult.3 Tcl_GetObjResult.3.* + rm -f Tcl_SetResult.3 Tcl_SetResult.3.* + rm -f Tcl_GetStringResult.3 Tcl_GetStringResult.3.* + rm -f Tcl_AppendResult.3 Tcl_AppendResult.3.* + rm -f Tcl_AppendResultVA.3 Tcl_AppendResultVA.3.* + rm -f Tcl_AppendElement.3 Tcl_AppendElement.3.* + rm -f Tcl_ResetResult.3 Tcl_ResetResult.3.* + rm -f Tcl_FreeResult.3 Tcl_FreeResult.3.* + ln $S SetResult.3$Z Tcl_SetObjResult.3$Z + ln $S SetResult.3$Z Tcl_GetObjResult.3$Z + ln $S SetResult.3$Z Tcl_SetResult.3$Z + ln $S SetResult.3$Z Tcl_GetStringResult.3$Z + ln $S SetResult.3$Z Tcl_AppendResult.3$Z + ln $S SetResult.3$Z Tcl_AppendResultVA.3$Z + ln $S SetResult.3$Z Tcl_AppendElement.3$Z + ln $S SetResult.3$Z Tcl_ResetResult.3$Z + ln $S SetResult.3$Z Tcl_FreeResult.3$Z +fi +if test -r SetVar.3; then + rm -f SetVar.3.* + $ZIP SetVar.3 + rm -f Tcl_SetVar2Ex.3 Tcl_SetVar2Ex.3.* + rm -f Tcl_SetVar.3 Tcl_SetVar.3.* + rm -f Tcl_SetVar2.3 Tcl_SetVar2.3.* + rm -f Tcl_ObjSetVar2.3 Tcl_ObjSetVar2.3.* + rm -f Tcl_GetVar2Ex.3 Tcl_GetVar2Ex.3.* + rm -f Tcl_GetVar.3 Tcl_GetVar.3.* + rm -f Tcl_GetVar2.3 Tcl_GetVar2.3.* + rm -f Tcl_ObjGetVar2.3 Tcl_ObjGetVar2.3.* + rm -f Tcl_UnsetVar.3 Tcl_UnsetVar.3.* + rm -f Tcl_UnsetVar2.3 Tcl_UnsetVar2.3.* + ln $S SetVar.3$Z Tcl_SetVar2Ex.3$Z + ln $S SetVar.3$Z Tcl_SetVar.3$Z + ln $S SetVar.3$Z Tcl_SetVar2.3$Z + ln $S SetVar.3$Z Tcl_ObjSetVar2.3$Z + ln $S SetVar.3$Z Tcl_GetVar2Ex.3$Z + ln $S SetVar.3$Z Tcl_GetVar.3$Z + ln $S SetVar.3$Z Tcl_GetVar2.3$Z + ln $S SetVar.3$Z Tcl_ObjGetVar2.3$Z + ln $S SetVar.3$Z Tcl_UnsetVar.3$Z + ln $S SetVar.3$Z Tcl_UnsetVar2.3$Z +fi +if test -r Signal.3; then + rm -f Signal.3.* + $ZIP Signal.3 + rm -f Tcl_SignalId.3 Tcl_SignalId.3.* + rm -f Tcl_SignalMsg.3 Tcl_SignalMsg.3.* + ln $S Signal.3$Z Tcl_SignalId.3$Z + ln $S Signal.3$Z Tcl_SignalMsg.3$Z +fi +if test -r Sleep.3; then + rm -f Sleep.3.* + $ZIP Sleep.3 + rm -f Tcl_Sleep.3 Tcl_Sleep.3.* + ln $S Sleep.3$Z Tcl_Sleep.3$Z +fi +if test -r SourceRCFile.3; then + rm -f SourceRCFile.3.* + $ZIP SourceRCFile.3 + rm -f Tcl_SourceRCFile.3 Tcl_SourceRCFile.3.* + ln $S SourceRCFile.3$Z Tcl_SourceRCFile.3$Z +fi +if test -r SplitList.3; then + rm -f SplitList.3.* + $ZIP SplitList.3 + rm -f Tcl_SplitList.3 Tcl_SplitList.3.* + rm -f Tcl_Merge.3 Tcl_Merge.3.* + rm -f Tcl_ScanElement.3 Tcl_ScanElement.3.* + rm -f Tcl_ConvertElement.3 Tcl_ConvertElement.3.* + rm -f Tcl_ScanCountedElement.3 Tcl_ScanCountedElement.3.* + rm -f Tcl_ConvertCountedElement.3 Tcl_ConvertCountedElement.3.* + ln $S SplitList.3$Z Tcl_SplitList.3$Z + ln $S SplitList.3$Z Tcl_Merge.3$Z + ln $S SplitList.3$Z Tcl_ScanElement.3$Z + ln $S SplitList.3$Z Tcl_ConvertElement.3$Z + ln $S SplitList.3$Z Tcl_ScanCountedElement.3$Z + ln $S SplitList.3$Z Tcl_ConvertCountedElement.3$Z +fi +if test -r SplitPath.3; then + rm -f SplitPath.3.* + $ZIP SplitPath.3 + rm -f Tcl_SplitPath.3 Tcl_SplitPath.3.* + rm -f Tcl_JoinPath.3 Tcl_JoinPath.3.* + rm -f Tcl_GetPathType.3 Tcl_GetPathType.3.* + ln $S SplitPath.3$Z Tcl_SplitPath.3$Z + ln $S SplitPath.3$Z Tcl_JoinPath.3$Z + ln $S SplitPath.3$Z Tcl_GetPathType.3$Z +fi +if test -r StaticPkg.3; then + rm -f StaticPkg.3.* + $ZIP StaticPkg.3 + rm -f Tcl_StaticPackage.3 Tcl_StaticPackage.3.* + ln $S StaticPkg.3$Z Tcl_StaticPackage.3$Z +fi +if test -r StdChannels.3; then + rm -f StdChannels.3.* + $ZIP StdChannels.3 + rm -f Tcl_StandardChannels.3 Tcl_StandardChannels.3.* + ln $S StdChannels.3$Z Tcl_StandardChannels.3$Z +fi +if test -r StrMatch.3; then + rm -f StrMatch.3.* + $ZIP StrMatch.3 + rm -f Tcl_StringMatch.3 Tcl_StringMatch.3.* + rm -f Tcl_StringCaseMatch.3 Tcl_StringCaseMatch.3.* + ln $S StrMatch.3$Z Tcl_StringMatch.3$Z + ln $S StrMatch.3$Z Tcl_StringCaseMatch.3$Z +fi +if test -r StringObj.3; then + rm -f StringObj.3.* + $ZIP StringObj.3 + rm -f Tcl_NewStringObj.3 Tcl_NewStringObj.3.* + rm -f Tcl_NewUnicodeObj.3 Tcl_NewUnicodeObj.3.* + rm -f Tcl_SetStringObj.3 Tcl_SetStringObj.3.* + rm -f Tcl_SetUnicodeObj.3 Tcl_SetUnicodeObj.3.* + rm -f Tcl_GetStringFromObj.3 Tcl_GetStringFromObj.3.* + rm -f Tcl_GetString.3 Tcl_GetString.3.* + rm -f Tcl_GetUnicodeFromObj.3 Tcl_GetUnicodeFromObj.3.* + rm -f Tcl_GetUnicode.3 Tcl_GetUnicode.3.* + rm -f Tcl_GetUniChar.3 Tcl_GetUniChar.3.* + rm -f Tcl_GetCharLength.3 Tcl_GetCharLength.3.* + rm -f Tcl_GetRange.3 Tcl_GetRange.3.* + rm -f Tcl_AppendToObj.3 Tcl_AppendToObj.3.* + rm -f Tcl_AppendUnicodeToObj.3 Tcl_AppendUnicodeToObj.3.* + rm -f Tcl_AppendStringsToObj.3 Tcl_AppendStringsToObj.3.* + rm -f Tcl_AppendStringsToObjVA.3 Tcl_AppendStringsToObjVA.3.* + rm -f Tcl_AppendObjToObj.3 Tcl_AppendObjToObj.3.* + rm -f Tcl_SetObjLength.3 Tcl_SetObjLength.3.* + rm -f Tcl_ConcatObj.3 Tcl_ConcatObj.3.* + rm -f Tcl_AttemptSetObjLength.3 Tcl_AttemptSetObjLength.3.* + ln $S StringObj.3$Z Tcl_NewStringObj.3$Z + ln $S StringObj.3$Z Tcl_NewUnicodeObj.3$Z + ln $S StringObj.3$Z Tcl_SetStringObj.3$Z + ln $S StringObj.3$Z Tcl_SetUnicodeObj.3$Z + ln $S StringObj.3$Z Tcl_GetStringFromObj.3$Z + ln $S StringObj.3$Z Tcl_GetString.3$Z + ln $S StringObj.3$Z Tcl_GetUnicodeFromObj.3$Z + ln $S StringObj.3$Z Tcl_GetUnicode.3$Z + ln $S StringObj.3$Z Tcl_GetUniChar.3$Z + ln $S StringObj.3$Z Tcl_GetCharLength.3$Z + ln $S StringObj.3$Z Tcl_GetRange.3$Z + ln $S StringObj.3$Z Tcl_AppendToObj.3$Z + ln $S StringObj.3$Z Tcl_AppendUnicodeToObj.3$Z + ln $S StringObj.3$Z Tcl_AppendStringsToObj.3$Z + ln $S StringObj.3$Z Tcl_AppendStringsToObjVA.3$Z + ln $S StringObj.3$Z Tcl_AppendObjToObj.3$Z + ln $S StringObj.3$Z Tcl_SetObjLength.3$Z + ln $S StringObj.3$Z Tcl_ConcatObj.3$Z + ln $S StringObj.3$Z Tcl_AttemptSetObjLength.3$Z +fi +if test -r SubstObj.3; then + rm -f SubstObj.3.* + $ZIP SubstObj.3 + rm -f Tcl_SubstObj.3 Tcl_SubstObj.3.* + ln $S SubstObj.3$Z Tcl_SubstObj.3$Z +fi +if test -r TCL_MEM_DEBUG.3; then + rm -f TCL_MEM_DEBUG.3.* + $ZIP TCL_MEM_DEBUG.3 +fi +if test -r Tcl.n; then + rm -f Tcl.n.* + $ZIP Tcl.n +fi +if test -r Tcl_Main.3; then + rm -f Tcl_Main.3.* + $ZIP Tcl_Main.3 + rm -f Tcl_SetMainLoop.3 Tcl_SetMainLoop.3.* + ln $S Tcl_Main.3$Z Tcl_SetMainLoop.3$Z +fi +if test -r Thread.3; then + rm -f Thread.3.* + $ZIP Thread.3 + rm -f Tcl_ConditionNotify.3 Tcl_ConditionNotify.3.* + rm -f Tcl_ConditionWait.3 Tcl_ConditionWait.3.* + rm -f Tcl_ConditionFinalize.3 Tcl_ConditionFinalize.3.* + rm -f Tcl_GetThreadData.3 Tcl_GetThreadData.3.* + rm -f Tcl_MutexLock.3 Tcl_MutexLock.3.* + rm -f Tcl_MutexUnlock.3 Tcl_MutexUnlock.3.* + rm -f Tcl_MutexFinalize.3 Tcl_MutexFinalize.3.* + rm -f Tcl_CreateThread.3 Tcl_CreateThread.3.* + rm -f Tcl_JoinThread.3 Tcl_JoinThread.3.* + ln $S Thread.3$Z Tcl_ConditionNotify.3$Z + ln $S Thread.3$Z Tcl_ConditionWait.3$Z + ln $S Thread.3$Z Tcl_ConditionFinalize.3$Z + ln $S Thread.3$Z Tcl_GetThreadData.3$Z + ln $S Thread.3$Z Tcl_MutexLock.3$Z + ln $S Thread.3$Z Tcl_MutexUnlock.3$Z + ln $S Thread.3$Z Tcl_MutexFinalize.3$Z + ln $S Thread.3$Z Tcl_CreateThread.3$Z + ln $S Thread.3$Z Tcl_JoinThread.3$Z +fi +if test -r ToUpper.3; then + rm -f ToUpper.3.* + $ZIP ToUpper.3 + rm -f Tcl_UniCharToUpper.3 Tcl_UniCharToUpper.3.* + rm -f Tcl_UniCharToLower.3 Tcl_UniCharToLower.3.* + rm -f Tcl_UniCharToTitle.3 Tcl_UniCharToTitle.3.* + rm -f Tcl_UtfToUpper.3 Tcl_UtfToUpper.3.* + rm -f Tcl_UtfToLower.3 Tcl_UtfToLower.3.* + rm -f Tcl_UtfToTitle.3 Tcl_UtfToTitle.3.* + ln $S ToUpper.3$Z Tcl_UniCharToUpper.3$Z + ln $S ToUpper.3$Z Tcl_UniCharToLower.3$Z + ln $S ToUpper.3$Z Tcl_UniCharToTitle.3$Z + ln $S ToUpper.3$Z Tcl_UtfToUpper.3$Z + ln $S ToUpper.3$Z Tcl_UtfToLower.3$Z + ln $S ToUpper.3$Z Tcl_UtfToTitle.3$Z +fi +if test -r TraceCmd.3; then + rm -f TraceCmd.3.* + $ZIP TraceCmd.3 + rm -f Tcl_CommandTraceInfo.3 Tcl_CommandTraceInfo.3.* + rm -f Tcl_TraceCommand.3 Tcl_TraceCommand.3.* + rm -f Tcl_UntraceCommand.3 Tcl_UntraceCommand.3.* + ln $S TraceCmd.3$Z Tcl_CommandTraceInfo.3$Z + ln $S TraceCmd.3$Z Tcl_TraceCommand.3$Z + ln $S TraceCmd.3$Z Tcl_UntraceCommand.3$Z +fi +if test -r TraceVar.3; then + rm -f TraceVar.3.* + $ZIP TraceVar.3 + rm -f Tcl_TraceVar.3 Tcl_TraceVar.3.* + rm -f Tcl_TraceVar2.3 Tcl_TraceVar2.3.* + rm -f Tcl_UntraceVar.3 Tcl_UntraceVar.3.* + rm -f Tcl_UntraceVar2.3 Tcl_UntraceVar2.3.* + rm -f Tcl_VarTraceInfo.3 Tcl_VarTraceInfo.3.* + rm -f Tcl_VarTraceInfo2.3 Tcl_VarTraceInfo2.3.* + ln $S TraceVar.3$Z Tcl_TraceVar.3$Z + ln $S TraceVar.3$Z Tcl_TraceVar2.3$Z + ln $S TraceVar.3$Z Tcl_UntraceVar.3$Z + ln $S TraceVar.3$Z Tcl_UntraceVar2.3$Z + ln $S TraceVar.3$Z Tcl_VarTraceInfo.3$Z + ln $S TraceVar.3$Z Tcl_VarTraceInfo2.3$Z +fi +if test -r Translate.3; then + rm -f Translate.3.* + $ZIP Translate.3 + rm -f Tcl_TranslateFileName.3 Tcl_TranslateFileName.3.* + ln $S Translate.3$Z Tcl_TranslateFileName.3$Z +fi +if test -r UniCharIsAlpha.3; then + rm -f UniCharIsAlpha.3.* + $ZIP UniCharIsAlpha.3 + rm -f Tcl_UniCharIsAlnum.3 Tcl_UniCharIsAlnum.3.* + rm -f Tcl_UniCharIsAlpha.3 Tcl_UniCharIsAlpha.3.* + rm -f Tcl_UniCharIsControl.3 Tcl_UniCharIsControl.3.* + rm -f Tcl_UniCharIsDigit.3 Tcl_UniCharIsDigit.3.* + rm -f Tcl_UniCharIsGraph.3 Tcl_UniCharIsGraph.3.* + rm -f Tcl_UniCharIsLower.3 Tcl_UniCharIsLower.3.* + rm -f Tcl_UniCharIsPrint.3 Tcl_UniCharIsPrint.3.* + rm -f Tcl_UniCharIsPunct.3 Tcl_UniCharIsPunct.3.* + rm -f Tcl_UniCharIsSpace.3 Tcl_UniCharIsSpace.3.* + rm -f Tcl_UniCharIsUpper.3 Tcl_UniCharIsUpper.3.* + rm -f Tcl_UniCharIsWordChar.3 Tcl_UniCharIsWordChar.3.* + ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsAlnum.3$Z + ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsAlpha.3$Z + ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsControl.3$Z + ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsDigit.3$Z + ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsGraph.3$Z + ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsLower.3$Z + ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsPrint.3$Z + ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsPunct.3$Z + ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsSpace.3$Z + ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsUpper.3$Z + ln $S UniCharIsAlpha.3$Z Tcl_UniCharIsWordChar.3$Z +fi +if test -r UpVar.3; then + rm -f UpVar.3.* + $ZIP UpVar.3 + rm -f Tcl_UpVar.3 Tcl_UpVar.3.* + rm -f Tcl_UpVar2.3 Tcl_UpVar2.3.* + ln $S UpVar.3$Z Tcl_UpVar.3$Z + ln $S UpVar.3$Z Tcl_UpVar2.3$Z +fi +if test -r Utf.3; then + rm -f Utf.3.* + $ZIP Utf.3 + rm -f Tcl_UniChar.3 Tcl_UniChar.3.* + rm -f Tcl_UniCharCaseMatch.3 Tcl_UniCharCaseMatch.3.* + rm -f Tcl_UniCharNcasecmp.3 Tcl_UniCharNcasecmp.3.* + rm -f Tcl_UniCharToUtf.3 Tcl_UniCharToUtf.3.* + rm -f Tcl_UtfToUniChar.3 Tcl_UtfToUniChar.3.* + rm -f Tcl_UniCharToUtfDString.3 Tcl_UniCharToUtfDString.3.* + rm -f Tcl_UtfToUniCharDString.3 Tcl_UtfToUniCharDString.3.* + rm -f Tcl_UniCharLen.3 Tcl_UniCharLen.3.* + rm -f Tcl_UniCharNcmp.3 Tcl_UniCharNcmp.3.* + rm -f Tcl_UtfCharComplete.3 Tcl_UtfCharComplete.3.* + rm -f Tcl_NumUtfChars.3 Tcl_NumUtfChars.3.* + rm -f Tcl_UtfFindFirst.3 Tcl_UtfFindFirst.3.* + rm -f Tcl_UtfFindLast.3 Tcl_UtfFindLast.3.* + rm -f Tcl_UtfNext.3 Tcl_UtfNext.3.* + rm -f Tcl_UtfPrev.3 Tcl_UtfPrev.3.* + rm -f Tcl_UniCharAtIndex.3 Tcl_UniCharAtIndex.3.* + rm -f Tcl_UtfAtIndex.3 Tcl_UtfAtIndex.3.* + rm -f Tcl_UtfBackslash.3 Tcl_UtfBackslash.3.* + ln $S Utf.3$Z Tcl_UniChar.3$Z + ln $S Utf.3$Z Tcl_UniCharCaseMatch.3$Z + ln $S Utf.3$Z Tcl_UniCharNcasecmp.3$Z + ln $S Utf.3$Z Tcl_UniCharToUtf.3$Z + ln $S Utf.3$Z Tcl_UtfToUniChar.3$Z + ln $S Utf.3$Z Tcl_UniCharToUtfDString.3$Z + ln $S Utf.3$Z Tcl_UtfToUniCharDString.3$Z + ln $S Utf.3$Z Tcl_UniCharLen.3$Z + ln $S Utf.3$Z Tcl_UniCharNcmp.3$Z + ln $S Utf.3$Z Tcl_UtfCharComplete.3$Z + ln $S Utf.3$Z Tcl_NumUtfChars.3$Z + ln $S Utf.3$Z Tcl_UtfFindFirst.3$Z + ln $S Utf.3$Z Tcl_UtfFindLast.3$Z + ln $S Utf.3$Z Tcl_UtfNext.3$Z + ln $S Utf.3$Z Tcl_UtfPrev.3$Z + ln $S Utf.3$Z Tcl_UniCharAtIndex.3$Z + ln $S Utf.3$Z Tcl_UtfAtIndex.3$Z + ln $S Utf.3$Z Tcl_UtfBackslash.3$Z +fi +if test -r WrongNumArgs.3; then + rm -f WrongNumArgs.3.* + $ZIP WrongNumArgs.3 + rm -f Tcl_WrongNumArgs.3 Tcl_WrongNumArgs.3.* + ln $S WrongNumArgs.3$Z Tcl_WrongNumArgs.3$Z +fi +if test -r after.n; then + rm -f after.n.* + $ZIP after.n +fi +if test -r append.n; then + rm -f append.n.* + $ZIP append.n +fi +if test -r array.n; then + rm -f array.n.* + $ZIP array.n +fi +if test -r bgerror.n; then + rm -f bgerror.n.* + $ZIP bgerror.n +fi +if test -r binary.n; then + rm -f binary.n.* + $ZIP binary.n +fi +if test -r break.n; then + rm -f break.n.* + $ZIP break.n +fi +if test -r case.n; then + rm -f case.n.* + $ZIP case.n +fi +if test -r catch.n; then + rm -f catch.n.* + $ZIP catch.n +fi +if test -r cd.n; then + rm -f cd.n.* + $ZIP cd.n +fi +if test -r close.n; then + rm -f close.n.* + $ZIP close.n +fi +if test -r concat.n; then + rm -f concat.n.* + $ZIP concat.n +fi +if test -r continue.n; then + rm -f continue.n.* + $ZIP continue.n +fi +if test -r dde.n; then + rm -f dde.n.* + $ZIP dde.n +fi +if test -r dict.n; then + rm -f dict.n.* + $ZIP dict.n +fi +if test -r encoding.n; then + rm -f encoding.n.* + $ZIP encoding.n +fi +if test -r eof.n; then + rm -f eof.n.* + $ZIP eof.n +fi +if test -r error.n; then + rm -f error.n.* + $ZIP error.n +fi +if test -r eval.n; then + rm -f eval.n.* + $ZIP eval.n +fi +if test -r exec.n; then + rm -f exec.n.* + $ZIP exec.n +fi +if test -r exit.n; then + rm -f exit.n.* + $ZIP exit.n +fi +if test -r expr.n; then + rm -f expr.n.* + $ZIP expr.n +fi +if test -r fblocked.n; then + rm -f fblocked.n.* + $ZIP fblocked.n +fi +if test -r fconfigure.n; then + rm -f fconfigure.n.* + $ZIP fconfigure.n +fi +if test -r fcopy.n; then + rm -f fcopy.n.* + $ZIP fcopy.n +fi +if test -r file.n; then + rm -f file.n.* + $ZIP file.n +fi +if test -r fileevent.n; then + rm -f fileevent.n.* + $ZIP fileevent.n +fi +if test -r filename.n; then + rm -f filename.n.* + $ZIP filename.n +fi +if test -r flush.n; then + rm -f flush.n.* + $ZIP flush.n +fi +if test -r for.n; then + rm -f for.n.* + $ZIP for.n +fi +if test -r foreach.n; then + rm -f foreach.n.* + $ZIP foreach.n +fi +if test -r format.n; then + rm -f format.n.* + $ZIP format.n +fi +if test -r gets.n; then + rm -f gets.n.* + $ZIP gets.n +fi +if test -r glob.n; then + rm -f glob.n.* + $ZIP glob.n +fi +if test -r global.n; then + rm -f global.n.* + $ZIP global.n +fi +if test -r history.n; then + rm -f history.n.* + $ZIP history.n +fi +if test -r http.n; then + rm -f http.n.* + $ZIP http.n +fi +if test -r if.n; then + rm -f if.n.* + $ZIP if.n +fi +if test -r incr.n; then + rm -f incr.n.* + $ZIP incr.n +fi +if test -r info.n; then + rm -f info.n.* + $ZIP info.n +fi +if test -r interp.n; then + rm -f interp.n.* + $ZIP interp.n +fi +if test -r join.n; then + rm -f join.n.* + $ZIP join.n +fi +if test -r lappend.n; then + rm -f lappend.n.* + $ZIP lappend.n +fi +if test -r lassign.n; then + rm -f lassign.n.* + $ZIP lassign.n +fi +if test -r library.n; then + rm -f library.n.* + $ZIP library.n + rm -f auto_execok.n auto_execok.n.* + rm -f auto_import.n auto_import.n.* + rm -f auto_load.n auto_load.n.* + rm -f auto_mkindex.n auto_mkindex.n.* + rm -f auto_mkindex_old.n auto_mkindex_old.n.* + rm -f auto_qualify.n auto_qualify.n.* + rm -f auto_reset.n auto_reset.n.* + rm -f tcl_findLibrary.n tcl_findLibrary.n.* + rm -f parray.n parray.n.* + rm -f tcl_endOfWord.n tcl_endOfWord.n.* + rm -f tcl_startOfNextWord.n tcl_startOfNextWord.n.* + rm -f tcl_startOfPreviousWord.n tcl_startOfPreviousWord.n.* + rm -f tcl_wordBreakAfter.n tcl_wordBreakAfter.n.* + rm -f tcl_wordBreakBefore.n tcl_wordBreakBefore.n.* + ln $S library.n$Z auto_execok.n$Z + ln $S library.n$Z auto_import.n$Z + ln $S library.n$Z auto_load.n$Z + ln $S library.n$Z auto_mkindex.n$Z + ln $S library.n$Z auto_mkindex_old.n$Z + ln $S library.n$Z auto_qualify.n$Z + ln $S library.n$Z auto_reset.n$Z + ln $S library.n$Z tcl_findLibrary.n$Z + ln $S library.n$Z parray.n$Z + ln $S library.n$Z tcl_endOfWord.n$Z + ln $S library.n$Z tcl_startOfNextWord.n$Z + ln $S library.n$Z tcl_startOfPreviousWord.n$Z + ln $S library.n$Z tcl_wordBreakAfter.n$Z + ln $S library.n$Z tcl_wordBreakBefore.n$Z +fi +if test -r lindex.n; then + rm -f lindex.n.* + $ZIP lindex.n +fi +if test -r linsert.n; then + rm -f linsert.n.* + $ZIP linsert.n +fi +if test -r list.n; then + rm -f list.n.* + $ZIP list.n +fi +if test -r llength.n; then + rm -f llength.n.* + $ZIP llength.n +fi +if test -r load.n; then + rm -f load.n.* + $ZIP load.n +fi +if test -r lrange.n; then + rm -f lrange.n.* + $ZIP lrange.n +fi +if test -r lrepeat.n; then + rm -f lrepeat.n.* + $ZIP lrepeat.n +fi +if test -r lreplace.n; then + rm -f lreplace.n.* + $ZIP lreplace.n +fi +if test -r lsearch.n; then + rm -f lsearch.n.* + $ZIP lsearch.n +fi +if test -r lset.n; then + rm -f lset.n.* + $ZIP lset.n +fi +if test -r lsort.n; then + rm -f lsort.n.* + $ZIP lsort.n +fi +if test -r memory.n; then + rm -f memory.n.* + $ZIP memory.n +fi +if test -r msgcat.n; then + rm -f msgcat.n.* + $ZIP msgcat.n +fi +if test -r namespace.n; then + rm -f namespace.n.* + $ZIP namespace.n +fi +if test -r open.n; then + rm -f open.n.* + $ZIP open.n +fi +if test -r package.n; then + rm -f package.n.* + $ZIP package.n +fi +if test -r packagens.n; then + rm -f packagens.n.* + $ZIP packagens.n + rm -f pkg::create.n pkg::create.n.* + ln $S packagens.n$Z pkg::create.n$Z +fi +if test -r pid.n; then + rm -f pid.n.* + $ZIP pid.n +fi +if test -r pkgMkIndex.n; then + rm -f pkgMkIndex.n.* + $ZIP pkgMkIndex.n + rm -f pkg_mkIndex.n pkg_mkIndex.n.* + ln $S pkgMkIndex.n$Z pkg_mkIndex.n$Z +fi +if test -r proc.n; then + rm -f proc.n.* + $ZIP proc.n +fi +if test -r puts.n; then + rm -f puts.n.* + $ZIP puts.n +fi +if test -r pwd.n; then + rm -f pwd.n.* + $ZIP pwd.n +fi +if test -r re_syntax.n; then + rm -f re_syntax.n.* + $ZIP re_syntax.n +fi +if test -r read.n; then + rm -f read.n.* + $ZIP read.n +fi +if test -r regexp.n; then + rm -f regexp.n.* + $ZIP regexp.n +fi +if test -r registry.n; then + rm -f registry.n.* + $ZIP registry.n +fi +if test -r regsub.n; then + rm -f regsub.n.* + $ZIP regsub.n +fi +if test -r rename.n; then + rm -f rename.n.* + $ZIP rename.n +fi +if test -r return.n; then + rm -f return.n.* + $ZIP return.n +fi +if test -r safe.n; then + rm -f safe.n.* + $ZIP safe.n + rm -f SafeBase.n SafeBase.n.* + ln $S safe.n$Z SafeBase.n$Z +fi +if test -r scan.n; then + rm -f scan.n.* + $ZIP scan.n +fi +if test -r seek.n; then + rm -f seek.n.* + $ZIP seek.n +fi +if test -r set.n; then + rm -f set.n.* + $ZIP set.n +fi +if test -r socket.n; then + rm -f socket.n.* + $ZIP socket.n +fi +if test -r source.n; then + rm -f source.n.* + $ZIP source.n +fi +if test -r split.n; then + rm -f split.n.* + $ZIP split.n +fi +if test -r string.n; then + rm -f string.n.* + $ZIP string.n +fi +if test -r subst.n; then + rm -f subst.n.* + $ZIP subst.n +fi +if test -r switch.n; then + rm -f switch.n.* + $ZIP switch.n +fi +if test -r tclsh.1; then + rm -f tclsh.1.* + $ZIP tclsh.1 +fi +if test -r tcltest.n; then + rm -f tcltest.n.* + $ZIP tcltest.n +fi +if test -r tclvars.n; then + rm -f tclvars.n.* + $ZIP tclvars.n +fi +if test -r tell.n; then + rm -f tell.n.* + $ZIP tell.n +fi +if test -r time.n; then + rm -f time.n.* + $ZIP time.n +fi +if test -r tm.n; then + rm -f tm.n.* + $ZIP tm.n +fi +if test -r trace.n; then + rm -f trace.n.* + $ZIP trace.n +fi +if test -r unknown.n; then + rm -f unknown.n.* + $ZIP unknown.n +fi +if test -r unload.n; then + rm -f unload.n.* + $ZIP unload.n +fi +if test -r unset.n; then + rm -f unset.n.* + $ZIP unset.n +fi +if test -r update.n; then + rm -f update.n.* + $ZIP update.n +fi +if test -r uplevel.n; then + rm -f uplevel.n.* + $ZIP uplevel.n +fi +if test -r upvar.n; then + rm -f upvar.n.* + $ZIP upvar.n +fi +if test -r variable.n; then + rm -f variable.n.* + $ZIP variable.n +fi +if test -r vwait.n; then + rm -f vwait.n.* + $ZIP vwait.n +fi +if test -r while.n; then + rm -f while.n.* + $ZIP while.n +fi +exit 0 diff --git a/unix/mkLinks.tcl b/unix/mkLinks.tcl new file mode 100644 index 0000000..85ef575 --- /dev/null +++ b/unix/mkLinks.tcl @@ -0,0 +1,119 @@ +#!/bin/sh +# mkLinks.tcl -- +# This generates the mkLinks script +# \ +exec tclsh "$0" ${1+"$@"} + +puts stdout \ +{#!/bin/sh +# This script is invoked when installing manual entries. It generates +# additional links to manual entries, corresponding to the procedure +# and command names described by the manual entry. For example, the +# Tcl manual entry Hash.3 describes procedures Tcl_InitHashTable, +# Tcl_CreateHashEntry, and many more. This script will make hard +# links so that Tcl_InitHashTable.3, Tcl_CreateHashEntry.3, and so +# on all refer to Hash.3 in the installed directory. +# +# Because of the length of command and procedure names, this mechanism +# only works on machines that support file names longer than 14 characters. +# This script checks to see if long file names are supported, and it +# doesn't make any links if they are not. +# +# The script takes one argument, which is the name of the directory +# where the manual entries have been installed. + +ZIP=true +while true; do + case $1 in + -s | --symlinks ) + S=-s + ;; + -z | --compress ) + ZIP=$2 + shift + ;; + *) break + ;; + esac + shift +done + +if test $# != 1; then + echo "Usage: mkLinks <options> dir" + exit 1 +fi + +if test "x$ZIP" != "xtrue"; then + touch TeST + $ZIP TeST + Z=`ls TeST* | sed 's/^[^.]*//'` + rm -f TeST* +fi + +cd $1 +echo foo > xyzzyTestingAVeryLongFileName.foo +x=`echo xyzzyTe*` +echo foo > xyzzyTestingaverylongfilename.foo +y=`echo xyzzyTestingav*` +rm xyzzyTe* +if test "$x" != "xyzzyTestingAVeryLongFileName.foo"; then + exit +fi +if test "$y" != "xyzzyTestingaverylongfilename.foo"; then + CASEINSENSITIVEFS=1 +fi +} + +set case_insensitive_test { if test "${CASEINSENSITIVEFS:-}" != "1"; then} +set case_insensitive_test_fi {; fi} + +foreach file $argv { + set in [open $file] + set tail [file tail $file] + set ext [file extension $file] + set state begin + while {[gets $in line] >= 0} { + switch $state { + begin { + if {[string match ".SH NAME*" $line]} { + set state name + } + } + name { + regsub {\\-.*} $line {} line + set rmOutput "" + set lnOutput "" + set namelist {} + foreach name [split $line ,] { + regsub -all {(\\)? } $name "" name + if {![string match $name*$ext $tail]} { + if {[string match -nocase $name*$ext $tail]} { + set tst $case_insensitive_test + set tstfi $case_insensitive_test_fi + } else { + set tst "" + set tstfi "" + } + lappend namelist $name$ext + append rmOutput " $tst rm -f $name$ext $name$ext.* $tstfi\n" + append lnOutput " $tst ln \$S $tail\$Z $name$ext\$Z $tstfi\n" + } + } + puts "if test -r $tail; then" + puts " rm -f $tail.*" + puts " \$ZIP $tail" + if { [llength $namelist] } { + puts -nonewline $rmOutput + puts -nonewline $lnOutput + } + puts "fi" + set state end + } + end { + break + } + } + } + close $in +} +puts "exit 0" diff --git a/unix/tclLoadAout.c b/unix/tclLoadAout.c new file mode 100644 index 0000000..d4ef456 --- /dev/null +++ b/unix/tclLoadAout.c @@ -0,0 +1,536 @@ +/* + * tclLoadAout.c -- + * + * This procedure provides a version of the TclLoadFile that + * provides pseudo-static linking using version-7 compatible + * a.out files described in either sys/exec.h or sys/a.out.h. + * + * Copyright (c) 1995, by General Electric Company. All rights reserved. + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * This work was supported in part by the ARPA Manufacturing Automation + * and Design Engineering (MADE) Initiative through ARPA contract + * F33615-94-C-4400. + * + * RCS: @(#) $Id: tclLoadAout.c,v 1.14 2002/10/10 12:25:53 vincentdarley Exp $ + */ + +#include "tclInt.h" +#include <fcntl.h> +#ifdef HAVE_EXEC_AOUT_H +# include <sys/exec_aout.h> +#endif +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#else +# include "../compat/unistd.h" +#endif + +/* + * Some systems describe the a.out header in sys/exec.h, and some in + * a.out.h. + */ + +#ifdef USE_SYS_EXEC_H +#include <sys/exec.h> +#endif +#ifdef USE_A_OUT_H +#include <a.out.h> +#endif +#ifdef USE_SYS_EXEC_AOUT_H +#include <sys/exec_aout.h> +#define a_magic a_midmag +#endif + +/* + * TCL_LOADSHIM is the amount by which to shim the break when loading + */ + +#ifndef TCL_LOADSHIM +#define TCL_LOADSHIM 0x4000L +#endif + +/* + * TCL_LOADALIGN must be a power of 2, and is the alignment to which + * to force the origin of load modules + */ + +#ifndef TCL_LOADALIGN +#define TCL_LOADALIGN 0x4000L +#endif + +/* + * TCL_LOADMAX is the maximum size of a load module, and is used as + * a sanity check when loading + */ + +#ifndef TCL_LOADMAX +#define TCL_LOADMAX 2000000L +#endif + +/* + * Kernel calls that appear to be missing from the system .h files: + */ + +extern char * brk _ANSI_ARGS_((char *)); +extern char * sbrk _ANSI_ARGS_((size_t)); + +/* + * The static variable SymbolTableFile contains the file name where the + * result of the last link was stored. The file is kept because doing so + * allows one load module to use the symbols defined in another. + */ + +static char * SymbolTableFile = NULL; + +/* + * Type of the dictionary function that begins each load module. + */ + +typedef Tcl_PackageInitProc * (* DictFn) _ANSI_ARGS_ ((CONST char * symbol)); + +/* + * Prototypes for procedures referenced only in this file: + */ + +static int FindLibraries _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * pathPtr, + Tcl_DString * buf)); +static void UnlinkSymbolTable _ANSI_ARGS_((void)); + +/* + *---------------------------------------------------------------------- + * + * TclpDlopen -- + * + * Dynamically loads a binary code file into memory and returns + * a handle to the new code. + * + * Results: + * A standard Tcl completion code. If an error occurs, an error + * message is left in the interp's result. + * + * Side effects: + * New code suddenly appears in memory. + * + * + * Bugs: + * This function does not attempt to handle the case where the + * BSS segment is not executable. It will therefore fail on + * Encore Multimax, Pyramid 90x, and similar machines. The + * reason is that the mprotect() kernel call, which would + * otherwise be employed to mark the newly-loaded text segment + * executable, results in a system crash on BSD/386. + * + * In an effort to make it fast, this function eschews the + * technique of linking the load module once, reading its header + * to determine its size, allocating memory for it, and linking + * it again. Instead, it `shims out' memory allocation by + * placing the module TCL_LOADSHIM bytes beyond the break, + * and assuming that any malloc() calls required to run the + * linker will not advance the break beyond that point. If + * the break is advanced beyonnd that point, the load will + * fail with an `inconsistent memory allocation' error. + * It perhaps ought to retry the link, but the failure has + * not been observed in two years of daily use of this function. + *---------------------------------------------------------------------- + */ + +int +TclpDlopen(interp, pathPtr, loadHandle, unloadProcPtr) + Tcl_Interp *interp; /* Used for error reporting. */ + Tcl_Obj *pathPtr; /* Name of the file containing the desired + * code (UTF-8). */ + Tcl_LoadHandle *loadHandle; /* Filled with token for dynamically loaded + * file which will be passed back to + * (*unloadProcPtr)() to unload the file. */ + Tcl_FSUnloadFileProc **unloadProcPtr; + /* Filled with address of Tcl_FSUnloadFileProc + * function which should be used for + * this file. */ +{ + char * inputSymbolTable; /* Name of the file containing the + * symbol table from the last link. */ + Tcl_DString linkCommandBuf; /* Command to do the run-time relocation + * of the module.*/ + char * linkCommand; + char relocatedFileName [L_tmpnam]; + /* Name of the file holding the relocated */ + /* text of the module */ + int relocatedFd; /* File descriptor of the file holding + * relocated text */ + struct exec relocatedHead; /* Header of the relocated text */ + unsigned long relocatedSize;/* Size of the relocated text */ + char * startAddress; /* Starting address of the module */ + int status; /* Status return from Tcl_ calls */ + char * p; + + /* Find the file that contains the symbols for the run-time link. */ + + if (SymbolTableFile != NULL) { + inputSymbolTable = SymbolTableFile; + } else if (tclExecutableName == NULL) { + Tcl_SetResult (interp, "can't find the tclsh executable", TCL_STATIC); + return TCL_ERROR; + } else { + inputSymbolTable = tclExecutableName; + } + + /* Construct the `ld' command that builds the relocated module */ + + tmpnam (relocatedFileName); + Tcl_DStringInit (&linkCommandBuf); + Tcl_DStringAppend (&linkCommandBuf, "exec ld -o ", -1); + Tcl_DStringAppend (&linkCommandBuf, relocatedFileName, -1); +#if defined(__mips) || defined(mips) + Tcl_DStringAppend (&linkCommandBuf, " -G 0 ", -1); +#endif + Tcl_DStringAppend (&linkCommandBuf, " -u TclLoadDictionary_", -1); + TclGuessPackageName(Tcl_GetString(pathPtr), &linkCommandBuf); + Tcl_DStringAppend (&linkCommandBuf, " -A ", -1); + Tcl_DStringAppend (&linkCommandBuf, inputSymbolTable, -1); + Tcl_DStringAppend (&linkCommandBuf, " -N -T XXXXXXXX ", -1); + Tcl_DStringAppend (&linkCommandBuf, Tcl_GetString(pathPtr), -1); + Tcl_DStringAppend (&linkCommandBuf, " ", -1); + + if (FindLibraries (interp, pathPtr, &linkCommandBuf) != TCL_OK) { + Tcl_DStringFree (&linkCommandBuf); + return TCL_ERROR; + } + + linkCommand = Tcl_DStringValue (&linkCommandBuf); + + /* Determine the starting address, and plug it into the command */ + + startAddress = (char *) (((unsigned long) sbrk (0) + + TCL_LOADSHIM + TCL_LOADALIGN - 1) + & (- TCL_LOADALIGN)); + p = strstr (linkCommand, "-T") + 3; + sprintf (p, "%08lx", (long) startAddress); + p [8] = ' '; + + /* Run the linker */ + + status = Tcl_Eval (interp, linkCommand); + Tcl_DStringFree (&linkCommandBuf); + if (status != 0) { + return TCL_ERROR; + } + + /* Open the linker's result file and read the header */ + + relocatedFd = open (relocatedFileName, O_RDONLY); + if (relocatedFd < 0) { + goto ioError; + } + status= read (relocatedFd, (char *) & relocatedHead, sizeof relocatedHead); + if (status < sizeof relocatedHead) { + goto ioError; + } + + /* Check the magic number */ + + if (relocatedHead.a_magic != OMAGIC) { + Tcl_AppendResult (interp, "bad magic number in intermediate file \"", + relocatedFileName, "\"", (char *) NULL); + goto failure; + } + + /* Make sure that memory allocation is still consistent */ + + if ((unsigned long) sbrk (0) > (unsigned long) startAddress) { + Tcl_SetResult (interp, "can't load, memory allocation is inconsistent.", + TCL_STATIC); + goto failure; + } + + /* Make sure that the relocated module's size is reasonable */ + + relocatedSize = relocatedHead.a_text + relocatedHead.a_data + + relocatedHead.a_bss; + if (relocatedSize > TCL_LOADMAX) { + Tcl_SetResult (interp, "module too big to load", TCL_STATIC); + goto failure; + } + + /* Advance the break to protect the loaded module */ + + (void) brk (startAddress + relocatedSize); + + /* + * Seek to the start of the module's text. + * + * Note that this does not really work with large files (i.e. where + * lseek64 exists and is different to lseek), but anyone trying to + * dynamically load a binary that is larger than what can fit in + * addressable memory is in trouble anyway... + */ + +#if defined(__mips) || defined(mips) + status = lseek (relocatedFd, + (off_t) N_TXTOFF (relocatedHead.ex_f, relocatedHead.ex_o), + SEEK_SET); +#else + status = lseek (relocatedFd, (off_t) N_TXTOFF (relocatedHead), SEEK_SET); +#endif + if (status < 0) { + goto ioError; + } + + /* Read in the module's text and data */ + + relocatedSize = relocatedHead.a_text + relocatedHead.a_data; + if (read (relocatedFd, startAddress, relocatedSize) < relocatedSize) { + brk (startAddress); + ioError: + Tcl_AppendResult (interp, "error on intermediate file \"", + relocatedFileName, "\": ", Tcl_PosixError (interp), + (char *) NULL); + failure: + (void) unlink (relocatedFileName); + return TCL_ERROR; + } + + /* Close the intermediate file. */ + + (void) close (relocatedFd); + + /* Arrange things so that intermediate symbol tables eventually get + * deleted. */ + + if (SymbolTableFile != NULL) { + UnlinkSymbolTable (); + } else { + atexit (UnlinkSymbolTable); + } + SymbolTableFile = ckalloc (strlen (relocatedFileName) + 1); + strcpy (SymbolTableFile, relocatedFileName); + + *loadHandle = startAddress; + return TCL_OK; +} + +/* + *---------------------------------------------------------------------- + * + * TclpFindSymbol -- + * + * Looks up a symbol, by name, through a handle associated with + * a previously loaded piece of code (shared library). + * + * Results: + * Returns a pointer to the function associated with 'symbol' if + * it is found. Otherwise returns NULL and may leave an error + * message in the interp's result. + * + *---------------------------------------------------------------------- + */ +Tcl_PackageInitProc* +TclpFindSymbol(interp, loadHandle, symbol) + Tcl_Interp *interp; + Tcl_LoadHandle loadHandle; + CONST char *symbol; +{ + /* Look up the entry point in the load module's dictionary. */ + DictFn dictionary = (DictFn) loadHandle; + return (Tcl_PackageInitProc*) dictionary(sym1); +} + + +/* + *------------------------------------------------------------------------ + * + * FindLibraries -- + * + * Find the libraries needed to link a load module at run time. + * + * Results: + * A standard Tcl completion code. If an error occurs, + * an error message is left in the interp's result. The -l and -L + * flags are concatenated onto the dynamic string `buf'. + * + *------------------------------------------------------------------------ + */ + +static int +FindLibraries (interp, pathPtr, buf) + Tcl_Interp * interp; /* Used for error reporting */ + Tcl_Obj * pathPtr; /* Name of the load module */ + Tcl_DString * buf; /* Buffer where the -l an -L flags */ +{ + FILE * f; /* The load module */ + int c = 0; /* Byte from the load module */ + char * p; + CONST char *native; + + char *fileName = Tcl_GetString(pathPtr); + + /* Open the load module */ + + native = Tcl_FSGetNativePath(pathPtr); + f = fopen(native, "rb"); /* INTL: Native. */ + + if (f == NULL) { + Tcl_AppendResult (interp, "couldn't open \"", fileName, "\": ", + Tcl_PosixError (interp), (char *) NULL); + return TCL_ERROR; + } + + /* Search for the library list in the load module */ + + p = "@LIBS: "; + while (*p != '\0' && (c = getc (f)) != EOF) { + if (c == *p) { + ++p; + } + else { + p = "@LIBS: "; + if (c == *p) { + ++p; + } + } + } + + /* No library list -- this must be an ill-formed module */ + + if (c == EOF) { + Tcl_AppendResult (interp, "File \"", fileName, + "\" is not a Tcl load module.", (char *) NULL); + (void) fclose (f); + return TCL_ERROR; + } + + /* Accumulate the library list */ + + while ((c = getc (f)) != '\0' && c != EOF) { + char cc = c; + Tcl_DStringAppend (buf, &cc, 1); + } + (void) fclose (f); + + if (c == EOF) { + Tcl_AppendResult (interp, "Library directory in \"", fileName, + "\" ends prematurely.", (char *) NULL); + return TCL_ERROR; + } + + return TCL_OK; +} + +/* + *------------------------------------------------------------------------ + * + * UnlinkSymbolTable -- + * + * Remove the symbol table file from the last dynamic link. + * + * Results: + * None. + * + * Side effects: + * The symbol table file from the last dynamic link is removed. + * This function is called when (a) a new symbol table is present + * because another dynamic link is complete, or (b) the process + * is exiting. + *------------------------------------------------------------------------ + */ + +static void +UnlinkSymbolTable () +{ + (void) unlink (SymbolTableFile); + ckfree (SymbolTableFile); + SymbolTableFile = NULL; +} + +/* + *---------------------------------------------------------------------- + * + * TclpUnloadFile -- + * + * Unloads a dynamically loaded binary code file from memory. + * Code pointers in the formerly loaded file are no longer valid + * after calling this function. + * + * Results: + * None. + * + * Side effects: + * Does nothing. Can anything be done? + * + *---------------------------------------------------------------------- + */ + +void +TclpUnloadFile(loadHandle) + Tcl_LoadHandle loadHandle; /* loadHandle returned by a previous call + * to TclpDlopen(). The loadHandle is + * a token that represents the loaded + * file. */ +{ +} + +/* + *---------------------------------------------------------------------- + * + * TclGuessPackageName -- + * + * If the "load" command is invoked without providing a package + * name, this procedure is invoked to try to figure it out. + * + * Results: + * Always returns 0 to indicate that we couldn't figure out a + * package name; generic code will then try to guess the package + * from the file name. A return value of 1 would have meant that + * we figured out the package name and put it in bufPtr. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int +TclGuessPackageName(fileName, bufPtr) + CONST char *fileName; /* Name of file containing package (already + * translated to local form if needed). */ + Tcl_DString *bufPtr; /* Initialized empty dstring. Append + * package name to this if possible. */ +{ + CONST char *p, *q; + char *r; + + if ((q = strrchr(fileName,'/'))) { + q++; + } else { + q = fileName; + } + if (!strncmp(q,"lib",3)) { + q+=3; + } + p = q; + while ((*p) && (*p != '.') && ((*p<'0') || (*p>'9'))) { + p++; + } + if ((p>q+2) && !strncmp(p-2,"_G0.",4)) { + p-=2; + } + if (p<q) { + return 0; + } + + Tcl_DStringAppend(bufPtr,q, p-q); + + r = Tcl_DStringValue(bufPtr); + r += strlen(r) - (p-q); + + /* + * Capitalize the string and then recompute the length. + */ + + Tcl_UtfToTitle(r); + Tcl_DStringSetLength(bufPtr, strlen(Tcl_DStringValue(bufPtr))); + + return 1; +} diff --git a/unix/tclLoadDld.c b/unix/tclLoadDld.c new file mode 100644 index 0000000..fe2f8fc --- /dev/null +++ b/unix/tclLoadDld.c @@ -0,0 +1,209 @@ +/* + * tclLoadDld.c -- + * + * This procedure provides a version of the TclLoadFile that works with + * the "dld_link" and "dld_get_func" library procedures for dynamic + * loading. It has been tested on Linux 1.1.95 and dld-3.2.7. This file + * probably isn't needed anymore, since it makes more sense to use + * "dl_open" etc. + * + * Copyright (c) 1995-1997 Sun Microsystems, Inc. + * + * See the file "license.terms" for information on usage and redistribution of + * this file, and for a DISCLAIMER OF ALL WARRANTIES. + * + * RCS: @(#) $Id: tclLoadDld.c,v 1.13 2005/07/19 13:37:18 dkf Exp $ + */ + +#include "tclInt.h" +#include "dld.h" + +/* + * In some systems, like SunOS 4.1.3, the RTLD_NOW flag isn't defined and this + * argument to dlopen must always be 1. + */ + +#ifndef RTLD_NOW +# define RTLD_NOW 1 +#endif + +/* + *---------------------------------------------------------------------- + * + * TclpDlopen -- + * + * Dynamically loads a binary code file into memory and returns a handle + * to the new code. + * + * Results: + * A standard Tcl completion code. If an error occurs, an error message + * is left in the interp's result. + * + * Side effects: + * New code suddenly appears in memory. + * + *---------------------------------------------------------------------- + */ + +int +TclpDlopen(interp, pathPtr, loadHandle, unloadProcPtr) + Tcl_Interp *interp; /* Used for error reporting. */ + Tcl_Obj *pathPtr; /* Name of the file containing the desired + * code (UTF-8). */ + Tcl_LoadHandle *loadHandle; /* Filled with token for dynamically loaded + * file which will be passed back to + * (*unloadProcPtr)() to unload the file. */ + Tcl_FSUnloadFileProc **unloadProcPtr; + /* Filled with address of Tcl_FSUnloadFileProc + * function which should be used for this + * file. */ +{ + static int firstTime = 1; + int returnCode; + char *fileName; + CONST char *native; + + /* + * The dld package needs to know the pathname to the tcl binary. If + * that's not known, return an error. + */ + + if (firstTime) { + if (tclExecutableName == NULL) { + Tcl_SetResult(interp, + "don't know name of application binary file, so can't initialize dynamic loader", + TCL_STATIC); + return TCL_ERROR; + } + returnCode = dld_init(tclExecutableName); + if (returnCode != 0) { + Tcl_AppendResult(interp, + "initialization failed for dynamic loader: ", + dld_strerror(returnCode), (char *) NULL); + return TCL_ERROR; + } + firstTime = 0; + } + + fileName = Tcl_GetString(pathPtr); + + /* + * First try the full path the user gave us. This is particularly + * important if the cwd is inside a vfs, and we are trying to load using a + * relative path. + */ + + native = Tcl_FSGetNativePath(pathPtr); + returnCode = dld_link(native); + + if (returnCode != 0) { + Tcl_DString ds; + native = Tcl_UtfToExternalDString(NULL, fileName, -1, &ds); + returnCode = dld_link(native); + Tcl_DStringFree(&ds); + } + + if (returnCode != 0) { + Tcl_AppendResult(interp, "couldn't load file \"", fileName, "\": ", + dld_strerror(returnCode), (char *) NULL); + return TCL_ERROR; + } + *loadHandle = (Tcl_LoadHandle) strcpy( + (char *) ckalloc((unsigned) (strlen(fileName) + 1)), fileName); + *unloadProcPtr = &TclpUnloadFile; + return TCL_OK; +} + +/* + *---------------------------------------------------------------------- + * + * TclpFindSymbol -- + * + * Looks up a symbol, by name, through a handle associated with a + * previously loaded piece of code (shared library). + * + * Results: + * Returns a pointer to the function associated with 'symbol' if it is + * found. Otherwise returns NULL and may leave an error message in the + * interp's result. + * + *---------------------------------------------------------------------- + */ + +Tcl_PackageInitProc* +TclpFindSymbol(interp, loadHandle, symbol) + Tcl_Interp *interp; + Tcl_LoadHandle loadHandle; + CONST char *symbol; +{ + return (Tcl_PackageInitProc *) dld_get_func(symbol); +} + +/* + *---------------------------------------------------------------------- + * + * TclpUnloadFile -- + * + * Unloads a dynamically loaded binary code file from memory. Code + * pointers in the formerly loaded file are no longer valid after calling + * this function. + * + * Results: + * None. + * + * Side effects: + * Code removed from memory. + * + *---------------------------------------------------------------------- + */ + +void +TclpUnloadFile(loadHandle) + Tcl_LoadHandle loadHandle; /* loadHandle returned by a previous call to + * TclpDlopen(). The loadHandle is a token + * that represents the loaded file. */ +{ + char *fileName; + + handle = (char *) loadHandle; + dld_unlink_by_file(handle, 0); + ckfree(handle); +} + +/* + *---------------------------------------------------------------------- + * + * TclGuessPackageName -- + * + * If the "load" command is invoked without providing a package name, + * this procedure is invoked to try to figure it out. + * + * Results: + * Always returns 0 to indicate that we couldn't figure out a package + * name; generic code will then try to guess the package from the file + * name. A return value of 1 would have meant that we figured out the + * package name and put it in bufPtr. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int +TclGuessPackageName(fileName, bufPtr) + CONST char *fileName; /* Name of file containing package (already + * translated to local form if needed). */ + Tcl_DString *bufPtr; /* Initialized empty dstring. Append package + * name to this if possible. */ +{ + return 0; +} + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ |