# PaCkAgE DaTaStReAm SUNWtcl 1 6516 # end of header 070701000615e5000081a400004ccf0000000a0000000133f371f6000000e9000000a30000000400000000000000000000001000000004SUNWtcl/pkginfoARCH=sun4 PKG=SUNWtcl NAME=Tcl 8.0 VERSION=8.0 CATEGORY=application DESC=Tcl scripting language libraries, binaries, and manual pages BASEDIR=/opt VENDOR=Sun Microsystems, Inc. MAXINST=1000 CLASSES=none PSTAMP=ghostwheel970814140037 070701000615e4000081a400004ccf0000000a0000000133f371f600007108000000a30000000400000000000000000000000f00000004SUNWtcl/pkgmap: 1 6516 1 d none SUNWtcl 0755 root bin 1 d none SUNWtcl/8.0 0755 root bin 1 d none SUNWtcl/8.0/bin 0755 root bin 1 f none SUNWtcl/8.0/bin/tclsh8.0 0755 root bin 409 30846 871592430 1 d none SUNWtcl/8.0/include 0755 root bin 1 f none SUNWtcl/8.0/include/tcl.h 0644 root bin 59010 7976 871592370 1 d none SUNWtcl/8.0/lib 0755 root bin 1 d none SUNWtcl/8.0/lib/tcl8.0 0755 root bin 1 f none SUNWtcl/8.0/lib/tcl8.0/history.tcl 0644 root bin 8947 8424 871592370 1 d none SUNWtcl/8.0/lib/tcl8.0/http1.0 0755 root bin 1 f none SUNWtcl/8.0/lib/tcl8.0/http1.0/http.tcl 0644 root bin 9620 70 871592375 1 f none SUNWtcl/8.0/lib/tcl8.0/http1.0/pkgIndex.tcl 0644 root bin 735 2222 871592376 1 d none SUNWtcl/8.0/lib/tcl8.0/http2.0 0755 root bin 1 f none SUNWtcl/8.0/lib/tcl8.0/http2.0/http.tcl 0644 root bin 11161 56049 871592375 1 f none SUNWtcl/8.0/lib/tcl8.0/http2.0/pkgIndex.tcl 0644 root bin 624 55851 871592375 1 f none SUNWtcl/8.0/lib/tcl8.0/init.tcl 0644 root bin 20872 22652 871592371 1 f none SUNWtcl/8.0/lib/tcl8.0/ldAix 0644 root bin 2623 18525 871592374 1 f none SUNWtcl/8.0/lib/tcl8.0/ldAout.tcl 0644 root bin 6613 21420 871592371 1 d none SUNWtcl/8.0/lib/tcl8.0/opt0.1 0755 root bin 1 f none SUNWtcl/8.0/lib/tcl8.0/opt0.1/optparse.tcl 0644 root bin 32720 1748 871592376 1 f none SUNWtcl/8.0/lib/tcl8.0/opt0.1/pkgIndex.tcl 0644 root bin 400 35101 871592377 1 f none SUNWtcl/8.0/lib/tcl8.0/parray.tcl 0644 root bin 858 3830 871592372 1 f none SUNWtcl/8.0/lib/tcl8.0/safe.tcl 0644 root bin 21224 60702 871592372 1 f none SUNWtcl/8.0/lib/tcl8.0/tclAppInit.c 0644 root bin 3538 9778 871592374 1 f none SUNWtcl/8.0/lib/tcl8.0/tclIndex 0644 root bin 2165 3462 871592373 1 f none SUNWtcl/8.0/lib/tcl8.0/word.tcl 0644 root bin 4430 58698 871592373 1 d none SUNWtcl/8.0/man 0755 root bin 1 d none SUNWtcl/8.0/man/man1 0755 root bin 1 f none SUNWtcl/8.0/man/man1/tclsh.1 0444 root bin 9486 6814 871592378 1 d none SUNWtcl/8.0/man/man3 0755 root bin 1 f none SUNWtcl/8.0/man/man3/AddErrInfo.3 0444 root bin 11724 18756 871592379 1 f none SUNWtcl/8.0/man/man3/Alloc.3 0444 root bin 6289 44837 871592379 1 f none SUNWtcl/8.0/man/man3/AllowExc.3 0444 root bin 6125 30470 871592379 1 f none SUNWtcl/8.0/man/man3/AppInit.3 0444 root bin 7516 26739 871592379 1 f none SUNWtcl/8.0/man/man3/AssocData.3 0444 root bin 8289 34035 871592379 1 f none SUNWtcl/8.0/man/man3/Async.3 0444 root bin 11031 22611 871592380 1 f none SUNWtcl/8.0/man/man3/BackgdErr.3 0444 root bin 7028 50404 871592380 1 f none SUNWtcl/8.0/man/man3/Backslash.3 0444 root bin 6032 21837 871592380 1 f none SUNWtcl/8.0/man/man3/BoolObj.3 0444 root bin 7814 53113 871592380 1 f none SUNWtcl/8.0/man/man3/CallDel.3 0444 root bin 6924 38205 871592380 1 f none SUNWtcl/8.0/man/man3/CmdCmplt.3 0444 root bin 5734 60045 871592380 1 f none SUNWtcl/8.0/man/man3/Concat.3 0444 root bin 6478 62284 871592381 1 f none SUNWtcl/8.0/man/man3/CrtChannel.3 0444 root bin 28003 46274 871592381 1 f none SUNWtcl/8.0/man/man3/CrtChnlHdlr.3 0444 root bin 8499 49901 871592381 1 f none SUNWtcl/8.0/man/man3/CrtCloseHdlr.3 0444 root bin 6563 3483 871592381 1 f none SUNWtcl/8.0/man/man3/CrtCommand.3 0444 root bin 10914 8578 871592381 1 f none SUNWtcl/8.0/man/man3/CrtFileHdlr.3 0444 root bin 8321 30609 871592381 1 f none SUNWtcl/8.0/man/man3/CrtInterp.3 0444 root bin 10792 65220 871592382 1 f none SUNWtcl/8.0/man/man3/CrtMathFnc.3 0444 root bin 8330 34042 871592382 1 f none SUNWtcl/8.0/man/man3/CrtObjCmd.3 0444 root bin 15556 37406 871592382 1 f none SUNWtcl/8.0/man/man3/CrtSlave.3 0444 root bin 14446 64601 871592382 1 f none SUNWtcl/8.0/man/man3/CrtTimerHdlr.3 0444 root bin 7571 32306 871592382 1 f none SUNWtcl/8.0/man/man3/CrtTrace.3 0444 root bin 9262 54092 871592382 1 f none SUNWtcl/8.0/man/man3/DString.3 0444 root bin 10510 40658 871592383 1 f none SUNWtcl/8.0/man/man3/DetachPids.3 0444 root bin 7223 355 871592383 1 f none SUNWtcl/8.0/man/man3/DoOneEvent.3 0444 root bin 8883 11774 871592383 1 f none SUNWtcl/8.0/man/man3/DoWhenIdle.3 0444 root bin 8101 13349 871592383 1 f none SUNWtcl/8.0/man/man3/DoubleObj.3 0444 root bin 7623 36945 871592383 1 f none SUNWtcl/8.0/man/man3/Eval.3 0444 root bin 9191 44035 871592383 1 f none SUNWtcl/8.0/man/man3/EvalObj.3 0444 root bin 8196 21490 871592384 1 f none SUNWtcl/8.0/man/man3/Exit.3 0444 root bin 8894 23677 871592384 1 f none SUNWtcl/8.0/man/man3/ExprLong.3 0444 root bin 9016 34102 871592384 1 f none SUNWtcl/8.0/man/man3/ExprLongObj.3 0444 root bin 8498 51624 871592384 1 f none SUNWtcl/8.0/man/man3/FindExec.3 0444 root bin 6211 38922 871592384 1 f none SUNWtcl/8.0/man/man3/GetIndex.3 0444 root bin 7741 45380 871592385 1 f none SUNWtcl/8.0/man/man3/GetInt.3 0444 root bin 7880 57171 871592385 1 f none SUNWtcl/8.0/man/man3/GetOpnFl.3 0444 root bin 6840 29154 871592385 1 f none SUNWtcl/8.0/man/man3/GetStdChan.3 0444 root bin 7754 45839 871592385 1 f none SUNWtcl/8.0/man/man3/Hash.3 0444 root bin 13052 1518 871592386 1 f none SUNWtcl/8.0/man/man3/IntObj.3 0444 root bin 8632 62502 871592386 1 f none SUNWtcl/8.0/man/man3/Interp.3 0444 root bin 10271 19816 871592386 1 f none SUNWtcl/8.0/man/man3/LinkVar.3 0444 root bin 9121 33496 871592386 1 f none SUNWtcl/8.0/man/man3/ListObj.3 0444 root bin 14993 52333 871592386 1 f none SUNWtcl/8.0/man/man3/Notifier.3 0444 root bin 29457 58292 871592386 1 f none SUNWtcl/8.0/man/man3/ObjSetVar.3 0444 root bin 11432 49135 871592387 1 f none SUNWtcl/8.0/man/man3/Object.3 0444 root bin 18437 48535 871592387 1 f none SUNWtcl/8.0/man/man3/ObjectType.3 0444 root bin 12761 50192 871592387 1 f none SUNWtcl/8.0/man/man3/OpenFileChnl.3 0444 root bin 26849 65213 871592387 1 f none SUNWtcl/8.0/man/man3/OpenTcp.3 0444 root bin 12267 63577 871592387 1 f none SUNWtcl/8.0/man/man3/PkgRequire.3 0444 root bin 6632 12920 871592388 1 f none SUNWtcl/8.0/man/man3/Preserve.3 0444 root bin 8995 32939 871592388 1 f none SUNWtcl/8.0/man/man3/PrintDbl.3 0444 root bin 6240 39422 871592388 1 f none SUNWtcl/8.0/man/man3/RecEvalObj.3 0444 root bin 6681 14713 871592388 1 f none SUNWtcl/8.0/man/man3/RecordEval.3 0444 root bin 6799 24741 871592388 1 f none SUNWtcl/8.0/man/man3/RegExp.3 0444 root bin 9801 39866 871592388 1 f none SUNWtcl/8.0/man/man3/SetErrno.3 0444 root bin 6183 37272 871592389 1 f none SUNWtcl/8.0/man/man3/SetRecLmt.3 0444 root bin 6642 12302 871592389 1 f none SUNWtcl/8.0/man/man3/SetResult.3 0444 root bin 14075 34771 871592389 1 f none SUNWtcl/8.0/man/man3/SetVar.3 0444 root bin 12290 59000 871592389 1 f none SUNWtcl/8.0/man/man3/Sleep.3 0444 root bin 5833 4203 871592390 1 f none SUNWtcl/8.0/man/man3/SplitList.3 0444 root bin 11783 19770 871592390 1 f none SUNWtcl/8.0/man/man3/SplitPath.3 0444 root bin 7998 1869 871592390 1 f none SUNWtcl/8.0/man/man3/StaticPkg.3 0444 root bin 7594 35998 871592390 1 f none SUNWtcl/8.0/man/man3/StrMatch.3 0444 root bin 5893 8701 871592390 1 f none SUNWtcl/8.0/man/man3/StringObj.3 0444 root bin 10302 20551 871592390 1 l none SUNWtcl/8.0/man/man3/TclConcatObj.3=StringObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AddErrorInfo.3=AddErrInfo.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AddObjErrorInfo.3=AddErrInfo.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Alloc.3=Alloc.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AllowExceptions.3=AllowExc.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AppInit.3=AppInit.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AppendAllObjTypes.3=ObjectType.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AppendElement.3=SetResult.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AppendResult.3=SetResult.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AppendStringsToObj.3=StringObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AppendToObj.3=StringObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AsyncCreate.3=Async.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AsyncDelete.3=Async.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AsyncInvoke.3=Async.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AsyncMark.3=Async.3 1 l none SUNWtcl/8.0/man/man3/Tcl_BackgroundError.3=BackgdErr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Backslash.3=Backslash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_BadChannelOption.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CallWhenDeleted.3=CallDel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CancelIdleCall.3=DoWhenIdle.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Close.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CommandComplete.3=CmdCmplt.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Concat.3=Concat.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ConvertElement.3=SplitList.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ConvertToType.3=ObjectType.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateAlias.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateAliasObj.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateChannel.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateChannelHandler.3=CrtChnlHdlr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateCloseHandler.3=CrtCloseHdlr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateCommand.3=CrtCommand.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateEventSource.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateExitHandler.3=Exit.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateFileHandler.3=CrtFileHdlr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateHashEntry.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateInterp.3=CrtInterp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateMathFunc.3=CrtMathFnc.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateObjCommand.3=CrtObjCmd.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateSlave.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateTimerHandler.3=CrtTimerHdlr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateTrace.3=CrtTrace.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringAppend.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringAppendElement.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringEndSublist.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringFree.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringGetResult.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringInit.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringLength.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringResult.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringSetLength.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringStartSublist.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringValue.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DecrRefCount.3=Object.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteAssocData.3=AssocData.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteChannelHandler.3=CrtChnlHdlr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteCloseHandler.3=CrtCloseHdlr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteCommand.3=CrtObjCmd.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteCommandFromToken.3=CrtObjCmd.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteEventSource.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteEvents.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteExitHandler.3=Exit.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteFileHandler.3=CrtFileHdlr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteHashEntry.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteHashTable.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteInterp.3=CrtInterp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteTimerHandler.3=CrtTimerHdlr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteTrace.3=CrtTrace.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DetachPids.3=DetachPids.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DoOneEvent.3=DoOneEvent.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DoWhenIdle.3=DoWhenIdle.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DontCallWhenDeleted.3=CallDel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DuplicateObj.3=Object.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Eof.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Eval.3=Eval.3 1 l none SUNWtcl/8.0/man/man3/Tcl_EvalFile.3=Eval.3 1 l none SUNWtcl/8.0/man/man3/Tcl_EvalObj.3=EvalObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_EventuallyFree.3=Preserve.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Exit.3=Exit.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExposeCommand.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExprBoolean.3=ExprLong.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExprBooleanObj.3=ExprLongObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExprDouble.3=ExprLong.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExprDoubleObj.3=ExprLongObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExprLong.3=ExprLong.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExprLongObj.3=ExprLongObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExprObj.3=ExprLongObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExprString.3=ExprLong.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Finalize.3=Exit.3 1 l none SUNWtcl/8.0/man/man3/Tcl_FindExecutable.3=FindExec.3 1 l none SUNWtcl/8.0/man/man3/Tcl_FindHashEntry.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_FirstHashEntry.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Flush.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Free.3=Alloc.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetAlias.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetAliasObj.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetAssocData.3=AssocData.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetBoolean.3=GetInt.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetBooleanFromObj.3=BoolObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetChannel.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetChannelBufferSize.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetChannelHandle.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetChannelInstanceData.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetChannelMode.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetChannelName.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetChannelOption.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetChannelType.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetCommandInfo.3=CrtObjCmd.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetCommandName.3=CrtObjCmd.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetDouble.3=GetInt.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetDoubleFromObj.3=DoubleObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetErrno.3=SetErrno.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetHashKey.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetHashValue.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetIndexFromObj.3=GetIndex.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetInt.3=GetInt.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetIntFromObj.3=IntObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetInterpPath.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetLongFromObj.3=IntObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetMaster.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetObjResult.3=SetResult.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetObjType.3=ObjectType.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetOpenFile.3=GetOpnFl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetPathType.3=SplitPath.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetServiceMode.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetSlave.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetStdChannel.3=GetStdChan.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetStringFromObj.3=StringObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetStringResult.3=SetResult.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetVar.3=SetVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetVar2.3=SetVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Gets.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GlobalEval.3=Eval.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GlobalEvalObj.3=EvalObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_HashStats.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_HideCommand.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_IncrRefCount.3=Object.3 1 l none SUNWtcl/8.0/man/man3/Tcl_InitHashTable.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_InputBlocked.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_InputBuffered.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Interp.3=Interp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_InterpDeleted.3=CrtInterp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_IsSafe.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_IsShared.3=Object.3 1 l none SUNWtcl/8.0/man/man3/Tcl_JoinPath.3=SplitPath.3 1 l none SUNWtcl/8.0/man/man3/Tcl_LinkVar.3=LinkVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ListObjAppendElement.3=ListObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ListObjAppendList.3=ListObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ListObjGetElements.3=ListObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ListObjIndex.3=ListObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ListObjLength.3=ListObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ListObjReplace.3=ListObj.3 1 f none SUNWtcl/8.0/man/man3/Tcl_Main.3 0444 root bin 6935 39068 871592390 1 l none SUNWtcl/8.0/man/man3/Tcl_MakeFileChannel.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_MakeSafe.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_MakeTcpClientChannel.3=OpenTcp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Merge.3=SplitList.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NewBooleanObj.3=BoolObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NewDoubleObj.3=DoubleObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NewIntObj.3=IntObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NewListObj.3=ListObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NewLongObj.3=IntObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NewObj.3=Object.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NewStringObj.3=StringObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NextHashEntry.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NotifyChannel.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ObjGetVar2.3=ObjSetVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ObjSetVar2.3=ObjSetVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_OpenCommandChannel.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_OpenFileChannel.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_OpenTcpClient.3=OpenTcp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_OpenTcpServer.3=OpenTcp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_PkgProvide.3=PkgRequire.3 1 l none SUNWtcl/8.0/man/man3/Tcl_PkgRequire.3=PkgRequire.3 1 l none SUNWtcl/8.0/man/man3/Tcl_PosixError.3=AddErrInfo.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Preserve.3=Preserve.3 1 l none SUNWtcl/8.0/man/man3/Tcl_PrintDouble.3=PrintDbl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_QueueEvent.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Read.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Realloc.3=Alloc.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ReapDetachedProcs.3=DetachPids.3 1 l none SUNWtcl/8.0/man/man3/Tcl_RecordAndEval.3=RecordEval.3 1 l none SUNWtcl/8.0/man/man3/Tcl_RecordAndEvalObj.3=RecEvalObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_RegExpCompile.3=RegExp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_RegExpExec.3=RegExp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_RegExpMatch.3=RegExp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_RegExpRange.3=RegExp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_RegisterChannel.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_RegisterObjType.3=ObjectType.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Release.3=Preserve.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ResetResult.3=SetResult.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ScanElement.3=SplitList.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Seek.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ServiceAll.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ServiceEvent.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetAssocData.3=AssocData.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetBooleanObj.3=BoolObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetChannelBufferSize.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetChannelOption.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetCommandInfo.3=CrtObjCmd.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetDefaultTranslation.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetDoubleObj.3=DoubleObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetErrno.3=SetErrno.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetErrorCode.3=AddErrInfo.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetHashValue.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetIntObj.3=IntObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetListObj.3=ListObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetLongObj.3=IntObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetMaxBlockTime.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetObjLength.3=StringObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetObjResult.3=SetResult.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetRecursionLimit.3=SetRecLmt.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetResult.3=SetResult.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetServiceMode.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetStdChannel.3=GetStdChan.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetStringObj.3=StringObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetTimer.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetVar.3=SetVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetVar2.3=SetVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Sleep.3=Sleep.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SplitList.3=SplitList.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SplitPath.3=SplitPath.3 1 l none SUNWtcl/8.0/man/man3/Tcl_StaticPackage.3=StaticPkg.3 1 l none SUNWtcl/8.0/man/man3/Tcl_StringMatch.3=StrMatch.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Tell.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_TraceVar.3=TraceVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_TraceVar2.3=TraceVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_TranslateFileName.3=Translate.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UnlinkVar.3=LinkVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UnregisterChannel.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UnsetVar.3=SetVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UnsetVar2.3=SetVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UntraceVar.3=TraceVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UntraceVar2.3=TraceVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UpVar.3=UpVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UpVar2.3=UpVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UpdateLinkedVar.3=LinkVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_VarEval.3=Eval.3 1 l none SUNWtcl/8.0/man/man3/Tcl_VarTraceInfo.3=TraceVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_VarTraceInfo2.3=TraceVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_WaitForEvent.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Write.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_WrongNumArgs.3=WrongNumArgs.3 1 f none SUNWtcl/8.0/man/man3/TraceVar.3 0444 root bin 18878 62314 871592391 1 f none SUNWtcl/8.0/man/man3/Translate.3 0444 root bin 7108 53980 871592391 1 f none SUNWtcl/8.0/man/man3/UpVar.3 0444 root bin 7547 25514 871592391 1 f none SUNWtcl/8.0/man/man3/WrongNumArgs.3 0444 root bin 7644 36366 871592391 1 d none SUNWtcl/8.0/man/mann 0755 root bin 1 l none SUNWtcl/8.0/man/mann/Base.n=safe.n 1 l none SUNWtcl/8.0/man/mann/Http.n=http.n 1 l none SUNWtcl/8.0/man/mann/Safe.n=safe.n 1 f none SUNWtcl/8.0/man/mann/Tcl.n 0444 root bin 11730 16589 871592412 1 f none SUNWtcl/8.0/man/mann/after.n 0444 root bin 9078 37864 871592412 1 f none SUNWtcl/8.0/man/mann/append.n 0444 root bin 5718 58101 871592412 1 f none SUNWtcl/8.0/man/mann/array.n 0444 root bin 9502 13757 871592412 1 f none SUNWtcl/8.0/man/mann/bgerror.n 0444 root bin 7568 33840 871592412 1 f none SUNWtcl/8.0/man/mann/binary.n 0444 root bin 25504 30749 871592412 1 f none SUNWtcl/8.0/man/mann/break.n 0444 root bin 5801 1136 871592413 1 f none SUNWtcl/8.0/man/mann/case.n 0444 root bin 7307 9150 871592413 1 f none SUNWtcl/8.0/man/mann/catch.n 0444 root bin 6279 44950 871592413 1 f none SUNWtcl/8.0/man/mann/cd.n 0444 root bin 5480 37100 871592413 1 f none SUNWtcl/8.0/man/mann/clock.n 0444 root bin 11354 20880 871592413 1 f none SUNWtcl/8.0/man/mann/close.n 0444 root bin 6879 34955 871592413 1 f none SUNWtcl/8.0/man/mann/concat.n 0444 root bin 5758 60931 871592414 1 f none SUNWtcl/8.0/man/mann/continue.n 0444 root bin 5825 3737 871592414 1 f none SUNWtcl/8.0/man/mann/eof.n 0444 root bin 5459 34798 871592414 1 f none SUNWtcl/8.0/man/mann/error.n 0444 root bin 6929 38881 871592414 1 f none SUNWtcl/8.0/man/mann/eval.n 0444 root bin 5662 54034 871592414 1 f none SUNWtcl/8.0/man/mann/exec.n 0444 root bin 19464 59733 871592414 1 f none SUNWtcl/8.0/man/mann/exit.n 0444 root bin 5441 33671 871592415 1 f none SUNWtcl/8.0/man/mann/expr.n 0444 root bin 16699 58322 871592415 1 f none SUNWtcl/8.0/man/mann/fblocked.n 0444 root bin 5712 59480 871592415 1 f none SUNWtcl/8.0/man/mann/fconfigure.n 0444 root bin 12635 39827 871592415 1 f none SUNWtcl/8.0/man/mann/fcopy.n 0444 root bin 9194 42421 871592416 1 f none SUNWtcl/8.0/man/mann/file.n 0444 root bin 18225 684 871592416 1 f none SUNWtcl/8.0/man/mann/fileevent.n 0444 root bin 9768 36400 871592416 1 f none SUNWtcl/8.0/man/mann/filename.n 0444 root bin 12554 20501 871592417 1 f none SUNWtcl/8.0/man/mann/flush.n 0444 root bin 5950 14283 871592417 1 f none SUNWtcl/8.0/man/mann/for.n 0444 root bin 6978 43099 871592417 1 f none SUNWtcl/8.0/man/mann/foreach.n 0444 root bin 7543 21042 871592417 1 f none SUNWtcl/8.0/man/mann/format.n 0444 root bin 13424 34756 871592418 1 f none SUNWtcl/8.0/man/mann/gets.n 0444 root bin 6595 6269 871592418 1 f none SUNWtcl/8.0/man/mann/glob.n 0444 root bin 7666 34276 871592418 1 f none SUNWtcl/8.0/man/mann/global.n 0444 root bin 5800 352 871592418 1 f none SUNWtcl/8.0/man/mann/history.n 0444 root bin 8968 27302 871592419 1 f none SUNWtcl/8.0/man/mann/http.n 0444 root bin 17267 33860 871592419 1 f none SUNWtcl/8.0/man/mann/if.n 0444 root bin 6436 57704 871592419 1 f none SUNWtcl/8.0/man/mann/incr.n 0444 root bin 5720 58748 871592419 1 f none SUNWtcl/8.0/man/mann/info.n 0444 root bin 12571 32123 871592420 1 f none SUNWtcl/8.0/man/mann/interp.n 0444 root bin 30762 61926 871592420 1 f none SUNWtcl/8.0/man/mann/join.n 0444 root bin 5622 50655 871592420 1 f none SUNWtcl/8.0/man/mann/lappend.n 0444 root bin 5973 16196 871592420 1 f none SUNWtcl/8.0/man/mann/library.n 0444 root bin 14619 22480 871592420 1 f none SUNWtcl/8.0/man/mann/lindex.n 0444 root bin 5880 8603 871592421 1 f none SUNWtcl/8.0/man/mann/linsert.n 0444 root bin 5859 6156 871592421 1 f none SUNWtcl/8.0/man/mann/list.n 0444 root bin 6114 28343 871592421 1 f none SUNWtcl/8.0/man/mann/llength.n 0444 root bin 5420 31737 871592421 1 f none SUNWtcl/8.0/man/mann/load.n 0444 root bin 9924 50827 871592421 1 f none SUNWtcl/8.0/man/mann/lrange.n 0444 root bin 6158 33141 871592421 1 f none SUNWtcl/8.0/man/mann/lreplace.n 0444 root bin 6387 54628 871592422 1 f none SUNWtcl/8.0/man/mann/lsearch.n 0444 root bin 6204 37555 871592422 1 f none SUNWtcl/8.0/man/mann/lsort.n 0444 root bin 7525 23848 871592422 1 f none SUNWtcl/8.0/man/mann/namespace.n 0444 root bin 26149 2194 871592422 1 f none SUNWtcl/8.0/man/mann/open.n 0444 root bin 15234 58135 871592422 1 f none SUNWtcl/8.0/man/mann/package.n 0444 root bin 13531 54517 871592423 1 f none SUNWtcl/8.0/man/mann/pid.n 0444 root bin 5844 5176 871592423 1 f none SUNWtcl/8.0/man/mann/pkgMkIndex.n 0444 root bin 10837 3411 871592423 1 l none SUNWtcl/8.0/man/mann/pkg_mkIndex.n=pkgMkIndex.n 1 f none SUNWtcl/8.0/man/mann/proc.n 0444 root bin 8041 11149 871592423 1 f none SUNWtcl/8.0/man/mann/puts.n 0444 root bin 7558 32891 871592423 1 f none SUNWtcl/8.0/man/mann/pwd.n 0444 root bin 5352 25849 871592423 1 f none SUNWtcl/8.0/man/mann/read.n 0444 root bin 6495 62910 871592424 1 f none SUNWtcl/8.0/man/mann/regexp.n 0444 root bin 11008 8095 871592424 1 f none SUNWtcl/8.0/man/mann/registry.n 0444 root bin 10798 58870 871592424 1 f none SUNWtcl/8.0/man/mann/regsub.n 0444 root bin 7506 26145 871592424 1 f none SUNWtcl/8.0/man/mann/rename.n 0444 root bin 5768 63548 871592424 1 f none SUNWtcl/8.0/man/mann/resource.n 0444 root bin 9759 32736 871592424 1 f none SUNWtcl/8.0/man/mann/return.n 0444 root bin 7920 62970 871592425 1 f none SUNWtcl/8.0/man/mann/safe.n 0444 root bin 18407 46219 871592425 1 f none SUNWtcl/8.0/man/mann/scan.n 0444 root bin 10258 9757 871592425 1 f none SUNWtcl/8.0/man/mann/seek.n 0444 root bin 6729 20462 871592425 1 f none SUNWtcl/8.0/man/mann/set.n 0444 root bin 6605 9168 871592425 1 f none SUNWtcl/8.0/man/mann/socket.n 0444 root bin 10091 445 871592426 1 f none SUNWtcl/8.0/man/mann/source.n 0444 root bin 6458 61531 871592426 1 f none SUNWtcl/8.0/man/mann/split.n 0444 root bin 6123 29983 871592426 1 f none SUNWtcl/8.0/man/mann/string.n 0444 root bin 9985 53908 871592426 1 f none SUNWtcl/8.0/man/mann/subst.n 0444 root bin 6447 62066 871592426 1 f none SUNWtcl/8.0/man/mann/switch.n 0444 root bin 8319 31033 871592426 1 f none SUNWtcl/8.0/man/mann/tclvars.n 0444 root bin 19560 8029 871592427 1 f none SUNWtcl/8.0/man/mann/tell.n 0444 root bin 5491 38475 871592427 1 f none SUNWtcl/8.0/man/mann/time.n 0444 root bin 5660 53246 871592427 1 f none SUNWtcl/8.0/man/mann/trace.n 0444 root bin 11348 47394 871592427 1 f none SUNWtcl/8.0/man/mann/unknown.n 0444 root bin 8067 14282 871592427 1 f none SUNWtcl/8.0/man/mann/unset.n 0444 root bin 5859 6140 871592427 1 f none SUNWtcl/8.0/man/mann/update.n 0444 root bin 6649 14977 871592428 1 f none SUNWtcl/8.0/man/mann/uplevel.n 0444 root bin 8100 10479 871592428 1 f none SUNWtcl/8.0/man/mann/upvar.n 0444 root bin 8493 47409 871592428 1 f none SUNWtcl/8.0/man/mann/variable.n 0444 root bin 7056 49916 871592428 1 f none SUNWtcl/8.0/man/mann/vwait.n 0444 root bin 6084 27855 871592428 1 f none SUNWtcl/8.0/man/mann/while.n 0444 root bin 6688 16604 871592428 1 d none SUNWtcl/8.0/sun4 0755 root bin 1 d none SUNWtcl/8.0/sun4/bin 0755 root bin 1 f none SUNWtcl/8.0/sun4/bin/tclsh8.0 0755 root bin 68664 39246 871592433 1 d none SUNWtcl/8.0/sun4/lib 0755 root bin 1 f none SUNWtcl/8.0/sun4/lib/libtcl8.0.so 0555 root bin 695472 47387 871592432 1 f none SUNWtcl/8.0/sun4/lib/tclConfig.sh 0644 root bin 4608 61174 871592433 1 i copyright 2210 55124 846028120 1 i depend 134 10203 864178438 1 i pkginfo 233 18831 871592438 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!070701000615e5000081a400004ccf0000000a0000000133f371f6000000e9000000a30000000400000000000000000000000800000004pkginfoARCH=sun4 PKG=SUNWtcl NAME=Tcl 8.0 VERSION=8.0 CATEGORY=application DESC=Tcl scripting language libraries, binaries, and manual pages BASEDIR=/opt VENDOR=Sun Microsystems, Inc. MAXINST=1000 CLASSES=none PSTAMP=ghostwheel970814140037 070701000615e4000081a400004ccf0000000a0000000133f371f600007108000000a30000000400000000000000000000000700000004pkgmap: 1 6516 1 d none SUNWtcl 0755 root bin 1 d none SUNWtcl/8.0 0755 root bin 1 d none SUNWtcl/8.0/bin 0755 root bin 1 f none SUNWtcl/8.0/bin/tclsh8.0 0755 root bin 409 30846 871592430 1 d none SUNWtcl/8.0/include 0755 root bin 1 f none SUNWtcl/8.0/include/tcl.h 0644 root bin 59010 7976 871592370 1 d none SUNWtcl/8.0/lib 0755 root bin 1 d none SUNWtcl/8.0/lib/tcl8.0 0755 root bin 1 f none SUNWtcl/8.0/lib/tcl8.0/history.tcl 0644 root bin 8947 8424 871592370 1 d none SUNWtcl/8.0/lib/tcl8.0/http1.0 0755 root bin 1 f none SUNWtcl/8.0/lib/tcl8.0/http1.0/http.tcl 0644 root bin 9620 70 871592375 1 f none SUNWtcl/8.0/lib/tcl8.0/http1.0/pkgIndex.tcl 0644 root bin 735 2222 871592376 1 d none SUNWtcl/8.0/lib/tcl8.0/http2.0 0755 root bin 1 f none SUNWtcl/8.0/lib/tcl8.0/http2.0/http.tcl 0644 root bin 11161 56049 871592375 1 f none SUNWtcl/8.0/lib/tcl8.0/http2.0/pkgIndex.tcl 0644 root bin 624 55851 871592375 1 f none SUNWtcl/8.0/lib/tcl8.0/init.tcl 0644 root bin 20872 22652 871592371 1 f none SUNWtcl/8.0/lib/tcl8.0/ldAix 0644 root bin 2623 18525 871592374 1 f none SUNWtcl/8.0/lib/tcl8.0/ldAout.tcl 0644 root bin 6613 21420 871592371 1 d none SUNWtcl/8.0/lib/tcl8.0/opt0.1 0755 root bin 1 f none SUNWtcl/8.0/lib/tcl8.0/opt0.1/optparse.tcl 0644 root bin 32720 1748 871592376 1 f none SUNWtcl/8.0/lib/tcl8.0/opt0.1/pkgIndex.tcl 0644 root bin 400 35101 871592377 1 f none SUNWtcl/8.0/lib/tcl8.0/parray.tcl 0644 root bin 858 3830 871592372 1 f none SUNWtcl/8.0/lib/tcl8.0/safe.tcl 0644 root bin 21224 60702 871592372 1 f none SUNWtcl/8.0/lib/tcl8.0/tclAppInit.c 0644 root bin 3538 9778 871592374 1 f none SUNWtcl/8.0/lib/tcl8.0/tclIndex 0644 root bin 2165 3462 871592373 1 f none SUNWtcl/8.0/lib/tcl8.0/word.tcl 0644 root bin 4430 58698 871592373 1 d none SUNWtcl/8.0/man 0755 root bin 1 d none SUNWtcl/8.0/man/man1 0755 root bin 1 f none SUNWtcl/8.0/man/man1/tclsh.1 0444 root bin 9486 6814 871592378 1 d none SUNWtcl/8.0/man/man3 0755 root bin 1 f none SUNWtcl/8.0/man/man3/AddErrInfo.3 0444 root bin 11724 18756 871592379 1 f none SUNWtcl/8.0/man/man3/Alloc.3 0444 root bin 6289 44837 871592379 1 f none SUNWtcl/8.0/man/man3/AllowExc.3 0444 root bin 6125 30470 871592379 1 f none SUNWtcl/8.0/man/man3/AppInit.3 0444 root bin 7516 26739 871592379 1 f none SUNWtcl/8.0/man/man3/AssocData.3 0444 root bin 8289 34035 871592379 1 f none SUNWtcl/8.0/man/man3/Async.3 0444 root bin 11031 22611 871592380 1 f none SUNWtcl/8.0/man/man3/BackgdErr.3 0444 root bin 7028 50404 871592380 1 f none SUNWtcl/8.0/man/man3/Backslash.3 0444 root bin 6032 21837 871592380 1 f none SUNWtcl/8.0/man/man3/BoolObj.3 0444 root bin 7814 53113 871592380 1 f none SUNWtcl/8.0/man/man3/CallDel.3 0444 root bin 6924 38205 871592380 1 f none SUNWtcl/8.0/man/man3/CmdCmplt.3 0444 root bin 5734 60045 871592380 1 f none SUNWtcl/8.0/man/man3/Concat.3 0444 root bin 6478 62284 871592381 1 f none SUNWtcl/8.0/man/man3/CrtChannel.3 0444 root bin 28003 46274 871592381 1 f none SUNWtcl/8.0/man/man3/CrtChnlHdlr.3 0444 root bin 8499 49901 871592381 1 f none SUNWtcl/8.0/man/man3/CrtCloseHdlr.3 0444 root bin 6563 3483 871592381 1 f none SUNWtcl/8.0/man/man3/CrtCommand.3 0444 root bin 10914 8578 871592381 1 f none SUNWtcl/8.0/man/man3/CrtFileHdlr.3 0444 root bin 8321 30609 871592381 1 f none SUNWtcl/8.0/man/man3/CrtInterp.3 0444 root bin 10792 65220 871592382 1 f none SUNWtcl/8.0/man/man3/CrtMathFnc.3 0444 root bin 8330 34042 871592382 1 f none SUNWtcl/8.0/man/man3/CrtObjCmd.3 0444 root bin 15556 37406 871592382 1 f none SUNWtcl/8.0/man/man3/CrtSlave.3 0444 root bin 14446 64601 871592382 1 f none SUNWtcl/8.0/man/man3/CrtTimerHdlr.3 0444 root bin 7571 32306 871592382 1 f none SUNWtcl/8.0/man/man3/CrtTrace.3 0444 root bin 9262 54092 871592382 1 f none SUNWtcl/8.0/man/man3/DString.3 0444 root bin 10510 40658 871592383 1 f none SUNWtcl/8.0/man/man3/DetachPids.3 0444 root bin 7223 355 871592383 1 f none SUNWtcl/8.0/man/man3/DoOneEvent.3 0444 root bin 8883 11774 871592383 1 f none SUNWtcl/8.0/man/man3/DoWhenIdle.3 0444 root bin 8101 13349 871592383 1 f none SUNWtcl/8.0/man/man3/DoubleObj.3 0444 root bin 7623 36945 871592383 1 f none SUNWtcl/8.0/man/man3/Eval.3 0444 root bin 9191 44035 871592383 1 f none SUNWtcl/8.0/man/man3/EvalObj.3 0444 root bin 8196 21490 871592384 1 f none SUNWtcl/8.0/man/man3/Exit.3 0444 root bin 8894 23677 871592384 1 f none SUNWtcl/8.0/man/man3/ExprLong.3 0444 root bin 9016 34102 871592384 1 f none SUNWtcl/8.0/man/man3/ExprLongObj.3 0444 root bin 8498 51624 871592384 1 f none SUNWtcl/8.0/man/man3/FindExec.3 0444 root bin 6211 38922 871592384 1 f none SUNWtcl/8.0/man/man3/GetIndex.3 0444 root bin 7741 45380 871592385 1 f none SUNWtcl/8.0/man/man3/GetInt.3 0444 root bin 7880 57171 871592385 1 f none SUNWtcl/8.0/man/man3/GetOpnFl.3 0444 root bin 6840 29154 871592385 1 f none SUNWtcl/8.0/man/man3/GetStdChan.3 0444 root bin 7754 45839 871592385 1 f none SUNWtcl/8.0/man/man3/Hash.3 0444 root bin 13052 1518 871592386 1 f none SUNWtcl/8.0/man/man3/IntObj.3 0444 root bin 8632 62502 871592386 1 f none SUNWtcl/8.0/man/man3/Interp.3 0444 root bin 10271 19816 871592386 1 f none SUNWtcl/8.0/man/man3/LinkVar.3 0444 root bin 9121 33496 871592386 1 f none SUNWtcl/8.0/man/man3/ListObj.3 0444 root bin 14993 52333 871592386 1 f none SUNWtcl/8.0/man/man3/Notifier.3 0444 root bin 29457 58292 871592386 1 f none SUNWtcl/8.0/man/man3/ObjSetVar.3 0444 root bin 11432 49135 871592387 1 f none SUNWtcl/8.0/man/man3/Object.3 0444 root bin 18437 48535 871592387 1 f none SUNWtcl/8.0/man/man3/ObjectType.3 0444 root bin 12761 50192 871592387 1 f none SUNWtcl/8.0/man/man3/OpenFileChnl.3 0444 root bin 26849 65213 871592387 1 f none SUNWtcl/8.0/man/man3/OpenTcp.3 0444 root bin 12267 63577 871592387 1 f none SUNWtcl/8.0/man/man3/PkgRequire.3 0444 root bin 6632 12920 871592388 1 f none SUNWtcl/8.0/man/man3/Preserve.3 0444 root bin 8995 32939 871592388 1 f none SUNWtcl/8.0/man/man3/PrintDbl.3 0444 root bin 6240 39422 871592388 1 f none SUNWtcl/8.0/man/man3/RecEvalObj.3 0444 root bin 6681 14713 871592388 1 f none SUNWtcl/8.0/man/man3/RecordEval.3 0444 root bin 6799 24741 871592388 1 f none SUNWtcl/8.0/man/man3/RegExp.3 0444 root bin 9801 39866 871592388 1 f none SUNWtcl/8.0/man/man3/SetErrno.3 0444 root bin 6183 37272 871592389 1 f none SUNWtcl/8.0/man/man3/SetRecLmt.3 0444 root bin 6642 12302 871592389 1 f none SUNWtcl/8.0/man/man3/SetResult.3 0444 root bin 14075 34771 871592389 1 f none SUNWtcl/8.0/man/man3/SetVar.3 0444 root bin 12290 59000 871592389 1 f none SUNWtcl/8.0/man/man3/Sleep.3 0444 root bin 5833 4203 871592390 1 f none SUNWtcl/8.0/man/man3/SplitList.3 0444 root bin 11783 19770 871592390 1 f none SUNWtcl/8.0/man/man3/SplitPath.3 0444 root bin 7998 1869 871592390 1 f none SUNWtcl/8.0/man/man3/StaticPkg.3 0444 root bin 7594 35998 871592390 1 f none SUNWtcl/8.0/man/man3/StrMatch.3 0444 root bin 5893 8701 871592390 1 f none SUNWtcl/8.0/man/man3/StringObj.3 0444 root bin 10302 20551 871592390 1 l none SUNWtcl/8.0/man/man3/TclConcatObj.3=StringObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AddErrorInfo.3=AddErrInfo.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AddObjErrorInfo.3=AddErrInfo.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Alloc.3=Alloc.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AllowExceptions.3=AllowExc.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AppInit.3=AppInit.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AppendAllObjTypes.3=ObjectType.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AppendElement.3=SetResult.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AppendResult.3=SetResult.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AppendStringsToObj.3=StringObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AppendToObj.3=StringObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AsyncCreate.3=Async.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AsyncDelete.3=Async.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AsyncInvoke.3=Async.3 1 l none SUNWtcl/8.0/man/man3/Tcl_AsyncMark.3=Async.3 1 l none SUNWtcl/8.0/man/man3/Tcl_BackgroundError.3=BackgdErr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Backslash.3=Backslash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_BadChannelOption.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CallWhenDeleted.3=CallDel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CancelIdleCall.3=DoWhenIdle.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Close.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CommandComplete.3=CmdCmplt.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Concat.3=Concat.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ConvertElement.3=SplitList.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ConvertToType.3=ObjectType.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateAlias.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateAliasObj.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateChannel.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateChannelHandler.3=CrtChnlHdlr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateCloseHandler.3=CrtCloseHdlr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateCommand.3=CrtCommand.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateEventSource.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateExitHandler.3=Exit.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateFileHandler.3=CrtFileHdlr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateHashEntry.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateInterp.3=CrtInterp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateMathFunc.3=CrtMathFnc.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateObjCommand.3=CrtObjCmd.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateSlave.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateTimerHandler.3=CrtTimerHdlr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_CreateTrace.3=CrtTrace.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringAppend.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringAppendElement.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringEndSublist.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringFree.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringGetResult.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringInit.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringLength.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringResult.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringSetLength.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringStartSublist.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DStringValue.3=DString.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DecrRefCount.3=Object.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteAssocData.3=AssocData.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteChannelHandler.3=CrtChnlHdlr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteCloseHandler.3=CrtCloseHdlr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteCommand.3=CrtObjCmd.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteCommandFromToken.3=CrtObjCmd.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteEventSource.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteEvents.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteExitHandler.3=Exit.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteFileHandler.3=CrtFileHdlr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteHashEntry.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteHashTable.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteInterp.3=CrtInterp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteTimerHandler.3=CrtTimerHdlr.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DeleteTrace.3=CrtTrace.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DetachPids.3=DetachPids.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DoOneEvent.3=DoOneEvent.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DoWhenIdle.3=DoWhenIdle.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DontCallWhenDeleted.3=CallDel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_DuplicateObj.3=Object.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Eof.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Eval.3=Eval.3 1 l none SUNWtcl/8.0/man/man3/Tcl_EvalFile.3=Eval.3 1 l none SUNWtcl/8.0/man/man3/Tcl_EvalObj.3=EvalObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_EventuallyFree.3=Preserve.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Exit.3=Exit.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExposeCommand.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExprBoolean.3=ExprLong.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExprBooleanObj.3=ExprLongObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExprDouble.3=ExprLong.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExprDoubleObj.3=ExprLongObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExprLong.3=ExprLong.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExprLongObj.3=ExprLongObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExprObj.3=ExprLongObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ExprString.3=ExprLong.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Finalize.3=Exit.3 1 l none SUNWtcl/8.0/man/man3/Tcl_FindExecutable.3=FindExec.3 1 l none SUNWtcl/8.0/man/man3/Tcl_FindHashEntry.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_FirstHashEntry.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Flush.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Free.3=Alloc.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetAlias.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetAliasObj.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetAssocData.3=AssocData.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetBoolean.3=GetInt.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetBooleanFromObj.3=BoolObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetChannel.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetChannelBufferSize.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetChannelHandle.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetChannelInstanceData.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetChannelMode.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetChannelName.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetChannelOption.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetChannelType.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetCommandInfo.3=CrtObjCmd.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetCommandName.3=CrtObjCmd.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetDouble.3=GetInt.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetDoubleFromObj.3=DoubleObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetErrno.3=SetErrno.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetHashKey.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetHashValue.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetIndexFromObj.3=GetIndex.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetInt.3=GetInt.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetIntFromObj.3=IntObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetInterpPath.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetLongFromObj.3=IntObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetMaster.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetObjResult.3=SetResult.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetObjType.3=ObjectType.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetOpenFile.3=GetOpnFl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetPathType.3=SplitPath.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetServiceMode.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetSlave.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetStdChannel.3=GetStdChan.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetStringFromObj.3=StringObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetStringResult.3=SetResult.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetVar.3=SetVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GetVar2.3=SetVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Gets.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GlobalEval.3=Eval.3 1 l none SUNWtcl/8.0/man/man3/Tcl_GlobalEvalObj.3=EvalObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_HashStats.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_HideCommand.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_IncrRefCount.3=Object.3 1 l none SUNWtcl/8.0/man/man3/Tcl_InitHashTable.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_InputBlocked.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_InputBuffered.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Interp.3=Interp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_InterpDeleted.3=CrtInterp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_IsSafe.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_IsShared.3=Object.3 1 l none SUNWtcl/8.0/man/man3/Tcl_JoinPath.3=SplitPath.3 1 l none SUNWtcl/8.0/man/man3/Tcl_LinkVar.3=LinkVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ListObjAppendElement.3=ListObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ListObjAppendList.3=ListObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ListObjGetElements.3=ListObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ListObjIndex.3=ListObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ListObjLength.3=ListObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ListObjReplace.3=ListObj.3 1 f none SUNWtcl/8.0/man/man3/Tcl_Main.3 0444 root bin 6935 39068 871592390 1 l none SUNWtcl/8.0/man/man3/Tcl_MakeFileChannel.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_MakeSafe.3=CrtSlave.3 1 l none SUNWtcl/8.0/man/man3/Tcl_MakeTcpClientChannel.3=OpenTcp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Merge.3=SplitList.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NewBooleanObj.3=BoolObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NewDoubleObj.3=DoubleObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NewIntObj.3=IntObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NewListObj.3=ListObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NewLongObj.3=IntObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NewObj.3=Object.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NewStringObj.3=StringObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NextHashEntry.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_NotifyChannel.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ObjGetVar2.3=ObjSetVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ObjSetVar2.3=ObjSetVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_OpenCommandChannel.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_OpenFileChannel.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_OpenTcpClient.3=OpenTcp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_OpenTcpServer.3=OpenTcp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_PkgProvide.3=PkgRequire.3 1 l none SUNWtcl/8.0/man/man3/Tcl_PkgRequire.3=PkgRequire.3 1 l none SUNWtcl/8.0/man/man3/Tcl_PosixError.3=AddErrInfo.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Preserve.3=Preserve.3 1 l none SUNWtcl/8.0/man/man3/Tcl_PrintDouble.3=PrintDbl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_QueueEvent.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Read.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Realloc.3=Alloc.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ReapDetachedProcs.3=DetachPids.3 1 l none SUNWtcl/8.0/man/man3/Tcl_RecordAndEval.3=RecordEval.3 1 l none SUNWtcl/8.0/man/man3/Tcl_RecordAndEvalObj.3=RecEvalObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_RegExpCompile.3=RegExp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_RegExpExec.3=RegExp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_RegExpMatch.3=RegExp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_RegExpRange.3=RegExp.3 1 l none SUNWtcl/8.0/man/man3/Tcl_RegisterChannel.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_RegisterObjType.3=ObjectType.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Release.3=Preserve.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ResetResult.3=SetResult.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ScanElement.3=SplitList.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Seek.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ServiceAll.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_ServiceEvent.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetAssocData.3=AssocData.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetBooleanObj.3=BoolObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetChannelBufferSize.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetChannelOption.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetCommandInfo.3=CrtObjCmd.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetDefaultTranslation.3=CrtChannel.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetDoubleObj.3=DoubleObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetErrno.3=SetErrno.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetErrorCode.3=AddErrInfo.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetHashValue.3=Hash.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetIntObj.3=IntObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetListObj.3=ListObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetLongObj.3=IntObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetMaxBlockTime.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetObjLength.3=StringObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetObjResult.3=SetResult.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetRecursionLimit.3=SetRecLmt.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetResult.3=SetResult.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetServiceMode.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetStdChannel.3=GetStdChan.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetStringObj.3=StringObj.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetTimer.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetVar.3=SetVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SetVar2.3=SetVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Sleep.3=Sleep.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SplitList.3=SplitList.3 1 l none SUNWtcl/8.0/man/man3/Tcl_SplitPath.3=SplitPath.3 1 l none SUNWtcl/8.0/man/man3/Tcl_StaticPackage.3=StaticPkg.3 1 l none SUNWtcl/8.0/man/man3/Tcl_StringMatch.3=StrMatch.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Tell.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_TraceVar.3=TraceVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_TraceVar2.3=TraceVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_TranslateFileName.3=Translate.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UnlinkVar.3=LinkVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UnregisterChannel.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UnsetVar.3=SetVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UnsetVar2.3=SetVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UntraceVar.3=TraceVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UntraceVar2.3=TraceVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UpVar.3=UpVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UpVar2.3=UpVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_UpdateLinkedVar.3=LinkVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_VarEval.3=Eval.3 1 l none SUNWtcl/8.0/man/man3/Tcl_VarTraceInfo.3=TraceVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_VarTraceInfo2.3=TraceVar.3 1 l none SUNWtcl/8.0/man/man3/Tcl_WaitForEvent.3=Notifier.3 1 l none SUNWtcl/8.0/man/man3/Tcl_Write.3=OpenFileChnl.3 1 l none SUNWtcl/8.0/man/man3/Tcl_WrongNumArgs.3=WrongNumArgs.3 1 f none SUNWtcl/8.0/man/man3/TraceVar.3 0444 root bin 18878 62314 871592391 1 f none SUNWtcl/8.0/man/man3/Translate.3 0444 root bin 7108 53980 871592391 1 f none SUNWtcl/8.0/man/man3/UpVar.3 0444 root bin 7547 25514 871592391 1 f none SUNWtcl/8.0/man/man3/WrongNumArgs.3 0444 root bin 7644 36366 871592391 1 d none SUNWtcl/8.0/man/mann 0755 root bin 1 l none SUNWtcl/8.0/man/mann/Base.n=safe.n 1 l none SUNWtcl/8.0/man/mann/Http.n=http.n 1 l none SUNWtcl/8.0/man/mann/Safe.n=safe.n 1 f none SUNWtcl/8.0/man/mann/Tcl.n 0444 root bin 11730 16589 871592412 1 f none SUNWtcl/8.0/man/mann/after.n 0444 root bin 9078 37864 871592412 1 f none SUNWtcl/8.0/man/mann/append.n 0444 root bin 5718 58101 871592412 1 f none SUNWtcl/8.0/man/mann/array.n 0444 root bin 9502 13757 871592412 1 f none SUNWtcl/8.0/man/mann/bgerror.n 0444 root bin 7568 33840 871592412 1 f none SUNWtcl/8.0/man/mann/binary.n 0444 root bin 25504 30749 871592412 1 f none SUNWtcl/8.0/man/mann/break.n 0444 root bin 5801 1136 871592413 1 f none SUNWtcl/8.0/man/mann/case.n 0444 root bin 7307 9150 871592413 1 f none SUNWtcl/8.0/man/mann/catch.n 0444 root bin 6279 44950 871592413 1 f none SUNWtcl/8.0/man/mann/cd.n 0444 root bin 5480 37100 871592413 1 f none SUNWtcl/8.0/man/mann/clock.n 0444 root bin 11354 20880 871592413 1 f none SUNWtcl/8.0/man/mann/close.n 0444 root bin 6879 34955 871592413 1 f none SUNWtcl/8.0/man/mann/concat.n 0444 root bin 5758 60931 871592414 1 f none SUNWtcl/8.0/man/mann/continue.n 0444 root bin 5825 3737 871592414 1 f none SUNWtcl/8.0/man/mann/eof.n 0444 root bin 5459 34798 871592414 1 f none SUNWtcl/8.0/man/mann/error.n 0444 root bin 6929 38881 871592414 1 f none SUNWtcl/8.0/man/mann/eval.n 0444 root bin 5662 54034 871592414 1 f none SUNWtcl/8.0/man/mann/exec.n 0444 root bin 19464 59733 871592414 1 f none SUNWtcl/8.0/man/mann/exit.n 0444 root bin 5441 33671 871592415 1 f none SUNWtcl/8.0/man/mann/expr.n 0444 root bin 16699 58322 871592415 1 f none SUNWtcl/8.0/man/mann/fblocked.n 0444 root bin 5712 59480 871592415 1 f none SUNWtcl/8.0/man/mann/fconfigure.n 0444 root bin 12635 39827 871592415 1 f none SUNWtcl/8.0/man/mann/fcopy.n 0444 root bin 9194 42421 871592416 1 f none SUNWtcl/8.0/man/mann/file.n 0444 root bin 18225 684 871592416 1 f none SUNWtcl/8.0/man/mann/fileevent.n 0444 root bin 9768 36400 871592416 1 f none SUNWtcl/8.0/man/mann/filename.n 0444 root bin 12554 20501 871592417 1 f none SUNWtcl/8.0/man/mann/flush.n 0444 root bin 5950 14283 871592417 1 f none SUNWtcl/8.0/man/mann/for.n 0444 root bin 6978 43099 871592417 1 f none SUNWtcl/8.0/man/mann/foreach.n 0444 root bin 7543 21042 871592417 1 f none SUNWtcl/8.0/man/mann/format.n 0444 root bin 13424 34756 871592418 1 f none SUNWtcl/8.0/man/mann/gets.n 0444 root bin 6595 6269 871592418 1 f none SUNWtcl/8.0/man/mann/glob.n 0444 root bin 7666 34276 871592418 1 f none SUNWtcl/8.0/man/mann/global.n 0444 root bin 5800 352 871592418 1 f none SUNWtcl/8.0/man/mann/history.n 0444 root bin 8968 27302 871592419 1 f none SUNWtcl/8.0/man/mann/http.n 0444 root bin 17267 33860 871592419 1 f none SUNWtcl/8.0/man/mann/if.n 0444 root bin 6436 57704 871592419 1 f none SUNWtcl/8.0/man/mann/incr.n 0444 root bin 5720 58748 871592419 1 f none SUNWtcl/8.0/man/mann/info.n 0444 root bin 12571 32123 871592420 1 f none SUNWtcl/8.0/man/mann/interp.n 0444 root bin 30762 61926 871592420 1 f none SUNWtcl/8.0/man/mann/join.n 0444 root bin 5622 50655 871592420 1 f none SUNWtcl/8.0/man/mann/lappend.n 0444 root bin 5973 16196 871592420 1 f none SUNWtcl/8.0/man/mann/library.n 0444 root bin 14619 22480 871592420 1 f none SUNWtcl/8.0/man/mann/lindex.n 0444 root bin 5880 8603 871592421 1 f none SUNWtcl/8.0/man/mann/linsert.n 0444 root bin 5859 6156 871592421 1 f none SUNWtcl/8.0/man/mann/list.n 0444 root bin 6114 28343 871592421 1 f none SUNWtcl/8.0/man/mann/llength.n 0444 root bin 5420 31737 871592421 1 f none SUNWtcl/8.0/man/mann/load.n 0444 root bin 9924 50827 871592421 1 f none SUNWtcl/8.0/man/mann/lrange.n 0444 root bin 6158 33141 871592421 1 f none SUNWtcl/8.0/man/mann/lreplace.n 0444 root bin 6387 54628 871592422 1 f none SUNWtcl/8.0/man/mann/lsearch.n 0444 root bin 6204 37555 871592422 1 f none SUNWtcl/8.0/man/mann/lsort.n 0444 root bin 7525 23848 871592422 1 f none SUNWtcl/8.0/man/mann/namespace.n 0444 root bin 26149 2194 871592422 1 f none SUNWtcl/8.0/man/mann/open.n 0444 root bin 15234 58135 871592422 1 f none SUNWtcl/8.0/man/mann/package.n 0444 root bin 13531 54517 871592423 1 f none SUNWtcl/8.0/man/mann/pid.n 0444 root bin 5844 5176 871592423 1 f none SUNWtcl/8.0/man/mann/pkgMkIndex.n 0444 root bin 10837 3411 871592423 1 l none SUNWtcl/8.0/man/mann/pkg_mkIndex.n=pkgMkIndex.n 1 f none SUNWtcl/8.0/man/mann/proc.n 0444 root bin 8041 11149 871592423 1 f none SUNWtcl/8.0/man/mann/puts.n 0444 root bin 7558 32891 871592423 1 f none SUNWtcl/8.0/man/mann/pwd.n 0444 root bin 5352 25849 871592423 1 f none SUNWtcl/8.0/man/mann/read.n 0444 root bin 6495 62910 871592424 1 f none SUNWtcl/8.0/man/mann/regexp.n 0444 root bin 11008 8095 871592424 1 f none SUNWtcl/8.0/man/mann/registry.n 0444 root bin 10798 58870 871592424 1 f none SUNWtcl/8.0/man/mann/regsub.n 0444 root bin 7506 26145 871592424 1 f none SUNWtcl/8.0/man/mann/rename.n 0444 root bin 5768 63548 871592424 1 f none SUNWtcl/8.0/man/mann/resource.n 0444 root bin 9759 32736 871592424 1 f none SUNWtcl/8.0/man/mann/return.n 0444 root bin 7920 62970 871592425 1 f none SUNWtcl/8.0/man/mann/safe.n 0444 root bin 18407 46219 871592425 1 f none SUNWtcl/8.0/man/mann/scan.n 0444 root bin 10258 9757 871592425 1 f none SUNWtcl/8.0/man/mann/seek.n 0444 root bin 6729 20462 871592425 1 f none SUNWtcl/8.0/man/mann/set.n 0444 root bin 6605 9168 871592425 1 f none SUNWtcl/8.0/man/mann/socket.n 0444 root bin 10091 445 871592426 1 f none SUNWtcl/8.0/man/mann/source.n 0444 root bin 6458 61531 871592426 1 f none SUNWtcl/8.0/man/mann/split.n 0444 root bin 6123 29983 871592426 1 f none SUNWtcl/8.0/man/mann/string.n 0444 root bin 9985 53908 871592426 1 f none SUNWtcl/8.0/man/mann/subst.n 0444 root bin 6447 62066 871592426 1 f none SUNWtcl/8.0/man/mann/switch.n 0444 root bin 8319 31033 871592426 1 f none SUNWtcl/8.0/man/mann/tclvars.n 0444 root bin 19560 8029 871592427 1 f none SUNWtcl/8.0/man/mann/tell.n 0444 root bin 5491 38475 871592427 1 f none SUNWtcl/8.0/man/mann/time.n 0444 root bin 5660 53246 871592427 1 f none SUNWtcl/8.0/man/mann/trace.n 0444 root bin 11348 47394 871592427 1 f none SUNWtcl/8.0/man/mann/unknown.n 0444 root bin 8067 14282 871592427 1 f none SUNWtcl/8.0/man/mann/unset.n 0444 root bin 5859 6140 871592427 1 f none SUNWtcl/8.0/man/mann/update.n 0444 root bin 6649 14977 871592428 1 f none SUNWtcl/8.0/man/mann/uplevel.n 0444 root bin 8100 10479 871592428 1 f none SUNWtcl/8.0/man/mann/upvar.n 0444 root bin 8493 47409 871592428 1 f none SUNWtcl/8.0/man/mann/variable.n 0444 root bin 7056 49916 871592428 1 f none SUNWtcl/8.0/man/mann/vwait.n 0444 root bin 6084 27855 871592428 1 f none SUNWtcl/8.0/man/mann/while.n 0444 root bin 6688 16604 871592428 1 d none SUNWtcl/8.0/sun4 0755 root bin 1 d none SUNWtcl/8.0/sun4/bin 0755 root bin 1 f none SUNWtcl/8.0/sun4/bin/tclsh8.0 0755 root bin 68664 39246 871592433 1 d none SUNWtcl/8.0/sun4/lib 0755 root bin 1 f none SUNWtcl/8.0/sun4/lib/libtcl8.0.so 0555 root bin 695472 47387 871592432 1 f none SUNWtcl/8.0/sun4/lib/tclConfig.sh 0644 root bin 4608 61174 871592433 1 i copyright 2210 55124 846028120 1 i depend 134 10203 864178438 1 i pkginfo 233 18831 871592438 0707010007d2fb000041ed00004ccf0000000a0000000233f3720700000000000000a30000000400000000000000000000000800000004install0707010007d2fc000081a400004ccf0000000a00000001326d5d58000008a2000000a30000000400000000000000000000001200000004install/copyrightThis software is copyrighted by the Regents of the University of California, Sun Microsystems, Inc., and other parties. The following terms apply to all files associated with the software unless explicitly disclaimed in individual files. The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. GOVERNMENT USE: If you are acquiring this software on behalf of the U.S. government, the Government shall have only "Restricted Rights" in the software and related documentation as defined in the Federal Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you are acquiring the software on behalf of the Department of Defense, the software shall be classified as "Commercial Computer Software" and the Government shall have only "Restricted Rights" as defined in Clause 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the authors grant the U.S. Government and others acting in its behalf permission to use and distribute the software in accordance with the terms specified in this license. 0707010007d2fd000081a400004ccf0000000a000000013382510600000086000000a30000000400000000000000000000000f00000004install/depend# This file contains the pacakge dependency list for SUNWtcl. # # SCCS: @(#) depend.pkg 1.3 96/08/15 09:43:26 # P SUNWcsu P SUNWlibms 07070100064275000041ed00004ccf0000000a0000000333f371f700000000000000a30000000400000000000000000000000600000004reloc07070100065873000041ed00004ccf0000000a0000000333f371f700000000000000a30000000400000000000000000000000e00000004reloc/SUNWtcl07070100066e9a000041ed00004ccf0000000a0000000733f3720400000000000000a30000000400000000000000000000001200000004reloc/SUNWtcl/8.007070100068572000041ed00004ccf0000000a0000000233f371f700000000000000a30000000400000000000000000000001600000004reloc/SUNWtcl/8.0/bin07070100068573000081a400004ccf0000000a0000000133f371ee00000199000000a30000000400000000000000000000001f00000004reloc/SUNWtcl/8.0/bin/tclsh8.0#!/bin/sh # SCCS: @(#) tclsh.sh 1.2 96/08/14 17:07:56 case `/usr/bin/uname -m` in sun4*) arch=sun4 ;; i86pc) arch=i86pc ;; esac basedir=`/usr/bin/dirname $0`/.. olddir=`pwd` cd $basedir basedir=`pwd` cd $olddir TCL_LIBRARY=${TCL_LIBRARY:-$basedir/lib/tcl8.0} LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$basedir/$arch/lib" export TCL_LIBRARY LD_LIBRARY_PATH exec $basedir/$arch/bin/tclsh8.0 "$@" 07070100069bc5000041ed00004ccf0000000a0000000233f371f700000000000000a30000000400000000000000000000001a00000004reloc/SUNWtcl/8.0/include07070100069bc9000081a400004ccf0000000a0000000133f371b20000e682000000a30000000400000000000000000000002000000004reloc/SUNWtcl/8.0/include/tcl.h/* * tcl.h -- * * This header file describes the externally-visible facilities * of the Tcl interpreter. * * Copyright (c) 1987-1994 The Regents of the University of California. * Copyright (c) 1994-1997 Sun Microsystems, Inc. * Copyright (c) 1993-1996 Lucent Technologies. * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * * SCCS: @(#) tcl.h 1.324 97/08/07 10:26:49 */ #ifndef _TCL #define _TCL /* * When version numbers change here, must also go into the following files * and update the version numbers: * * library/init.tcl * unix/configure.in * unix/pkginfo * win/makefile.bc * win/makefile.vc * * The release level should be 0 for alpha, 1 for beta, and 2 for * final/patch. The release serial value is the number that follows the * "a", "b", or "p" in the patch level; for example, if the patch level * is 7.6b2, TCL_RELEASE_SERIAL is 2. It restarts at 1 whenever the * release level is changed, except for the final release which is 0 * (the first patch will start at 1). */ #define TCL_MAJOR_VERSION 8 #define TCL_MINOR_VERSION 0 #define TCL_RELEASE_LEVEL 2 #define TCL_RELEASE_SERIAL 0 #define TCL_VERSION "8.0" #define TCL_PATCH_LEVEL "8.0" /* * The following definitions set up the proper options for Windows * compilers. We use this method because there is no autoconf equivalent. */ #ifndef __WIN32__ # if defined(_WIN32) || defined(WIN32) # define __WIN32__ # endif #endif #ifdef __WIN32__ # ifndef STRICT # define STRICT # endif # ifndef USE_PROTOTYPE # define USE_PROTOTYPE 1 # endif # ifndef HAS_STDARG # define HAS_STDARG 1 # endif # ifndef USE_PROTOTYPE # define USE_PROTOTYPE 1 # endif # ifndef USE_TCLALLOC # define USE_TCLALLOC 1 # endif # ifndef STRINGIFY # define STRINGIFY(x) STRINGIFY1(x) # define STRINGIFY1(x) #x # endif #endif /* __WIN32__ */ /* * The following definitions set up the proper options for Macintosh * compilers. We use this method because there is no autoconf equivalent. */ #ifdef MAC_TCL # ifndef HAS_STDARG # define HAS_STDARG 1 # endif # ifndef USE_TCLALLOC # define USE_TCLALLOC 1 # endif # ifndef NO_STRERROR # define NO_STRERROR 1 # endif #endif /* * A special definition used to allow this header file to be included * in resource files so that they can get obtain version information from * this file. Resource compilers don't like all the C stuff, like typedefs * and procedure declarations, that occur below. */ #ifndef RESOURCE_INCLUDED #ifndef BUFSIZ #include #endif /* * Definitions that allow Tcl functions with variable numbers of * arguments to be used with either varargs.h or stdarg.h. TCL_VARARGS * is used in procedure prototypes. TCL_VARARGS_DEF is used to declare * the arguments in a function definiton: it takes the type and name of * the first argument and supplies the appropriate argument declaration * string for use in the function definition. TCL_VARARGS_START * initializes the va_list data structure and returns the first argument. */ #if defined(__STDC__) || defined(HAS_STDARG) # define TCL_VARARGS(type, name) (type name, ...) # define TCL_VARARGS_DEF(type, name) (type name, ...) # define TCL_VARARGS_START(type, name, list) (va_start(list, name), name) #else # ifdef __cplusplus # define TCL_VARARGS(type, name) (type name, ...) # define TCL_VARARGS_DEF(type, name) (type va_alist, ...) # else # define TCL_VARARGS(type, name) () # define TCL_VARARGS_DEF(type, name) (va_alist) # endif # define TCL_VARARGS_START(type, name, list) \ (va_start(list), va_arg(list, type)) #endif /* * Definitions that allow this header file to be used either with or * without ANSI C features like function prototypes. */ #undef _ANSI_ARGS_ #undef CONST #if ((defined(__STDC__) || defined(SABER)) && !defined(NO_PROTOTYPE)) || defined(__cplusplus) || defined(USE_PROTOTYPE) # define _USING_PROTOTYPES_ 1 # define _ANSI_ARGS_(x) x # define CONST const #else # define _ANSI_ARGS_(x) () # define CONST #endif #ifdef __cplusplus # define EXTERN extern "C" #else # define EXTERN extern #endif /* * Macro to use instead of "void" for arguments that must have * type "void *" in ANSI C; maps them to type "char *" in * non-ANSI systems. */ #ifndef __WIN32__ #ifndef VOID # ifdef __STDC__ # define VOID void # else # define VOID char # endif #endif #else /* __WIN32__ */ /* * The following code is copied from winnt.h */ #ifndef VOID #define VOID void typedef char CHAR; typedef short SHORT; typedef long LONG; #endif #endif /* __WIN32__ */ /* * Miscellaneous declarations. */ #ifndef NULL #define NULL 0 #endif #ifndef _CLIENTDATA # if defined(__STDC__) || defined(__cplusplus) typedef void *ClientData; # else typedef int *ClientData; # endif /* __STDC__ */ #define _CLIENTDATA #endif /* * Data structures defined opaquely in this module. The definitions below * just provide dummy types. A few fields are made visible in Tcl_Interp * structures, namely those used for returning a string result from * commands. Direct access to the result field is discouraged in Tcl 8.0. * The interpreter result is either an object or a string, and the two * values are kept consistent unless some C code sets interp->result * directly. Programmers should use either the procedure Tcl_GetObjResult() * or Tcl_GetStringResult() to read the interpreter's result. See the * SetResult man page for details. * * Note: any change to the Tcl_Interp definition below must be mirrored * in the "real" definition in tclInt.h. * * Note: Tcl_ObjCmdProc procedures do not directly set result and freeProc. * Instead, they set a Tcl_Obj member in the "real" structure that can be * accessed with Tcl_GetObjResult() and Tcl_SetObjResult(). */ typedef struct Tcl_Interp { char *result; /* If the last command returned a string * result, this points to it. */ void (*freeProc) _ANSI_ARGS_((char *blockPtr)); /* Zero means the string result is * statically allocated. TCL_DYNAMIC means * it was allocated with ckalloc and should * be freed with ckfree. Other values give * the address of procedure to invoke to * free the result. Tcl_Eval must free it * before executing next command. */ int errorLine; /* When TCL_ERROR is returned, this gives * the line number within the command where * the error occurred (1 if first line). */ } Tcl_Interp; typedef struct Tcl_AsyncHandler_ *Tcl_AsyncHandler; typedef struct Tcl_Channel_ *Tcl_Channel; typedef struct Tcl_Command_ *Tcl_Command; typedef struct Tcl_Event Tcl_Event; typedef struct Tcl_Pid_ *Tcl_Pid; typedef struct Tcl_RegExp_ *Tcl_RegExp; typedef struct Tcl_TimerToken_ *Tcl_TimerToken; typedef struct Tcl_Trace_ *Tcl_Trace; typedef struct Tcl_Var_ *Tcl_Var; /* * When a TCL command returns, the interpreter contains a result from the * command. Programmers are strongly encouraged to use one of the * procedures Tcl_GetObjResult() or Tcl_GetStringResult() to read the * interpreter's result. See the SetResult man page for details. Besides * this result, the command procedure returns an integer code, which is * one of the following: * * TCL_OK Command completed normally; the interpreter's * result contains the command's result. * TCL_ERROR The command couldn't be completed successfully; * the interpreter's result describes what went wrong. * TCL_RETURN The command requests that the current procedure * return; the interpreter's result contains the * procedure's return value. * TCL_BREAK The command requests that the innermost loop * be exited; the interpreter's result is meaningless. * TCL_CONTINUE Go on to the next iteration of the current loop; * the interpreter's result is meaningless. */ #define TCL_OK 0 #define TCL_ERROR 1 #define TCL_RETURN 2 #define TCL_BREAK 3 #define TCL_CONTINUE 4 #define TCL_RESULT_SIZE 200 /* * Argument descriptors for math function callbacks in expressions: */ typedef enum {TCL_INT, TCL_DOUBLE, TCL_EITHER} Tcl_ValueType; typedef struct Tcl_Value { Tcl_ValueType type; /* Indicates intValue or doubleValue is * valid, or both. */ long intValue; /* Integer value. */ double doubleValue; /* Double-precision floating value. */ } Tcl_Value; /* * Forward declaration of Tcl_Obj to prevent an error when the forward * reference to Tcl_Obj is encountered in the procedure types declared * below. */ struct Tcl_Obj; /* * Procedure types defined by Tcl: */ typedef int (Tcl_AppInitProc) _ANSI_ARGS_((Tcl_Interp *interp)); typedef int (Tcl_AsyncProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int code)); typedef void (Tcl_ChannelProc) _ANSI_ARGS_((ClientData clientData, int mask)); typedef void (Tcl_CloseProc) _ANSI_ARGS_((ClientData data)); typedef void (Tcl_CmdDeleteProc) _ANSI_ARGS_((ClientData clientData)); typedef int (Tcl_CmdProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])); typedef void (Tcl_CmdTraceProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int level, char *command, Tcl_CmdProc *proc, ClientData cmdClientData, int argc, char *argv[])); typedef void (Tcl_DupInternalRepProc) _ANSI_ARGS_((struct Tcl_Obj *srcPtr, struct Tcl_Obj *dupPtr)); typedef int (Tcl_EventProc) _ANSI_ARGS_((Tcl_Event *evPtr, int flags)); typedef void (Tcl_EventCheckProc) _ANSI_ARGS_((ClientData clientData, int flags)); typedef int (Tcl_EventDeleteProc) _ANSI_ARGS_((Tcl_Event *evPtr, ClientData clientData)); typedef void (Tcl_EventSetupProc) _ANSI_ARGS_((ClientData clientData, int flags)); typedef void (Tcl_ExitProc) _ANSI_ARGS_((ClientData clientData)); typedef void (Tcl_FileProc) _ANSI_ARGS_((ClientData clientData, int mask)); typedef void (Tcl_FileFreeProc) _ANSI_ARGS_((ClientData clientData)); typedef void (Tcl_FreeInternalRepProc) _ANSI_ARGS_((struct Tcl_Obj *objPtr)); typedef void (Tcl_FreeProc) _ANSI_ARGS_((char *blockPtr)); typedef void (Tcl_IdleProc) _ANSI_ARGS_((ClientData clientData)); typedef void (Tcl_InterpDeleteProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp)); typedef int (Tcl_MathProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, Tcl_Value *args, Tcl_Value *resultPtr)); typedef void (Tcl_NamespaceDeleteProc) _ANSI_ARGS_((ClientData clientData)); typedef int (Tcl_ObjCmdProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, int objc, struct Tcl_Obj * CONST objv[])); typedef int (Tcl_PackageInitProc) _ANSI_ARGS_((Tcl_Interp *interp)); typedef void (Tcl_TcpAcceptProc) _ANSI_ARGS_((ClientData callbackData, Tcl_Channel chan, char *address, int port)); typedef void (Tcl_TimerProc) _ANSI_ARGS_((ClientData clientData)); typedef int (Tcl_SetFromAnyProc) _ANSI_ARGS_((Tcl_Interp *interp, struct Tcl_Obj *objPtr)); typedef void (Tcl_UpdateStringProc) _ANSI_ARGS_((struct Tcl_Obj *objPtr)); typedef char *(Tcl_VarTraceProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp, char *part1, char *part2, int flags)); /* * The following structure represents a type of object, which is a * particular internal representation for an object plus a set of * procedures that provide standard operations on objects of that type. */ typedef struct Tcl_ObjType { char *name; /* Name of the type, e.g. "int". */ Tcl_FreeInternalRepProc *freeIntRepProc; /* Called to free any storage for the type's * internal rep. NULL if the internal rep * does not need freeing. */ Tcl_DupInternalRepProc *dupIntRepProc; /* Called to create a new object as a copy * of an existing object. */ Tcl_UpdateStringProc *updateStringProc; /* Called to update the string rep from the * type's internal representation. */ Tcl_SetFromAnyProc *setFromAnyProc; /* Called to convert the object's internal * rep to this type. Frees the internal rep * of the old type. Returns TCL_ERROR on * failure. */ } Tcl_ObjType; /* * One of the following structures exists for each object in the Tcl * system. An object stores a value as either a string, some internal * representation, or both. */ typedef struct Tcl_Obj { int refCount; /* When 0 the object will be freed. */ char *bytes; /* This points to the first byte of the * object's string representation. The array * must be followed by a null byte (i.e., at * offset length) but may also contain * embedded null characters. The array's * storage is allocated by ckalloc. NULL * means the string rep is invalid and must * be regenerated from the internal rep. * Clients should use Tcl_GetStringFromObj * to get a pointer to the byte array as a * readonly value. */ int length; /* The number of bytes at *bytes, not * including the terminating null. */ Tcl_ObjType *typePtr; /* Denotes the object's type. Always * corresponds to the type of the object's * internal rep. NULL indicates the object * has no internal rep (has no type). */ union { /* The internal representation: */ long longValue; /* - an long integer value */ double doubleValue; /* - a double-precision floating value */ VOID *otherValuePtr; /* - another, type-specific value */ struct { /* - internal rep as two pointers */ VOID *ptr1; VOID *ptr2; } twoPtrValue; } internalRep; } Tcl_Obj; /* * Macros to increment and decrement a Tcl_Obj's reference count, and to * test whether an object is shared (i.e. has reference count > 1). * Note: clients should use Tcl_DecrRefCount() when they are finished using * an object, and should never call TclFreeObj() directly. TclFreeObj() is * only defined and made public in tcl.h to support Tcl_DecrRefCount's macro * definition. Note also that Tcl_DecrRefCount() refers to the parameter * "obj" twice. This means that you should avoid calling it with an * expression that is expensive to compute or has side effects. */ EXTERN void Tcl_IncrRefCount _ANSI_ARGS_((Tcl_Obj *objPtr)); EXTERN void Tcl_DecrRefCount _ANSI_ARGS_((Tcl_Obj *objPtr)); EXTERN int Tcl_IsShared _ANSI_ARGS_((Tcl_Obj *objPtr)); #ifdef TCL_MEM_DEBUG # define Tcl_IncrRefCount(objPtr) \ Tcl_DbIncrRefCount(objPtr, __FILE__, __LINE__) # define Tcl_DecrRefCount(objPtr) \ Tcl_DbDecrRefCount(objPtr, __FILE__, __LINE__) # define Tcl_IsShared(objPtr) \ Tcl_DbIsShared(objPtr, __FILE__, __LINE__) #else # define Tcl_IncrRefCount(objPtr) \ ++(objPtr)->refCount # define Tcl_DecrRefCount(objPtr) \ if (--(objPtr)->refCount <= 0) TclFreeObj(objPtr) # define Tcl_IsShared(objPtr) \ ((objPtr)->refCount > 1) #endif /* * Macros and definitions that help to debug the use of Tcl objects. * When TCL_MEM_DEBUG is defined, the Tcl_New* declarations are * overridden to call debugging versions of the object creation procedures. */ EXTERN Tcl_Obj * Tcl_NewBooleanObj _ANSI_ARGS_((int boolValue)); EXTERN Tcl_Obj * Tcl_NewDoubleObj _ANSI_ARGS_((double doubleValue)); EXTERN Tcl_Obj * Tcl_NewIntObj _ANSI_ARGS_((int intValue)); EXTERN Tcl_Obj * Tcl_NewListObj _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); EXTERN Tcl_Obj * Tcl_NewLongObj _ANSI_ARGS_((long longValue)); EXTERN Tcl_Obj * Tcl_NewObj _ANSI_ARGS_((void)); EXTERN Tcl_Obj * Tcl_NewStringObj _ANSI_ARGS_((char *bytes, int length)); #ifdef TCL_MEM_DEBUG # define Tcl_NewBooleanObj(val) \ Tcl_DbNewBooleanObj(val, __FILE__, __LINE__) # define Tcl_NewDoubleObj(val) \ Tcl_DbNewDoubleObj(val, __FILE__, __LINE__) # define Tcl_NewIntObj(val) \ Tcl_DbNewLongObj(val, __FILE__, __LINE__) # define Tcl_NewListObj(objc, objv) \ Tcl_DbNewListObj(objc, objv, __FILE__, __LINE__) # define Tcl_NewLongObj(val) \ Tcl_DbNewLongObj(val, __FILE__, __LINE__) # define Tcl_NewObj() \ Tcl_DbNewObj(__FILE__, __LINE__) # define Tcl_NewStringObj(bytes, len) \ Tcl_DbNewStringObj(bytes, len, __FILE__, __LINE__) #endif /* TCL_MEM_DEBUG */ /* * The following definitions support Tcl's namespace facility. * Note: the first five fields must match exactly the fields in a * Namespace structure (see tcl.h). */ typedef struct Tcl_Namespace { char *name; /* The namespace's name within its parent * namespace. This contains no ::'s. The * name of the global namespace is "" * although "::" is an synonym. */ char *fullName; /* The namespace's fully qualified name. * This starts with ::. */ ClientData clientData; /* Arbitrary value associated with this * namespace. */ Tcl_NamespaceDeleteProc* deleteProc; /* Procedure invoked when deleting the * namespace to, e.g., free clientData. */ struct Tcl_Namespace* parentPtr; /* Points to the namespace that contains * this one. NULL if this is the global * namespace. */ } Tcl_Namespace; /* * The following structure represents a call frame, or activation record. * A call frame defines a naming context for a procedure call: its local * scope (for local variables) and its namespace scope (used for non-local * variables; often the global :: namespace). A call frame can also define * the naming context for a namespace eval or namespace inscope command: * the namespace in which the command's code should execute. The * Tcl_CallFrame structures exist only while procedures or namespace * eval/inscope's are being executed, and provide a Tcl call stack. * * A call frame is initialized and pushed using Tcl_PushCallFrame and * popped using Tcl_PopCallFrame. Storage for a Tcl_CallFrame must be * provided by the Tcl_PushCallFrame caller, and callers typically allocate * them on the C call stack for efficiency. For this reason, Tcl_CallFrame * is defined as a structure and not as an opaque token. However, most * Tcl_CallFrame fields are hidden since applications should not access * them directly; others are declared as "dummyX". * * WARNING!! The structure definition must be kept consistent with the * CallFrame structure in tclInt.h. If you change one, change the other. */ typedef struct Tcl_CallFrame { Tcl_Namespace *nsPtr; int dummy1; int dummy2; char *dummy3; char *dummy4; char *dummy5; int dummy6; char *dummy7; char *dummy8; int dummy9; char* dummy10; } Tcl_CallFrame; /* * Information about commands that is returned by Tcl_GetCommandInfo and * passed to Tcl_SetCommandInfo. objProc is an objc/objv object-based * command procedure while proc is a traditional Tcl argc/argv * string-based procedure. Tcl_CreateObjCommand and Tcl_CreateCommand * ensure that both objProc and proc are non-NULL and can be called to * execute the command. However, it may be faster to call one instead of * the other. The member isNativeObjectProc is set to 1 if an * object-based procedure was registered by Tcl_CreateObjCommand, and to * 0 if a string-based procedure was registered by Tcl_CreateCommand. * The other procedure is typically set to a compatibility wrapper that * does string-to-object or object-to-string argument conversions then * calls the other procedure. */ typedef struct Tcl_CmdInfo { int isNativeObjectProc; /* 1 if objProc was registered by a call to * Tcl_CreateObjCommand; 0 otherwise. * Tcl_SetCmdInfo does not modify this * field. */ Tcl_ObjCmdProc *objProc; /* Command's object-based procedure. */ ClientData objClientData; /* ClientData for object proc. */ Tcl_CmdProc *proc; /* Command's string-based procedure. */ ClientData clientData; /* ClientData for string proc. */ Tcl_CmdDeleteProc *deleteProc; /* Procedure to call when command is * deleted. */ ClientData deleteData; /* Value to pass to deleteProc (usually * the same as clientData). */ Tcl_Namespace *namespacePtr; /* Points to the namespace that contains * this command. Note that Tcl_SetCmdInfo * will not change a command's namespace; * use Tcl_RenameCommand to do that. */ } Tcl_CmdInfo; /* * The structure defined below is used to hold dynamic strings. The only * field that clients should use is the string field, and they should * never modify it. */ #define TCL_DSTRING_STATIC_SIZE 200 typedef struct Tcl_DString { char *string; /* Points to beginning of string: either * staticSpace below or a malloced array. */ int length; /* Number of non-NULL characters in the * string. */ int spaceAvl; /* Total number of bytes available for the * string and its terminating NULL char. */ char staticSpace[TCL_DSTRING_STATIC_SIZE]; /* Space to use in common case where string * is small. */ } Tcl_DString; #define Tcl_DStringLength(dsPtr) ((dsPtr)->length) #define Tcl_DStringValue(dsPtr) ((dsPtr)->string) #define Tcl_DStringTrunc Tcl_DStringSetLength /* * Definitions for the maximum number of digits of precision that may * be specified in the "tcl_precision" variable, and the number of * characters of buffer space required by Tcl_PrintDouble. */ #define TCL_MAX_PREC 17 #define TCL_DOUBLE_SPACE (TCL_MAX_PREC+10) /* * Flag that may be passed to Tcl_ConvertElement to force it not to * output braces (careful! if you change this flag be sure to change * the definitions at the front of tclUtil.c). */ #define TCL_DONT_USE_BRACES 1 /* * Flag that may be passed to Tcl_GetIndexFromObj to force it to disallow * abbreviated strings. */ #define TCL_EXACT 1 /* * Flag values passed to Tcl_RecordAndEval. * WARNING: these bit choices must not conflict with the bit choices * for evalFlag bits in tclInt.h!! */ #define TCL_NO_EVAL 0x10000 #define TCL_EVAL_GLOBAL 0x20000 /* * Special freeProc values that may be passed to Tcl_SetResult (see * the man page for details): */ #define TCL_VOLATILE ((Tcl_FreeProc *) 1) #define TCL_STATIC ((Tcl_FreeProc *) 0) #define TCL_DYNAMIC ((Tcl_FreeProc *) 3) /* * Flag values passed to variable-related procedures. */ #define TCL_GLOBAL_ONLY 1 #define TCL_NAMESPACE_ONLY 2 #define TCL_APPEND_VALUE 4 #define TCL_LIST_ELEMENT 8 #define TCL_TRACE_READS 0x10 #define TCL_TRACE_WRITES 0x20 #define TCL_TRACE_UNSETS 0x40 #define TCL_TRACE_DESTROYED 0x80 #define TCL_INTERP_DESTROYED 0x100 #define TCL_LEAVE_ERR_MSG 0x200 #define TCL_PARSE_PART1 0x400 /* * Types for linked variables: */ #define TCL_LINK_INT 1 #define TCL_LINK_DOUBLE 2 #define TCL_LINK_BOOLEAN 3 #define TCL_LINK_STRING 4 #define TCL_LINK_READ_ONLY 0x80 /* * The following declarations either map ckalloc and ckfree to * malloc and free, or they map them to procedures with all sorts * of debugging hooks defined in tclCkalloc.c. */ EXTERN char * Tcl_Alloc _ANSI_ARGS_((unsigned int size)); EXTERN void Tcl_Free _ANSI_ARGS_((char *ptr)); EXTERN char * Tcl_Realloc _ANSI_ARGS_((char *ptr, unsigned int size)); #ifdef TCL_MEM_DEBUG # define Tcl_Alloc(x) Tcl_DbCkalloc(x, __FILE__, __LINE__) # define Tcl_Free(x) Tcl_DbCkfree(x, __FILE__, __LINE__) # define Tcl_Realloc(x,y) Tcl_DbCkrealloc((x), (y),__FILE__, __LINE__) # define ckalloc(x) Tcl_DbCkalloc(x, __FILE__, __LINE__) # define ckfree(x) Tcl_DbCkfree(x, __FILE__, __LINE__) # define ckrealloc(x,y) Tcl_DbCkrealloc((x), (y),__FILE__, __LINE__) EXTERN int Tcl_DumpActiveMemory _ANSI_ARGS_((char *fileName)); EXTERN void Tcl_ValidateAllMemory _ANSI_ARGS_((char *file, int line)); #else # if USE_TCLALLOC # define ckalloc(x) Tcl_Alloc(x) # define ckfree(x) Tcl_Free(x) # define ckrealloc(x,y) Tcl_Realloc(x,y) # else # define ckalloc(x) malloc(x) # define ckfree(x) free(x) # define ckrealloc(x,y) realloc(x,y) # endif # define Tcl_DumpActiveMemory(x) # define Tcl_ValidateAllMemory(x,y) #endif /* TCL_MEM_DEBUG */ /* * Forward declaration of Tcl_HashTable. Needed by some C++ compilers * to prevent errors when the forward reference to Tcl_HashTable is * encountered in the Tcl_HashEntry structure. */ #ifdef __cplusplus struct Tcl_HashTable; #endif /* * Structure definition for an entry in a hash table. No-one outside * Tcl should access any of these fields directly; use the macros * defined below. */ typedef struct Tcl_HashEntry { struct Tcl_HashEntry *nextPtr; /* Pointer to next entry in this * hash bucket, or NULL for end of * chain. */ struct Tcl_HashTable *tablePtr; /* Pointer to table containing entry. */ struct Tcl_HashEntry **bucketPtr; /* Pointer to bucket that points to * first entry in this entry's chain: * used for deleting the entry. */ ClientData clientData; /* Application stores something here * with Tcl_SetHashValue. */ union { /* Key has one of these forms: */ char *oneWordValue; /* One-word value for key. */ int words[1]; /* Multiple integer words for key. * The actual size will be as large * as necessary for this table's * keys. */ char string[4]; /* String for key. The actual size * will be as large as needed to hold * the key. */ } key; /* MUST BE LAST FIELD IN RECORD!! */ } Tcl_HashEntry; /* * Structure definition for a hash table. Must be in tcl.h so clients * can allocate space for these structures, but clients should never * access any fields in this structure. */ #define TCL_SMALL_HASH_TABLE 4 typedef struct Tcl_HashTable { Tcl_HashEntry **buckets; /* Pointer to bucket array. Each * element points to first entry in * bucket's hash chain, or NULL. */ Tcl_HashEntry *staticBuckets[TCL_SMALL_HASH_TABLE]; /* Bucket array used for small tables * (to avoid mallocs and frees). */ int numBuckets; /* Total number of buckets allocated * at **bucketPtr. */ int numEntries; /* Total number of entries present * in table. */ int rebuildSize; /* Enlarge table when numEntries gets * to be this large. */ int downShift; /* Shift count used in hashing * function. Designed to use high- * order bits of randomized keys. */ int mask; /* Mask value used in hashing * function. */ int keyType; /* Type of keys used in this table. * It's either TCL_STRING_KEYS, * TCL_ONE_WORD_KEYS, or an integer * giving the number of ints that * is the size of the key. */ Tcl_HashEntry *(*findProc) _ANSI_ARGS_((struct Tcl_HashTable *tablePtr, CONST char *key)); Tcl_HashEntry *(*createProc) _ANSI_ARGS_((struct Tcl_HashTable *tablePtr, CONST char *key, int *newPtr)); } Tcl_HashTable; /* * Structure definition for information used to keep track of searches * through hash tables: */ typedef struct Tcl_HashSearch { Tcl_HashTable *tablePtr; /* Table being searched. */ int nextIndex; /* Index of next bucket to be * enumerated after present one. */ Tcl_HashEntry *nextEntryPtr; /* Next entry to be enumerated in the * the current bucket. */ } Tcl_HashSearch; /* * Acceptable key types for hash tables: */ #define TCL_STRING_KEYS 0 #define TCL_ONE_WORD_KEYS 1 /* * Macros for clients to use to access fields of hash entries: */ #define Tcl_GetHashValue(h) ((h)->clientData) #define Tcl_SetHashValue(h, value) ((h)->clientData = (ClientData) (value)) #define Tcl_GetHashKey(tablePtr, h) \ ((char *) (((tablePtr)->keyType == TCL_ONE_WORD_KEYS) ? (h)->key.oneWordValue \ : (h)->key.string)) /* * Macros to use for clients to use to invoke find and create procedures * for hash tables: */ #define Tcl_FindHashEntry(tablePtr, key) \ (*((tablePtr)->findProc))(tablePtr, key) #define Tcl_CreateHashEntry(tablePtr, key, newPtr) \ (*((tablePtr)->createProc))(tablePtr, key, newPtr) /* * Flag values to pass to Tcl_DoOneEvent to disable searches * for some kinds of events: */ #define TCL_DONT_WAIT (1<<1) #define TCL_WINDOW_EVENTS (1<<2) #define TCL_FILE_EVENTS (1<<3) #define TCL_TIMER_EVENTS (1<<4) #define TCL_IDLE_EVENTS (1<<5) /* WAS 0x10 ???? */ #define TCL_ALL_EVENTS (~TCL_DONT_WAIT) /* * The following structure defines a generic event for the Tcl event * system. These are the things that are queued in calls to Tcl_QueueEvent * and serviced later by Tcl_DoOneEvent. There can be many different * kinds of events with different fields, corresponding to window events, * timer events, etc. The structure for a particular event consists of * a Tcl_Event header followed by additional information specific to that * event. */ struct Tcl_Event { Tcl_EventProc *proc; /* Procedure to call to service this event. */ struct Tcl_Event *nextPtr; /* Next in list of pending events, or NULL. */ }; /* * Positions to pass to Tcl_QueueEvent: */ typedef enum { TCL_QUEUE_TAIL, TCL_QUEUE_HEAD, TCL_QUEUE_MARK } Tcl_QueuePosition; /* * Values to pass to Tcl_SetServiceMode to specify the behavior of notifier * event routines. */ #define TCL_SERVICE_NONE 0 #define TCL_SERVICE_ALL 1 /* * The following structure keeps is used to hold a time value, either as * an absolute time (the number of seconds from the epoch) or as an * elapsed time. On Unix systems the epoch is Midnight Jan 1, 1970 GMT. * On Macintosh systems the epoch is Midnight Jan 1, 1904 GMT. */ typedef struct Tcl_Time { long sec; /* Seconds. */ long usec; /* Microseconds. */ } Tcl_Time; /* * Bits to pass to Tcl_CreateFileHandler and Tcl_CreateChannelHandler * to indicate what sorts of events are of interest: */ #define TCL_READABLE (1<<1) #define TCL_WRITABLE (1<<2) #define TCL_EXCEPTION (1<<3) /* * Flag values to pass to Tcl_OpenCommandChannel to indicate the * disposition of the stdio handles. TCL_STDIN, TCL_STDOUT, TCL_STDERR, * are also used in Tcl_GetStdChannel. */ #define TCL_STDIN (1<<1) #define TCL_STDOUT (1<<2) #define TCL_STDERR (1<<3) #define TCL_ENFORCE_MODE (1<<4) /* * Typedefs for the various operations in a channel type: */ typedef int (Tcl_DriverBlockModeProc) _ANSI_ARGS_(( ClientData instanceData, int mode)); typedef int (Tcl_DriverCloseProc) _ANSI_ARGS_((ClientData instanceData, Tcl_Interp *interp)); typedef int (Tcl_DriverInputProc) _ANSI_ARGS_((ClientData instanceData, char *buf, int toRead, int *errorCodePtr)); typedef int (Tcl_DriverOutputProc) _ANSI_ARGS_((ClientData instanceData, char *buf, int toWrite, int *errorCodePtr)); typedef int (Tcl_DriverSeekProc) _ANSI_ARGS_((ClientData instanceData, long offset, int mode, int *errorCodePtr)); typedef int (Tcl_DriverSetOptionProc) _ANSI_ARGS_(( ClientData instanceData, Tcl_Interp *interp, char *optionName, char *value)); typedef int (Tcl_DriverGetOptionProc) _ANSI_ARGS_(( ClientData instanceData, Tcl_Interp *interp, char *optionName, Tcl_DString *dsPtr)); typedef void (Tcl_DriverWatchProc) _ANSI_ARGS_(( ClientData instanceData, int mask)); typedef int (Tcl_DriverGetHandleProc) _ANSI_ARGS_(( ClientData instanceData, int direction, ClientData *handlePtr)); /* * Enum for different end of line translation and recognition modes. */ typedef enum Tcl_EolTranslation { TCL_TRANSLATE_AUTO, /* Eol == \r, \n and \r\n. */ TCL_TRANSLATE_CR, /* Eol == \r. */ TCL_TRANSLATE_LF, /* Eol == \n. */ TCL_TRANSLATE_CRLF /* Eol == \r\n. */ } Tcl_EolTranslation; /* * struct Tcl_ChannelType: * * One such structure exists for each type (kind) of channel. * It collects together in one place all the functions that are * part of the specific channel type. */ typedef struct Tcl_ChannelType { char *typeName; /* The name of the channel type in Tcl * commands. This storage is owned by * channel type. */ Tcl_DriverBlockModeProc *blockModeProc; /* Set blocking mode for the * raw channel. May be NULL. */ Tcl_DriverCloseProc *closeProc; /* Procedure to call to close * the channel. */ Tcl_DriverInputProc *inputProc; /* Procedure to call for input * on channel. */ Tcl_DriverOutputProc *outputProc; /* Procedure to call for output * on channel. */ Tcl_DriverSeekProc *seekProc; /* Procedure to call to seek * on the channel. May be NULL. */ Tcl_DriverSetOptionProc *setOptionProc; /* Set an option on a channel. */ Tcl_DriverGetOptionProc *getOptionProc; /* Get an option from a channel. */ Tcl_DriverWatchProc *watchProc; /* Set up the notifier to watch * for events on this channel. */ Tcl_DriverGetHandleProc *getHandleProc; /* Get an OS handle from the channel * or NULL if not supported. */ } Tcl_ChannelType; /* * The following flags determine whether the blockModeProc above should * set the channel into blocking or nonblocking mode. They are passed * as arguments to the blockModeProc procedure in the above structure. */ #define TCL_MODE_BLOCKING 0 /* Put channel into blocking mode. */ #define TCL_MODE_NONBLOCKING 1 /* Put channel into nonblocking * mode. */ /* * Enum for different types of file paths. */ typedef enum Tcl_PathType { TCL_PATH_ABSOLUTE, TCL_PATH_RELATIVE, TCL_PATH_VOLUME_RELATIVE } Tcl_PathType; /* * Exported Tcl procedures: */ EXTERN void Tcl_AddErrorInfo _ANSI_ARGS_((Tcl_Interp *interp, char *message)); EXTERN void Tcl_AddObjErrorInfo _ANSI_ARGS_((Tcl_Interp *interp, char *message, int length)); EXTERN void Tcl_AllowExceptions _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN int Tcl_AppendAllObjTypes _ANSI_ARGS_(( Tcl_Interp *interp, Tcl_Obj *objPtr)); EXTERN void Tcl_AppendElement _ANSI_ARGS_((Tcl_Interp *interp, char *string)); EXTERN void Tcl_AppendResult _ANSI_ARGS_( TCL_VARARGS(Tcl_Interp *,interp)); EXTERN void Tcl_AppendToObj _ANSI_ARGS_((Tcl_Obj *objPtr, char *bytes, int length)); EXTERN void Tcl_AppendStringsToObj _ANSI_ARGS_( TCL_VARARGS(Tcl_Obj *,interp)); EXTERN int Tcl_AppInit _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN Tcl_AsyncHandler Tcl_AsyncCreate _ANSI_ARGS_((Tcl_AsyncProc *proc, ClientData clientData)); EXTERN void Tcl_AsyncDelete _ANSI_ARGS_((Tcl_AsyncHandler async)); EXTERN int Tcl_AsyncInvoke _ANSI_ARGS_((Tcl_Interp *interp, int code)); EXTERN void Tcl_AsyncMark _ANSI_ARGS_((Tcl_AsyncHandler async)); EXTERN int Tcl_AsyncReady _ANSI_ARGS_((void)); EXTERN void Tcl_BackgroundError _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN char Tcl_Backslash _ANSI_ARGS_((CONST char *src, int *readPtr)); EXTERN int Tcl_BadChannelOption _ANSI_ARGS_((Tcl_Interp *interp, char *optionName, char *optionList)); EXTERN void Tcl_CallWhenDeleted _ANSI_ARGS_((Tcl_Interp *interp, Tcl_InterpDeleteProc *proc, ClientData clientData)); EXTERN void Tcl_CancelIdleCall _ANSI_ARGS_((Tcl_IdleProc *idleProc, ClientData clientData)); #define Tcl_Ckalloc Tcl_Alloc #define Tcl_Ckfree Tcl_Free #define Tcl_Ckrealloc Tcl_Realloc EXTERN int Tcl_Close _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Channel chan)); EXTERN int Tcl_CommandComplete _ANSI_ARGS_((char *cmd)); EXTERN char * Tcl_Concat _ANSI_ARGS_((int argc, char **argv)); EXTERN Tcl_Obj * Tcl_ConcatObj _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[])); EXTERN int Tcl_ConvertCountedElement _ANSI_ARGS_((CONST char *src, int length, char *dst, int flags)); EXTERN int Tcl_ConvertElement _ANSI_ARGS_((CONST char *src, char *dst, int flags)); EXTERN int Tcl_ConvertToType _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_ObjType *typePtr)); EXTERN int Tcl_CreateAlias _ANSI_ARGS_((Tcl_Interp *slave, char *slaveCmd, Tcl_Interp *target, char *targetCmd, int argc, char **argv)); EXTERN int Tcl_CreateAliasObj _ANSI_ARGS_((Tcl_Interp *slave, char *slaveCmd, Tcl_Interp *target, char *targetCmd, int objc, Tcl_Obj *CONST objv[])); EXTERN Tcl_Channel Tcl_CreateChannel _ANSI_ARGS_(( Tcl_ChannelType *typePtr, char *chanName, ClientData instanceData, int mask)); EXTERN void Tcl_CreateChannelHandler _ANSI_ARGS_(( Tcl_Channel chan, int mask, Tcl_ChannelProc *proc, ClientData clientData)); EXTERN void Tcl_CreateCloseHandler _ANSI_ARGS_(( Tcl_Channel chan, Tcl_CloseProc *proc, ClientData clientData)); EXTERN Tcl_Command Tcl_CreateCommand _ANSI_ARGS_((Tcl_Interp *interp, char *cmdName, Tcl_CmdProc *proc, ClientData clientData, Tcl_CmdDeleteProc *deleteProc)); EXTERN void Tcl_CreateEventSource _ANSI_ARGS_(( Tcl_EventSetupProc *setupProc, Tcl_EventCheckProc *checkProc, ClientData clientData)); EXTERN void Tcl_CreateExitHandler _ANSI_ARGS_((Tcl_ExitProc *proc, ClientData clientData)); EXTERN void Tcl_CreateFileHandler _ANSI_ARGS_(( int fd, int mask, Tcl_FileProc *proc, ClientData clientData)); EXTERN Tcl_Interp * Tcl_CreateInterp _ANSI_ARGS_((void)); EXTERN void Tcl_CreateMathFunc _ANSI_ARGS_((Tcl_Interp *interp, char *name, int numArgs, Tcl_ValueType *argTypes, Tcl_MathProc *proc, ClientData clientData)); EXTERN Tcl_Command Tcl_CreateObjCommand _ANSI_ARGS_(( Tcl_Interp *interp, char *cmdName, Tcl_ObjCmdProc *proc, ClientData clientData, Tcl_CmdDeleteProc *deleteProc)); EXTERN Tcl_Interp * Tcl_CreateSlave _ANSI_ARGS_((Tcl_Interp *interp, char *slaveName, int isSafe)); EXTERN Tcl_TimerToken Tcl_CreateTimerHandler _ANSI_ARGS_((int milliseconds, Tcl_TimerProc *proc, ClientData clientData)); EXTERN Tcl_Trace Tcl_CreateTrace _ANSI_ARGS_((Tcl_Interp *interp, int level, Tcl_CmdTraceProc *proc, ClientData clientData)); EXTERN char * Tcl_DbCkalloc _ANSI_ARGS_((unsigned int size, char *file, int line)); EXTERN int Tcl_DbCkfree _ANSI_ARGS_((char *ptr, char *file, int line)); EXTERN char * Tcl_DbCkrealloc _ANSI_ARGS_((char *ptr, unsigned int size, char *file, int line)); EXTERN void Tcl_DbDecrRefCount _ANSI_ARGS_((Tcl_Obj *objPtr, char *file, int line)); EXTERN void Tcl_DbIncrRefCount _ANSI_ARGS_((Tcl_Obj *objPtr, char *file, int line)); EXTERN int Tcl_DbIsShared _ANSI_ARGS_((Tcl_Obj *objPtr, char *file, int line)); EXTERN Tcl_Obj * Tcl_DbNewBooleanObj _ANSI_ARGS_((int boolValue, char *file, int line)); EXTERN Tcl_Obj * Tcl_DbNewDoubleObj _ANSI_ARGS_((double doubleValue, char *file, int line)); EXTERN Tcl_Obj * Tcl_DbNewListObj _ANSI_ARGS_((int objc, Tcl_Obj *CONST objv[], char *file, int line)); EXTERN Tcl_Obj * Tcl_DbNewLongObj _ANSI_ARGS_((long longValue, char *file, int line)); EXTERN Tcl_Obj * Tcl_DbNewObj _ANSI_ARGS_((char *file, int line)); EXTERN Tcl_Obj * Tcl_DbNewStringObj _ANSI_ARGS_((char *bytes, int length, char *file, int line)); EXTERN void Tcl_DeleteAssocData _ANSI_ARGS_((Tcl_Interp *interp, char *name)); EXTERN int Tcl_DeleteCommand _ANSI_ARGS_((Tcl_Interp *interp, char *cmdName)); EXTERN int Tcl_DeleteCommandFromToken _ANSI_ARGS_(( Tcl_Interp *interp, Tcl_Command command)); EXTERN void Tcl_DeleteChannelHandler _ANSI_ARGS_(( Tcl_Channel chan, Tcl_ChannelProc *proc, ClientData clientData)); EXTERN void Tcl_DeleteCloseHandler _ANSI_ARGS_(( Tcl_Channel chan, Tcl_CloseProc *proc, ClientData clientData)); EXTERN void Tcl_DeleteEvents _ANSI_ARGS_(( Tcl_EventDeleteProc *proc, ClientData clientData)); EXTERN void Tcl_DeleteEventSource _ANSI_ARGS_(( Tcl_EventSetupProc *setupProc, Tcl_EventCheckProc *checkProc, ClientData clientData)); EXTERN void Tcl_DeleteExitHandler _ANSI_ARGS_((Tcl_ExitProc *proc, ClientData clientData)); EXTERN void Tcl_DeleteFileHandler _ANSI_ARGS_((int fd)); EXTERN void Tcl_DeleteHashEntry _ANSI_ARGS_(( Tcl_HashEntry *entryPtr)); EXTERN void Tcl_DeleteHashTable _ANSI_ARGS_(( Tcl_HashTable *tablePtr)); EXTERN void Tcl_DeleteInterp _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN void Tcl_DeleteTimerHandler _ANSI_ARGS_(( Tcl_TimerToken token)); EXTERN void Tcl_DeleteTrace _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Trace trace)); EXTERN void Tcl_DetachPids _ANSI_ARGS_((int numPids, Tcl_Pid *pidPtr)); EXTERN void Tcl_DontCallWhenDeleted _ANSI_ARGS_(( Tcl_Interp *interp, Tcl_InterpDeleteProc *proc, ClientData clientData)); EXTERN int Tcl_DoOneEvent _ANSI_ARGS_((int flags)); EXTERN void Tcl_DoWhenIdle _ANSI_ARGS_((Tcl_IdleProc *proc, ClientData clientData)); EXTERN char * Tcl_DStringAppend _ANSI_ARGS_((Tcl_DString *dsPtr, CONST char *string, int length)); EXTERN char * Tcl_DStringAppendElement _ANSI_ARGS_(( Tcl_DString *dsPtr, CONST char *string)); EXTERN void Tcl_DStringEndSublist _ANSI_ARGS_((Tcl_DString *dsPtr)); EXTERN void Tcl_DStringFree _ANSI_ARGS_((Tcl_DString *dsPtr)); EXTERN void Tcl_DStringGetResult _ANSI_ARGS_((Tcl_Interp *interp, Tcl_DString *dsPtr)); EXTERN void Tcl_DStringInit _ANSI_ARGS_((Tcl_DString *dsPtr)); EXTERN void Tcl_DStringResult _ANSI_ARGS_((Tcl_Interp *interp, Tcl_DString *dsPtr)); EXTERN void Tcl_DStringSetLength _ANSI_ARGS_((Tcl_DString *dsPtr, int length)); EXTERN void Tcl_DStringStartSublist _ANSI_ARGS_(( Tcl_DString *dsPtr)); EXTERN Tcl_Obj * Tcl_DuplicateObj _ANSI_ARGS_((Tcl_Obj *objPtr)); EXTERN int Tcl_Eof _ANSI_ARGS_((Tcl_Channel chan)); EXTERN char * Tcl_ErrnoId _ANSI_ARGS_((void)); EXTERN char * Tcl_ErrnoMsg _ANSI_ARGS_((int err)); EXTERN int Tcl_Eval _ANSI_ARGS_((Tcl_Interp *interp, char *string)); EXTERN int Tcl_EvalFile _ANSI_ARGS_((Tcl_Interp *interp, char *fileName)); EXTERN void Tcl_EventuallyFree _ANSI_ARGS_((ClientData clientData, Tcl_FreeProc *freeProc)); EXTERN int Tcl_EvalObj _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr)); EXTERN void Tcl_Exit _ANSI_ARGS_((int status)); EXTERN int Tcl_ExposeCommand _ANSI_ARGS_((Tcl_Interp *interp, char *hiddenCmdToken, char *cmdName)); EXTERN int Tcl_ExprBoolean _ANSI_ARGS_((Tcl_Interp *interp, char *string, int *ptr)); EXTERN int Tcl_ExprBooleanObj _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr, int *ptr)); EXTERN int Tcl_ExprDouble _ANSI_ARGS_((Tcl_Interp *interp, char *string, double *ptr)); EXTERN int Tcl_ExprDoubleObj _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr, double *ptr)); EXTERN int Tcl_ExprLong _ANSI_ARGS_((Tcl_Interp *interp, char *string, long *ptr)); EXTERN int Tcl_ExprLongObj _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr, long *ptr)); EXTERN int Tcl_ExprObj _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr, Tcl_Obj **resultPtrPtr)); EXTERN int Tcl_ExprString _ANSI_ARGS_((Tcl_Interp *interp, char *string)); EXTERN void Tcl_Finalize _ANSI_ARGS_((void)); EXTERN void Tcl_FindExecutable _ANSI_ARGS_((char *argv0)); EXTERN Tcl_HashEntry * Tcl_FirstHashEntry _ANSI_ARGS_(( Tcl_HashTable *tablePtr, Tcl_HashSearch *searchPtr)); EXTERN int Tcl_Flush _ANSI_ARGS_((Tcl_Channel chan)); EXTERN void TclFreeObj _ANSI_ARGS_((Tcl_Obj *objPtr)); EXTERN void Tcl_FreeResult _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN int Tcl_GetAlias _ANSI_ARGS_((Tcl_Interp *interp, char *slaveCmd, Tcl_Interp **targetInterpPtr, char **targetCmdPtr, int *argcPtr, char ***argvPtr)); EXTERN int Tcl_GetAliasObj _ANSI_ARGS_((Tcl_Interp *interp, char *slaveCmd, Tcl_Interp **targetInterpPtr, char **targetCmdPtr, int *objcPtr, Tcl_Obj ***objv)); EXTERN ClientData Tcl_GetAssocData _ANSI_ARGS_((Tcl_Interp *interp, char *name, Tcl_InterpDeleteProc **procPtr)); EXTERN int Tcl_GetBoolean _ANSI_ARGS_((Tcl_Interp *interp, char *string, int *boolPtr)); EXTERN int Tcl_GetBooleanFromObj _ANSI_ARGS_(( Tcl_Interp *interp, Tcl_Obj *objPtr, int *boolPtr)); EXTERN Tcl_Channel Tcl_GetChannel _ANSI_ARGS_((Tcl_Interp *interp, char *chanName, int *modePtr)); EXTERN int Tcl_GetChannelBufferSize _ANSI_ARGS_(( Tcl_Channel chan)); EXTERN int Tcl_GetChannelHandle _ANSI_ARGS_((Tcl_Channel chan, int direction, ClientData *handlePtr)); EXTERN ClientData Tcl_GetChannelInstanceData _ANSI_ARGS_(( Tcl_Channel chan)); EXTERN int Tcl_GetChannelMode _ANSI_ARGS_((Tcl_Channel chan)); EXTERN char * Tcl_GetChannelName _ANSI_ARGS_((Tcl_Channel chan)); EXTERN int Tcl_GetChannelOption _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Channel chan, char *optionName, Tcl_DString *dsPtr)); EXTERN Tcl_ChannelType * Tcl_GetChannelType _ANSI_ARGS_((Tcl_Channel chan)); EXTERN int Tcl_GetCommandInfo _ANSI_ARGS_((Tcl_Interp *interp, char *cmdName, Tcl_CmdInfo *infoPtr)); EXTERN char * Tcl_GetCommandName _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Command command)); EXTERN char * Tcl_GetCwd _ANSI_ARGS_((char *buf, int len)); EXTERN int Tcl_GetDouble _ANSI_ARGS_((Tcl_Interp *interp, char *string, double *doublePtr)); EXTERN int Tcl_GetDoubleFromObj _ANSI_ARGS_(( Tcl_Interp *interp, Tcl_Obj *objPtr, double *doublePtr)); EXTERN int Tcl_GetErrno _ANSI_ARGS_((void)); EXTERN int Tcl_GetErrorLine _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN char * Tcl_GetHostName _ANSI_ARGS_((void)); EXTERN int Tcl_GetIndexFromObj _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr, char **tablePtr, char *msg, int flags, int *indexPtr)); EXTERN int Tcl_GetInt _ANSI_ARGS_((Tcl_Interp *interp, char *string, int *intPtr)); EXTERN int Tcl_GetInterpPath _ANSI_ARGS_((Tcl_Interp *askInterp, Tcl_Interp *slaveInterp)); EXTERN int Tcl_GetIntFromObj _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr, int *intPtr)); EXTERN int Tcl_GetLongFromObj _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr, long *longPtr)); EXTERN Tcl_Interp * Tcl_GetMaster _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN Tcl_Obj * Tcl_GetObjResult _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN Tcl_ObjType * Tcl_GetObjType _ANSI_ARGS_((char *typeName)); EXTERN int Tcl_GetOpenFile _ANSI_ARGS_((Tcl_Interp *interp, char *string, int write, int checkUsage, ClientData *filePtr)); EXTERN Tcl_Command Tcl_GetOriginalCommand _ANSI_ARGS_(( Tcl_Command command)); EXTERN Tcl_PathType Tcl_GetPathType _ANSI_ARGS_((char *path)); EXTERN int Tcl_Gets _ANSI_ARGS_((Tcl_Channel chan, Tcl_DString *dsPtr)); EXTERN int Tcl_GetsObj _ANSI_ARGS_((Tcl_Channel chan, Tcl_Obj *objPtr)); EXTERN int Tcl_GetServiceMode _ANSI_ARGS_((void)); EXTERN Tcl_Interp * Tcl_GetSlave _ANSI_ARGS_((Tcl_Interp *interp, char *slaveName)); EXTERN Tcl_Channel Tcl_GetStdChannel _ANSI_ARGS_((int type)); EXTERN char * Tcl_GetStringFromObj _ANSI_ARGS_((Tcl_Obj *objPtr, int *lengthPtr)); EXTERN char * Tcl_GetStringResult _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN char * Tcl_GetVar _ANSI_ARGS_((Tcl_Interp *interp, char *varName, int flags)); EXTERN char * Tcl_GetVar2 _ANSI_ARGS_((Tcl_Interp *interp, char *part1, char *part2, int flags)); EXTERN int Tcl_GlobalEval _ANSI_ARGS_((Tcl_Interp *interp, char *command)); EXTERN int Tcl_GlobalEvalObj _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *objPtr)); EXTERN char * Tcl_HashStats _ANSI_ARGS_((Tcl_HashTable *tablePtr)); EXTERN int Tcl_HideCommand _ANSI_ARGS_((Tcl_Interp *interp, char *cmdName, char *hiddenCmdToken)); EXTERN int Tcl_Init _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN void Tcl_InitHashTable _ANSI_ARGS_((Tcl_HashTable *tablePtr, int keyType)); EXTERN void Tcl_InitMemory _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN int Tcl_InputBlocked _ANSI_ARGS_((Tcl_Channel chan)); EXTERN int Tcl_InputBuffered _ANSI_ARGS_((Tcl_Channel chan)); EXTERN int Tcl_InterpDeleted _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN int Tcl_IsSafe _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN void Tcl_InvalidateStringRep _ANSI_ARGS_(( Tcl_Obj *objPtr)); EXTERN char * Tcl_JoinPath _ANSI_ARGS_((int argc, char **argv, Tcl_DString *resultPtr)); EXTERN int Tcl_LinkVar _ANSI_ARGS_((Tcl_Interp *interp, char *varName, char *addr, int type)); EXTERN int Tcl_ListObjAppendList _ANSI_ARGS_(( Tcl_Interp *interp, Tcl_Obj *listPtr, Tcl_Obj *elemListPtr)); EXTERN int Tcl_ListObjAppendElement _ANSI_ARGS_(( Tcl_Interp *interp, Tcl_Obj *listPtr, Tcl_Obj *objPtr)); EXTERN int Tcl_ListObjGetElements _ANSI_ARGS_(( Tcl_Interp *interp, Tcl_Obj *listPtr, int *objcPtr, Tcl_Obj ***objvPtr)); EXTERN int Tcl_ListObjIndex _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *listPtr, int index, Tcl_Obj **objPtrPtr)); EXTERN int Tcl_ListObjLength _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *listPtr, int *intPtr)); EXTERN int Tcl_ListObjReplace _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *listPtr, int first, int count, int objc, Tcl_Obj *CONST objv[])); EXTERN void Tcl_Main _ANSI_ARGS_((int argc, char **argv, Tcl_AppInitProc *appInitProc)); EXTERN Tcl_Channel Tcl_MakeFileChannel _ANSI_ARGS_((ClientData handle, int mode)); EXTERN int Tcl_MakeSafe _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN Tcl_Channel Tcl_MakeTcpClientChannel _ANSI_ARGS_(( ClientData tcpSocket)); EXTERN char * Tcl_Merge _ANSI_ARGS_((int argc, char **argv)); EXTERN Tcl_HashEntry * Tcl_NextHashEntry _ANSI_ARGS_(( Tcl_HashSearch *searchPtr)); EXTERN void Tcl_NotifyChannel _ANSI_ARGS_((Tcl_Channel channel, int mask)); EXTERN Tcl_Obj * Tcl_ObjGetVar2 _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr, int flags)); EXTERN Tcl_Obj * Tcl_ObjSetVar2 _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr, Tcl_Obj *newValuePtr, int flags)); EXTERN Tcl_Channel Tcl_OpenCommandChannel _ANSI_ARGS_(( Tcl_Interp *interp, int argc, char **argv, int flags)); EXTERN Tcl_Channel Tcl_OpenFileChannel _ANSI_ARGS_((Tcl_Interp *interp, char *fileName, char *modeString, int permissions)); EXTERN Tcl_Channel Tcl_OpenTcpClient _ANSI_ARGS_((Tcl_Interp *interp, int port, char *address, char *myaddr, int myport, int async)); EXTERN Tcl_Channel Tcl_OpenTcpServer _ANSI_ARGS_((Tcl_Interp *interp, int port, char *host, Tcl_TcpAcceptProc *acceptProc, ClientData callbackData)); EXTERN char * Tcl_ParseVar _ANSI_ARGS_((Tcl_Interp *interp, char *string, char **termPtr)); EXTERN int Tcl_PkgProvide _ANSI_ARGS_((Tcl_Interp *interp, char *name, char *version)); EXTERN char * Tcl_PkgRequire _ANSI_ARGS_((Tcl_Interp *interp, char *name, char *version, int exact)); EXTERN char * Tcl_PosixError _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN void Tcl_Preserve _ANSI_ARGS_((ClientData data)); EXTERN void Tcl_PrintDouble _ANSI_ARGS_((Tcl_Interp *interp, double value, char *dst)); EXTERN int Tcl_PutEnv _ANSI_ARGS_((CONST char *string)); EXTERN void Tcl_QueueEvent _ANSI_ARGS_((Tcl_Event *evPtr, Tcl_QueuePosition position)); EXTERN int Tcl_Read _ANSI_ARGS_((Tcl_Channel chan, char *bufPtr, int toRead)); EXTERN void Tcl_ReapDetachedProcs _ANSI_ARGS_((void)); EXTERN int Tcl_RecordAndEval _ANSI_ARGS_((Tcl_Interp *interp, char *cmd, int flags)); EXTERN int Tcl_RecordAndEvalObj _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *cmdPtr, int flags)); EXTERN Tcl_RegExp Tcl_RegExpCompile _ANSI_ARGS_((Tcl_Interp *interp, char *string)); EXTERN int Tcl_RegExpExec _ANSI_ARGS_((Tcl_Interp *interp, Tcl_RegExp regexp, char *string, char *start)); EXTERN int Tcl_RegExpMatch _ANSI_ARGS_((Tcl_Interp *interp, char *string, char *pattern)); EXTERN void Tcl_RegExpRange _ANSI_ARGS_((Tcl_RegExp regexp, int index, char **startPtr, char **endPtr)); EXTERN void Tcl_RegisterChannel _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Channel chan)); EXTERN void Tcl_RegisterObjType _ANSI_ARGS_(( Tcl_ObjType *typePtr)); EXTERN void Tcl_Release _ANSI_ARGS_((ClientData clientData)); EXTERN void Tcl_RestartIdleTimer _ANSI_ARGS_((void)); EXTERN void Tcl_ResetResult _ANSI_ARGS_((Tcl_Interp *interp)); #define Tcl_Return Tcl_SetResult EXTERN int Tcl_ScanCountedElement _ANSI_ARGS_((CONST char *string, int length, int *flagPtr)); EXTERN int Tcl_ScanElement _ANSI_ARGS_((CONST char *string, int *flagPtr)); EXTERN int Tcl_Seek _ANSI_ARGS_((Tcl_Channel chan, int offset, int mode)); EXTERN int Tcl_ServiceAll _ANSI_ARGS_((void)); EXTERN int Tcl_ServiceEvent _ANSI_ARGS_((int flags)); EXTERN void Tcl_SetAssocData _ANSI_ARGS_((Tcl_Interp *interp, char *name, Tcl_InterpDeleteProc *proc, ClientData clientData)); EXTERN void Tcl_SetBooleanObj _ANSI_ARGS_((Tcl_Obj *objPtr, int boolValue)); EXTERN void Tcl_SetChannelBufferSize _ANSI_ARGS_(( Tcl_Channel chan, int sz)); EXTERN int Tcl_SetChannelOption _ANSI_ARGS_(( Tcl_Interp *interp, Tcl_Channel chan, char *optionName, char *newValue)); EXTERN int Tcl_SetCommandInfo _ANSI_ARGS_((Tcl_Interp *interp, char *cmdName, Tcl_CmdInfo *infoPtr)); EXTERN void Tcl_SetDoubleObj _ANSI_ARGS_((Tcl_Obj *objPtr, double doubleValue)); EXTERN void Tcl_SetErrno _ANSI_ARGS_((int err)); EXTERN void Tcl_SetErrorCode _ANSI_ARGS_( TCL_VARARGS(Tcl_Interp *,arg1)); EXTERN void Tcl_SetIntObj _ANSI_ARGS_((Tcl_Obj *objPtr, int intValue)); EXTERN void Tcl_SetListObj _ANSI_ARGS_((Tcl_Obj *objPtr, int objc, Tcl_Obj *CONST objv[])); EXTERN void Tcl_SetLongObj _ANSI_ARGS_((Tcl_Obj *objPtr, long longValue)); EXTERN void Tcl_SetMaxBlockTime _ANSI_ARGS_((Tcl_Time *timePtr)); EXTERN void Tcl_SetObjErrorCode _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *errorObjPtr)); EXTERN void Tcl_SetObjLength _ANSI_ARGS_((Tcl_Obj *objPtr, int length)); EXTERN void Tcl_SetObjResult _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *resultObjPtr)); EXTERN void Tcl_SetPanicProc _ANSI_ARGS_((void (*proc) _ANSI_ARGS_(TCL_VARARGS(char *, format)))); EXTERN int Tcl_SetRecursionLimit _ANSI_ARGS_((Tcl_Interp *interp, int depth)); EXTERN void Tcl_SetResult _ANSI_ARGS_((Tcl_Interp *interp, char *string, Tcl_FreeProc *freeProc)); EXTERN int Tcl_SetServiceMode _ANSI_ARGS_((int mode)); EXTERN void Tcl_SetStdChannel _ANSI_ARGS_((Tcl_Channel channel, int type)); EXTERN void Tcl_SetStringObj _ANSI_ARGS_((Tcl_Obj *objPtr, char *bytes, int length)); EXTERN void Tcl_SetTimer _ANSI_ARGS_((Tcl_Time *timePtr)); EXTERN char * Tcl_SetVar _ANSI_ARGS_((Tcl_Interp *interp, char *varName, char *newValue, int flags)); EXTERN char * Tcl_SetVar2 _ANSI_ARGS_((Tcl_Interp *interp, char *part1, char *part2, char *newValue, int flags)); EXTERN char * Tcl_SignalId _ANSI_ARGS_((int sig)); EXTERN char * Tcl_SignalMsg _ANSI_ARGS_((int sig)); EXTERN void Tcl_Sleep _ANSI_ARGS_((int ms)); EXTERN void Tcl_SourceRCFile _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN int Tcl_SplitList _ANSI_ARGS_((Tcl_Interp *interp, char *list, int *argcPtr, char ***argvPtr)); EXTERN void Tcl_SplitPath _ANSI_ARGS_((char *path, int *argcPtr, char ***argvPtr)); EXTERN void Tcl_StaticPackage _ANSI_ARGS_((Tcl_Interp *interp, char *pkgName, Tcl_PackageInitProc *initProc, Tcl_PackageInitProc *safeInitProc)); EXTERN int Tcl_StringMatch _ANSI_ARGS_((char *string, char *pattern)); EXTERN int Tcl_Tell _ANSI_ARGS_((Tcl_Channel chan)); #define Tcl_TildeSubst Tcl_TranslateFileName EXTERN int Tcl_TraceVar _ANSI_ARGS_((Tcl_Interp *interp, char *varName, int flags, Tcl_VarTraceProc *proc, ClientData clientData)); EXTERN int Tcl_TraceVar2 _ANSI_ARGS_((Tcl_Interp *interp, char *part1, char *part2, int flags, Tcl_VarTraceProc *proc, ClientData clientData)); EXTERN char * Tcl_TranslateFileName _ANSI_ARGS_((Tcl_Interp *interp, char *name, Tcl_DString *bufferPtr)); EXTERN int Tcl_Ungets _ANSI_ARGS_((Tcl_Channel chan, char *str, int len, int atHead)); EXTERN void Tcl_UnlinkVar _ANSI_ARGS_((Tcl_Interp *interp, char *varName)); EXTERN int Tcl_UnregisterChannel _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Channel chan)); EXTERN int Tcl_UnsetVar _ANSI_ARGS_((Tcl_Interp *interp, char *varName, int flags)); EXTERN int Tcl_UnsetVar2 _ANSI_ARGS_((Tcl_Interp *interp, char *part1, char *part2, int flags)); EXTERN void Tcl_UntraceVar _ANSI_ARGS_((Tcl_Interp *interp, char *varName, int flags, Tcl_VarTraceProc *proc, ClientData clientData)); EXTERN void Tcl_UntraceVar2 _ANSI_ARGS_((Tcl_Interp *interp, char *part1, char *part2, int flags, Tcl_VarTraceProc *proc, ClientData clientData)); EXTERN void Tcl_UpdateLinkedVar _ANSI_ARGS_((Tcl_Interp *interp, char *varName)); EXTERN int Tcl_UpVar _ANSI_ARGS_((Tcl_Interp *interp, char *frameName, char *varName, char *localName, int flags)); EXTERN int Tcl_UpVar2 _ANSI_ARGS_((Tcl_Interp *interp, char *frameName, char *part1, char *part2, char *localName, int flags)); EXTERN int Tcl_VarEval _ANSI_ARGS_( TCL_VARARGS(Tcl_Interp *,interp)); EXTERN ClientData Tcl_VarTraceInfo _ANSI_ARGS_((Tcl_Interp *interp, char *varName, int flags, Tcl_VarTraceProc *procPtr, ClientData prevClientData)); EXTERN ClientData Tcl_VarTraceInfo2 _ANSI_ARGS_((Tcl_Interp *interp, char *part1, char *part2, int flags, Tcl_VarTraceProc *procPtr, ClientData prevClientData)); EXTERN int Tcl_WaitForEvent _ANSI_ARGS_((Tcl_Time *timePtr)); EXTERN Tcl_Pid Tcl_WaitPid _ANSI_ARGS_((Tcl_Pid pid, int *statPtr, int options)); EXTERN int Tcl_Write _ANSI_ARGS_((Tcl_Channel chan, char *s, int slen)); EXTERN void Tcl_WrongNumArgs _ANSI_ARGS_((Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[], char *message)); #endif /* RESOURCE_INCLUDED */ #endif /* _TCL */ 0707010006b17f000041ed00004ccf0000000a0000000333f371f700000000000000a30000000400000000000000000000001600000004reloc/SUNWtcl/8.0/lib0707010006c7ec000041ed00004ccf0000000a0000000533f371f800000000000000a30000000400000000000000000000001d00000004reloc/SUNWtcl/8.0/lib/tcl8.00707010006c7ed000081a400004ccf0000000a0000000133f371b2000022f3000000a30000000400000000000000000000002900000004reloc/SUNWtcl/8.0/lib/tcl8.0/history.tcl# history.tcl -- # # Implementation of the history command. # # SCCS: @(#) history.tcl 1.7 97/08/07 16:45:50 # # Copyright (c) 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. # # The tcl::history array holds the history list and # some additional bookkeeping variables. # # nextid the index used for the next history list item. # keep the max size of the history list # oldest the index of the oldest item in the history. namespace eval tcl { variable history if ![info exists history] { array set history { nextid 0 keep 20 oldest -20 } } } # history -- # # This is the main history command. See the man page for its interface. # This does argument checking and calls helper procedures in the # history namespace. proc history {args} { set len [llength $args] if {$len == 0} { return [tcl::HistInfo] } set key [lindex $args 0] set options "add, change, clear, event, info, keep, nextid, or redo" switch -glob -- $key { a* { # history add if {$len > 3} { return -code error "wrong # args: should be \"history add event ?exec?\"" } if {![string match $key* add]} { return -code error "bad option \"$key\": must be $options" } if {$len == 3} { set arg [lindex $args 2] if {! ([string match e* $arg] && [string match $arg* exec])} { return -code error "bad argument \"$arg\": should be \"exec\"" } } return [tcl::HistAdd [lindex $args 1] [lindex $args 2]] } ch* { # history change if {($len > 3) || ($len < 2)} { return -code error "wrong # args: should be \"history change newValue ?event?\"" } if {![string match $key* change]} { return -code error "bad option \"$key\": must be $options" } if {$len == 2} { set event 0 } else { set event [lindex $args 2] } return [tcl::HistChange [lindex $args 1] $event] } cl* { # history clear if {($len > 1)} { return -code error "wrong # args: should be \"history clear\"" } if {![string match $key* clear]} { return -code error "bad option \"$key\": must be $options" } return [tcl::HistClear] } e* { # history event if {$len > 2} { return -code error "wrong # args: should be \"history event ?event?\"" } if {![string match $key* event]} { return -code error "bad option \"$key\": must be $options" } if {$len == 1} { set event -1 } else { set event [lindex $args 1] } return [tcl::HistEvent $event] } i* { # history info if {$len > 2} { return -code error "wrong # args: should be \"history info ?count?\"" } if {![string match $key* info]} { return -code error "bad option \"$key\": must be $options" } return [tcl::HistInfo [lindex $args 1]] } k* { # history keep if {$len > 2} { return -code error "wrong # args: should be \"history keep ?count?\"" } if {$len == 1} { return [tcl::HistKeep] } else { set limit [lindex $args 1] if {[catch {expr $limit}] || ($limit < 0)} { return -code error "illegal keep count \"$limit\"" } return [tcl::HistKeep $limit] } } n* { # history nextid if {$len > 1} { return -code error "wrong # args: should be \"history nextid\"" } if {![string match $key* nextid]} { return -code error "bad option \"$key\": must be $options" } return [expr $tcl::history(nextid) + 1] } r* { # history redo if {$len > 2} { return -code error "wrong # args: should be \"history redo ?event?\"" } if {![string match $key* redo]} { return -code error "bad option \"$key\": must be $options" } return [tcl::HistRedo [lindex $args 1]] } default { return -code error "bad option \"$key\": must be $options" } } } # tcl::HistAdd -- # # Add an item to the history, and optionally eval it at the global scope # # Parameters: # command the command to add # exec (optional) a substring of "exec" causes the # command to be evaled. # Results: # If executing, then the results of the command are returned # # Side Effects: # Adds to the history list proc tcl::HistAdd {command {exec {}}} { variable history set i [incr history(nextid)] set history($i) $command set j [incr history(oldest)] if {[info exists history($j)]} {unset history($j)} if {[string match e* $exec]} { return [uplevel #0 $command] } else { return {} } } # tcl::HistKeep -- # # Set or query the limit on the length of the history list # # Parameters: # limit (optional) the length of the history list # # Results: # If no limit is specified, the current limit is returned # # Side Effects: # Updates history(keep) if a limit is specified proc tcl::HistKeep {{limit {}}} { variable history if {[string length $limit] == 0} { return $history(keep) } else { set oldold $history(oldest) set history(oldest) [expr $history(nextid) - $limit] for {} {$oldold <= $history(oldest)} {incr oldold} { if {[info exists history($oldold)]} {unset history($oldold)} } set history(keep) $limit } } # tcl::HistClear -- # # Erase the history list # # Parameters: # none # # Results: # none # # Side Effects: # Resets the history array, except for the keep limit proc tcl::HistClear {} { variable history set keep $history(keep) unset history array set history [list \ nextid 0 \ keep $keep \ oldest -$keep \ ] } # tcl::HistInfo -- # # Return a pretty-printed version of the history list # # Parameters: # num (optional) the length of the history list to return # # Results: # A formatted history list proc tcl::HistInfo {{num {}}} { variable history if {$num == {}} { set num [expr $history(keep) + 1] } set result {} set newline "" for {set i [expr $history(nextid) - $num + 1]} \ {$i <= $history(nextid)} {incr i} { if ![info exists history($i)] { continue } set cmd [string trimright $history($i) \ \n] regsub -all \n $cmd "\n\t" cmd append result $newline[format "%6d %s" $i $cmd] set newline \n } return $result } # tcl::HistRedo -- # # Fetch the previous or specified event, execute it, and then # replace the current history item with that event. # # Parameters: # event (optional) index of history item to redo. Defaults to -1, # which means the previous event. # # Results: # Those of the command being redone. # # Side Effects: # Replaces the current history list item with the one being redone. proc tcl::HistRedo {{event -1}} { variable history if {[string length $event] == 0} { set event -1 } set i [HistIndex $event] if {$i == $history(nextid)} { return -code error "cannot redo the current event" } set cmd $history($i) HistChange $cmd 0 uplevel #0 $cmd } # tcl::HistIndex -- # # Map from an event specifier to an index in the history list. # # Parameters: # event index of history item to redo. # If this is a positive number, it is used directly. # If it is a negative number, then it counts back to a previous # event, where -1 is the most recent event. # A string can be matched, either by being the prefix of # a command or by matching a command with string match. # # Results: # The index into history, or an error if the index didn't match. proc tcl::HistIndex {event} { variable history if {[catch {expr $event}]} { for {set i $history(nextid)} {[info exists history($i)]} {incr i -1} { if {[string match $event* $history($i)]} { return $i; } if {[string match $event $history($i)]} { return $i; } } return -code error "no event matches \"$event\"" } elseif {$event <= 0} { set i [expr $history(nextid) + $event] } else { set i $event } if {$i <= $history(oldest)} { return -code error "event \"$event\" is too far in the past" } if {$i > $history(nextid)} { return -code error "event \"$event\" hasn't occured yet" } return $i } # tcl::HistEvent -- # # Map from an event specifier to the value in the history list. # # Parameters: # event index of history item to redo. See index for a # description of possible event patterns. # # Results: # The value from the history list. proc tcl::HistEvent {event} { variable history set i [HistIndex $event] if {[info exists history($i)]} { return [string trimright $history($i) \ \n] } else { return ""; } } # tcl::HistChange -- # # Replace a value in the history list. # # Parameters: # cmd The new value to put into the history list. # event (optional) index of history item to redo. See index for a # description of possible event patterns. This defaults # to 0, which specifies the current event. # # Side Effects: # Changes the history list. proc tcl::HistChange {cmd {event 0}} { variable history set i [HistIndex $event] set history($i) $cmd } 0707010006de0f000041ed00004ccf0000000a0000000233f371f700000000000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/lib/tcl8.0/http1.00707010006de10000081a400004ccf0000000a0000000133f371b700002594000000a30000000400000000000000000000002e00000004reloc/SUNWtcl/8.0/lib/tcl8.0/http1.0/http.tcl# http.tcl # Client-side HTTP for GET, POST, and HEAD commands. # These routines can be used in untrusted code that uses the Safesock # security policy. # These procedures use a callback interface to avoid using vwait, # which is not defined in the safe base. # # SCCS: @(#) http.tcl 1.8 97/07/22 13:37:20 # # See the http.n man page for documentation package provide http 1.0 array set http { -accept */* -proxyhost {} -proxyport {} -useragent {Tcl http client package 1.0} -proxyfilter httpProxyRequired } proc http_config {args} { global http set options [lsort [array names http -*]] set usage [join $options ", "] if {[llength $args] == 0} { set result {} foreach name $options { lappend result $name $http($name) } return $result } regsub -all -- - $options {} options set pat ^-([join $options |])$ if {[llength $args] == 1} { set flag [lindex $args 0] if {[regexp -- $pat $flag]} { return $http($flag) } else { return -code error "Unknown option $flag, must be: $usage" } } else { foreach {flag value} $args { if [regexp -- $pat $flag] { set http($flag) $value } else { return -code error "Unknown option $flag, must be: $usage" } } } } proc httpFinish { token {errormsg ""} } { upvar #0 $token state global errorInfo errorCode if {[string length $errormsg] != 0} { set state(error) [list $errormsg $errorInfo $errorCode] set state(status) error } catch {close $state(sock)} catch {after cancel $state(after)} if {[info exists state(-command)]} { if {[catch {eval $state(-command) {$token}} err]} { if {[string length $errormsg] == 0} { set state(error) [list $err $errorInfo $errorCode] set state(status) error } } unset state(-command) } } proc http_reset { token {why reset} } { upvar #0 $token state set state(status) $why catch {fileevent $state(sock) readable {}} httpFinish $token if {[info exists state(error)]} { set errorlist $state(error) unset state(error) eval error $errorlist } } proc http_get { url args } { global http if ![info exists http(uid)] { set http(uid) 0 } set token http#[incr http(uid)] upvar #0 $token state http_reset $token array set state { -blocksize 8192 -validate 0 -headers {} -timeout 0 state header meta {} currentsize 0 totalsize 0 type text/html body {} status "" } set options {-blocksize -channel -command -handler -headers \ -progress -query -validate -timeout} set usage [join $options ", "] regsub -all -- - $options {} options set pat ^-([join $options |])$ foreach {flag value} $args { if [regexp $pat $flag] { # Validate numbers if {[info exists state($flag)] && \ [regexp {^[0-9]+$} $state($flag)] && \ ![regexp {^[0-9]+$} $value]} { return -code error "Bad value for $flag ($value), must be integer" } set state($flag) $value } else { return -code error "Unknown option $flag, can be: $usage" } } if {! [regexp -nocase {^(http://)?([^/:]+)(:([0-9]+))?(/.*)?$} $url \ x proto host y port srvurl]} { error "Unsupported URL: $url" } if {[string length $port] == 0} { set port 80 } if {[string length $srvurl] == 0} { set srvurl / } if {[string length $proto] == 0} { set url http://$url } set state(url) $url if {![catch {$http(-proxyfilter) $host} proxy]} { set phost [lindex $proxy 0] set pport [lindex $proxy 1] } if {$state(-timeout) > 0} { set state(after) [after $state(-timeout) [list http_reset $token timeout]] } if {[info exists phost] && [string length $phost]} { set srvurl $url set s [socket $phost $pport] } else { set s [socket $host $port] } set state(sock) $s # Send data in cr-lf format, but accept any line terminators fconfigure $s -translation {auto crlf} -buffersize $state(-blocksize) # The following is disallowed in safe interpreters, but the socket # is already in non-blocking mode in that case. catch {fconfigure $s -blocking off} set len 0 set how GET if {[info exists state(-query)]} { set len [string length $state(-query)] if {$len > 0} { set how POST } } elseif {$state(-validate)} { set how HEAD } puts $s "$how $srvurl HTTP/1.0" puts $s "Accept: $http(-accept)" puts $s "Host: $host" puts $s "User-Agent: $http(-useragent)" foreach {key value} $state(-headers) { regsub -all \[\n\r\] $value {} value set key [string trim $key] if {[string length $key]} { puts $s "$key: $value" } } if {$len > 0} { puts $s "Content-Length: $len" puts $s "Content-Type: application/x-www-form-urlencoded" puts $s "" fconfigure $s -translation {auto binary} puts $s $state(-query) } else { puts $s "" } flush $s fileevent $s readable [list httpEvent $token] if {! [info exists state(-command)]} { http_wait $token } return $token } proc http_data {token} { upvar #0 $token state return $state(body) } proc http_status {token} { upvar #0 $token state return $state(status) } proc http_code {token} { upvar #0 $token state return $state(http) } proc http_size {token} { upvar #0 $token state return $state(currentsize) } proc httpEvent {token} { upvar #0 $token state set s $state(sock) if [eof $s] then { httpEof $token return } if {$state(state) == "header"} { set n [gets $s line] if {$n == 0} { set state(state) body if ![regexp -nocase ^text $state(type)] { # Turn off conversions for non-text data fconfigure $s -translation binary if {[info exists state(-channel)]} { fconfigure $state(-channel) -translation binary } } if {[info exists state(-channel)] && ![info exists state(-handler)]} { # Initiate a sequence of background fcopies fileevent $s readable {} httpCopyStart $s $token } } elseif {$n > 0} { if [regexp -nocase {^content-type:(.+)$} $line x type] { set state(type) [string trim $type] } if [regexp -nocase {^content-length:(.+)$} $line x length] { set state(totalsize) [string trim $length] } if [regexp -nocase {^([^:]+):(.+)$} $line x key value] { lappend state(meta) $key $value } elseif {[regexp ^HTTP $line]} { set state(http) $line } } } else { if [catch { if {[info exists state(-handler)]} { set n [eval $state(-handler) {$s $token}] } else { set block [read $s $state(-blocksize)] set n [string length $block] if {$n >= 0} { append state(body) $block } } if {$n >= 0} { incr state(currentsize) $n } } err] { httpFinish $token $err } else { if [info exists state(-progress)] { eval $state(-progress) {$token $state(totalsize) $state(currentsize)} } } } } proc httpCopyStart {s token} { upvar #0 $token state if [catch { fcopy $s $state(-channel) -size $state(-blocksize) -command \ [list httpCopyDone $token] } err] { httpFinish $token $err } } proc httpCopyDone {token count} { upvar #0 $token state set s $state(sock) incr state(currentsize) $count if [info exists state(-progress)] { eval $state(-progress) {$token $state(totalsize) $state(currentsize)} } if [eof $s] { httpEof $token } else { httpCopyStart $s $token } } proc httpEof {token} { upvar #0 $token state if {$state(state) == "header"} { # Premature eof set state(status) eof } else { set state(status) ok } set state(state) eof httpFinish $token } proc http_wait {token} { upvar #0 $token state if {![info exists state(status)] || [string length $state(status)] == 0} { vwait $token\(status) } if {[info exists state(error)]} { set errorlist $state(error) unset state(error) eval error $errorlist } return $state(status) } # Call http_formatQuery with an even number of arguments, where the first is # a name, the second is a value, the third is another name, and so on. proc http_formatQuery {args} { set result "" set sep "" foreach i $args { append result $sep [httpMapReply $i] if {$sep != "="} { set sep = } else { set sep & } } return $result } # do x-www-urlencoded character mapping # The spec says: "non-alphanumeric characters are replaced by '%HH'" # 1 leave alphanumerics characters alone # 2 Convert every other character to an array lookup # 3 Escape constructs that are "special" to the tcl parser # 4 "subst" the result, doing all the array substitutions proc httpMapReply {string} { global httpFormMap set alphanumeric a-zA-Z0-9 if ![info exists httpFormMap] { for {set i 1} {$i <= 256} {incr i} { set c [format %c $i] if {![string match \[$alphanumeric\] $c]} { set httpFormMap($c) %[format %.2x $i] } } # These are handled specially array set httpFormMap { " " + \n %0d%0a } } regsub -all \[^$alphanumeric\] $string {$httpFormMap(&)} string regsub -all \n $string {\\n} string regsub -all \t $string {\\t} string regsub -all {[][{})\\]\)} $string {\\&} string return [subst $string] } # Default proxy filter. proc httpProxyRequired {host} { global http if {[info exists http(-proxyhost)] && [string length $http(-proxyhost)]} { if {![info exists http(-proxyport)] || ![string length $http(-proxyport)]} { set http(-proxyport) 8080 } return [list $http(-proxyhost) $http(-proxyport)] } else { return {} } } 0707010006de1b000081a400004ccf0000000a0000000133f371b8000002df000000a30000000400000000000000000000003200000004reloc/SUNWtcl/8.0/lib/tcl8.0/http1.0/pkgIndex.tcl# Tcl package index file, version 1.0 # This file is generated by the "pkg_mkIndex" command # and sourced either when an application starts up or # by a "package unknown" script. It invokes the # "package ifneeded" command to set up package-related # information so that packages will be loaded automatically # in response to "package require" commands. When this # script is sourced, the variable $dir must contain the # full path name of this file's directory. package ifneeded http 1.0 [list tclPkgSetup $dir http 1.0 {{http.tcl source {httpCopyDone httpCopyStart httpEof httpEvent httpFinish httpMapReply httpProxyRequired http_code http_config http_data http_formatQuery http_get http_reset http_size http_status http_wait}}}] 0707010006f420000041ed00004ccf0000000a0000000233f371f800000000000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/lib/tcl8.0/http2.00707010006f421000081a400004ccf0000000a0000000133f371b700002b99000000a30000000400000000000000000000002e00000004reloc/SUNWtcl/8.0/lib/tcl8.0/http2.0/http.tcl# http.tcl -- # # Client-side HTTP for GET, POST, and HEAD commands. # These routines can be used in untrusted code that uses # the Safesock security policy. These procedures use a # callback interface to avoid using vwait, which is not # defined in the safe base. # # See the file "license.terms" for information on usage and # redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # SCCS: @(#) http.tcl 1.6 97/08/07 16:48:32 package provide http 2.0 ;# This uses Tcl namespaces namespace eval http { variable http array set http { -accept */* -proxyhost {} -proxyport {} -useragent {Tcl http client package 2.0} -proxyfilter http::ProxyRequired } variable formMap set alphanumeric a-zA-Z0-9 for {set i 1} {$i <= 256} {incr i} { set c [format %c $i] if {![string match \[$alphanumeric\] $c]} { set formMap($c) %[format %.2x $i] } } # These are handled specially array set formMap { " " + \n %0d%0a } namespace export geturl config reset wait formatQuery # Useful, but not exported: data size status code } # http::config -- # # See documentaion for details. # # Arguments: # args Options parsed by the procedure. # Results: # TODO proc http::config {args} { variable http set options [lsort [array names http -*]] set usage [join $options ", "] if {[llength $args] == 0} { set result {} foreach name $options { lappend result $name $http($name) } return $result } regsub -all -- - $options {} options set pat ^-([join $options |])$ if {[llength $args] == 1} { set flag [lindex $args 0] if {[regexp -- $pat $flag]} { return $http($flag) } else { return -code error "Unknown option $flag, must be: $usage" } } else { foreach {flag value} $args { if [regexp -- $pat $flag] { set http($flag) $value } else { return -code error "Unknown option $flag, must be: $usage" } } } } proc http::Finish { token {errormsg ""} } { variable $token upvar 0 $token state global errorInfo errorCode if {[string length $errormsg] != 0} { set state(error) [list $errormsg $errorInfo $errorCode] set state(status) error } catch {close $state(sock)} catch {after cancel $state(after)} if {[info exists state(-command)]} { if {[catch {eval $state(-command) {$token}} err]} { if {[string length $errormsg] == 0} { set state(error) [list $err $errorInfo $errorCode] set state(status) error } } unset state(-command) } } # http::reset -- # # See documentaion for details. # # Arguments: # token Connection token. # why Status info. # Results: # TODO proc http::reset { token {why reset} } { variable $token upvar 0 $token state set state(status) $why catch {fileevent $state(sock) readable {}} Finish $token if {[info exists state(error)]} { set errorlist $state(error) unset state(error) eval error $errorlist } } # http::geturl -- # # Establishes a connection to a remote url via http. # # Arguments: # url The http URL to goget. # args Option value pairs. Valid options include: # -blocksize, -validate, -headers, -timeout # Results: # Returns a token for this connection. proc http::geturl { url args } { variable http if ![info exists http(uid)] { set http(uid) 0 } set token [namespace current]::[incr http(uid)] variable $token upvar 0 $token state reset $token array set state { -blocksize 8192 -validate 0 -headers {} -timeout 0 state header meta {} currentsize 0 totalsize 0 type text/html body {} status "" } set options {-blocksize -channel -command -handler -headers \ -progress -query -validate -timeout} set usage [join $options ", "] regsub -all -- - $options {} options set pat ^-([join $options |])$ foreach {flag value} $args { if [regexp $pat $flag] { # Validate numbers if {[info exists state($flag)] && \ [regexp {^[0-9]+$} $state($flag)] && \ ![regexp {^[0-9]+$} $value]} { return -code error "Bad value for $flag ($value), must be integer" } set state($flag) $value } else { return -code error "Unknown option $flag, can be: $usage" } } if {! [regexp -nocase {^(http://)?([^/:]+)(:([0-9]+))?(/.*)?$} $url \ x proto host y port srvurl]} { error "Unsupported URL: $url" } if {[string length $port] == 0} { set port 80 } if {[string length $srvurl] == 0} { set srvurl / } if {[string length $proto] == 0} { set url http://$url } set state(url) $url if {![catch {$http(-proxyfilter) $host} proxy]} { set phost [lindex $proxy 0] set pport [lindex $proxy 1] } if {$state(-timeout) > 0} { set state(after) [after $state(-timeout) [list http::reset $token timeout]] } if {[info exists phost] && [string length $phost]} { set srvurl $url set s [socket $phost $pport] } else { set s [socket $host $port] } set state(sock) $s # Send data in cr-lf format, but accept any line terminators fconfigure $s -translation {auto crlf} -buffersize $state(-blocksize) # The following is disallowed in safe interpreters, but the socket # is already in non-blocking mode in that case. catch {fconfigure $s -blocking off} set len 0 set how GET if {[info exists state(-query)]} { set len [string length $state(-query)] if {$len > 0} { set how POST } } elseif {$state(-validate)} { set how HEAD } puts $s "$how $srvurl HTTP/1.0" puts $s "Accept: $http(-accept)" puts $s "Host: $host" puts $s "User-Agent: $http(-useragent)" foreach {key value} $state(-headers) { regsub -all \[\n\r\] $value {} value set key [string trim $key] if {[string length $key]} { puts $s "$key: $value" } } if {$len > 0} { puts $s "Content-Length: $len" puts $s "Content-Type: application/x-www-form-urlencoded" puts $s "" fconfigure $s -translation {auto binary} puts $s $state(-query) } else { puts $s "" } flush $s fileevent $s readable [list http::Event $token] if {! [info exists state(-command)]} { wait $token } return $token } # Data access functions: # Data - the URL data # Status - the transaction status: ok, reset, eof, timeout # Code - the HTTP transaction code, e.g., 200 # Size - the size of the URL data proc http::data {token} { variable $token upvar 0 $token state return $state(body) } proc http::status {token} { variable $token upvar 0 $token state return $state(status) } proc http::code {token} { variable $token upvar 0 $token state return $state(http) } proc http::size {token} { variable $token upvar 0 $token state return $state(currentsize) } proc http::Event {token} { variable $token upvar 0 $token state set s $state(sock) if [::eof $s] then { Eof $token return } if {$state(state) == "header"} { set n [gets $s line] if {$n == 0} { set state(state) body if ![regexp -nocase ^text $state(type)] { # Turn off conversions for non-text data fconfigure $s -translation binary if {[info exists state(-channel)]} { fconfigure $state(-channel) -translation binary } } if {[info exists state(-channel)] && ![info exists state(-handler)]} { # Initiate a sequence of background fcopies fileevent $s readable {} CopyStart $s $token } } elseif {$n > 0} { if [regexp -nocase {^content-type:(.+)$} $line x type] { set state(type) [string trim $type] } if [regexp -nocase {^content-length:(.+)$} $line x length] { set state(totalsize) [string trim $length] } if [regexp -nocase {^([^:]+):(.+)$} $line x key value] { lappend state(meta) $key $value } elseif {[regexp ^HTTP $line]} { set state(http) $line } } } else { if [catch { if {[info exists state(-handler)]} { set n [eval $state(-handler) {$s $token}] } else { set block [read $s $state(-blocksize)] set n [string length $block] if {$n >= 0} { append state(body) $block } } if {$n >= 0} { incr state(currentsize) $n } } err] { Finish $token $err } else { if [info exists state(-progress)] { eval $state(-progress) {$token $state(totalsize) $state(currentsize)} } } } } proc http::CopyStart {s token} { variable $token upvar 0 $token state if [catch { fcopy $s $state(-channel) -size $state(-blocksize) -command \ [list http::CopyDone $token] } err] { Finish $token $err } } proc http::CopyDone {token count} { variable $token upvar 0 $token state set s $state(sock) incr state(currentsize) $count if [info exists state(-progress)] { eval $state(-progress) {$token $state(totalsize) $state(currentsize)} } if [::eof $s] { Eof $token } else { CopyStart $s $token } } proc http::Eof {token} { variable $token upvar 0 $token state if {$state(state) == "header"} { # Premature eof set state(status) eof } else { set state(status) ok } set state(state) eof Finish $token } # http::wait -- # # See documentaion for details. # # Arguments: # token Connection token. # Results: # The status after the wait. proc http::wait {token} { variable $token upvar 0 $token state if {![info exists state(status)] || [string length $state(status)] == 0} { vwait $token\(status) } if {[info exists state(error)]} { set errorlist $state(error) unset state(error) eval error $errorlist } return $state(status) } # http::formatQuery -- # # See documentaion for details. # Call http::formatQuery with an even number of arguments, where # the first is a name, the second is a value, the third is another # name, and so on. # # Arguments: # args A list of name-value pairs. # Results: # TODO proc http::formatQuery {args} { set result "" set sep "" foreach i $args { append result $sep [mapReply $i] if {$sep != "="} { set sep = } else { set sep & } } return $result } # do x-www-urlencoded character mapping # The spec says: "non-alphanumeric characters are replaced by '%HH'" # 1 leave alphanumerics characters alone # 2 Convert every other character to an array lookup # 3 Escape constructs that are "special" to the tcl parser # 4 "subst" the result, doing all the array substitutions proc http::mapReply {string} { variable formMap set alphanumeric a-zA-Z0-9 regsub -all \[^$alphanumeric\] $string {$formMap(&)} string regsub -all \n $string {\\n} string regsub -all \t $string {\\t} string regsub -all {[][{})\\]\)} $string {\\&} string return [subst $string] } # Default proxy filter. proc http::ProxyRequired {host} { variable http if {[info exists http(-proxyhost)] && [string length $http(-proxyhost)]} { if {![info exists http(-proxyport)] || ![string length $http(-proxyport)]} { set http(-proxyport) 8080 } return [list $http(-proxyhost) $http(-proxyport)] } else { return {} } } 0707010006f422000081a400004ccf0000000a0000000133f371b700000270000000a30000000400000000000000000000003200000004reloc/SUNWtcl/8.0/lib/tcl8.0/http2.0/pkgIndex.tcl# Tcl package index file, version 1.0 # This file is generated by the "pkg_mkIndex" command # and sourced either when an application starts up or # by a "package unknown" script. It invokes the # "package ifneeded" command to set up package-related # information so that packages will be loaded automatically # in response to "package require" commands. When this # script is sourced, the variable $dir must contain the # full path name of this file's directory. package ifneeded http 2.0 [list tclPkgSetup $dir http 2.0 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait}}}] 0707010006c7ee000081a400004ccf0000000a0000000133f371b300005188000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/lib/tcl8.0/init.tcl# init.tcl -- # # Default system startup file for Tcl-based applications. Defines # "unknown" procedure and auto-load facilities. # # SCCS: @(#) init.tcl 1.86 97/08/08 10:37:39 # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # if {[info commands package] == ""} { error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]" } package require -exact Tcl 8.0 # Compute the auto path to use in this interpreter. # (auto_path could be already set, in safe interps for instance) if {![info exists auto_path]} { if [catch {set auto_path $env(TCLLIBPATH)}] { set auto_path "" } } if {[lsearch -exact $auto_path [info library]] < 0} { lappend auto_path [info library] } catch { foreach dir $tcl_pkgPath { if {[lsearch -exact $auto_path $dir] < 0} { lappend auto_path $dir } } unset dir } # Conditionalize for presence of exec. package unknown tclPkgUnknown if {[info commands exec] == ""} { # Some machines, such as the Macintosh, do not have exec. Also, on all # platforms, safe interpreters do not have exec. set auto_noexec 1 } set errorCode "" set errorInfo "" # Define a log command (which can be overwitten to log errors # differently, specially when stderr is not available) if {[info commands tclLog] == ""} { proc tclLog {string} { catch {puts stderr $string} } } # unknown -- # This procedure is called when a Tcl command is invoked that doesn't # exist in the interpreter. It takes the following steps to make the # command available: # # 1. See if the autoload facility can locate the command in a # Tcl script file. If so, load it and execute it. # 2. If the command was invoked interactively at top-level: # (a) see if the command exists as an executable UNIX program. # If so, "exec" the command. # (b) see if the command requests csh-like history substitution # in one of the common forms !!, !, or ^old^new. If # so, emulate csh's history substitution. # (c) see if the command is a unique abbreviation for another # command. If so, invoke the command. # # Arguments: # args - A list whose elements are the words of the original # command, including the command name. proc unknown args { global auto_noexec auto_noload env unknown_pending tcl_interactive global errorCode errorInfo # Save the values of errorCode and errorInfo variables, since they # may get modified if caught errors occur below. The variables will # be restored just before re-executing the missing command. set savedErrorCode $errorCode set savedErrorInfo $errorInfo set name [lindex $args 0] if ![info exists auto_noload] { # # Make sure we're not trying to load the same proc twice. # if [info exists unknown_pending($name)] { return -code error "self-referential recursion in \"unknown\" for command \"$name\""; } set unknown_pending($name) pending; set ret [catch {auto_load $name} msg] unset unknown_pending($name); if {$ret != 0} { return -code $ret -errorcode $errorCode \ "error while autoloading \"$name\": $msg" } if ![array size unknown_pending] { unset unknown_pending } if $msg { set errorCode $savedErrorCode set errorInfo $savedErrorInfo set code [catch {uplevel 1 $args} msg] if {$code == 1} { # # Strip the last five lines off the error stack (they're # from the "uplevel" command). # set new [split $errorInfo \n] set new [join [lrange $new 0 [expr [llength $new] - 6]] \n] return -code error -errorcode $errorCode \ -errorinfo $new $msg } else { return -code $code $msg } } } if {([info level] == 1) && ([info script] == "") \ && [info exists tcl_interactive] && $tcl_interactive} { if ![info exists auto_noexec] { set new [auto_execok $name] if {$new != ""} { set errorCode $savedErrorCode set errorInfo $savedErrorInfo set redir "" if {[info commands console] == ""} { set redir ">&@stdout <@stdin" } return [uplevel exec $redir $new [lrange $args 1 end]] } } set errorCode $savedErrorCode set errorInfo $savedErrorInfo if {$name == "!!"} { set newcmd [history event] } elseif {[regexp {^!(.+)$} $name dummy event]} { set newcmd [history event $event] } elseif {[regexp {^\^([^^]*)\^([^^]*)\^?$} $name dummy old new]} { set newcmd [history event -1] catch {regsub -all -- $old $newcmd $new newcmd} } if [info exists newcmd] { tclLog $newcmd history change $newcmd 0 return [uplevel $newcmd] } set ret [catch {set cmds [info commands $name*]} msg] if {[string compare $name "::"] == 0} { set name "" } if {$ret != 0} { return -code $ret -errorcode $errorCode \ "error in unknown while checking if \"$name\" is a unique command abbreviation: $msg" } if {[llength $cmds] == 1} { return [uplevel [lreplace $args 0 0 $cmds]] } if {[llength $cmds] != 0} { if {$name == ""} { return -code error "empty command name \"\"" } else { return -code error \ "ambiguous command name \"$name\": [lsort $cmds]" } } } return -code error "invalid command name \"$name\"" } # auto_load -- # Checks a collection of library directories to see if a procedure # is defined in one of them. If so, it sources the appropriate # library file to create the procedure. Returns 1 if it successfully # loaded the procedure, 0 otherwise. # # Arguments: # cmd - Name of the command to find and load. proc auto_load cmd { global auto_index auto_oldpath auto_path env errorInfo errorCode foreach name [list $cmd ::$cmd] { if [info exists auto_index($name)] { uplevel #0 $auto_index($name) return [expr {[info commands $name] != ""}] } } if ![info exists auto_path] { return 0 } if [info exists auto_oldpath] { if {$auto_oldpath == $auto_path} { return 0 } } set auto_oldpath $auto_path # Check if we are a safe interpreter. In that case, we support only # newer format tclIndex files. set issafe [interp issafe] for {set i [expr [llength $auto_path] - 1]} {$i >= 0} {incr i -1} { set dir [lindex $auto_path $i] set f "" if {$issafe} { catch {source [file join $dir tclIndex]} } elseif [catch {set f [open [file join $dir tclIndex]]}] { continue } else { set error [catch { set id [gets $f] if {$id == "# Tcl autoload index file, version 2.0"} { eval [read $f] } elseif {$id == \ "# Tcl autoload index file: each line identifies a Tcl"} { while {[gets $f line] >= 0} { if {([string index $line 0] == "#") || ([llength $line] != 2)} { continue } set name [lindex $line 0] set auto_index($name) \ "source [file join $dir [lindex $line 1]]" } } else { error \ "[file join $dir tclIndex] isn't a proper Tcl index file" } } msg] if {$f != ""} { close $f } if $error { error $msg $errorInfo $errorCode } } } if [info exists auto_index($cmd)] { uplevel #0 $auto_index($cmd) if {[info commands $cmd] != ""} { return 1 } } return 0 } if {[string compare $tcl_platform(platform) windows] == 0} { # auto_execok -- # # Returns string that indicates name of program to execute if # name corresponds to a shell builtin or an executable in the # Windows search path, or "" otherwise. Builds an associative # array auto_execs that caches information about previous checks, # for speed. # # Arguments: # name - Name of a command. # Windows version. # # Note that info executable doesn't work under Windows, so we have to # look for files with .exe, .com, or .bat extensions. Also, the path # may be in the Path or PATH environment variables, and path # components are separated with semicolons, not colons as under Unix. # proc auto_execok name { global auto_execs env tcl_platform if [info exists auto_execs($name)] { return $auto_execs($name) } set auto_execs($name) "" if {[lsearch -exact {cls copy date del erase dir echo mkdir md rename ren rmdir rd time type ver vol} $name] != -1} { return [set auto_execs($name) [list $env(COMSPEC) /c $name]] } if {[llength [file split $name]] != 1} { foreach ext {{} .com .exe .bat} { set file ${name}${ext} if {[file exists $file] && ![file isdirectory $file]} { return [set auto_execs($name) [list $file]] } } return "" } set path "[file dirname [info nameof]];.;" if {[info exists env(WINDIR)]} { set windir $env(WINDIR) } if {[info exists windir]} { if {$tcl_platform(os) == "Windows NT"} { append path "$windir/system32;" } append path "$windir/system;$windir;" } if {[info exists env(PATH)]} { append path $env(PATH) } foreach dir [split $path {;}] { if {$dir == ""} { set dir . } foreach ext {{} .com .exe .bat} { set file [file join $dir ${name}${ext}] if {[file exists $file] && ![file isdirectory $file]} { return [set auto_execs($name) [list $file]] } } } return "" } } else { # auto_execok -- # # Returns string that indicates name of program to execute if # name corresponds to an executable in the path. Builds an associative # array auto_execs that caches information about previous checks, # for speed. # # Arguments: # name - Name of a command. # Unix version. # proc auto_execok name { global auto_execs env if [info exists auto_execs($name)] { return $auto_execs($name) } set auto_execs($name) "" if {[llength [file split $name]] != 1} { if {[file executable $name] && ![file isdirectory $name]} { set auto_execs($name) [list $name] } return $auto_execs($name) } foreach dir [split $env(PATH) :] { if {$dir == ""} { set dir . } set file [file join $dir $name] if {[file executable $file] && ![file isdirectory $file]} { set auto_execs($name) [list $file] return $auto_execs($name) } } return "" } } # auto_reset -- # Destroy all cached information for auto-loading and auto-execution, # so that the information gets recomputed the next time it's needed. # Also delete any procedures that are listed in the auto-load index # except those defined in this file. # # Arguments: # None. proc auto_reset {} { global auto_execs auto_index auto_oldpath foreach p [info procs] { if {[info exists auto_index($p)] && ![string match auto_* $p] && ([lsearch -exact {unknown pkg_mkIndex tclPkgSetup tclPkgUnknown} $p] < 0)} { rename $p {} } } catch {unset auto_execs} catch {unset auto_index} catch {unset auto_oldpath} } # auto_mkindex -- # Regenerate a tclIndex file from Tcl source files. Takes as argument # the name of the directory in which the tclIndex file is to be placed, # followed by any number of glob patterns to use in that directory to # locate all of the relevant files. # # Arguments: # dir - Name of the directory in which to create an index. # args - Any number of additional arguments giving the # names of files within dir. If no additional # are given auto_mkindex will look for *.tcl. proc auto_mkindex {dir args} { global errorCode errorInfo set oldDir [pwd] cd $dir set dir [pwd] append index "# Tcl autoload index file, version 2.0\n" append index "# This file is generated by the \"auto_mkindex\" command\n" append index "# and sourced to set up indexing information for one or\n" append index "# more commands. Typically each line is a command that\n" append index "# sets an element in the auto_index array, where the\n" append index "# element name is the name of a command and the value is\n" append index "# a script that loads the command.\n\n" if {$args == ""} { set args *.tcl } foreach file [eval glob $args] { set f "" set error [catch { set f [open $file] while {[gets $f line] >= 0} { if [regexp {^proc[ ]+([^ ]*)} $line match procName] { append index "set [list auto_index($procName)]" append index " \[list source \[file join \$dir [list $file]\]\]\n" } } close $f } msg] if $error { set code $errorCode set info $errorInfo catch {close $f} cd $oldDir error $msg $info $code } } set f "" set error [catch { set f [open tclIndex w] puts $f $index nonewline close $f cd $oldDir } msg] if $error { set code $errorCode set info $errorInfo catch {close $f} cd $oldDir error $msg $info $code } } # pkg_mkIndex -- # This procedure creates a package index in a given directory. The # package index consists of a "pkgIndex.tcl" file whose contents are # a Tcl script that sets up package information with "package require" # commands. The commands describe all of the packages defined by the # files given as arguments. # # Arguments: # dir - Name of the directory in which to create the index. # args - Any number of additional arguments, each giving # a glob pattern that matches the names of one or # more shared libraries or Tcl script files in # dir. proc pkg_mkIndex {dir args} { global errorCode errorInfo if {[llength $args] == 0} { return -code error "wrong # args: should be\ \"pkg_mkIndex dir pattern ?pattern ...?\""; } append index "# Tcl package index file, version 1.0\n" append index "# This file is generated by the \"pkg_mkIndex\" command\n" append index "# and sourced either when an application starts up or\n" append index "# by a \"package unknown\" script. It invokes the\n" append index "# \"package ifneeded\" command to set up package-related\n" append index "# information so that packages will be loaded automatically\n" append index "# in response to \"package require\" commands. When this\n" append index "# script is sourced, the variable \$dir must contain the\n" append index "# full path name of this file's directory.\n" set oldDir [pwd] cd $dir foreach file [eval glob $args] { # For each file, figure out what commands and packages it provides. # To do this, create a child interpreter, load the file into the # interpreter, and get a list of the new commands and packages # that are defined. Define an empty "package unknown" script so # that there are no recursive package inclusions. set c [interp create] # If Tk is loaded in the parent interpreter, load it into the # child also, in case the extension depends on it. foreach pkg [info loaded] { if {[lindex $pkg 1] == "Tk"} { $c eval {set argv {-geometry +0+0}} load [lindex $pkg 0] Tk $c break } } $c eval [list set file $file] if [catch { $c eval { proc dummy args {} rename package package-orig proc package {what args} { switch -- $what { require { return ; # ignore transitive requires } default { eval package-orig {$what} $args } } } package unknown dummy set origCmds [info commands] set dir "" ;# in case file is pkgIndex.tcl set pkgs "" # Try to load the file if it has the shared library extension, # otherwise source it. It's important not to try to load # files that aren't shared libraries, because on some systems # (like SunOS) the loader will abort the whole application # when it gets an error. if {[string compare [file extension $file] \ [info sharedlibextension]] == 0} { # The "file join ." command below is necessary. Without # it, if the file name has no \'s and we're on UNIX, the # load command will invoke the LD_LIBRARY_PATH search # mechanism, which could cause the wrong file to be used. load [file join . $file] set type load } else { source $file set type source } foreach ns [namespace children] { namespace import ${ns}::* } foreach i [info commands] { set cmds($i) 1 } foreach i $origCmds { catch {unset cmds($i)} } foreach i [array names cmds] { # reverse engineer which namespace a command comes from set absolute [namespace origin $i] if {[string compare ::$i $absolute] != 0} { set cmds($absolute) 1 unset cmds($i) } } foreach i [package names] { if {([string compare [package provide $i] ""] != 0) && ([string compare $i Tcl] != 0) && ([string compare $i Tk] != 0)} { lappend pkgs [list $i [package provide $i]] } } } } msg] { tclLog "error while loading or sourcing $file: $msg" } foreach pkg [$c eval set pkgs] { lappend files($pkg) [list $file [$c eval set type] \ [lsort [$c eval array names cmds]]] } interp delete $c } foreach pkg [lsort [array names files]] { append index "\npackage ifneeded $pkg\ \[list tclPkgSetup \$dir [lrange $pkg 0 0] [lrange $pkg 1 1]\ [list $files($pkg)]\]" } set f [open pkgIndex.tcl w] puts $f $index close $f cd $oldDir } # tclPkgSetup -- # This is a utility procedure use by pkgIndex.tcl files. It is invoked # as part of a "package ifneeded" script. It calls "package provide" # to indicate that a package is available, then sets entries in the # auto_index array so that the package's files will be auto-loaded when # the commands are used. # # Arguments: # dir - Directory containing all the files for this package. # pkg - Name of the package (no version number). # version - Version number for the package, such as 2.1.3. # files - List of files that constitute the package. Each # element is a sub-list with three elements. The first # is the name of a file relative to $dir, the second is # "load" or "source", indicating whether the file is a # loadable binary or a script to source, and the third # is a list of commands defined by this file. proc tclPkgSetup {dir pkg version files} { global auto_index package provide $pkg $version foreach fileInfo $files { set f [lindex $fileInfo 0] set type [lindex $fileInfo 1] foreach cmd [lindex $fileInfo 2] { if {$type == "load"} { set auto_index($cmd) [list load [file join $dir $f] $pkg] } else { set auto_index($cmd) [list source [file join $dir $f]] } } } } # tclMacPkgSearch -- # The procedure is used on the Macintosh to search a given directory for files # with a TEXT resource named "pkgIndex". If it exists it is sourced in to the # interpreter to setup the package database. proc tclMacPkgSearch {dir} { foreach x [glob -nocomplain [file join $dir *.shlb]] { if [file isfile $x] { set res [resource open $x] foreach y [resource list TEXT $res] { if {$y == "pkgIndex"} {source -rsrc pkgIndex} } resource close $res } } } # tclPkgUnknown -- # This procedure provides the default for the "package unknown" function. # It is invoked when a package that's needed can't be found. It scans # the auto_path directories and their immediate children looking for # pkgIndex.tcl files and sources any such files that are found to setup # the package database. (On the Macintosh we also search for pkgIndex # TEXT resources in all files.) # # Arguments: # name - Name of desired package. Not used. # version - Version of desired package. Not used. # exact - Either "-exact" or omitted. Not used. proc tclPkgUnknown {name version {exact {}}} { global auto_path tcl_platform env dir if ![info exists auto_path] { return } if {[info exists dir]} { set save_dir $dir } for {set i [expr [llength $auto_path] - 1]} {$i >= 0} {incr i -1} { # we can't use glob in safe interps, so enclose the following # in a catch statement catch { foreach file [glob -nocomplain [file join [lindex $auto_path $i] \ * pkgIndex.tcl]] { set dir [file dirname $file] if [catch {source $file} msg] { tclLog "error reading package index file $file: $msg" } } } set dir [lindex $auto_path $i] set file [file join $dir pkgIndex.tcl] # safe interps usually don't have "file readable", nor stderr channel if {[interp issafe] || [file readable $file]} { if {[catch {source $file} msg] && ![interp issafe]} { tclLog "error reading package index file $file: $msg" } } # On the Macintosh we also look in the resource fork # of shared libraries # We can't use tclMacPkgSearch in safe interps because it uses glob if {(![interp issafe]) && ($tcl_platform(platform) == "macintosh")} { set dir [lindex $auto_path $i] tclMacPkgSearch $dir foreach x [glob -nocomplain [file join $dir *]] { if [file isdirectory $x] { set dir $x tclMacPkgSearch $dir } } } } if {[info exists save_dir]} { set dir $save_dir } else { unset dir } } 0707010006c7ef000081a400004ccf0000000a0000000133f371b600000a3f000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/lib/tcl8.0/ldAix#!/bin/sh # # ldAix ldCmd ldArg ldArg ... # # This shell script provides a wrapper for ld under AIX in order to # create the .exp file required for linking. Its arguments consist # of the name and arguments that would normally be provided to the # ld command. This script extracts the names of the object files # from the argument list, creates a .exp file describing all of the # symbols exported by those files, and then invokes "ldCmd" to # perform the real link. # # SCCS: @(#) ldAix 1.8 97/02/21 14:50:27 # Extract from the arguments the names of all of the object files. args=$* ofiles="" for i do x=`echo $i | grep '[^.].o$'` if test "$x" != ""; then ofiles="$ofiles $i" fi done # Create the export file from all of the object files, using nm followed # by sed editing. Here are some tricky aspects of this: # # 1. Nm produces different output under AIX 4.1 than under AIX 3.2.5; # the following statements handle both versions. # 2. Use the -g switch to nm instead of -e under 4.1 (this shows just # externals, not statics; -g isn't available under 3.2.5, though). # 3. Eliminate lines that end in ":": these are the names of object # files (relevant in 4.1 only). # 4. Eliminate entries with the "U" key letter; these are undefined # symbols (relevant in 4.1 only). # 5. Eliminate lines that contain the string "0|extern" preceded by space; # in 3.2.5, these are undefined symbols (address 0). # 6. Eliminate lines containing the "unamex" symbol. In 3.2.5, these # are also undefined symbols. # 7. If a line starts with ".", delete the leading ".", since this will # just cause confusion later. # 8. Eliminate everything after the first field in a line, so that we're # left with just the symbol name. nmopts="-g -C" osver=`uname -v` if test $osver -eq 3; then nmopts="-e" fi rm -f lib.exp echo "#! " >lib.exp /usr/ccs/bin/nm $nmopts -h $ofiles | sed -e '/:$/d' -e '/ U /d' -e '/[ ]0|extern/d' -e '/unamex/d' -e 's/^\.//' -e 's/[ |].*//' | sort | uniq >>lib.exp # Extract the name of the object file that we're linking. If it's a .a # file, then link all the objects together into a single file "shr.o" # and then put that into the archive. Otherwise link the object files # directly into the .a file. outputFile=`echo $args | sed -e 's/.*-o \([^ ]*\).*/\1/'` noDotA=`echo $outputFile | sed -e '/\.a$/d'` echo "noDotA=\"$noDotA\"" if test "$noDotA" = "" ; then linkArgs=`echo $args | sed -e 's/-o .*\.a /-o shr.o /'` echo $linkArgs eval $linkArgs echo ar cr $outputFile shr.o ar cr $outputFile shr.o rm -f shr.o else eval $args fi 0707010006c7f0000081a400004ccf0000000a0000000133f371b3000019d5000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/lib/tcl8.0/ldAout.tcl# ldAout.tcl -- # # This "tclldAout" procedure in this script acts as a replacement # for the "ld" command when linking an object file that will be # loaded dynamically into Tcl or Tk using pseudo-static linking. # # Parameters: # The arguments to the script are the command line options for # an "ld" command. # # Results: # The "ld" command is parsed, and the "-o" option determines the # module name. ".a" and ".o" options are accumulated. # The input archives and object files are examined with the "nm" # command to determine whether the modules initialization # entry and safe initialization entry are present. A trivial # C function that locates the entries is composed, compiled, and # its .o file placed before all others in the command; then # "ld" is executed to bind the objects together. # # SCCS: @(#) ldAout.tcl 1.12 96/11/30 17:11:02 # # 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. proc tclLdAout {{cc {}} {shlib_suffix {}} {shlib_cflags none}} { global env global argv if {$cc==""} { set cc $env(CC) } # if only two parameters are supplied there is assumed that the # only shlib_suffix is missing. This parameter is anyway available # as "info sharedlibextension" too, so there is no need to transfer # 3 parameters to the function tclLdAout. For compatibility, this # function now accepts both 2 and 3 parameters. if {$shlib_suffix==""} { set shlib_cflags $env(SHLIB_CFLAGS) } else { if {$shlib_cflags=="none"} { set shlib_cflags $shlib_suffix } } # seenDotO is nonzero if a .o or .a file has been seen set seenDotO 0 # minusO is nonzero if the last command line argument was "-o". set minusO 0 # head has command line arguments up to but not including the first # .o or .a file. tail has the rest of the arguments. set head {} set tail {} # nmCommand is the "nm" command that lists global symbols from the # object files. set nmCommand {|nm -g} # entryProtos is the table of _Init and _SafeInit prototypes found in the # module. set entryProtos {} # entryPoints is the table of _Init and _SafeInit entries found in the # module. set entryPoints {} # libraries is the list of -L and -l flags to the linker. set libraries {} set libdirs {} # Process command line arguments foreach a $argv { if {!$minusO && [regexp {\.[ao]$} $a]} { set seenDotO 1 lappend nmCommand $a } if {$minusO} { set outputFile $a set minusO 0 } elseif {![string compare $a -o]} { set minusO 1 } if [regexp {^-[lL]} $a] { lappend libraries $a if [regexp {^-L} $a] { lappend libdirs [string range $a 2 end] } } elseif {$seenDotO} { lappend tail $a } else { lappend head $a } } lappend libdirs /lib /usr/lib # MIPS -- If there are corresponding G0 libraries, replace the # ordinary ones with the G0 ones. set libs {} foreach lib $libraries { if [regexp {^-l} $lib] { set lname [string range $lib 2 end] foreach dir $libdirs { if [file exists [file join $dir lib${lname}_G0.a]] { set lname ${lname}_G0 break } } lappend libs -l$lname } else { lappend libs $lib } } set libraries $libs # Extract the module name from the "-o" option if {![info exists outputFile]} { error "-o option must be supplied to link a Tcl load module" } set m [file tail $outputFile] if [regexp {\.a$} $outputFile] { set shlib_suffix .a } else { set shlib_suffix "" } if [regexp {\..*$} $outputFile match] { set l [expr [string length $m] - [string length $match]] } else { error "Output file does not appear to have a suffix" } set modName [string tolower [string range $m 0 [expr $l-1]]] if [regexp {^lib} $modName] { set modName [string range $modName 3 end] } if [regexp {[0-9\.]*(_g0)?$} $modName match] { set modName [string range $modName 0 [expr [string length $modName]-[string length $match]-1]] } set modName "[string toupper [string index $modName 0]][string range $modName 1 end]" # Catalog initialization entry points found in the module set f [open $nmCommand r] while {[gets $f l] >= 0} { if [regexp {T[ ]*_?([A-Z][a-z0-9_]*_(Safe)?Init(__FP10Tcl_Interp)?)$} $l trash symbol] { if {![regexp {_?([A-Z][a-z0-9_]*_(Safe)?Init)} $symbol trash s]} { set s $symbol } append entryProtos {extern int } $symbol { (); } \n append entryPoints { } \{ { "} $s {", } $symbol { } \} , \n } } close $f if {$entryPoints==""} { error "No entry point found in objects" } # Compose a C function that resolves the initialization entry points and # embeds the required libraries in the object code. set C {#include } append C \n append C {char TclLoadLibraries_} $modName { [] =} \n append C { "@LIBS: } $libraries {";} \n append C $entryProtos append C {static struct } \{ \n append C { char * name;} \n append C { int (*value)();} \n append C \} {dictionary [] = } \{ \n append C $entryPoints append C { 0, 0 } \n \} \; \n append C {typedef struct Tcl_Interp Tcl_Interp;} \n append C {typedef int Tcl_PackageInitProc (Tcl_Interp *);} \n append C {Tcl_PackageInitProc *} \n append C TclLoadDictionary_ $modName { (symbol)} \n append C { char * symbol;} \n append C {{ int i; for (i = 0; dictionary [i] . name != 0; ++i) { if (!strcmp (symbol, dictionary [i] . name)) { return dictionary [i].value; } } return 0; }} \n # Write the C module and compile it set cFile tcl$modName.c set f [open $cFile w] puts -nonewline $f $C close $f set ccCommand "$cc -c $shlib_cflags $cFile" puts stderr $ccCommand eval exec $ccCommand # Now compose and execute the ld command that packages the module if {$shlib_suffix == ".a"} { set ldCommand "ar cr $outputFile" regsub { -o} $tail {} tail } else { set ldCommand ld foreach item $head { lappend ldCommand $item } } lappend ldCommand tcl$modName.o foreach item $tail { lappend ldCommand $item } puts stderr $ldCommand eval exec $ldCommand if {$shlib_suffix == ".a"} { exec ranlib $outputFile } # Clean up working files exec /bin/rm $cFile [file rootname $cFile].o } 07070100070ad1000041ed00004ccf0000000a0000000233f371f800000000000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/lib/tcl8.0/opt0.107070100070ad2000081a400004ccf0000000a0000000133f371b800007fd0000000a30000000400000000000000000000003100000004reloc/SUNWtcl/8.0/lib/tcl8.0/opt0.1/optparse.tcl# optparse.tcl -- # # (Private) option parsing package # # This might be documented and exported in 8.1 # and some function hopefully moved to the C core for # efficiency, if there is enough demand. (mail! ;-) # # Author: Laurent Demailly - Laurent.Demailly@sun.com - dl@mail.box.eu.org # # Credits: # this is a complete 'over kill' rewrite by me, from a version # written initially with Brent Welch, itself initially # based on work with Steve Uhler. Thanks them ! # # SCCS: @(#) optparse.tcl 1.11 97/08/11 16:39:15 package provide opt 0.1 namespace eval ::tcl { # Exported APIs namespace export OptKeyRegister OptKeyDelete OptKeyError OptKeyParse \ OptProc OptProcArgGiven OptParse \ Lassign Lvarpop Lvarset Lvarincr Lfirst \ SetMax SetMin ################# Example of use / 'user documentation' ################### proc OptCreateTestProc {} { # Defines ::tcl::OptParseTest as a test proc with parsed arguments # (can't be defined before the code below is loaded (before "OptProc")) # Every OptProc give usage information on "procname -help". # Try "tcl::OptParseTest -help" and "tcl::OptParseTest -a" and # then other arguments. # # example of 'valid' call: # ::tcl::OptParseTest save -4 -pr 23 -libsok SybTcl\ # -nostatics false ch1 OptProc OptParseTest { {subcommand -choice {save print} "sub command"} {arg1 3 "some number"} {-aflag} {-intflag 7} {-weirdflag "help string"} {-noStatics "Not ok to load static packages"} {-nestedloading1 true "OK to load into nested slaves"} {-nestedloading2 -boolean true "OK to load into nested slaves"} {-libsOK -choice {Tk SybTcl} "List of packages that can be loaded"} {-precision -int 12 "Number of digits of precision"} {-intval 7 "An integer"} {-scale -float 1.0 "Scale factor"} {-zoom 1.0 "Zoom factor"} {-arbitrary foobar "Arbitrary string"} {-random -string 12 "Random string"} {-listval -list {} "List value"} {-blahflag -blah abc "Funny type"} {arg2 -boolean "a boolean"} {arg3 -choice "ch1 ch2"} {?optarg? -list {} "optional argument"} } { foreach v [info locals] { puts stderr [format "%14s : %s" $v [set $v]] } } } ################### No User serviceable part below ! ############### # You should really not look any further : # The following is private unexported undocumented unblessed... code # time to hit "q" ;-) ! # Hmmm... ok, you really want to know ? # You've been warned... Here it is... # Array storing the parsed descriptions variable OptDesc; array set OptDesc {}; # Next potentially free key id (numeric) variable OptDescN 0; # Inside algorithm/mechanism description: # (not for the faint hearted ;-) # # The argument description is parsed into a "program tree" # It is called a "program" because it is the program used by # the state machine interpreter that use that program to # actually parse the arguments at run time. # # The general structure of a "program" is # notation (pseudo bnf like) # name :== definition defines "name" as being "definition" # { x y z } means list of x, y, and z # x* means x repeated 0 or more time # x+ means "x x*" # x? means optionally x # x | y means x or y # "cccc" means the literal string # # program :== { programCounter programStep* } # # programStep :== program | singleStep # # programCounter :== {"P" integer+ } # # singleStep :== { instruction parameters* } # # instruction :== single element list # # (the difference between singleStep and program is that \ # llength [Lfirst $program] >= 2 # while # llength [Lfirst $singleStep] == 1 # ) # # And for this application: # # singleStep :== { instruction varname {hasBeenSet currentValue} type # typeArgs help } # instruction :== "flags" | "value" # type :== knowType | anyword # knowType :== "string" | "int" | "boolean" | "boolflag" | "float" # | "choice" # # for type "choice" typeArgs is a list of possible choices, the first one # is the default value. for all other types the typeArgs is the default value # # a "boolflag" is the type for a flag whose presence or absence, without # additional arguments means respectively true or false (default flag type). # # programCounter is the index in the list of the currently processed # programStep (thus starting at 1 (0 is {"P" prgCounterValue}). # If it is a list it points toward each currently selected programStep. # (like for "flags", as they are optional, form a set and programStep). # Performance/Implementation issues # --------------------------------- # We use tcl lists instead of arrays because with tcl8.0 # they should start to be much faster. # But this code use a lot of helper procs (like Lvarset) # which are quite slow and would be helpfully optimized # for instance by being written in C. Also our struture # is complex and there is maybe some places where the # string rep might be calculated at great exense. to be checked. # # Parse a given description and saves it here under the given key # generate a unused keyid if not given # proc ::tcl::OptKeyRegister {desc {key ""}} { variable OptDesc; variable OptDescN; if {[string compare $key ""] == 0} { # in case a key given to us as a parameter was a number while {[info exists OptDesc($OptDescN)]} {incr OptDescN} set key $OptDescN; incr OptDescN; } # program counter set program [list [list "P" 1]]; # are we processing flags (which makes a single program step) set inflags 0; set state {}; foreach item $desc { if {$state == "args"} { # more items after 'args'... return -code error "'args' special argument must be the last one"; } set res [OptNormalizeOne $item]; set state [Lfirst $res]; if {$inflags} { if {$state == "flags"} { # add to 'subprogram' lappend flagsprg $res; } else { # put in the flags # structure for flag programs items is a list of # {subprgcounter {prg flag 1} {prg flag 2} {...}} lappend program $flagsprg; # put the other regular stuff lappend program $res; set inflags 0; } } else { if {$state == "flags"} { set inflags 1; # sub program counter + first sub program set flagsprg [list [list "P" 1] $res]; } else { lappend program $res; } } } if {$inflags} { lappend program $flagsprg; } set OptDesc($key) $program; return $key; } # # Free the storage for that given key # proc ::tcl::OptKeyDelete {key} { variable OptDesc; unset OptDesc($key); } # Get the parsed description stored under the given key. proc OptKeyGetDesc {descKey} { variable OptDesc; if {![info exists OptDesc($descKey)]} { return -code error "Unknown option description key \"$descKey\""; } set OptDesc($descKey); } # Parse entry point for ppl who don't want to register with a key, # for instance because the description changes dynamically. # (otherwise one should really use OptKeyRegister once + OptKeyParse # as it is way faster or simply OptProc which does it all) # Assign a temporary key, call OptKeyParse and then free the storage proc ::tcl::OptParse {desc arglist} { set tempkey [OptKeyRegister $desc]; set ret [catch {uplevel [list ::tcl::OptKeyParse $tempkey $arglist]} res]; OptKeyDelete $tempkey; return -code $ret $res; } # Helper function, replacement for proc that both # register the description under a key which is the name of the proc # (and thus unique to that code) # and add a first line to the code to call the OptKeyParse proc # Stores the list of variables that have been actually given by the user # (the other will be sets to their default value) # into local variable named "Args". proc ::tcl::OptProc {name desc body} { set namespace [uplevel namespace current]; if { ([string match $name "::*"]) || ([string compare $namespace "::"]==0)} { # absolute name or global namespace, name is the key set key $name; } else { # we are relative to some non top level namespace: set key "${namespace}::${name}"; } OptKeyRegister $desc $key; uplevel [list proc $name args "set Args \[::tcl::OptKeyParse $key \$args\]\n$body"]; return $key; } # Check that a argument has been given # assumes that "OptProc" has been used as it will check in "Args" list proc ::tcl::OptProcArgGiven {argname} { upvar Args alist; expr {[lsearch $alist $argname] >=0} } ####### # Programs/Descriptions manipulation # Return the instruction word/list of a given step/(sub)program proc OptInstr {lst} { Lfirst $lst; } # Is a (sub) program or a plain instruction ? proc OptIsPrg {lst} { expr {[llength [OptInstr $lst]]>=2} } # Is this instruction a program counter or a real instr proc OptIsCounter {item} { expr {[Lfirst $item]=="P"} } # Current program counter (2nd word of first word) proc OptGetPrgCounter {lst} { Lget $lst {0 1} } # Current program counter (2nd word of first word) proc OptSetPrgCounter {lstName newValue} { upvar $lstName lst; set lst [lreplace $lst 0 0 [concat "P" $newValue]]; } # returns a list of currently selected items. proc OptSelection {lst} { set res {}; foreach idx [lrange [Lfirst $lst] 1 end] { lappend res [Lget $lst $idx]; } return $res; } # Advance to next description proc OptNextDesc {descName} { uplevel [list Lvarincr $descName {0 1}]; } # Get the current description, eventually descend proc OptCurDesc {descriptions} { lindex $descriptions [OptGetPrgCounter $descriptions]; } # get the current description, eventually descend # through sub programs as needed. proc OptCurDescFinal {descriptions} { set item [OptCurDesc $descriptions]; # Descend untill we get the actual item and not a sub program while {[OptIsPrg $item]} { set item [OptCurDesc $item]; } return $item; } # Current final instruction adress proc OptCurAddr {descriptions {start {}}} { set adress [OptGetPrgCounter $descriptions]; lappend start $adress; set item [lindex $descriptions $adress]; if {[OptIsPrg $item]} { return [OptCurAddr $item $start]; } else { return $start; } } # Set the value field of the current instruction proc OptCurSetValue {descriptionsName value} { upvar $descriptionsName descriptions # get the current item full adress set adress [OptCurAddr $descriptions]; # use the 3th field of the item (see OptValue / OptNewInst) lappend adress 2 Lvarset descriptions $adress [list 1 $value]; # ^hasBeenSet flag } # empty state means done/paste the end of the program proc OptState {item} { Lfirst $item } # current state proc OptCurState {descriptions} { OptState [OptCurDesc $descriptions]; } ####### # Arguments manipulation # Returns the argument that has to be processed now proc OptCurrentArg {lst} { Lfirst $lst; } # Advance to next argument proc OptNextArg {argsName} { uplevel [list Lvarpop $argsName]; } ####### # Loop over all descriptions, calling OptDoOne which will # eventually eat all the arguments. proc OptDoAll {descriptionsName argumentsName} { upvar $descriptionsName descriptions upvar $argumentsName arguments; # puts "entered DoAll"; # Nb: the places where "state" can be set are tricky to figure # because DoOne sets the state to flagsValue and return -continue # when needed... set state [OptCurState $descriptions]; # We'll exit the loop in "OptDoOne" or when state is empty. while 1 { set curitem [OptCurDesc $descriptions]; # Do subprograms if needed, call ourselves on the sub branch while {[OptIsPrg $curitem]} { OptDoAll curitem arguments # puts "done DoAll sub"; # Insert back the results in current tree; Lvarset1nc descriptions [OptGetPrgCounter $descriptions]\ $curitem; OptNextDesc descriptions; set curitem [OptCurDesc $descriptions]; set state [OptCurState $descriptions]; } # puts "state = \"$state\" - arguments=($arguments)"; if {[Lempty $state]} { # Nothing left to do, we are done in this branch: break; } # The following statement can make us terminate/continue # as it use return -code {break, continue, return and error} # codes OptDoOne descriptions state arguments; # If we are here, no special return code where issued, # we'll step to next instruction : # puts "new state = \"$state\""; OptNextDesc descriptions; set state [OptCurState $descriptions]; } if {![Lempty $arguments]} { return -code error [OptTooManyArgs $descriptions $arguments]; } } # Process one step for the state machine, # eventually consuming the current argument. proc OptDoOne {descriptionsName stateName argumentsName} { upvar $argumentsName arguments; upvar $descriptionsName descriptions; upvar $stateName state; # the special state/instruction "args" eats all # the remaining args (if any) if {($state == "args")} { OptCurSetValue descriptions $arguments; set arguments {}; # puts "breaking out ('args' state: consuming every reminding args)" return -code break; } if {[Lempty $arguments]} { if {$state == "flags"} { # no argument and no flags : we're done # puts "returning to previous (sub)prg (no more args)"; return -code return; } elseif {$state == "optValue"} { set state next; # not used, for debug only # go to next state return ; } else { return -code error [OptMissingValue $descriptions]; } } else { set arg [OptCurrentArg $arguments]; } switch $state { flags { # A non-dash argument terminates the options, as does -- # Still a flag ? if {![OptIsFlag $arg]} { # don't consume the argument, return to previous prg return -code return; } # consume the flag OptNextArg arguments; if {[string compare "--" $arg] == 0} { # return from 'flags' state return -code return; } set hits [OptHits descriptions $arg]; if {$hits > 1} { return -code error [OptAmbigous $descriptions $arg] } elseif {$hits == 0} { return -code error [OptFlagUsage $descriptions $arg] } set item [OptCurDesc $descriptions]; if {[OptNeedValue $item]} { # we need a value, next state is set state flagValue; } else { OptCurSetValue descriptions 1; } # continue return -code continue; } flagValue - value { set item [OptCurDesc $descriptions]; # Test the values against their required type if [catch {OptCheckType $arg\ [OptType $item] [OptTypeArgs $item]} val] { return -code error [OptBadValue $item $arg $val] } # consume the value OptNextArg arguments; # set the value OptCurSetValue descriptions $val; # go to next state if {$state == "flagValue"} { set state flags return -code continue; } else { set state next; # not used, for debug only return ; # will go on next step } } optValue { set item [OptCurDesc $descriptions]; # Test the values against their required type if ![catch {OptCheckType $arg\ [OptType $item] [OptTypeArgs $item]} val] { # right type, so : # consume the value OptNextArg arguments; # set the value OptCurSetValue descriptions $val; } # go to next state set state next; # not used, for debug only return ; # will go on next step } } # If we reach this point: an unknown # state as been entered ! return -code error "Bug! unknown state in DoOne \"$state\"\ (prg counter [OptGetPrgCounter $descriptions]:\ [OptCurDesc $descriptions])"; } # Parse the options given the key to previously registered description # and arguments list proc ::tcl::OptKeyParse {descKey arglist} { set desc [OptKeyGetDesc $descKey]; # make sure -help always give usage if {[string compare "-help" [string tolower $arglist]] == 0} { return -code error [OptError "Usage information:" $desc 1]; } OptDoAll desc arglist; # Analyse the result # Walk through the tree: OptTreeVars $desc "#[expr [info level]-1]" ; } # determine string length for nice tabulated output proc OptTreeVars {desc level {vnamesLst {}}} { foreach item $desc { if {[OptIsCounter $item]} continue; if {[OptIsPrg $item]} { set vnamesLst [OptTreeVars $item $level $vnamesLst]; } else { set vname [OptVarName $item]; upvar $level $vname var if {[OptHasBeenSet $item]} { # puts "adding $vname" # lets use the input name for the returned list # it is more usefull, for instance you can check that # no flags at all was given with expr # {![string match "*-*" $Args]} lappend vnamesLst [OptName $item]; set var [OptValue $item]; } else { set var [OptDefaultValue $item]; } } } return $vnamesLst } # Check the type of a value # and emit an error if arg is not of the correct type # otherwise returns the canonical value of that arg (ie 0/1 for booleans) proc ::tcl::OptCheckType {arg type {typeArgs ""}} { # puts "checking '$arg' against '$type' ($typeArgs)"; # only types "any", "choice", and numbers can have leading "-" switch -exact -- $type { int { if ![regexp {^(-+)?[0-9]+$} $arg] { error "not an integer" } return $arg; } float { return [expr double($arg)] } script - list { # if llength fail : malformed list if {[llength $arg]==0} { if {[OptIsFlag $arg]} { error "no values with leading -" } } return $arg; } boolean { if ![regexp -nocase {^(true|false|0|1)$} $arg] { error "non canonic boolean" } # convert true/false because expr/if is broken with "!,... if {$arg} { return 1 } else { return 0 } } choice { if {[lsearch -exact $typeArgs $arg] < 0} { error "invalid choice" } return $arg; } any { return $arg; } string - default { if {[OptIsFlag $arg]} { error "no values with leading -" } return $arg } } return neverReached; } # internal utilities # returns the number of flags matching the given arg # sets the (local) prg counter to the list of matches proc OptHits {descName arg} { upvar $descName desc; set hits 0 set hitems {} set i 1; foreach item [lrange $desc 1 end] { set flag [OptName $item] # lets try to match case insensitively if {[string match [string tolower $arg*] [string tolower $flag]]} { lappend hitems $i; incr hits; } incr i; } if {$hits} { OptSetPrgCounter desc $hitems; } return $hits } # Extract fields from the list structure: proc OptName {item} { lindex $item 1; } # proc OptHasBeenSet {item} { Lget $item {2 0}; } # proc OptValue {item} { Lget $item {2 1}; } proc OptIsFlag {name} { string match "-*" $name; } proc OptIsOpt {name} { string match {\?*} $name; } proc OptVarName {item} { set name [OptName $item]; if {[OptIsFlag $name]} { return [string range $name 1 end]; } elseif {[OptIsOpt $name]} { return [string trim $name "?"]; } else { return $name; } } proc OptType {item} { lindex $item 3 } proc OptTypeArgs {item} { lindex $item 4 } proc OptHelp {item} { lindex $item 5 } proc OptNeedValue {item} { string compare [OptType $item] boolflag } proc OptDefaultValue {item} { set val [OptTypeArgs $item] switch -exact -- [OptType $item] { choice {return [lindex $val 0]} boolean - boolflag { # convert back false/true to 0/1 because expr !$bool # is broken.. if {$val} { return 1 } else { return 0 } } } return $val } # Description format error helper proc OptOptUsage {item {what ""}} { return -code error "invalid description format$what: $item\n\ should be a list of {varname|-flagname ?-type? ?defaultvalue?\ ?helpstring?}"; } # Generate a canonical form single instruction proc OptNewInst {state varname type typeArgs help} { list $state $varname [list 0 {}] $type $typeArgs $help; # ^ ^ # | | # hasBeenSet=+ +=currentValue } # Translate one item to canonical form proc OptNormalizeOne {item} { set lg [Lassign $item varname arg1 arg2 arg3]; # puts "called optnormalizeone '$item' v=($varname), lg=$lg"; set isflag [OptIsFlag $varname]; set isopt [OptIsOpt $varname]; if {$isflag} { set state "flags"; } elseif {$isopt} { set state "optValue"; } elseif {[string compare $varname "args"]} { set state "value"; } else { set state "args"; } # apply 'smart' 'fuzzy' logic to try to make # description writer's life easy, and our's difficult : # let's guess the missing arguments :-) switch $lg { 1 { if {$isflag} { return [OptNewInst $state $varname boolflag false ""]; } else { return [OptNewInst $state $varname any "" ""]; } } 2 { # varname default # varname help set type [OptGuessType $arg1] if {[string compare $type "string"] == 0} { if {$isflag} { set type boolflag set def false } else { set type any set def "" } set help $arg1 } else { set help "" set def $arg1 } return [OptNewInst $state $varname $type $def $help]; } 3 { # varname type value # varname value comment if [regexp {^-(.+)$} $arg1 x type] { # flags/optValue as they are optional, need a "value", # on the contrary, for a variable (non optional), # default value is pointless, 'cept for choices : if {$isflag || $isopt || ($type == "choice")} { return [OptNewInst $state $varname $type $arg2 ""]; } else { return [OptNewInst $state $varname $type "" $arg2]; } } else { return [OptNewInst $state $varname\ [OptGuessType $arg1] $arg1 $arg2] } } 4 { if [regexp {^-(.+)$} $arg1 x type] { return [OptNewInst $state $varname $type $arg2 $arg3]; } else { return -code error [OptOptUsage $item]; } } default { return -code error [OptOptUsage $item]; } } } # Auto magic lasy type determination proc OptGuessType {arg} { if [regexp -nocase {^(true|false)$} $arg] { return boolean } if [regexp {^(-+)?[0-9]+$} $arg] { return int } if ![catch {expr double($arg)}] { return float } return string } # Error messages front ends proc OptAmbigous {desc arg} { OptError "ambigous option \"$arg\", choose from:" [OptSelection $desc] } proc OptFlagUsage {desc arg} { OptError "bad flag \"$arg\", must be one of" $desc; } proc OptTooManyArgs {desc arguments} { OptError "too many arguments (unexpected argument(s): $arguments),\ usage:"\ $desc 1 } proc OptParamType {item} { if {[OptIsFlag $item]} { return "flag"; } else { return "parameter"; } } proc OptBadValue {item arg {err {}}} { # puts "bad val err = \"$err\""; OptError "bad value \"$arg\" for [OptParamType $item]"\ [list $item] } proc OptMissingValue {descriptions} { # set item [OptCurDescFinal $descriptions]; set item [OptCurDesc $descriptions]; OptError "no value given for [OptParamType $item] \"[OptName $item]\"\ (use -help for full usage) :"\ [list $item] } proc ::tcl::OptKeyError {prefix descKey} { OptError $prefix [OptKeyGetDesc $descKey]; } # determine string length for nice tabulated output proc OptLengths {desc nlName tlName dlName} { upvar $nlName nl; upvar $tlName tl; upvar $dlName dl; foreach item $desc { if {[OptIsCounter $item]} continue; if {[OptIsPrg $item]} { OptLengths $item nl tl dl } else { SetMax nl [string length [OptName $item]] SetMax tl [string length [OptType $item]] set dv [OptTypeArgs $item]; if {[OptState $item] != "header"} { set dv "($dv)"; } set l [string length $dv]; # limit the space allocated to potentially big "choices" if {([OptType $item] != "choice") || ($l<=12)} { SetMax dl $l } else { if {![info exists dl]} { set dl 0 } } } } } # output the tree proc OptTree {desc nl tl dl} { set res ""; foreach item $desc { if {[OptIsCounter $item]} continue; if {[OptIsPrg $item]} { append res [OptTree $item $nl $tl $dl]; } else { set dv [OptTypeArgs $item]; if {[OptState $item] != "header"} { set dv "($dv)"; } append res [format "\n %-*s %-*s %-*s %s" \ $nl [OptName $item] $tl [OptType $item] \ $dl $dv [OptHelp $item]] } } return $res; } # Give nice usage string proc ::tcl::OptError {prefix desc {header 0}} { # determine length if {$header} { # add faked instruction set h [list [OptNewInst header Var/FlagName Type Value Help]]; lappend h [OptNewInst header ------------ ---- ----- ----]; lappend h [OptNewInst header {( -help} "" "" {gives this help )}] set desc [concat $h $desc] } OptLengths $desc nl tl dl # actually output return "$prefix[OptTree $desc $nl $tl $dl]" } ################ General Utility functions ####################### # # List utility functions # Naming convention: # "Lvarxxx" take the list VARiable name as argument # "Lxxxx" take the list value as argument # (which is not costly with Tcl8 objects system # as it's still a reference and not a copy of the values) # # Is that list empty ? proc ::tcl::Lempty {list} { expr {[llength $list]==0} } # Gets the value of one leaf of a lists tree proc ::tcl::Lget {list indexLst} { if {[llength $indexLst] <= 1} { return [lindex $list $indexLst]; } Lget [lindex $list [Lfirst $indexLst]] [Lrest $indexLst]; } # Sets the value of one leaf of a lists tree # (we use the version that does not create the elements because # it would be even slower... needs to be written in C !) # (nb: there is a non trivial recursive problem with indexes 0, # which appear because there is no difference between a list # of 1 element and 1 element alone : [list "a"] == "a" while # it should be {a} and [listp a] should be 0 while [listp {a b}] would be 1 # and [listp "a b"] maybe 0. listp does not exist either...) proc ::tcl::Lvarset {listName indexLst newValue} { upvar $listName list; if {[llength $indexLst] <= 1} { Lvarset1nc list $indexLst $newValue; } else { set idx [Lfirst $indexLst]; set targetList [lindex $list $idx]; # reduce refcount on targetList (not really usefull now, # could be with optimizing compiler) # Lvarset1 list $idx {}; # recursively replace in targetList Lvarset targetList [Lrest $indexLst] $newValue; # put updated sub list back in the tree Lvarset1nc list $idx $targetList; } } # Set one cell to a value, eventually create all the needed elements # (on level-1 of lists) variable emptyList {} proc ::tcl::Lvarset1 {listName index newValue} { upvar $listName list; if {$index < 0} {return -code error "invalid negative index"} set lg [llength $list]; if {$index >= $lg} { variable emptyList; for {set i $lg} {$i<$index} {incr i} { lappend list $emptyList; } lappend list $newValue; } else { set list [lreplace $list $index $index $newValue]; } } # same as Lvarset1 but no bound checking / creation proc ::tcl::Lvarset1nc {listName index newValue} { upvar $listName list; set list [lreplace $list $index $index $newValue]; } # Increments the value of one leaf of a lists tree # (which must exists) proc ::tcl::Lvarincr {listName indexLst {howMuch 1}} { upvar $listName list; if {[llength $indexLst] <= 1} { Lvarincr1 list $indexLst $howMuch; } else { set idx [Lfirst $indexLst]; set targetList [lindex $list $idx]; # reduce refcount on targetList Lvarset1nc list $idx {}; # recursively replace in targetList Lvarincr targetList [Lrest $indexLst] $howMuch; # put updated sub list back in the tree Lvarset1nc list $idx $targetList; } } # Increments the value of one cell of a list proc ::tcl::Lvarincr1 {listName index {howMuch 1}} { upvar $listName list; set newValue [expr [lindex $list $index]+$howMuch]; set list [lreplace $list $index $index $newValue]; return $newValue; } # Returns the first element of a list proc ::tcl::Lfirst {list} { lindex $list 0 } # Returns the rest of the list minus first element proc ::tcl::Lrest {list} { lrange $list 1 end } # Removes the first element of a list proc ::tcl::Lvarpop {listName} { upvar $listName list; set list [lrange $list 1 end]; } # Same but returns the removed element proc ::tcl::Lvarpop2 {listName} { upvar $listName list; set el [Lfirst $list]; set list [lrange $list 1 end]; return $el; } # Assign list elements to variables and return the length of the list proc ::tcl::Lassign {list args} { # faster than direct blown foreach (which does not byte compile) set i 0; set lg [llength $list]; foreach vname $args { if {$i>=$lg} break uplevel [list set $vname [lindex $list $i]]; incr i; } return $lg; } # Misc utilities # Set the varname to value if value is greater than varname's current value # or if varname is undefined proc ::tcl::SetMax {varname value} { upvar 1 $varname var if {![info exists var] || $value > $var} { set var $value } } # Set the varname to value if value is smaller than varname's current value # or if varname is undefined proc ::tcl::SetMin {varname value} { upvar 1 $varname var if {![info exists var] || $value < $var} { set var $value } } # everything loaded fine, lets create the test proc: OptCreateTestProc # Don't need the create temp proc anymore: rename OptCreateTestProc {} } 07070100070ad3000081a400004ccf0000000a0000000133f371b900000190000000a30000000400000000000000000000003100000004reloc/SUNWtcl/8.0/lib/tcl8.0/opt0.1/pkgIndex.tcl# Tcl package index file, version 1.0 # This file is NOT generated by the "pkg_mkIndex" command # because if someone just did "package require opt", let's just load # the package now, so they can readily use it # and even "namespace import tcl::*" ... # (tclPkgSetup just makes things slow and do not work so well with namespaces) package ifneeded opt 0.1 [list source [file join $dir optparse.tcl]] 0707010006c7f1000081a400004ccf0000000a0000000133f371b40000035a000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/lib/tcl8.0/parray.tcl# parray: # Print the contents of a global array on stdout. # # SCCS: @(#) parray.tcl 1.9 96/02/16 08:56:44 # # Copyright (c) 1991-1993 The Regents of the University of California. # Copyright (c) 1994 Sun Microsystems, Inc. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # proc parray {a {pattern *}} { upvar 1 $a array if ![array exists array] { error "\"$a\" isn't an array" } set maxl 0 foreach name [lsort [array names array $pattern]] { if {[string length $name] > $maxl} { set maxl [string length $name] } } set maxl [expr {$maxl + [string length $a] + 2}] foreach name [lsort [array names array $pattern]] { set nameString [format %s(%s) $a $name] puts stdout [format "%-*s = %s" $maxl $nameString $array($name)] } } 0707010006c7f2000081a400004ccf0000000a0000000133f371b4000052e8000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/lib/tcl8.0/safe.tcl# safe.tcl -- # # This file provide a safe loading/sourcing mechanism for safe interpreters. # It implements a virtual path mecanism to hide the real pathnames from the # slave. It runs in a master interpreter and sets up data structure and # aliases that will be invoked when used from a slave interpreter. # # See the safe.n man page for details. # # Copyright (c) 1996-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. # # SCCS: @(#) safe.tcl 1.21 97/08/13 15:37:22 # # The implementation is based on namespaces. These naming conventions # are followed: # Private procs starts with uppercase. # Public procs are exported and starts with lowercase # # Needed utilities package package require opt 0.1; # Create the safe namespace namespace eval ::safe { # Exported API: namespace export interp \ interpAddToAccessPath interpFindInAccessPath \ setLogCmd ; # Proto/dummy declarations for auto_mkIndex proc ::safe::interpCreate {} {} proc ::safe::interpInit {} {} proc ::safe::interpConfigure {} {} proc ::safe::interpDelete {} {} # Interface/entry point function and front end for "Create" ::tcl::OptProc interpCreate { {?slave? -name {} "name of the slave (optional)"} {-accessPath -list {} "access path for the slave"} {-noStatics "prevent loading of statically linked pkgs"} {-nestedLoadOk "allow nested loading"} {-deleteHook -script {} "delete hook"} } { InterpCreate $slave $accessPath \ [expr {!$noStatics}] $nestedLoadOk $deleteHook; } # Interface/entry point function and front end for "Init" ::tcl::OptProc interpInit { {slave -name {} "name of the slave"} {-accessPath -list {} "access path for the slave"} {-noStatics "prevent loading of statically linked pkgs"} {-nestedLoadOk "allow nested loading"} {-deleteHook -script {} "delete hook"} } { InterpInit $slave $accessPath \ [expr {!$noStatics}] $nestedLoadOk $deleteHook; } # Interface/entry point function and front end for "Configure" ::tcl::OptProc interpConfigure { {slave -name {} "name of the slave"} {-accessPath -list {} "access path for the slave"} {-noStatics "prevent loading of statically linked pkgs"} {-nestedLoadOk "allow nested loading"} {-deleteHook -script {} "delete hook"} } { # Check that at least one flag was given: if {[string match "*-*" $Args]} { # reconfigure everything (because otherwise you can't # change -noStatics for instance) InterpConfigure $slave $accessPath \ [expr {!$noStatics}] $nestedLoadOk $deleteHook; # auto_reset the slave (to completly synch the new access_path) if {[catch {::interp eval $slave {auto_reset}} msg]} { Log $slave "auto_reset failed: $msg"; } } else { # none was given, lets return current values instead set res {} lappend res [list -accessPath [Set [PathListName $slave]]] if {![Set [StaticsOkName $slave]]} { lappend res "-noStatics" } if {[Set [NestedOkName $slave]]} { lappend res "-nestedLoadOk" } lappend res [list -deleteHook [Set [DeleteHookName $slave]]] join $res } } # # safe::InterpCreate : doing the real job # # This procedure creates a safe slave and initializes it with the # safe base aliases. # NB: slave name must be simple alphanumeric string, no spaces, # no (), no {},... {because the state array is stored as part of the name} # # Returns the slave name. # # Optional Arguments : # + slave name : if empty, generated name will be used # + access_path: path list controlling where load/source can occur, # if empty: the master auto_path will be used. # + staticsok : flag, if 0 :no static package can be loaded (load {} Xxx) # if 1 :static packages are ok. # + nestedok: flag, if 0 :no loading to sub-sub interps (load xx xx sub) # if 1 : multiple levels are ok. # use the full name and no indent so auto_mkIndex can find us proc ::safe::InterpCreate { slave access_path staticsok nestedok deletehook } { # Create the slave. if {[string compare "" $slave]} { ::interp create -safe $slave; } else { # empty argument: generate slave name set slave [::interp create -safe]; } Log $slave "Created" NOTICE; # Initialize it. (returns slave name) InterpInit $slave $access_path $staticsok $nestedok $deletehook; } # # InterpConfigure (was setAccessPath) : # Sets up slave virtual auto_path and corresponding structure # within the master. Also sets the tcl_library in the slave # to be the first directory in the path. # Nb: If you change the path after the slave has been initialized # you probably need to call "auto_reset" in the slave in order that it # gets the right auto_index() array values. proc ::safe::InterpConfigure {slave access_path staticsok\ nestedok deletehook} { # determine and store the access path if empty if {[string match "" $access_path]} { set access_path [uplevel #0 set auto_path]; # Make sure that tcl_library is in auto_path # and at the first position (needed by setAccessPath) set where [lsearch -exact $access_path [info library]]; if {$where == -1} { # not found, add it. set access_path [concat [list [info library]] $access_path]; Log $slave "tcl_library was not in auto_path,\ added it to slave's access_path" NOTICE; } elseif {$where != 0} { # not first, move it first set access_path [concat [list [info library]]\ [lreplace $access_path $where $where]]; Log $slave "tcl_libray was not in first in auto_path,\ moved it to front of slave's access_path" NOTICE; } # Add 1st level sub dirs (will searched by auto loading from tcl # code in the slave using glob and thus fail, so we add them # here so by default it works the same). set access_path [AddSubDirs $access_path]; } Log $slave "Setting accessPath=($access_path) staticsok=$staticsok\ nestedok=$nestedok deletehook=($deletehook)" NOTICE; # clear old autopath if it existed set nname [PathNumberName $slave]; if {[Exists $nname]} { set n [Set $nname]; for {set i 0} {$i<$n} {incr i} { Unset [PathToken $i $slave]; } } # build new one set slave_auto_path {} set i 0; foreach dir $access_path { Set [PathToken $i $slave] $dir; lappend slave_auto_path "\$[PathToken $i]"; incr i; } Set $nname $i; Set [PathListName $slave] $access_path; Set [VirtualPathListName $slave] $slave_auto_path; Set [StaticsOkName $slave] $staticsok Set [NestedOkName $slave] $nestedok Set [DeleteHookName $slave] $deletehook SyncAccessPath $slave; } # # # FindInAccessPath: # Search for a real directory and returns its virtual Id # (including the "$") proc ::safe::interpFindInAccessPath {slave path} { set access_path [GetAccessPath $slave]; set where [lsearch -exact $access_path $path]; if {$where == -1} { return -code error "$path not found in access path $access_path"; } return "\$[PathToken $where]"; } # # addToAccessPath: # add (if needed) a real directory to access path # and return its virtual token (including the "$"). proc ::safe::interpAddToAccessPath {slave path} { # first check if the directory is already in there if {![catch {interpFindInAccessPath $slave $path} res]} { return $res; } # new one, add it: set nname [PathNumberName $slave]; set n [Set $nname]; Set [PathToken $n $slave] $path; set token "\$[PathToken $n]"; Lappend [VirtualPathListName $slave] $token; Lappend [PathListName $slave] $path; Set $nname [expr $n+1]; SyncAccessPath $slave; return $token; } # This procedure applies the initializations to an already existing # interpreter. It is useful when you want to install the safe base # aliases into a preexisting safe interpreter. proc ::safe::InterpInit { slave access_path staticsok nestedok deletehook } { # Configure will generate an access_path when access_path is # empty. InterpConfigure $slave $access_path $staticsok $nestedok $deletehook; # These aliases let the slave load files to define new commands # NB we need to add [namespace current], aliases are always # absolute paths. ::interp alias $slave source {} [namespace current]::AliasSource $slave ::interp alias $slave load {} [namespace current]::AliasLoad $slave # This alias lets the slave have access to a subset of the 'file' # command functionality. AliasSubset $slave file file dir.* join root.* ext.* tail \ path.* split # This alias interposes on the 'exit' command and cleanly terminates # the slave. ::interp alias $slave exit {} [namespace current]::interpDelete $slave # The allowed slave variables already have been set # by Tcl_MakeSafe(3) # Source init.tcl into the slave, to get auto_load and other # procedures defined: # We don't try to use the -rsrc on the mac because it would get # confusing if you would want to customize init.tcl # for a given set of safe slaves, on all the platforms # you just need to give a specific access_path and # the mac should be no exception. As there is no # obvious full "safe ressources" design nor implementation # for the mac, safe interps there will just don't # have that ability. (A specific app can still reenable # that using custom aliases if they want to). # It would also make the security analysis and the Safe Tcl security # model platform dependant and thus more error prone. if {[catch {::interp eval $slave\ {source [file join $tcl_library init.tcl]}}\ msg]} { Log $slave "can't source init.tcl ($msg)"; error "can't source init.tcl into slave $slave ($msg)" } return $slave } # Add (only if needed, avoid duplicates) 1 level of # sub directories to an existing path list. # Also removes non directories from the returned list. proc AddSubDirs {pathList} { set res {} foreach dir $pathList { if {[file isdirectory $dir]} { # check that we don't have it yet as a children # of a previous dir if {[lsearch -exact $res $dir]<0} { lappend res $dir; } foreach sub [glob -nocomplain -- [file join $dir *]] { if { ([file isdirectory $sub]) && ([lsearch -exact $res $sub]<0) } { # new sub dir, add it ! lappend res $sub; } } } } return $res; } # This procedure deletes a safe slave managed by Safe Tcl and # cleans up associated state: proc ::safe::interpDelete {slave} { Log $slave "About to delete" NOTICE; # If the slave has a cleanup hook registered, call it. # check the existance because we might be called to delete an interp # which has not been registered with us at all set hookname [DeleteHookName $slave]; if {[Exists $hookname]} { set hook [Set $hookname]; if {![::tcl::Lempty $hook]} { # remove the hook now, otherwise if the hook # calls us somehow, we'll loop Unset $hookname; if {[catch {eval $hook $slave} err]} { Log $slave "Delete hook error ($err)"; } } } # Discard the global array of state associated with the slave, and # delete the interpreter. set statename [InterpStateName $slave]; if {[Exists $statename]} { Unset $statename; } # if we have been called twice, the interp might have been deleted # already if {[::interp exists $slave]} { ::interp delete $slave; Log $slave "Deleted" NOTICE; } return } # Set (or get) the loging mecanism proc ::safe::setLogCmd {args} { variable Log; if {[llength $args] == 0} { return $Log; } else { if {[llength $args] == 1} { set Log [lindex $args 0]; } else { set Log $args } } } # internal variable variable Log {} # ------------------- END OF PUBLIC METHODS ------------ # # sets the slave auto_path to the master recorded value. # also sets tcl_library to the first token of the virtual path. # proc SyncAccessPath {slave} { set slave_auto_path [Set [VirtualPathListName $slave]]; ::interp eval $slave [list set auto_path $slave_auto_path]; Log $slave \ "auto_path in $slave has been set to $slave_auto_path"\ NOTICE; ::interp eval $slave [list set tcl_library [lindex $slave_auto_path 0]]; } # base name for storing all the slave states # the array variable name for slave foo is thus "Sfoo" # and for sub slave {foo bar} "Sfoo bar" (spaces are handled # ok everywhere (or should)) # We add the S prefix to avoid that a slave interp called Log # would smash our Log variable. proc InterpStateName {slave} { return "S$slave"; } # returns the virtual token for directory number N # if the slave argument is given, # it will return the corresponding master global variable name proc PathToken {n {slave ""}} { if {[string compare "" $slave]} { return "[InterpStateName $slave](access_path,$n)"; } else { # We need to have a ":" in the token string so # [file join] on the mac won't turn it into a relative # path. return "p(:$n:)"; } } # returns the variable name of the complete path list proc PathListName {slave} { return "[InterpStateName $slave](access_path)"; } # returns the variable name of the complete path list proc VirtualPathListName {slave} { return "[InterpStateName $slave](access_path_slave)"; } # returns the variable name of the number of items proc PathNumberName {slave} { return "[InterpStateName $slave](access_path,n)"; } # returns the staticsok flag var name proc StaticsOkName {slave} { return "[InterpStateName $slave](staticsok)"; } # returns the nestedok flag var name proc NestedOkName {slave} { return "[InterpStateName $slave](nestedok)"; } # Run some code at the namespace toplevel proc Toplevel {args} { namespace eval [namespace current] $args; } # set/get values proc Set {args} { eval Toplevel set $args; } # lappend on toplevel vars proc Lappend {args} { eval Toplevel lappend $args; } # unset a var/token (currently just an global level eval) proc Unset {args} { eval Toplevel unset $args; } # test existance proc Exists {varname} { Toplevel info exists $varname; } # short cut for access path getting proc GetAccessPath {slave} { Set [PathListName $slave] } # short cut for statics ok flag getting proc StaticsOk {slave} { Set [StaticsOkName $slave] } # short cut for getting the multiples interps sub loading ok flag proc NestedOk {slave} { Set [NestedOkName $slave] } # interp deletion storing hook name proc DeleteHookName {slave} { return [InterpStateName $slave](cleanupHook) } # # translate virtual path into real path # proc TranslatePath {slave path} { # somehow strip the namespaces 'functionality' out (the danger # is that we would strip valid macintosh "../" queries... : if {[regexp {(::)|(\.\.)} $path]} { error "invalid characters in path $path"; } set n [expr [Set [PathNumberName $slave]]-1]; for {} {$n>=0} {incr n -1} { # fill the token virtual names with their real value set [PathToken $n] [Set [PathToken $n $slave]]; } # replaces the token by their value subst -nobackslashes -nocommands $path; } # Log eventually log an error # to enable error logging, set Log to {puts stderr} for instance proc Log {slave msg {type ERROR}} { variable Log; if {[info exists Log] && [llength $Log]} { eval $Log [list "$type for slave $slave : $msg"]; } } # file name control (limit access to files/ressources that should be # a valid tcl source file) proc CheckFileName {slave file} { # limit what can be sourced to .tcl # and forbid files with more than 1 dot and # longer than 14 chars set ftail [file tail $file]; if {[string length $ftail]>14} { error "$ftail: filename too long"; } if {[regexp {\..*\.} $ftail]} { error "$ftail: more than one dot is forbidden"; } if {[string compare $ftail "tclIndex"] && \ [string compare [string tolower [file extension $ftail]]\ ".tcl"]} { error "$ftail: must be a *.tcl or tclIndex"; } if {![file exists $file]} { # don't tell the file path error "no such file or directory"; } if {![file readable $file]} { # don't tell the file path error "not readable"; } } # AliasSource is the target of the "source" alias in safe interpreters. proc AliasSource {slave args} { set argc [llength $args]; # Allow only "source filename" # (and not mac specific -rsrc for instance - see comment in ::init # for current rationale) if {$argc != 1} { set msg "wrong # args: should be \"source fileName\"" Log $slave "$msg ($args)"; return -code error $msg; } set file [lindex $args 0] # get the real path from the virtual one. if {[catch {set file [TranslatePath $slave $file]} msg]} { Log $slave $msg; return -code error "permission denied" } # check that the path is in the access path of that slave if {[catch {FileInAccessPath $slave $file} msg]} { Log $slave $msg; return -code error "permission denied" } # do the checks on the filename : if {[catch {CheckFileName $slave $file} msg]} { Log $slave "$file:$msg"; return -code error $msg; } # passed all the tests , lets source it: if {[catch {::interp invokehidden $slave source $file} msg]} { Log $slave $msg; return -code error "script error"; } return $msg } # AliasLoad is the target of the "load" alias in safe interpreters. proc AliasLoad {slave file args} { set argc [llength $args]; if {$argc > 2} { set msg "load error: too many arguments"; Log $slave "$msg ($argc) {$file $args}"; return -code error $msg; } # package name (can be empty if file is not). set package [lindex $args 0]; # Determine where to load. load use a relative interp path # and {} means self, so we can directly and safely use passed arg. set target [lindex $args 1]; if {[string length $target]} { # we will try to load into a sub sub interp # check that we want to authorize that. if {![NestedOk $slave]} { Log $slave "loading to a sub interp (nestedok)\ disabled (trying to load $package to $target)"; return -code error "permission denied (nested load)"; } } # Determine what kind of load is requested if {[string length $file] == 0} { # static package loading if {[string length $package] == 0} { set msg "load error: empty filename and no package name"; Log $slave $msg; return -code error $msg; } if {![StaticsOk $slave]} { Log $slave "static packages loading disabled\ (trying to load $package to $target)"; return -code error "permission denied (static package)"; } } else { # file loading # get the real path from the virtual one. if {[catch {set file [TranslatePath $slave $file]} msg]} { Log $slave $msg; return -code error "permission denied" } # check the translated path if {[catch {FileInAccessPath $slave $file} msg]} { Log $slave $msg; return -code error "permission denied (path)" } } if {[catch {::interp invokehidden\ $slave load $file $package $target} msg]} { Log $slave $msg; return -code error $msg } return $msg } # FileInAccessPath raises an error if the file is not found in # the list of directories contained in the (master side recorded) slave's # access path. # the security here relies on "file dirname" answering the proper # result.... needs checking ? proc FileInAccessPath {slave file} { set access_path [GetAccessPath $slave]; if {[file isdirectory $file]} { error "\"$file\": is a directory" } set parent [file dirname $file] if {[lsearch -exact $access_path $parent] == -1} { error "\"$file\": not in access_path"; } } # This procedure enables access from a safe interpreter to only a subset of # the subcommands of a command: proc Subset {slave command okpat args} { set subcommand [lindex $args 0] if {[regexp $okpat $subcommand]} { return [eval {$command $subcommand} [lrange $args 1 end]] } set msg "not allowed to invoke subcommand $subcommand of $command"; Log $slave $msg; error $msg; } # This procedure installs an alias in a slave that invokes "safesubset" # in the master to execute allowed subcommands. It precomputes the pattern # of allowed subcommands; you can use wildcards in the pattern if you wish # to allow subcommand abbreviation. # # Syntax is: AliasSubset slave alias target subcommand1 subcommand2... proc AliasSubset {slave alias target args} { set pat ^(; set sep "" foreach sub $args { append pat $sep$sub set sep | } append pat )\$ ::interp alias $slave $alias {}\ [namespace current]::Subset $slave $target $pat } } 0707010006c7f3000081a400004ccf0000000a0000000133f371b600000dd2000000a30000000400000000000000000000002a00000004reloc/SUNWtcl/8.0/lib/tcl8.0/tclAppInit.c/* * tclAppInit.c -- * * Provides a default version of the main program and Tcl_AppInit * procedure for Tcl applications (without Tk). * * Copyright (c) 1993 The Regents of the University of California. * Copyright (c) 1994-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. * * SCCS: @(#) tclAppInit.c 1.20 97/03/24 14:29:43 */ #ifdef TCL_XT_TEST #include #endif #include "tcl.h" /* * The following variable is a special hack that is needed in order for * Sun shared libraries to be used for Tcl. */ extern int matherr(); int *tclDummyMathPtr = (int *) matherr; #ifdef TCL_TEST EXTERN int TclObjTest_Init _ANSI_ARGS_((Tcl_Interp *interp)); EXTERN int Tcltest_Init _ANSI_ARGS_((Tcl_Interp *interp)); #endif /* TCL_TEST */ #ifdef TCL_XT_TEST EXTERN int Tclxttest_Init _ANSI_ARGS_((Tcl_Interp *interp)); #endif /* *---------------------------------------------------------------------- * * main -- * * This is the main program for the application. * * Results: * None: Tcl_Main never returns here, so this procedure never * returns either. * * Side effects: * Whatever the application does. * *---------------------------------------------------------------------- */ int main(argc, argv) int argc; /* Number of command-line arguments. */ char **argv; /* Values of command-line arguments. */ { #ifdef TCL_XT_TEST XtToolkitInitialize(); #endif Tcl_Main(argc, argv, Tcl_AppInit); return 0; /* Needed only to prevent compiler warning. */ } /* *---------------------------------------------------------------------- * * Tcl_AppInit -- * * This procedure performs application-specific initialization. * Most applications, especially those that incorporate additional * packages, will have their own version of this procedure. * * Results: * Returns a standard Tcl completion code, and leaves an error * message in interp->result if an error occurs. * * Side effects: * Depends on the startup script. * *---------------------------------------------------------------------- */ int Tcl_AppInit(interp) Tcl_Interp *interp; /* Interpreter for application. */ { if (Tcl_Init(interp) == TCL_ERROR) { return TCL_ERROR; } #ifdef TCL_TEST #ifdef TCL_XT_TEST if (Tclxttest_Init(interp) == TCL_ERROR) { return TCL_ERROR; } #endif if (Tcltest_Init(interp) == TCL_ERROR) { return TCL_ERROR; } Tcl_StaticPackage(interp, "Tcltest", Tcltest_Init, (Tcl_PackageInitProc *) NULL); if (TclObjTest_Init(interp) == TCL_ERROR) { return TCL_ERROR; } #endif /* TCL_TEST */ /* * Call the init procedures for included packages. Each call should * look like this: * * if (Mod_Init(interp) == TCL_ERROR) { * return TCL_ERROR; * } * * where "Mod" is the name of the module. */ /* * Call Tcl_CreateCommand for application-specific commands, if * they weren't already created by the init procedures called above. */ /* * Specify a user-specific startup file to invoke if the application * is run interactively. Typically the startup file is "~/.apprc" * where "app" is the name of the application. If this line is deleted * then no user-specific startup file will be run under any conditions. */ Tcl_SetVar(interp, "tcl_rcFileName", "~/.tclshrc", TCL_GLOBAL_ONLY); return TCL_OK; } 0707010006c7f4000081a400004ccf0000000a0000000133f371b500000875000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/lib/tcl8.0/tclIndex# Tcl autoload index file, version 2.0 # This file is generated by the "auto_mkindex" command # and sourced to set up indexing information for one or # more commands. Typically each line is a command that # sets an element in the auto_index array, where the # element name is the name of a command and the value is # a script that loads the command. set auto_index(unknown) [list source [file join $dir init.tcl]] set auto_index(auto_load) [list source [file join $dir init.tcl]] set auto_index(auto_execok) [list source [file join $dir init.tcl]] set auto_index(auto_execok) [list source [file join $dir init.tcl]] set auto_index(auto_reset) [list source [file join $dir init.tcl]] set auto_index(auto_mkindex) [list source [file join $dir init.tcl]] set auto_index(pkg_mkIndex) [list source [file join $dir init.tcl]] set auto_index(tclPkgSetup) [list source [file join $dir init.tcl]] set auto_index(tclMacPkgSearch) [list source [file join $dir init.tcl]] set auto_index(tclPkgUnknown) [list source [file join $dir init.tcl]] set auto_index(parray) [list source [file join $dir parray.tcl]] set auto_index(tclLdAout) [list source [file join $dir ldAout.tcl]] set auto_index(tcl_wordBreakAfter) [list source [file join $dir word.tcl]] set auto_index(tcl_wordBreakBefore) [list source [file join $dir word.tcl]] set auto_index(tcl_endOfWord) [list source [file join $dir word.tcl]] set auto_index(tcl_startOfNextWord) [list source [file join $dir word.tcl]] set auto_index(tcl_startOfPreviousWord) [list source [file join $dir word.tcl]] set auto_index(::safe::interpCreate) [list source [file join $dir safe.tcl]] set auto_index(::safe::interpInit) [list source [file join $dir safe.tcl]] set auto_index(::safe::interpConfigure) [list source [file join $dir safe.tcl]] set auto_index(::safe::interpDelete) [list source [file join $dir safe.tcl]] set auto_index(::safe::interpFindInAccessPath) [list source [file join $dir safe.tcl]] set auto_index(::safe::interpAddToAccessPath) [list source [file join $dir safe.tcl]] set auto_index(::safe::setLogCmd) [list source [file join $dir safe.tcl]] set auto_index(history) [list source [file join $dir history.tcl]] 0707010006c7f5000081a400004ccf0000000a0000000133f371b50000114e000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/lib/tcl8.0/word.tcl# word.tcl -- # # This file defines various procedures for computing word boundaries # in strings. This file is primarily needed so Tk text and entry # widgets behave properly for different platforms. # # Copyright (c) 1996 by Sun Microsystems, Inc. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # SCCS: @(#) word.tcl 1.2 96/11/20 14:07:22 # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # The following variables are used to determine which characters are # interpreted as white space. if {$tcl_platform(platform) == "windows"} { # Windows style - any but space, tab, or newline set tcl_wordchars "\[^ \t\n\]" set tcl_nonwordchars "\[ \t\n\]" } else { # Motif style - any number, letter, or underscore set tcl_wordchars {[a-zA-Z0-9_]} set tcl_nonwordchars {[^a-zA-Z0-9_]} } # tcl_wordBreakAfter -- # # This procedure returns the index of the first word boundary # after the starting point in the given string, or -1 if there # are no more boundaries in the given string. The index returned refers # to the first character of the pair that comprises a boundary. # # Arguments: # str - String to search. # start - Index into string specifying starting point. proc tcl_wordBreakAfter {str start} { global tcl_nonwordchars tcl_wordchars set str [string range $str $start end] if [regexp -indices "$tcl_wordchars$tcl_nonwordchars|$tcl_nonwordchars$tcl_wordchars" $str result] { return [expr [lindex $result 1] + $start] } return -1 } # tcl_wordBreakBefore -- # # This procedure returns the index of the first word boundary # before the starting point in the given string, or -1 if there # are no more boundaries in the given string. The index returned # refers to the second character of the pair that comprises a boundary. # # Arguments: # str - String to search. # start - Index into string specifying starting point. proc tcl_wordBreakBefore {str start} { global tcl_nonwordchars tcl_wordchars if {[string compare $start end] == 0} { set start [string length $str] } if [regexp -indices "^.*($tcl_wordchars$tcl_nonwordchars|$tcl_nonwordchars$tcl_wordchars)" [string range $str 0 $start] result] { return [lindex $result 1] } return -1 } # tcl_endOfWord -- # # This procedure returns the index of the first end-of-word location # after a starting index in the given string. An end-of-word location # is defined to be the first whitespace character following the first # non-whitespace character after the starting point. Returns -1 if # there are no more words after the starting point. # # Arguments: # str - String to search. # start - Index into string specifying starting point. proc tcl_endOfWord {str start} { global tcl_nonwordchars tcl_wordchars if [regexp -indices "$tcl_nonwordchars*$tcl_wordchars+$tcl_nonwordchars" \ [string range $str $start end] result] { return [expr [lindex $result 1] + $start] } return -1 } # tcl_startOfNextWord -- # # This procedure returns the index of the first start-of-word location # after a starting index in the given string. A start-of-word # location is defined to be a non-whitespace character following a # whitespace character. Returns -1 if there are no more start-of-word # locations after the starting point. # # Arguments: # str - String to search. # start - Index into string specifying starting point. proc tcl_startOfNextWord {str start} { global tcl_nonwordchars tcl_wordchars if [regexp -indices "$tcl_wordchars*$tcl_nonwordchars+$tcl_wordchars" \ [string range $str $start end] result] { return [expr [lindex $result 1] + $start] } return -1 } # tcl_startOfPreviousWord -- # # This procedure returns the index of the first start-of-word location # before a starting index in the given string. # # Arguments: # str - String to search. # start - Index into string specifying starting point. proc tcl_startOfPreviousWord {str start} { global tcl_nonwordchars tcl_wordchars if {[string compare $start end] == 0} { set start [string length $str] } if [regexp -indices \ "$tcl_nonwordchars*($tcl_wordchars+)$tcl_nonwordchars*\$" \ [string range $str 0 [expr $start - 1]] result word] { return [lindex $word 0] } return -1 } 070701000720be000041ed00004ccf0000000a0000000533f371fe00000000000000a30000000400000000000000000000001600000004reloc/SUNWtcl/8.0/man070701000763af000041ed00004ccf0000000a0000000233f371f900000000000000a30000000400000000000000000000001b00000004reloc/SUNWtcl/8.0/man/man1070701000763b0000081a400004ccf0000000a0000000133f371ba0000250e000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/man1/tclsh.1'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) tclsh.1 1.13 96/08/26 13:00:15 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH tclsh 1 "" Tcl "Tcl Applications" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME tclsh \- Simple shell containing Tcl interpreter .SH SYNOPSIS \fBtclsh\fR ?\fIfileName arg arg ...\fR? .BE .SH DESCRIPTION .PP \fBTclsh\fR is a shell-like application that reads Tcl commands from its standard input or from a file and evaluates them. If invoked with no arguments then it runs interactively, reading Tcl commands from standard input and printing command results and error messages to standard output. It runs until the \fBexit\fR command is invoked or until it reaches end-of-file on its standard input. If there exists a file \fB.tclshrc\fR in the home directory of the user, \fBtclsh\fR evaluates the file as a Tcl script just before reading the first command from standard input. .SH "SCRIPT FILES" .PP If \fBtclsh\fR is invoked with arguments then the first argument is the name of a script file and any additional arguments are made available to the script as variables (see below). Instead of reading commands from standard input \fBtclsh\fR will read Tcl commands from the named file; \fBtclsh\fR will exit when it reaches the end of the file. There is no automatic evaluation of \fB.tclshrc\fR in this case, but the script file can always \fBsource\fR it if desired. .PP If you create a Tcl script in a file whose first line is .CS \fB#!/usr/local/bin/tclsh\fR .CE then you can invoke the script file directly from your shell if you mark the file as executable. This assumes that \fBtclsh\fR has been installed in the default location in /usr/local/bin; if it's installed somewhere else then you'll have to modify the above line to match. Many UNIX systems do not allow the \fB#!\fR line to exceed about 30 characters in length, so be sure that the \fBtclsh\fR executable can be accessed with a short file name. .PP An even better approach is to start your script files with the following three lines: .CS \fB#!/bin/sh # the next line restarts using tclsh \e exec tclsh "$0" "$@"\fR .CE This approach has three advantages over the approach in the previous paragraph. First, the location of the \fBtclsh\fR binary doesn't have to be hard-wired into the script: it can be anywhere in your shell search path. Second, it gets around the 30-character file name limit in the previous approach. Third, this approach will work even if \fBtclsh\fR is itself a shell script (this is done on some systems in order to handle multiple architectures or operating systems: the \fBtclsh\fR script selects one of several binaries to run). The three lines cause both \fBsh\fR and \fBtclsh\fR to process the script, but the \fBexec\fR is only executed by \fBsh\fR. \fBsh\fR processes the script first; it treats the second line as a comment and executes the third line. The \fBexec\fR statement cause the shell to stop processing and instead to start up \fBtclsh\fR to reprocess the entire script. When \fBtclsh\fR starts up, it treats all three lines as comments, since the backslash at the end of the second line causes the third line to be treated as part of the comment on the second line. .SH "VARIABLES" .PP \fBTclsh\fR sets the following Tcl variables: .TP 15 \fBargc\fR Contains a count of the number of \fIarg\fR arguments (0 if none), not including the name of the script file. .TP 15 \fBargv\fR Contains a Tcl list whose elements are the \fIarg\fR arguments, in order, or an empty string if there are no \fIarg\fR arguments. .TP 15 \fBargv0\fR Contains \fIfileName\fR if it was specified. Otherwise, contains the name by which \fBtclsh\fR was invoked. .TP 15 \fBtcl_interactive\fR Contains 1 if \fBtclsh\fR is running interactively (no \fIfileName\fR was specified and standard input is a terminal-like device), 0 otherwise. .SH PROMPTS .PP When \fBtclsh\fR is invoked interactively it normally prompts for each command with ``\fB% \fR''. You can change the prompt by setting the variables \fBtcl_prompt1\fR and \fBtcl_prompt2\fR. If variable \fBtcl_prompt1\fR exists then it must consist of a Tcl script to output a prompt; instead of outputting a prompt \fBtclsh\fR will evaluate the script in \fBtcl_prompt1\fR. The variable \fBtcl_prompt2\fR is used in a similar way when a newline is typed but the current command isn't yet complete; if \fBtcl_prompt2\fR isn't set then no prompt is output for incomplete commands. .SH KEYWORDS argument, interpreter, prompt, script file, shell 070701000779b4000041ed00004ccf0000000a0000000233f371fe00000000000000a30000000400000000000000000000001b00000004reloc/SUNWtcl/8.0/man/man3070701000779b5000081a400004ccf0000000a0000000133f371bb00002dcc000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/man/man3/AddErrInfo.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) AddErrInfo.3 1.28 97/06/12 13:39:53 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_AddErrorInfo 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_AddObjErrorInfo, Tcl_AddErrorInfo, Tcl_SetErrorCode, Tcl_PosixError \- record information about errors .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_AddObjErrorInfo\fR(\fIinterp, message, length\fR) .sp \fBTcl_AddErrorInfo\fR(\fIinterp, message\fR) .sp \fBTcl_SetObjErrorCode\fR(\fIinterp, errorObjPtr\fR) .sp \fBTcl_SetErrorCode\fR(\fIinterp, element, element, ... \fB(char *) NULL\fR) .sp char * \fBTcl_PosixError\fR(\fIinterp\fR) .SH ARGUMENTS .AS Tcl_Interp *message .AP Tcl_Interp *interp in Interpreter in which to record information. .AP char *message in For \fBTcl_AddObjErrorInfo\fR, this points to the first byte of an array of bytes containing a string to record in the \fBerrorInfo\fR variable. This byte array may contain embedded null bytes unless \fIlength\fR is negative. For \fBTcl_AddErrorInfo\fR, this is a conventional C string to record in the \fBerrorInfo\fR variable. .AP int length in The number of bytes to copy from \fImessage\fR when setting the \fBerrorInfo\fR variable. If negative, all bytes up to the first null byte are used. .AP Tcl_Obj *errorObjPtr in This variable \fBerrorCode\fR will be set to this value. .AP char *element in String to record as one element of \fBerrorCode\fR variable. Last \fIelement\fR argument must be NULL. .BE .SH DESCRIPTION .PP These procedures are used to manipulate two Tcl global variables that hold information about errors. The variable \fBerrorInfo\fR holds a stack trace of the operations that were in progress when an error occurred, and is intended to be human-readable. The variable \fBerrorCode\fR holds a list of items that are intended to be machine-readable. The first item in \fBerrorCode\fR identifies the class of error that occurred (e.g. POSIX means an error occurred in a POSIX system call) and additional elements in \fBerrorCode\fR hold additional pieces of information that depend on the class. See the Tcl overview manual entry for details on the various formats for \fBerrorCode\fR. .PP The \fBerrorInfo\fR variable is gradually built up as an error unwinds through the nested operations. Each time an error code is returned to \fBTcl_EvalObj\fR (or \fBTcl_Eval\fR, which calls \fBTcl_EvalObj\fR) it calls the procedure \fBTcl_AddObjErrorInfo\fR to add additional text to \fBerrorInfo\fR describing the command that was being executed when the error occurred. By the time the error has been passed all the way back to the application, it will contain a complete trace of the activity in progress when the error occurred. .PP It is sometimes useful to add additional information to \fBerrorInfo\fR beyond what can be supplied automatically by \fBTcl_EvalObj\fR. \fBTcl_AddObjErrorInfo\fR may be used for this purpose: its \fImessage\fR and \fIlength\fR arguments describe an additional string to be appended to \fBerrorInfo\fR. For example, the \fBsource\fR command calls \fBTcl_AddObjErrorInfo\fR to record the name of the file being processed and the line number on which the error occurred; for Tcl procedures, the procedure name and line number within the procedure are recorded, and so on. The best time to call \fBTcl_AddObjErrorInfo\fR is just after \fBTcl_EvalObj\fR has returned \fBTCL_ERROR\fR. In calling \fBTcl_AddObjErrorInfo\fR, you may find it useful to use the \fBerrorLine\fR field of the interpreter (see the \fBTcl_Interp\fR manual entry for details). .PP \fBTcl_AddErrorInfo\fR resembles \fBTcl_AddObjErrorInfo\fR but differs in initializing \fBerrorInfo\fR from the string value of the interpreter's result if the error is just starting to be logged. It does not use the result as a Tcl object so any embedded null characters in the result will cause information to be lost. It also takes a conventional C string in \fImessage\fR instead of \fBTcl_AddObjErrorInfo\fR's counted string. .PP The procedure \fBTcl_SetObjErrorCode\fR is used to set the \fBerrorCode\fR variable. \fIerrorObjPtr\fR contains a list object built up by the caller. \fBerrorCode\fR is set to this value. \fBTcl_SetObjErrorCode\fR is typically invoked just before returning an error in an object command. If an error is returned without calling \fBTcl_SetObjErrorCode\fR or \fBTcl_SetErrorCode\fR the Tcl interpreter automatically sets \fBerrorCode\fR to \fBNONE\fR. .PP The procedure \fBTcl_SetErrorCode\fR is also used to set the \fBerrorCode\fR variable. However, it takes one or more strings to record instead of an object. Otherwise, it is similar to \fBTcl_SetObjErrorCode\fR in behavior. .PP \fBTcl_PosixError\fR sets the \fBerrorCode\fR variable after an error in a POSIX kernel call. It reads the value of the \fBerrno\fR C variable and calls \fBTcl_SetErrorCode\fR to set \fBerrorCode\fR in the \fBPOSIX\fR format. The caller must previously have called \fBTcl_SetErrno\fR to set \fBerrno\fR; this is necessary on some platforms (e.g. Windows) where Tcl is linked into an application as a shared library, or when the error occurs in a dynamically loaded extension. See the manual entry for \fBTcl_SetErrno\fR for more information. .PP \fBTcl_PosixError\fR returns a human-readable diagnostic message for the error (this is the same value that will appear as the third element in \fBerrorCode\fR). It may be convenient to include this string as part of the error message returned to the application in the interpreter's result. .PP It is important to call the procedures described here rather than setting \fBerrorInfo\fR or \fBerrorCode\fR directly with \fBTcl_ObjSetVar2\fR. The reason for this is that the Tcl interpreter keeps information about whether these procedures have been called. For example, the first time \fBTcl_AddObjErrorInfo\fR is called for an error, it clears the existing value of \fBerrorInfo\fR and adds the error message in the interpreter's result to the variable before appending \fImessage\fR; in subsequent calls, it just appends the new \fImessage\fR. When \fBTcl_SetErrorCode\fR is called, it sets a flag indicating that \fBerrorCode\fR has been set; this allows the Tcl interpreter to set \fBerrorCode\fR to \fBNONE\fR if it receives an error return when \fBTcl_SetErrorCode\fR hasn't been called. .PP If the procedure \fBTcl_ResetResult\fR is called, it clears all of the state associated with \fBerrorInfo\fR and \fBerrorCode\fR (but it doesn't actually modify the variables). If an error had occurred, this will clear the error state to make it appear as if no error had occurred after all. .SH "SEE ALSO" Tcl_DecrRefCount, Tcl_IncrRefCount, Tcl_Interp, Tcl_ResetResult, Tcl_SetErrno .SH KEYWORDS error, object, object result, stack, trace, variable 070701000779b6000081a400004ccf0000000a0000000133f371bb00001891000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/man3/Alloc.3'\" '\" Copyright (c) 1995-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) Alloc.3 1.2 96/06/05 18:00:19 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_Alloc 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_Alloc, Tcl_Free, Tcl_Realloc \- allocate or free heap memory .SH SYNOPSIS .nf \fB#include \fR .sp char * \fBTcl_Alloc\fR(\fIsize\fR) .sp \fBTcl_Free\fR(\fIptr\fR) .sp char * \fBTcl_Realloc\fR(\fIptr, size\fR) .SH ARGUMENTS .AS char *size .AP int size in Size in bytes of the memory block to allocate. .AP char *ptr in Pointer to memory block to free or realloc. .BE .SH DESCRIPTION .PP These procedures provide a platform and compiler independent interface for memory allocation. Programs that need to transfer ownership of memory blocks between Tcl and other modules should use these routines rather than the native \fBmalloc()\fR and \fBfree()\fR routines provided by the C run-time library. .PP \fBTcl_Alloc\fR returns a pointer to a block of at least \fIsize\fR bytes suitably aligned for any use. .PP \fBTcl_Free\fR makes the space referred to by \fIptr\fR available for further allocation. .PP \fBTcl_Realloc\fR changes the size of the block pointed to by \fIptr\fR to \fIsize\fR bytes and returns a pointer to the new block. The contents will be unchanged up to the lesser of the new and old sizes. The returned location may be different from \fIptr\fR. .SH KEYWORDS alloc, allocation, free, malloc, memory, realloc 070701000779b7000081a400004ccf0000000a0000000133f371bb000017ed000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/man3/AllowExc.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) AllowExc.3 1.5 96/03/25 19:55:47 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_AllowExceptions 3 7.4 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_AllowExceptions \- allow all exceptions in next script evaluation .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_AllowExceptions\fR(\fIinterp\fR) .SH ARGUMENTS .AS Tcl_Interp *doublePtr .AP Tcl_Interp *interp in Interpreter in which script will be evaluated. .BE .SH DESCRIPTION .PP If a script is evaluated at top-level (i.e. no other scripts are pending evaluation when the script is invoked), and if the script terminates with a completion code other than TCL_OK, TCL_CONTINUE or TCL_RETURN, then Tcl normally converts this into a TCL_ERROR return with an appropriate message. .PP However, if \fBTcl_AllowExceptions\fR is invoked immediately before calling a procedure such as \fBTcl_Eval\fR, then arbitrary completion codes are permitted from the script, and they are returned without modification. This is useful in cases where the caller can deal with exceptions such as TCL_BREAK or TCL_CONTINUE in a meaningful way. .SH KEYWORDS continue, break, exception, interpreter 070701000779b8000081a400004ccf0000000a0000000133f371bb00001d5c000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/man3/AppInit.3'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) AppInit.3 1.10 96/08/26 12:59:40 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_AppInit 3 7.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_AppInit \- perform application-specific initialization .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_AppInit\fR(\fIinterp\fR) .SH ARGUMENTS .AS Tcl_Interp *interp .AP Tcl_Interp *interp in Interpreter for the application. .BE .SH DESCRIPTION .PP \fBTcl_AppInit\fR is a ``hook'' procedure that is invoked by the main programs for Tcl applications such as \fBtclsh\fR and \fBwish\fR. Its purpose is to allow new Tcl applications to be created without modifying the main programs provided as part of Tcl and Tk. To create a new application you write a new version of \fBTcl_AppInit\fR to replace the default version provided by Tcl, then link your new \fBTcl_AppInit\fR with the Tcl library. .PP \fBTcl_AppInit\fR is invoked after by \fBTcl_Main\fR and \fBTk_Main\fR after their own initialization and before entering the main loop to process commands. Here are some examples of things that \fBTcl_AppInit\fR might do: .IP [1] Call initialization procedures for various packages used by the application. Each initialization procedure adds new commands to \fIinterp\fR for its package and performs other package-specific initialization. .IP [2] Process command-line arguments, which can be accessed from the Tcl variables \fBargv\fR and \fBargv0\fR in \fIinterp\fR. .IP [3] Invoke a startup script to initialize the application. .LP \fBTcl_AppInit\fR returns TCL_OK or TCL_ERROR. If it returns TCL_ERROR then it must leave an error message in \fIinterp->result\fR; otherwise the result is ignored. .PP In addition to \fBTcl_AppInit\fR, your application should also contain a procedure \fBmain\fR that calls \fBTcl_Main\fR as follows: .CS Tcl_Main(argc, argv, Tcl_AppInit); .CE The third argument to \fBTcl_Main\fR gives the address of the application-specific initialization procedure to invoke. This means that you don't have to use the name \fBTcl_AppInit\fR for the procedure, but in practice the name is nearly always \fBTcl_AppInit\fR (in versions before Tcl 7.4 the name \fBTcl_AppInit\fR was implicit; there was no way to specify the procedure explicitly). The best way to get started is to make a copy of the file \fBtclAppInit.c\fR from the Tcl library or source directory. It already contains a \fBmain\fR procedure and a template for \fBTcl_AppInit\fR that you can modify for your application. .SH KEYWORDS application, argument, command, initialization, interpreter 070701000779b9000081a400004ccf0000000a0000000133f371bb00002061000000a30000000400000000000000000000002700000004reloc/SUNWtcl/8.0/man/man3/AssocData.3'\" '\" Copyright (c) 1995-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" '\" SCCS: @(#) AssocData.3 1.8 96/03/25 19:56:17 '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_SetAssocData 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_GetAssocData, Tcl_SetAssocData, Tcl_DeleteAssocData \- manage associations of string keys and user specified data with Tcl interpreters. .SH SYNOPSIS .nf \fB#include \fR .sp ClientData \fBTcl_GetAssocData\fR(\fIinterp, key, delProcPtr\fR) .sp \fBTcl_SetAssocData\fR(\fIinterp, key, delProc, clientData\fR) .sp \fBTcl_DeleteAssocData\fR(\fIinterp, key\fR) .SH ARGUMENTS .AS Tcl_InterpDeleteProc *delProcPtr .AP Tcl_Interp *interp in Interpreter in which to execute the specified command. .AP char *key in Key for association with which to store data or from which to delete or retrieve data. Typically the module prefix for a package. .AP Tcl_InterpDeleteProc *delProc in Procedure to call when \fIinterp\fR is deleted. .AP Tcl_InterpDeleteProc **delProcPtr in Pointer to location in which to store address of current deletion procedure for association. Ignored if NULL. .AP ClientData clientData in Arbitrary one-word value associated with the given key in this interpreter. This data is owned by the caller. .BE .SH DESCRIPTION .PP These procedures allow extensions to associate their own data with a Tcl interpreter. An association consists of a string key, typically the name of the extension, and a one-word value, which is typically a pointer to a data structure holding data specific to the extension. Tcl makes no interpretation of either the key or the value for an association. .PP Storage management is facilitated by storing with each association a procedure to call when the interpreter is deleted. This procedure can dispose of the storage occupied by the client's data in any way it sees fit. .PP \fBTcl_SetAssocData\fR creates an association between a string key and a user specified datum in the given interpreter. If there is already an association with the given \fIkey\fR, \fBTcl_SetAssocData\fR overwrites it with the new information. It is up to callers to organize their use of names to avoid conflicts, for example, by using package names as the keys. If the \fIdeleteProc\fR argument is non-NULL it specifies the address of a procedure to invoke if the interpreter is deleted before the association is deleted. \fIDeleteProc\fR should have arguments and result that match the type \fBTcl_InterpDeleteProc\fR: .CS typedef void Tcl_InterpDeleteProc( ClientData \fIclientData\fR, Tcl_Interp *\fIinterp\fR); .CE When \fIdeleteProc\fR is invoked the \fIclientData\fR and \fIinterp\fR arguments will be the same as the corresponding arguments passed to \fBTcl_SetAssocData\fR. The deletion procedure will \fInot\fR be invoked if the association is deleted before the interpreter is deleted. .PP \fBTcl_GetAssocData\fR returns the datum stored in the association with the specified key in the given interpreter, and if the \fIdelProcPtr\fR field is non-\fBNULL\fR, the address indicated by it gets the address of the delete procedure stored with this association. If no association with the specified key exists in the given interpreter \fBTcl_GetAssocData\fR returns \fBNULL\fR. .PP \fBTcl_DeleteAssocData\fR deletes an association with a specified key in the given interpreter. It does not call the deletion procedure. .SH KEYWORDS association, data, deletion procedure, interpreter, key 070701000779ba000081a400004ccf0000000a0000000133f371bc00002b17000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/man3/Async.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) Async.3 1.14 96/08/26 12:59:41 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_AsyncCreate 3 7.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_AsyncCreate, Tcl_AsyncMark, Tcl_AsyncInvoke, Tcl_AsyncDelete \- handle asynchronous events .SH SYNOPSIS .nf \fB#include \fR .sp Tcl_AsyncHandler \fBTcl_AsyncCreate\fR(\fIproc, clientData\fR) .sp \fBTcl_AsyncMark\fR(\fIasync\fR) .sp int \fBTcl_AsyncInvoke\fR(\fIinterp, code\fR) .sp \fBTcl_AsyncDelete\fR(\fIasync\fR) .sp int \fBTcl_AsyncReady\fR() .SH ARGUMENTS .AS Tcl_AsyncHandler clientData .AP Tcl_AsyncProc *proc in Procedure to invoke to handle an asynchronous event. .AP ClientData clientData in One-word value to pass to \fIproc\fR. .AP Tcl_AsyncHandler async in Token for asynchronous event handler. .AP Tcl_Interp *interp in Tcl interpreter in which command was being evaluated when handler was invoked, or NULL if handler was invoked when there was no interpreter active. .AP int code in Completion code from command that just completed in \fIinterp\fR, or 0 if \fIinterp\fR is NULL. .BE .SH DESCRIPTION .PP These procedures provide a safe mechanism for dealing with asynchronous events such as signals. If an event such as a signal occurs while a Tcl script is being evaluated then it isn't safe to take any substantive action to process the event. For example, it isn't safe to evaluate a Tcl script since the interpreter may already be in the middle of evaluating a script; it may not even be safe to allocate memory, since a memory allocation could have been in progress when the event occurred. The only safe approach is to set a flag indicating that the event occurred, then handle the event later when the world has returned to a clean state, such as after the current Tcl command completes. .PP \fBTcl_AsyncCreate\fR creates an asynchronous handler and returns a token for it. The asynchronous handler must be created before any occurrences of the asynchronous event that it is intended to handle (it is not safe to create a handler at the time of an event). When an asynchronous event occurs the code that detects the event (such as a signal handler) should call \fBTcl_AsyncMark\fR with the token for the handler. \fBTcl_AsyncMark\fR will mark the handler as ready to execute, but it will not invoke the handler immediately. Tcl will call the \fIproc\fR associated with the handler later, when the world is in a safe state, and \fIproc\fR can then carry out the actions associated with the asynchronous event. \fIProc\fR should have arguments and result that match the type \fBTcl_AsyncProc\fR: .CS typedef int Tcl_AsyncProc( ClientData \fIclientData\fR, Tcl_Interp *\fIinterp\fR, int \fIcode\fR); .CE The \fIclientData\fR will be the same as the \fIclientData\fR argument passed to \fBTcl_AsyncCreate\fR when the handler was created. If \fIproc\fR is invoked just after a command has completed execution in an interpreter, then \fIinterp\fR will identify the interpreter in which the command was evaluated and \fIcode\fR will be the completion code returned by that command. The command's result will be present in \fIinterp->result\fR. When \fIproc\fR returns, whatever it leaves in \fIinterp->result\fR will be returned as the result of the command and the integer value returned by \fIproc\fR will be used as the new completion code for the command. .PP It is also possible for \fIproc\fR to be invoked when no interpreter is active. This can happen, for example, if an asynchronous event occurs while the application is waiting for interactive input or an X event. In this case \fIinterp\fR will be NULL and \fIcode\fR will be 0, and the return value from \fIproc\fR will be ignored. .PP The procedure \fBTcl_AsyncInvoke\fR is called to invoke all of the handlers that are ready. The procedure \fBTcl_AsyncReady\fR will return non-zero whenever any asynchronous handlers are ready; it can be checked to avoid calls to \fBTcl_AsyncInvoke\fR when there are no ready handlers. Tcl calls \fBTcl_AsyncReady\fR after each command is evaluated and calls \fBTcl_AsyncInvoke\fR if needed. Applications may also call \fBTcl_AsyncInvoke\fR at interesting times for that application. For example, Tcl's event handler calls \fBTcl_AsyncReady\fR after each event and calls \fBTcl_AsyncInvoke\fR if needed. The \fIinterp\fR and \fIcode\fR arguments to \fBTcl_AsyncInvoke\fR have the same meaning as for \fIproc\fR: they identify the active interpreter, if any, and the completion code from the command that just completed. .PP \fBTcl_AsyncDelete\fR removes an asynchronous handler so that its \fIproc\fR will never be invoked again. A handler can be deleted even when ready, and it will still not be invoked. .PP If multiple handlers become active at the same time, the handlers are invoked in the order they were created (oldest handler first). The \fIcode\fR and \fIinterp->result\fR for later handlers reflect the values returned by earlier handlers, so that the most recently created handler has last say about the interpreter's result and completion code. If new handlers become ready while handlers are executing, \fBTcl_AsyncInvoke\fR will invoke them all; at each point it invokes the highest-priority (oldest) ready handler, repeating this over and over until there are no longer any ready handlers. .SH WARNING .PP It is almost always a bad idea for an asynchronous event handler to modify \fIinterp->result\fR or return a code different from its \fIcode\fR argument. This sort of behavior can disrupt the execution of scripts in subtle ways and result in bugs that are extremely difficult to track down. If an asynchronous event handler needs to evaluate Tcl scripts then it should first save \fIinterp->result\fR plus the values of the variables \fBerrorInfo\fR and \fBerrorCode\fR (this can be done, for example, by storing them in dynamic strings). When the asynchronous handler is finished it should restore \fIinterp->result\fR, \fBerrorInfo\fR, and \fBerrorCode\fR, and return the \fIcode\fR argument. .SH KEYWORDS asynchronous event, handler, signal 070701000779bb000081a400004ccf0000000a0000000133f371bc00001b74000000a30000000400000000000000000000002700000004reloc/SUNWtcl/8.0/man/man3/BackgdErr.3'\" '\" Copyright (c) 1992-1994 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) BackgdErr.3 1.3 96/03/25 19:56:51 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_BackgroundError 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_BackgroundError \- report Tcl error that occurred in background processing .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_BackgroundError\fR(\fIinterp\fR) .SH ARGUMENTS .AS Tcl_Interp *interp .AP Tcl_Interp *interp in Interpreter in which the error occurred. .BE .SH DESCRIPTION .PP This procedure is typically invoked when a Tcl error occurs during ``background processing'' such as executing an event handler. When such an error occurs, the error condition is reported to Tcl or to a widget or some other C code, and there is not usually any obvious way for that code to report the error to the user. In these cases the code calls \fBTcl_BackgroundError\fR with an \fIinterp\fR argument identifying the interpreter in which the error occurred. At the time \fBTcl_BackgroundError\fR is invoked, \fIinterp->result\fR is expected to contain an error message. \fBTcl_BackgroundError\fR will invoke the \fBbgerror\fR Tcl command to report the error in an application-specific fashion. If no \fBbgerror\fR command exists, or if it returns with an error condition, then \fBTcl_BackgroundError\fR reports the error itself by printing a message on the standard error file. .PP \fBTcl_BackgroundError\fR does not invoke \fBbgerror\fR immediately because this could potentially interfere with scripts that are in process at the time the error occurred. Instead, it invokes \fBbgerror\fR later as an idle callback. \fBTcl_BackgroundError\fR saves the values of the \fBerrorInfo\fR and \fBerrorCode\fR variables and restores these values just before invoking \fBbgerror\fR. .PP It is possible for many background errors to accumulate before \fBbgerror\fR is invoked. When this happens, each of the errors is processed in order. However, if \fBbgerror\fR returns a break exception, then all remaining error reports for the interpreter are skipped. .SH KEYWORDS background, bgerror, error 070701000779bc000081a400004ccf0000000a0000000133f371bc00001790000000a30000000400000000000000000000002700000004reloc/SUNWtcl/8.0/man/man3/Backslash.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) Backslash.3 1.16 96/03/25 19:57:09 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_Backslash 3 "" Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_Backslash \- parse a backslash sequence .SH SYNOPSIS .nf \fB#include \fR .sp char \fBTcl_Backslash\fR(\fIsrc, countPtr\fR) .SH ARGUMENTS .AS char *countPtr .AP char *src in Pointer to a string starting with a backslash. .AP int *countPtr out If \fIcountPtr\fR isn't NULL, \fI*countPtr\fR gets filled in with number of characters in the backslash sequence, including the backslash character. .BE .SH DESCRIPTION .PP This is a utility procedure used by several of the Tcl commands. It parses a backslash sequence and returns the single character corresponding to the sequence. \fBTcl_Backslash\fR modifies \fI*countPtr\fR to contain the number of characters in the backslash sequence. .PP See the Tcl manual entry for information on the valid backslash sequences. All of the sequences described in the Tcl manual entry are supported by \fBTcl_Backslash\fR. .SH KEYWORDS backslash, parse 070701000779bd000081a400004ccf0000000a0000000133f371bc00001e86000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/man3/BoolObj.3'\" '\" Copyright (c) 1996-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. '\" '\" SCCS: @(#) @(#) BoolObj.3 1.7 97/05/08 19:50:57 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_BooleanObj 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_NewBooleanObj, Tcl_SetBooleanObj, Tcl_GetBooleanFromObj \- manipulate Tcl objects as boolean values .SH SYNOPSIS .nf \fB#include \fR .sp Tcl_Obj * \fBTcl_NewBooleanObj\fR(\fIboolValue\fR) .sp \fBTcl_SetBooleanObj\fR(\fIobjPtr, boolValue\fR) .sp int \fBTcl_GetBooleanFromObj\fR(\fIinterp, objPtr, boolPtr\fR) .SH ARGUMENTS .AS Tcl_Interp *interp .AP int boolValue in Integer value used to initialize or set a boolean object. If the integer is nonzero, the boolean object is set to 1; otherwise the boolean object is set to 0. .AP Tcl_Obj *objPtr in/out For \fBTcl_SetBooleanObj\fR, this points to the object to be converted to boolean type. For \fBTcl_GetBooleanFromObj\fR, this refers to the object from which to get a boolean value; if \fIobjPtr\fR does not already point to a boolean object, an attempt will be made to convert it to one. .AP Tcl_Interp *interp in/out If an error occurs during conversion, an error message is left in the interpreter's result object unless \fIinterp\fR is NULL. .AP int *boolPtr out Points to place where \fBTcl_GetBooleanFromObj\fR stores the boolean value (0 or 1) obtained from \fIobjPtr\fR. .BE .SH DESCRIPTION .PP These procedures are used to create, modify, and read boolean Tcl objects from C code. \fBTcl_NewBooleanObj\fR and \fBTcl_SetBooleanObj\fR will create a new object of boolean type or modify an existing object to have boolean type. Both of these procedures set the object to have the boolean value (0 or 1) specified by \fIboolValue\fR; if \fIboolValue\fR is nonzero, the object is set to 1, otherwise to 0. \fBTcl_NewBooleanObj\fR returns a pointer to a newly created object with reference count zero. Both procedures set the object's type to be boolean and assign the boolean value to the object's internal representation \fIlongValue\fR member. \fBTcl_SetBooleanObj\fR invalidates any old string representation and, if the object is not already a boolean object, frees any old internal representation. .PP \fBTcl_GetBooleanFromObj\fR attempts to return a boolean value from the Tcl object \fIobjPtr\fR. If the object is not already a boolean object, it will attempt to convert it to one. If an error occurs during conversion, it returns \fBTCL_ERROR\fR and leaves an error message in the interpreter's result object unless \fIinterp\fR is NULL. Otherwise, \fBTcl_GetBooleanFromObj\fR returns \fBTCL_OK\fR and stores the boolean value in the address given by \fIboolPtr\fR. If the object is not already a boolean object, the conversion will free any old internal representation. .SH "SEE ALSO" Tcl_NewObj, Tcl_DecrRefCount, Tcl_IncrRefCount, Tcl_GetObjResult .SH KEYWORDS boolean, boolean object, boolean type, internal representation, object, object type, string representation 070701000779be000081a400004ccf0000000a0000000133f371bc00001b0c000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/man3/CallDel.3'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) CallDel.3 1.11 96/03/25 19:57:25 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_CallWhenDeleted 3 7.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_CallWhenDeleted, Tcl_DontCallWhenDeleted \- Arrange for callback when interpreter is deleted .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_CallWhenDeleted\fR(\fIinterp\fR, \fIproc\fR, \fIclientData\fR) .sp \fBTcl_DontCallWhenDeleted\fR(\fIinterp\fR, \fIproc\fR, \fIclientData\fR) .SH ARGUMENTS .AS Tcl_InterpDeleteProc clientData .AP Tcl_Interp *interp in Interpreter with which to associated callback. .AP Tcl_InterpDeleteProc *proc in Procedure to call when \fIinterp\fR is deleted. .AP ClientData clientData in Arbitrary one-word value to pass to \fIproc\fR. .BE .SH DESCRIPTION .PP \fBTcl_CallWhenDeleted\fR arranges for \fIproc\fR to be called by \fBTcl_DeleteInterp\fR if/when \fIinterp\fR is deleted at some future time. \fIProc\fR will be invoked just before the interpreter is deleted, but the interpreter will still be valid at the time of the call. \fIProc\fR should have arguments and result that match the type \fBTcl_InterpDeleteProc\fR: .CS typedef void Tcl_InterpDeleteProc( ClientData \fIclientData\fR, Tcl_Interp *\fIinterp\fR); .CE The \fIclientData\fR and \fIinterp\fR parameters are copies of the \fIclientData\fR and \fIinterp\fR arguments given to \fBTcl_CallWhenDeleted\fR. Typically, \fIclientData\fR points to an application-specific data structure that \fIproc\fR uses to perform cleanup when an interpreter is about to go away. \fIProc\fR does not return a value. .PP \fBTcl_DontCallWhenDeleted\fR cancels a previous call to \fBTcl_CallWhenDeleted\fR with the same arguments, so that \fIproc\fR won't be called after all when \fIinterp\fR is deleted. If there is no deletion callback that matches \fIinterp\fR, \fIproc\fR, and \fIclientData\fR then the call to \fBTcl_DontCallWhenDeleted\fR has no effect. .SH KEYWORDS callback, delete, interpreter 070701000779bf000081a400004ccf0000000a0000000133f371bc00001666000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/man3/CmdCmplt.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) CmdCmplt.3 1.6 96/03/25 19:57:46 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_CommandComplete 3 "" Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_CommandComplete \- Check for unmatched braces in a Tcl command .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_CommandComplete\fR(\fIcmd\fR) .SH ARGUMENTS .AS char *cmd .AP char *cmd in Command string to test for completeness. .BE .SH DESCRIPTION .PP \fBTcl_CommandComplete\fR takes a Tcl command string as argument and determines whether it contains one or more complete commands (i.e. there are no unclosed quotes, braces, brackets, or variable references). If the command string is complete then it returns 1; otherwise it returns 0. .SH KEYWORDS complete command, partial command 070701000779c0000081a400004ccf0000000a0000000133f371bd0000194e000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/man3/Concat.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) Concat.3 1.12 97/06/11 17:54:12 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_Concat 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_Concat \- concatenate a collection of strings .SH SYNOPSIS .nf \fB#include \fR .sp char * \fBTcl_Concat\fR(\fIargc, argv\fR) .SH ARGUMENTS .AP int argc in Number of strings. .AP char *argv[] in Array of strings to concatenate. Must have \fIargc\fR entries. .BE .SH DESCRIPTION .PP \fBTcl_Concat\fR is a utility procedure used by several of the Tcl commands. Given a collection of strings, it concatenates them together into a single string, with the original strings separated by spaces. This procedure behaves differently than \fBTcl_Merge\fR, in that the arguments are simply concatenated: no effort is made to ensure proper list structure. However, in most common usage the arguments will all be proper lists themselves; if this is true, then the result will also have proper list structure. .PP \fBTcl_Concat\fR eliminates leading and trailing white space as it copies strings from \fBargv\fR to the result. If an element of \fBargv\fR consists of nothing but white space, then that string is ignored entirely. This white-space removal was added to make the output of the \fBconcat\fR command cleaner-looking. .PP .VS The result string is dynamically allocated using \fBTcl_Alloc\fR; the caller must eventually release the space by calling \fBTcl_Free\fR. .VE .VS .SH "SEE ALSO" Tcl_ConcatObj .SH KEYWORDS concatenate, strings 070701000779c1000081a400004ccf0000000a0000000133f371bd00006d63000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/man/man3/CrtChannel.3'\" '\" Copyright (c) 1996-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. '\" '\" SCCS: @(#) CrtChannel.3 1.29 97/06/20 13:37:45 '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_CreateChannel 3 8.0 Tcl "Tcl Library Procedures" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME Tcl_CreateChannel, Tcl_GetChannelInstanceData, Tcl_GetChannelType, Tcl_GetChannelName, Tcl_GetChannelHandle, Tcl_GetChannelMode, Tcl_GetChannelBufferSize, Tcl_SetDefaultTranslation, Tcl_SetChannelBufferSize, Tcl_NotifyChannel, Tcl_BadChannelOption \- procedures for creating and manipulating channels .SH SYNOPSIS .nf \fB#include \fR .sp Tcl_Channel \fBTcl_CreateChannel\fR(\fItypePtr, channelName, instanceData, mask\fR) .sp ClientData \fBTcl_GetChannelInstanceData\fR(\fIchannel\fR) .sp Tcl_ChannelType * \fBTcl_GetChannelType\fR(\fIchannel\fR) .sp char * \fBTcl_GetChannelName\fR(\fIchannel\fR) .VS .sp int \fBTcl_GetChannelHandle\fR(\fIchannel, direction, handlePtr\fR) .VE .sp int \fBTcl_GetChannelFlags\fR(\fIchannel\fR) .sp \fBTcl_SetDefaultTranslation\fR(\fIchannel, transMode\fR) .sp int \fBTcl_GetChannelBufferSize\fR(\fIchannel\fR) .sp \fBTcl_SetChannelBufferSize\fR(\fIchannel, size\fR) .sp .VS \fBTcl_NotifyChannel\fR(\fIchannel, mask\fR) .sp int \fBTcl_BadChannelOption\fR(\fIinterp, optionName, optionList\fR) .VE .sp .SH ARGUMENTS .AS Tcl_EolTranslation *channelName in .AP Tcl_ChannelType *typePtr in Points to a structure containing the addresses of procedures that can be called to perform I/O and other functions on the channel. .AP char *channelName in The name of this channel, such as \fBfile3\fR; must not be in use by any other channel. Can be NULL, in which case the channel is created without a name. .AP ClientData instanceData in Arbitrary one-word value to be associated with this channel. This value is passed to procedures in \fItypePtr\fR when they are invoked. .AP int mask in OR-ed combination of \fBTCL_READABLE\fR and \fBTCL_WRITABLE\fR to indicate whether a channel is readable and writable. .AP Tcl_Channel channel in The channel to operate on. .VS .AP int direction in \fBTCL_READABLE\fR means the input handle is wanted; \fBTCL_WRITABLE\fR means the output handle is wanted. .AP ClientData *handlePtr out Points to the location where the desired OS-specific handle should be stored. .VE .AP Tcl_EolTranslation transMode in The translation mode; one of the constants \fBTCL_TRANSLATE_AUTO\fR, \fBTCL_TRANSLATE_CR\fR, \fBTCL_TRANSLATE_LF\fR and \fBTCL_TRANSLATE_CRLF\fR. .AP int size in The size, in bytes, of buffers to allocate in this channel. .VS .AP int mask in An OR-ed combination of \fBTCL_READABLE\fR, \fBTCL_WRITABLE\fR and \fBTCL_EXCEPTION\fR that indicates events that have occurred on this channel. .AP Tcl_Interp *interp in Current interpreter. (can be NULL) .AP char *optionName in Name of the invalid option. .AP char *optionList in Specific options list (space separated words, without "-") to append to the standard generic options list. Can be NULL for generic options error message only. .VE .BE .SH DESCRIPTION .PP Tcl uses a two-layered channel architecture. It provides a generic upper layer to enable C and Tcl programs to perform input and output using the same APIs for a variety of files, devices, sockets etc. The generic C APIs are described in the manual entry for \fBTcl_OpenFileChannel\fR. .PP The lower layer provides type-specific channel drivers for each type of device supported on each platform. This manual entry describes the C APIs used to communicate between the generic layer and the type-specific channel drivers. It also explains how new types of channels can be added by providing new channel drivers. .PP Channel drivers consist of a number of components: First, each channel driver provides a \fBTcl_ChannelType\fR structure containing pointers to functions implementing the various operations used by the generic layer to communicate with the channel driver. The \fBTcl_ChannelType\fR structure and the functions referenced by it are described in the section TCL_CHANNELTYPE, below. .PP Second, channel drivers usually provide a Tcl command to create instances of that type of channel. For example, the Tcl \fBopen\fR command creates channels that use the file and command channel drivers, and the Tcl \fBsocket\fR command creates channels that use TCP sockets for network communication. .PP Third, a channel driver optionally provides a C function to open channel instances of that type. For example, \fBTcl_OpenFileChannel\fR opens a channel that uses the file channel driver, and \fBTcl_OpenTcpClient\fR opens a channel that uses the TCP network protocol. These creation functions typically use \fBTcl_CreateChannel\fR internally to open the channel. .PP To add a new type of channel you must implement a C API or a Tcl command that opens a channel by invoking \fBTcl_CreateChannel\fR. When your driver calls \fBTcl_CreateChannel\fR it passes in a \fBTcl_ChannelType\fR structure describing the driver's I/O procedures. The generic layer will then invoke the functions referenced in that structure to perform operations on the channel. .PP \fBTcl_CreateChannel\fR opens a new channel and associates the supplied \fItypePtr\fR and \fIinstanceData\fR with it. The channel is opened in the mode indicated by \fImask\fR. For a discussion of channel drivers, their operations and the \fBTcl_ChannelType\fR structure, see the section TCL_CHANNELTYPE, below. .PP \fBTcl_GetChannelInstanceData\fR returns the instance data associated with the channel in \fIchannel\fR. This is the same as the \fIinstanceData\fR argument in the call to \fBTcl_CreateChannel\fR that created this channel. .PP \fBTcl_GetChannelType\fR returns a pointer to the \fBTcl_ChannelType\fR structure used by the channel in the \fIchannel\fR argument. This is the same as the \fItypePtr\fR argument in the call to \fBTcl_CreateChannel\fR that created this channel. .PP \fBTcl_GetChannelName\fR returns a string containing the name associated with the channel, or NULL if the \fIchannelName\fR argument to \fBTcl_CreateChannel\fR was NULL. .PP .VS \fBTcl_GetChannelHandle\fR places the OS-specific device handle associated with \fIchannel\fR for the given \fIdirection\fR in the location specified by \fIhandlePtr\fR and returns \fBTCL_OK\fR. If the channel does not have a device handle for the specified direction, then \fBTCL_ERROR\fR is returned instead. Different channel drivers will return different types of handle. Refer to the manual entries for each driver to determine what type of handle is returned. .VE .PP \fBTcl_GetChannelMode\fR returns an OR-ed combination of \fBTCL_READABLE\fR and \fBTCL_WRITABLE\fR, indicating whether the channel is open for input and output. .PP \fBTcl_SetDefaultTranslation\fR sets the default end of line translation mode. This mode will be installed as the translation mode for the channel if an attempt is made to output on the channel while it is still in \fBTCL_TRANSLATE_AUTO\fR mode. For a description of end of line translation modes, see the manual entry for \fBfconfigure\fR. .PP \fBTcl_GetChannelBufferSize\fR returns the size, in bytes, of buffers allocated to store input or output in \fIchan\fR. If the value was not set by a previous call to \fBTcl_SetChannelBufferSize\fR, described below, then the default value of 4096 is returned. .PP \fBTcl_SetChannelBufferSize\fR sets the size, in bytes, of buffers that will be allocated in subsequent operations on the channel to store input or output. The \fIsize\fR argument should be between ten and one million, allowing buffers of ten bytes to one million bytes. If \fIsize\fR is outside this range, \fBTcl_SetChannelBufferSize\fR sets the buffer size to 4096. .PP .VS \fBTcl_NotifyChannel\fR is called by a channel driver to indicate to the generic layer that the events specified by \fImask\fR have occurred on the channel. Channel drivers are responsible for invoking this function whenever the channel handlers need to be called for the channel. See \fBWATCHPROC\fR below for more details. .VE .PP .VS \fBTcl_BadChannelOption\fR is called from driver specific set or get option procs to generate a complete error message. .VE .SH TCL_CHANNELTYPE .PP A channel driver provides a \fBTcl_ChannelType\fR structure that contains pointers to functions that implement the various operations on a channel; these operations are invoked as needed by the generic layer. The \fBTcl_ChannelType\fR structure contains the following fields: .PP .VS .CS typedef struct Tcl_ChannelType { char *\fItypeName\fR; Tcl_DriverBlockModeProc *\fIblockModeProc\fR; Tcl_DriverCloseProc *\fIcloseProc\fR; Tcl_DriverInputProc *\fIinputProc\fR; Tcl_DriverOutputProc *\fIoutputProc\fR; Tcl_DriverSeekProc *\fIseekProc\fR; Tcl_DriverSetOptionProc *\fIsetOptionProc\fR; Tcl_DriverGetOptionProc *\fIgetOptionProc\fR; Tcl_DriverWatchProc *\fIwatchProc\fR; Tcl_DriverGetHandleProc *\fIgetHandleProc\fR; } Tcl_ChannelType; .CE .VE .PP The driver must provide implementations for all functions except \fIblockModeProc\fR, \fIseekProc\fR, \fIsetOptionProc\fR, and \fIgetOptionProc\fR, which may be specified as NULL to indicate that the channel does not support seeking. Other functions that can not be implemented for this type of device should return \fBEINVAL\fR when invoked to indicate that they are not implemented. .SH TYPENAME .PP The \fItypeName\fR field contains a null-terminated string that identifies the type of the device implemented by this driver, e.g. \fBfile\fR or \fBsocket\fR. .SH BLOCKMODEPROC .PP The \fIblockModeProc\fR field contains the address of a function called by the generic layer to set blocking and nonblocking mode on the device. \fIBlockModeProc\fR should match the following prototype: .PP .CS typedef int Tcl_DriverBlockModeProc( ClientData \fIinstanceData\fR, int \fImode\fR); .CE .PP The \fIinstanceData\fR is the same as the value passed to \fBTcl_CreateChannel\fR when this channel was created. The \fImode\fR argument is either \fBTCL_MODE_BLOCKING\fR or \fBTCL_MODE_NONBLOCKING\fR to set the device into blocking or nonblocking mode. The function should return zero if the operation was successful, or a nonzero POSIX error code if the operation failed. .PP If the operation is successful, the function can modify the supplied \fIinstanceData\fR to record that the channel entered blocking or nonblocking mode and to implement the blocking or nonblocking behavior. For some device types, the blocking and nonblocking behavior can be implemented by the underlying operating system; for other device types, the behavior must be emulated in the channel driver. .SH CLOSEPROC .PP The \fIcloseProc\fR field contains the address of a function called by the generic layer to clean up driver-related information when the channel is closed. \fICloseProc\fR must match the following prototype: .PP .CS typedef int Tcl_DriverCloseProc( ClientData \fIinstanceData\fR, Tcl_Interp *\fIinterp\fR); .CE .PP The \fIinstanceData\fR argument is the same as the value provided to \fBTcl_CreateChannel\fR when the channel was created. The function should release any storage maintained by the channel driver for this channel, and close the input and output devices encapsulated by this channel. All queued output will have been flushed to the device before this function is called, and no further driver operations will be invoked on this instance after calling the \fIcloseProc\fR. If the close operation is successful, the procedure should return zero; otherwise it should return a nonzero POSIX error code. In addition, if an error occurs and \fIinterp\fR is not NULL, the procedure should store an error message in \fIinterp->result\fR. .SH INPUTPROC .PP The \fIinputProc\fR field contains the address of a function called by the generic layer to read data from the file or device and store it in an internal buffer. \fIInputProc\fR must match the following prototype: .PP .CS typedef int Tcl_DriverInputProc( ClientData \fIinstanceData\fR, char *\fIbuf\fR, int \fIbufSize\fR, int *\fIerrorCodePtr\fR); .CE .PP \fIInstanceData\fR is the same as the value passed to \fBTcl_CreateChannel\fR when the channel was created. The \fIbuf\fR argument points to an array of bytes in which to store input from the device, and the \fIbufSize\fR argument indicates how many bytes are available at \fIbuf\fR. .PP The \fIerrorCodePtr\fR argument points to an integer variable provided by the generic layer. If an error occurs, the function should set the variable to a POSIX error code that identifies the error that occurred. .PP The function should read data from the input device encapsulated by the channel and store it at \fIbuf\fR. On success, the function should return a nonnegative integer indicating how many bytes were read from the input device and stored at \fIbuf\fR. On error, the function should return -1. If an error occurs after some data has been read from the device, that data is lost. .PP If \fIinputProc\fR can determine that the input device has some data available but less than requested by the \fIbufSize\fR argument, the function should only attempt to read as much data as is available and return without blocking. If the input device has no data available whatsoever and the channel is in nonblocking mode, the function should return an \fBEAGAIN\fR error. If the input device has no data available whatsoever and the channel is in blocking mode, the function should block for the shortest possible time until at least one byte of data can be read from the device; then, it should return as much data as it can read without blocking. .SH OUTPUTPROC .PP The \fIoutputProc\fR field contains the address of a function called by the generic layer to transfer data from an internal buffer to the output device. \fIOutputProc\fR must match the following prototype: .PP .CS typedef int Tcl_DriverOutputProc( ClientData \fIinstanceData\fR, char *\fIbuf\fR, int \fItoWrite\fR, int *\fIerrorCodePtr\fR); .CE .PP \fIInstanceData\fR is the same as the value passed to \fBTcl_CreateChannel\fR when the channel was created. The \fIbuf\fR argument contains an array of bytes to be written to the device, and the \fItoWrite\fR argument indicates how many bytes are to be written from the \fIbuf\fR argument. .PP The \fIerrorCodePtr\fR argument points to an integer variable provided by the generic layer. If an error occurs, the function should set this variable to a POSIX error code that identifies the error. .PP The function should write the data at \fIbuf\fR to the output device encapsulated by the channel. On success, the function should return a nonnegative integer indicating how many bytes were written to the output device. The return value is normally the same as \fItoWrite\fR, but may be less in some cases such as if the output operation is interrupted by a signal. If an error occurs the function should return -1. In case of error, some data may have been written to the device. .PP If the channel is nonblocking and the output device is unable to absorb any data whatsoever, the function should return -1 with an \fBEAGAIN\fR error without writing any data. .SH SEEKPROC .PP The \fIseekProc\fR field contains the address of a function called by the generic layer to move the access point at which subsequent input or output operations will be applied. \fISeekProc\fR must match the following prototype: .PP .CS typedef int Tcl_DriverSeekProc( ClientData \fIinstanceData\fR, long \fIoffset\fR, int \fIseekMode\fR, int *\fIerrorCodePtr\fR); .CE .PP The \fIinstanceData\fR argument is the same as the value given to \fBTcl_CreateChannel\fR when this channel was created. \fIOffset\fR and \fIseekMode\fR have the same meaning as for the \fBTcl_SeekChannel\fR procedure (described in the manual entry for \fBTcl_OpenFileChannel\fR). .PP The \fIerrorCodePtr\fR argument points to an integer variable provided by the generic layer for returning \fBerrno\fR values from the function. The function should set this variable to a POSIX error code if an error occurs. The function should store an \fBEINVAL\fR error code if the channel type does not implement seeking. .PP The return value is the new access point or -1 in case of error. If an error occurred, the function should not move the access point. .SH SETOPTIONPROC .PP The \fIsetOptionProc\fR field contains the address of a function called by the generic layer to set a channel type specific option on a channel. \fIsetOptionProc\fR must match the following prototype: .PP .CS typedef int Tcl_DriverSetOptionProc( ClientData \fIinstanceData\fR, Tcl_Interp *\fIinterp\fR, char *\fIoptionName\fR, char *\fIoptionValue\fR); .CE .PP \fIoptionName\fR is the name of an option to set, and \fIoptionValue\fR is the new value for that option, as a string. The \fIinstanceData\fR is the same as the value given to \fBTcl_CreateChannel\fR when this channel was created. The function should do whatever channel type specific action is required to implement the new value of the option. .PP Some options are handled by the generic code and this function is never called to set them, e.g. \fB-blockmode\fR. Other options are specific to each channel type and the \fIsetOptionProc\fR procedure of the channel driver will get called to implement them. The \fIsetOptionProc\fR field can be NULL, which indicates that this channel type supports no type specific options. .PP If the option value is successfully modified to the new value, the function returns \fBTCL_OK\fR. .VS It should call \fBTcl_BadChannelOption\fR which itself returns \fBTCL_ERROR\fR if the \fIoptionName\fR is unrecognized. .VE If \fIoptionValue\fR specifies a value for the option that is not supported or if a system call error occurs, the function should leave an error message in the \fIresult\fR field of \fIinterp\fR if \fIinterp\fR is not NULL. The function should also call \fBTcl_SetErrno\fR to store an appropriate POSIX error code. .SH GETOPTIONPROC .PP The \fIgetOptionProc\fR field contains the address of a function called by the generic layer to get the value of a channel type specific option on a channel. \fIgetOptionProc\fR must match the following prototype: .PP .CS typedef int Tcl_DriverGetOptionProc( ClientData \fIinstanceData\fR, .VS Tcl_Interp *\fIinterp\fR, .VE char *\fIoptionName\fR, Tcl_DString *\fIdsPtr\fR); .CE .PP \fIOptionName\fR is the name of an option supported by this type of channel. If the option name is not NULL, the function stores its current value, as a string, in the Tcl dynamic string \fIdsPtr\fR. If \fIoptionName\fR is NULL, the function stores in \fIdsPtr\fR an alternating list of all supported options and their current values. On success, the function returns \fBTCL_OK\fR. .VS It should call \fBTcl_BadChannelOption\fR which itself returns \fBTCL_ERROR\fR if the \fIoptionName\fR is unrecognized. If a system call error occurs, the function should leave an error message in the \fIresult\fR field of \fIinterp\fR if \fIinterp\fR is not NULL. The function should also call \fBTcl_SetErrno\fR to store an appropriate POSIX error code. .VE .PP Some options are handled by the generic code and this function is never called to retrieve their value, e.g. \fB-blockmode\fR. Other options are specific to each channel type and the \fIgetOptionProc\fR procedure of the channel driver will get called to implement them. The \fIgetOptionProc\fR field can be NULL, which indicates that this channel type supports no type specific options. .SH WATCHPROC .VS .PP The \fIwatchProc\fR field contains the address of a function called by the generic layer to initialize the event notification mechanism to notice events of interest on this channel. \fIWatchProc\fR should match the following prototype: .PP .CS typedef void Tcl_DriverWatchProc( ClientData \fIinstanceData\fR, int \fImask\fR); .CE .VE .PP The \fIinstanceData\fR is the same as the value passed to \fBTcl_CreateChannel\fR when this channel was created. The \fImask\fR argument is an OR-ed combination of \fBTCL_READABLE\fR, \fBTCL_WRITABLE\fR and \fBTCL_EXCEPTION\fR; it indicates events the caller is interested in noticing on this channel. .PP .VS The function should initialize device type specific mechanisms to notice when an event of interest is present on the channel. When one or more of the designated events occurs on the channel, the channel driver is responsible for calling \fBTcl_NotifyChannel\fR to inform the generic channel module. The driver should take care not to starve other channel drivers or sources of callbacks by invoking Tcl_NotifyChannel too frequently. Fairness can be insured by using the Tcl event queue to allow the channel event to be scheduled in sequence with other events. See the description of \fBTcl_QueueEvent\fR for details on how to queue an event. .SH GETHANDLEPROC .PP The \fIgetHandleProc\fR field contains the address of a function called by the generic layer to retrieve a device-specific handle from the channel. \fIGetHandleProc\fR should match the following prototype: .PP .CS typedef int Tcl_DriverGetHandleProc( ClientData \fIinstanceData\fR, int \fIdirection\fR, ClientData *\fIhandlePtr\fR); .CE .PP \fIInstanceData is the same as the value passed to \fBTcl_CreateChannel\fR when this channel was created. The \fIdirection\fR argument is either \fBTCL_READABLE\fR to retrieve the handle used for input, or \fBTCL_WRITABLE\fR to retrieve the handle used for output. .PP If the channel implementation has device-specific handles, the function should retrieve the appropriate handle associated with the channel, according the \fIdirection\fR argument. The handle should be stored in the location referred to by \fIhandlePtr\fR, and \fBTCL_OK\fR should be returned. If the channel is not open for the specified direction, or if the channel implementation does not use device handles, the function should return \fBTCL_ERROR\fR. .VE .VS .SH TCL_BADCHANNELOPTION .PP This procedure generates a "bad option" error message in an (optional) interpreter. It is used by channel drivers when a invalid Set/Get option is requested. Its purpose is to concatenate the generic options list to the specific ones and factorize the generic options error message string. .PP It always return \fBTCL_ERROR\fR .PP An error message is generated in interp's result object to indicate that a command was invoked with the a bad option The message has the form .CS bad option "blah": should be one of <...generic options...>+<...specific options...> so you get for instance: bad option "-blah": should be one of -blocking, -buffering, -buffersize, -eofchar, -translation, -peername, or -sockname when called with optionList="peername sockname" .CE "blah" is the optionName argument and "" is a space separated list of specific option words. The function takes good care of inserting minus signs before each option, commas after, and an "or" before the last option. .VE .SH "SEE ALSO" Tcl_Close(3), Tcl_OpenFileChannel(3), Tcl_SetErrno(3), Tcl_QueueEvent(3) .SH KEYWORDS blocking, channel driver, channel registration, channel type, nonblocking 070701000779c2000081a400004ccf0000000a0000000133f371bd00002133000000a30000000400000000000000000000002900000004reloc/SUNWtcl/8.0/man/man3/CrtChnlHdlr.3'\" '\" Copyright (c) 1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) CrtChnlHdlr.3 1.10 96/03/14 10:54:43 '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_CreateChannelHandler 3 7.5 Tcl "Tcl Library Procedures" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME Tcl_CreateChannelHandler, Tcl_DeleteChannelHandler \- call a procedure when a channel becomes readable or writable .SH SYNOPSIS .nf .nf \fB#include \fR .sp void \fBTcl_CreateChannelHandler\fR(\fIchannel, mask, proc, clientData\fR) .sp void \fBTcl_DeleteChannelHandler\fR(\fIchannel, proc, clientData\fR) .sp .SH ARGUMENTS .AS Tcl_ChannelProc clientData .AP Tcl_Channel channel in Tcl channel such as returned by \fBTcl_CreateChannel\fR. .AP int mask in Conditions under which \fIproc\fR should be called: OR-ed combination of \fBTCL_READABLE\fR, \fBTCL_WRITABLE\fR and \fBTCL_EXCEPTION\fR. Specify a zero value to temporarily disable an existing handler. .AP Tcl_FileProc *proc in Procedure to invoke whenever the channel indicated by \fIchannel\fR meets the conditions specified by \fImask\fR. .AP ClientData clientData in Arbitrary one-word value to pass to \fIproc\fR. .BE .SH DESCRIPTION .PP \fBTcl_CreateChannelHandler\fR arranges for \fIproc\fR to be called in the future whenever input or output becomes possible on the channel identified by \fIchannel\fR, or whenever an exceptional condition exists for \fIchannel\fR. The conditions of interest under which \fIproc\fR will be invoked are specified by the \fImask\fR argument. See the manual entry for \fBfileevent\fR for a precise description of what it means for a channel to be readable or writable. \fIProc\fR must conform to the following prototype: .CS typedef void Tcl_ChannelProc( ClientData \fIclientData\fR, int \fImask\fR); .CE .PP The \fIclientData\fR argument is the same as the value passed to \fBTcl_CreateChannelHandler\fR when the handler was created. Typically, \fIclientData\fR points to a data structure containing application-specific information about the channel. \fIMask\fR is an integer mask indicating which of the requested conditions actually exists for the channel; it will contain a subset of the bits from the \fImask\fR argument to \fBTcl_CreateChannelHandler\fR when the handler was created. .PP Each channel handler is identified by a unique combination of \fIchannel\fR, \fIproc\fR and \fIclientData\fR. There may be many handlers for a given channel as long as they don't have the same \fIchannel\fR, \fIproc\fR, and \fIclientData\fR. If \fBTcl_CreateChannelHandler\fR is invoked when there is already a handler for \fIchannel\fR, \fIproc\fR, and \fIclientData\fR, then no new handler is created; instead, the \fImask\fR is changed for the existing handler. .PP \fBTcl_DeleteChannelHandler\fR deletes a channel handler identified by \fIchannel\fR, \fIproc\fR and \fIclientData\fR; if no such handler exists, the call has no effect. .PP Channel handlers are invoked via the Tcl event mechanism, so they are only useful in applications that are event-driven. Note also that the conditions specified in the \fImask\fR argument to \fIproc\fR may no longer exist when \fIproc\fR is invoked: for example, if there are two handlers for \fBTCL_READABLE\fR on the same channel, the first handler could consume all of the available input so that the channel is no longer readable when the second handler is invoked. For this reason it may be useful to use nonblocking I/O on channels for which there are event handlers. .SH "SEE ALSO" Notifier(3), Tcl_CreateChannel(3), Tcl_OpenFileChannel(3), vwait(n). .SH KEYWORDS blocking, callback, channel, events, handler, nonblocking. 070701000779c3000081a400004ccf0000000a0000000133f371bd000019a3000000a30000000400000000000000000000002a00000004reloc/SUNWtcl/8.0/man/man3/CrtCloseHdlr.3'\" '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) CrtCloseHdlr.3 1.7 96/04/15 13:08:19 '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_CreateCloseHandler 3 7.5 Tcl "Tcl Library Procedures" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME Tcl_CreateCloseHandler, Tcl_DeleteCloseHandler \- arrange for callbacks when channels are closed .SH SYNOPSIS .nf \fB#include \fR .sp void \fBTcl_CreateCloseHandler\fR(\fIchannel, proc, clientData\fR) .sp void \fBTcl_DeleteCloseHandler\fR(\fIchannel, proc, clientData\fR) .sp .SH ARGUMENTS .AS Tcl_CloseProc callbackData in .AP Tcl_Channel channel in The channel for which to create or delete a close callback. .AP Tcl_CloseProc *proc in The procedure to call as the callback. .AP ClientData clientData in Arbitrary one-word value to pass to \fIproc\fR. .BE .SH DESCRIPTION .PP \fBTcl_CreateCloseHandler\fR arranges for \fIproc\fR to be called when \fIchannel\fR is closed with \fBTcl_Close\fR or \fBTcl_UnregisterChannel\fR, or using the Tcl \fBclose\fR command. \fIProc\fR should match the following prototype: .PP .CS typedef void Tcl_CloseProc( ClientData \fIclientData\fR); .CE .PP The \fIclientData\fR is the same as the value provided in the call to \fBTcl_CreateCloseHandler\fR. .PP \fBTcl_DeleteCloseHandler\fR removes a close callback for \fIchannel\fR. The \fIproc\fR and \fIclientData\fR identify which close callback to remove; \fBTcl_DeleteCloseHandler\fR does nothing if its \fIproc\fR and \fIclientData\fR arguments do not match the \fIproc\fR and \fIclientData\fR for a close handler for \fIchannel\fR. .SH "SEE ALSO" close(n), Tcl_Close(3), Tcl_UnregisterChannel(3) .SH KEYWORDS callback, channel closing 070701000779c4000081a400004ccf0000000a0000000133f371bd00002aa2000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/man/man3/CrtCommand.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) CrtCommand.3 1.29 97/06/04 17:23:53 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_CreateCommand 3 "" Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_CreateCommand \- implement new commands in C .SH SYNOPSIS .nf \fB#include \fR .sp Tcl_Command \fBTcl_CreateCommand\fR(\fIinterp, cmdName, proc, clientData, deleteProc\fR) .SH ARGUMENTS .AS Tcl_CmdDeleteProc **deleteProcPtr .AP Tcl_Interp *interp in Interpreter in which to create new command. .AP char *cmdName in Name of command. .AP Tcl_CmdProc *proc in Implementation of new command: \fIproc\fR will be called whenever \fIcmdName\fR is invoked as a command. .AP ClientData clientData in Arbitrary one-word value to pass to \fIproc\fR and \fIdeleteProc\fR. .AP Tcl_CmdDeleteProc *deleteProc in Procedure to call before \fIcmdName\fR is deleted from the interpreter; allows for command-specific cleanup. If NULL, then no procedure is called before the command is deleted. .BE .SH DESCRIPTION .PP \fBTcl_CreateCommand\fR defines a new command in \fIinterp\fR and associates it with procedure \fIproc\fR such that whenever \fIcmdName\fR is invoked as a Tcl command (via a call to \fBTcl_Eval\fR) the Tcl interpreter will call \fIproc\fR to process the command. It differs from \fBTcl_CreateObjCommand\fR in that a new string-based command is defined; that is, a command procedure is defined that takes an array of argument strings instead of objects. The object-based command procedures registered by \fBTcl_CreateObjCommand\fR can execute significantly faster than the string-based command procedures defined by \fBTcl_CreateCommand\fR. This is because they take Tcl objects as arguments and those objects can retain an internal representation that can be manipulated more efficiently. Also, Tcl's interpreter now uses objects internally. In order to invoke a string-based command procedure registered by \fBTcl_CreateCommand\fR, it must generate and fetch a string representation from each argument object before the call and create a new Tcl object to hold the string result returned by the string-based command procedure. New commands should be defined using \fBTcl_CreateObjCommand\fR. We support \fBTcl_CreateCommand\fR for backwards compatibility. .PP The procedures \fBTcl_DeleteCommand\fR, \fBTcl_GetCommandInfo\fR, and \fBTcl_SetCommandInfo\fR are used in conjunction with \fBTcl_CreateCommand\fR. .PP \fBTcl_CreateCommand\fR will delete an existing command \fIcmdName\fR, if one is already associated with the interpreter. It returns a token that may be used to refer to the command in subsequent calls to \fBTcl_GetCommandName\fR. If \fIcmdName\fR contains any \fB::\fR namespace qualifiers, then the command is added to the specified namespace; otherwise the command is added to the global namespace. If \fBTcl_CreateCommand\fR is called for an interpreter that is in the process of being deleted, then it does not create a new command and it returns NULL. \fIProc\fR should have arguments and result that match the type \fBTcl_CmdProc\fR: .CS typedef int Tcl_CmdProc( ClientData \fIclientData\fR, Tcl_Interp *\fIinterp\fR, int \fIargc\fR, char *\fIargv\fR[]); .CE When \fIproc\fR is invoked the \fIclientData\fR and \fIinterp\fR parameters will be copies of the \fIclientData\fR and \fIinterp\fR arguments given to \fBTcl_CreateCommand\fR. Typically, \fIclientData\fR points to an application-specific data structure that describes what to do when the command procedure is invoked. \fIArgc\fR and \fIargv\fR describe the arguments to the command, \fIargc\fR giving the number of arguments (including the command name) and \fIargv\fR giving the values of the arguments as strings. The \fIargv\fR array will contain \fIargc\fR+1 values; the first \fIargc\fR values point to the argument strings, and the last value is NULL. .PP \fIProc\fR must return an integer code that is either \fBTCL_OK\fR, \fBTCL_ERROR\fR, \fBTCL_RETURN\fR, \fBTCL_BREAK\fR, or \fBTCL_CONTINUE\fR. See the Tcl overview man page for details on what these codes mean. Most normal commands will only return \fBTCL_OK\fR or \fBTCL_ERROR\fR. In addition, \fIproc\fR must set the interpreter result to point to a string value; in the case of a \fBTCL_OK\fR return code this gives the result of the command, and in the case of \fBTCL_ERROR\fR it gives an error message. The \fBTcl_SetResult\fR procedure provides an easy interface for setting the return value; for complete details on how the the interpreter result field is managed, see the \fBTcl_Interp\fR man page. Before invoking a command procedure, \fBTcl_Eval\fR sets the interpreter result to point to an empty string, so simple commands can return an empty result by doing nothing at all. .PP The contents of the \fIargv\fR array belong to Tcl and are not guaranteed to persist once \fIproc\fR returns: \fIproc\fR should not modify them, nor should it set the interpreter result to point anywhere within the \fIargv\fR values. Call \fBTcl_SetResult\fR with status \fBTCL_VOLATILE\fR if you want to return something from the \fIargv\fR array. .PP \fIDeleteProc\fR will be invoked when (if) \fIcmdName\fR is deleted. This can occur through a call to \fBTcl_DeleteCommand\fR or \fBTcl_DeleteInterp\fR, or by replacing \fIcmdName\fR in another call to \fBTcl_CreateCommand\fR. \fIDeleteProc\fR is invoked before the command is deleted, and gives the application an opportunity to release any structures associated with the command. \fIDeleteProc\fR should have arguments and result that match the type \fBTcl_CmdDeleteProc\fR: .CS typedef void Tcl_CmdDeleteProc(ClientData \fIclientData\fR); .CE The \fIclientData\fR argument will be the same as the \fIclientData\fR argument passed to \fBTcl_CreateCommand\fR. .PP .SH "SEE ALSO" Tcl_CreateObjCommand, Tcl_DeleteCommand, Tcl_GetCommandInfo, Tcl_SetCommandInfo, Tcl_GetCommandName, Tcl_SetObjResult .SH KEYWORDS bind, command, create, delete, interpreter, namespace 070701000779c5000081a400004ccf0000000a0000000133f371bd00002081000000a30000000400000000000000000000002900000004reloc/SUNWtcl/8.0/man/man3/CrtFileHdlr.3'\" '\" Copyright (c) 1990-1994 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) CrtFileHdlr.3 1.7 97/04/23 16:11:17 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_CreateFileHandler 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_CreateFileHandler, Tcl_DeleteFileHandler \- associate procedure callbacks with files or devices (Unix only) .SH SYNOPSIS .nf \fB#include \fR .VS .sp \fBTcl_CreateFileHandler\fR(\fIfd, mask, proc, clientData\fR) .sp \fBTcl_DeleteFileHandler\fR(\fIfd\fR) .VE .SH ARGUMENTS .AS Tcl_FileProc clientData .VS .AP int fd in Unix file descriptor for an open file or device. .VE .AP int mask in Conditions under which \fIproc\fR should be called: OR-ed combination of \fBTCL_READABLE\fR, \fBTCL_WRITABLE\fR, and \fBTCL_EXCEPTION\fR. May be set to 0 to temporarily disable a handler. .AP Tcl_FileProc *proc in Procedure to invoke whenever the file or device indicated by \fIfile\fR meets the conditions specified by \fImask\fR. .AP ClientData clientData in Arbitrary one-word value to pass to \fIproc\fR. .BE .SH DESCRIPTION .PP .VS \fBTcl_CreateFileHandler\fR arranges for \fIproc\fR to be invoked in the future whenever I/O becomes possible on a file or an exceptional condition exists for the file. The file is indicated by \fIfd\fR, and the conditions of interest .VE are indicated by \fImask\fR. For example, if \fImask\fR is \fBTCL_READABLE\fR, \fIproc\fR will be called when the file is readable. The callback to \fIproc\fR is made by \fBTcl_DoOneEvent\fR, so \fBTcl_CreateFileHandler\fR is only useful in programs that dispatch events through \fBTcl_DoOneEvent\fR or through Tcl commands such as \fBvwait\fR. .PP \fIProc\fR should have arguments and result that match the type \fBTcl_FileProc\fR: .CS typedef void Tcl_FileProc( ClientData \fIclientData\fR, int \fImask\fR); .CE The \fIclientData\fR parameter to \fIproc\fR is a copy of the \fIclientData\fR argument given to \fBTcl_CreateFileHandler\fR when the callback was created. Typically, \fIclientData\fR points to a data structure containing application-specific information about the file. \fIMask\fR is an integer mask indicating which of the requested conditions actually exists for the file; it will contain a subset of the bits in the \fImask\fR argument to \fBTcl_CreateFileHandler\fR. .PP .PP There may exist only one handler for a given file at a given time. If \fBTcl_CreateFileHandler\fR is called when a handler already exists for \fIfd\fR, then the new callback replaces the information that was previously recorded. .PP \fBTcl_DeleteFileHandler\fR may be called to delete the file handler for \fIfd\fR; if no handler exists for the file given by \fIfd\fR then the procedure has no effect. .PP The purpose of file handlers is to enable an application to respond to events while waiting for files to become ready for I/O. For this to work correctly, the application may need to use non-blocking I/O operations on the files for which handlers are declared. Otherwise the application may block if it reads or writes too much data; while waiting for the I/O to complete the application won't be able to service other events. Use \fBTcl_SetChannelOption\fR with \fB\-blocking\fR to set the channel into blocking or nonblocking mode as required. .PP .VS Note that these interfaces are only supported by the Unix implementation of the Tcl notifier. .VE .SH KEYWORDS callback, file, handler 070701000779c6000081a400004ccf0000000a0000000133f371be00002a28000000a30000000400000000000000000000002700000004reloc/SUNWtcl/8.0/man/man3/CrtInterp.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) CrtInterp.3 1.15 97/07/09 14:53:31 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_CreateInterp 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_CreateInterp, Tcl_DeleteInterp, Tcl_InterpDeleted \- create and delete Tcl command interpreters .SH SYNOPSIS .nf \fB#include \fR .sp Tcl_Interp * \fBTcl_CreateInterp\fR() .sp \fBTcl_DeleteInterp\fR(\fIinterp\fR) .sp int \fBTcl_InterpDeleted\fR(\fIinterp\fR) .SH ARGUMENTS .AS Tcl_Interp *interp .AP Tcl_Interp *interp in Token for interpreter to be destroyed. .BE .SH DESCRIPTION .PP \fBTcl_CreateInterp\fR creates a new interpreter structure and returns a token for it. The token is required in calls to most other Tcl procedures, such as \fBTcl_CreateCommand\fR, \fBTcl_Eval\fR, and \fBTcl_DeleteInterp\fR. Clients are only allowed to access a few of the fields of Tcl_Interp structures; see the Tcl_Interp and \fBTcl_CreateCommand\fR man pages for details. The new interpreter is initialized with no defined variables and only the built-in Tcl commands. To bind in additional commands, call \fBTcl_CreateCommand\fR. .PP \fBTcl_DeleteInterp\fR marks an interpreter as deleted; the interpreter will eventually be deleted when all calls to \fBTcl_Preserve\fR for it have been matched by calls to \fBTcl_Release\fR. At that time, all of the resources associated with it, including variables, procedures, and application-specific command bindings, will be deleted. After \fBTcl_DeleteInterp\fR returns any attempt to use \fBTcl_Eval\fR on the interpreter will fail and return \fBTCL_ERROR\fR. After the call to \fBTcl_DeleteInterp\fR it is safe to examine \fIinterp->result\fR, query or set the values of variables, define, undefine or retrieve procedures, and examine the runtime evaluation stack. See below, in the section \fBINTERPRETERS AND MEMORY MANAGEMENT\fR for details. .PP \fBTcl_InterpDeleted\fR returns nonzero if \fBTcl_DeleteInterp\fR was called with \fIinterp\fR as its argument; this indicates that the interpreter will eventually be deleted, when the last call to \fBTcl_Preserve\fR for it is matched by a call to \fBTcl_Release\fR. If nonzero is returned, further calls to \fBTcl_Eval\fR in this interpreter will return \fBTCL_ERROR\fR. .PP \fBTcl_InterpDeleted\fR is useful in deletion callbacks to distinguish between when only the memory the callback is responsible for is being deleted and when the whole interpreter is being deleted. In the former case the callback may recreate the data being deleted, but this would lead to an infinite loop if the interpreter were being deleted. .SH "INTERPRETERS AND MEMORY MANAGEMENT" .PP \fBTcl_DeleteInterp\fR can be called at any time on an interpreter that may be used by nested evaluations and C code in various extensions. Tcl implements a simple mechanism that allows callers to use interpreters without worrying about the interpreter being deleted in a nested call, and without requiring special code to protect the interpreter, in most cases. This mechanism ensures that nested uses of an interpreter can safely continue using it even after \fBTcl_DeleteInterp\fR is called. .PP The mechanism relies on matching up calls to \fBTcl_Preserve\fR with calls to \fBTcl_Release\fR. If \fBTcl_DeleteInterp\fR has been called, only when the last call to \fBTcl_Preserve\fR is matched by a call to \fBTcl_Release\fR, will the interpreter be freed. See the manual entry for \fBTcl_Preserve\fR for a description of these functions. .PP The rules for when the user of an interpreter must call \fBTcl_Preserve\fR and \fBTcl_Release\fR are simple: .TP Interpreters Passed As Arguments Functions that are passed an interpreter as an argument can safely use the interpreter without any special protection. Thus, when you write an extension consisting of new Tcl commands, no special code is needed to protect interpreters received as arguments. This covers the majority of all uses. .TP Interpreter Creation And Deletion When a new interpreter is created and used in a call to \fBTcl_Eval\fR, \fBTcl_VarEval\fR, \fBTcl_GlobalEval\fR, \fBTcl_SetVar\fR, or \fBTcl_GetVar\fR, a pair of calls to \fBTcl_Preserve\fR and \fBTcl_Release\fR should be wrapped around all uses of the interpreter. Remember that it is unsafe to use the interpreter once \fBTcl_Release\fR has been called. To ensure that the interpreter is properly deleted when it is no longer needed, call \fBTcl_InterpDeleted\fR to test if some other code already called \fBTcl_DeleteInterp\fR; if not, call \fBTcl_DeleteInterp\fR before calling \fBTcl_Release\fB in your own code. Do not call \fBTcl_DeleteInterp\fR on an interpreter for which \fBTcl_InterpDeleted\fR returns nonzero. .TP Retrieving An Interpreter From A Data Structure When an interpreter is retrieved from a data structure (e.g. the client data of a callback) for use in \fBTcl_Eval\fR, \fBTcl_VarEval\fR, \fBTcl_GlobalEval\fR, \fBTcl_SetVar\fR, or \fBTcl_GetVar\fR, a pair of calls to \fBTcl_Preserve\fR and \fBTcl_Release\fR should be wrapped around all uses of the interpreter; it is unsafe to reuse the interpreter once \fBTcl_Release\fR has been called. If an interpreter is stored inside a callback data structure, an appropriate deletion cleanup mechanism should be set up by the code that creates the data structure so that the interpreter is removed from the data structure (e.g. by setting the field to NULL) when the interpreter is deleted. Otherwise, you may be using an interpreter that has been freed and whose memory may already have been reused. .PP All uses of interpreters in Tcl and Tk have already been protected. Extension writers should ensure that their code also properly protects any additional interpreters used, as described above. .SH KEYWORDS command, create, delete, interpreter .SH "SEE ALSO" Tcl_Preserve(3), Tcl_Release(3) 070701000779c7000081a400004ccf0000000a0000000133f371be0000208a000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/man/man3/CrtMathFnc.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) CrtMathFnc.3 1.9 96/08/26 12:59:43 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_CreateMathFunc 3 7.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_CreateMathFunc \- Define a new math function for expressions .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_CreateMathFunc\fR(\fIinterp, name, numArgs, argTypes, proc, clientData\fR) .SH ARGUMENTS .AS Tcl_ValueType clientData .AP Tcl_Interp *interp in Interpreter in which new function will be defined. .AP char *name in Name for new function. .AP int numArgs in Number of arguments to new function; also gives size of \fIargTypes\fR array. .AP Tcl_ValueType *argTypes in Points to an array giving the permissible types for each argument to function. .AP Tcl_MathProc *proc in Procedure that implements the function. .AP ClientData clientData in Arbitrary one-word value to pass to \fIproc\fR when it is invoked. .BE .SH DESCRIPTION .PP Tcl allows a number of mathematical functions to be used in expressions, such as \fBsin\fR, \fBcos\fR, and \fBhypot\fR. \fBTcl_CreateMathFunc\fR allows applications to add additional functions to those already provided by Tcl or to replace existing functions. \fIName\fR is the name of the function as it will appear in expressions. If \fIname\fR doesn't already exist as a function then a new function is created. If it does exist, then the existing function is replaced. \fINumArgs\fR and \fIargTypes\fR describe the arguments to the function. Each entry in the \fIargTypes\fR array must be either TCL_INT, TCL_DOUBLE, or TCL_EITHER to indicate whether the corresponding argument must be an integer, a double-precision floating value, or either, respectively. .PP Whenever the function is invoked in an expression Tcl will invoke \fIproc\fR. \fIProc\fR should have arguments and result that match the type \fBTcl_MathProc\fR: .CS typedef int Tcl_MathProc( ClientData \fIclientData\fR, Tcl_Interp *\fIinterp\fR, Tcl_Value *\fIargs\fR, Tcl_Value *\fIresultPtr\fR); .CE .PP When \fIproc\fR is invoked the \fIclientData\fR and \fIinterp\fR arguments will be the same as those passed to \fBTcl_CreateMathFunc\fR. \fIArgs\fR will point to an array of \fInumArgs\fR Tcl_Value structures, which describe the actual arguments to the function: .CS typedef struct Tcl_Value { Tcl_ValueType \fItype\fR; long \fIintValue\fR; double \fIdoubleValue\fR; } Tcl_Value; .CE .PP The \fItype\fR field indicates the type of the argument and is either TCL_INT or TCL_DOUBLE. It will match the \fIargTypes\fR value specified for the function unless the \fIargTypes\fR value was TCL_EITHER. Tcl converts the argument supplied in the expression to the type requested in \fIargTypes\fR, if that is necessary. Depending on the value of the \fItype\fR field, the \fIintValue\fR or \fIdoubleValue\fR field will contain the actual value of the argument. .PP \fIProc\fR should compute its result and store it either as an integer in \fIresultPtr->intValue\fR or as a floating value in \fIresultPtr->doubleValue\fR. It should set also \fIresultPtr->type\fR to either TCL_INT or TCL_DOUBLE to indicate which value was set. Under normal circumstances \fIproc\fR should return TCL_OK. If an error occurs while executing the function, \fIproc\fR should return TCL_ERROR and leave an error message in \fIinterp->result\fR. .SH KEYWORDS expression, mathematical function 070701000779c8000081a400004ccf0000000a0000000133f371be00003cc4000000a30000000400000000000000000000002700000004reloc/SUNWtcl/8.0/man/man3/CrtObjCmd.3'\" '\" Copyright (c) 1996-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. '\" '\" SCCS: @(#) @(#) CrtObjCmd.3 1.10 97/07/31 14:10:38 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_CreateObjCommand 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_CreateObjCommand, Tcl_DeleteCommand, Tcl_DeleteCommandFromToken, Tcl_GetCommandInfo, Tcl_SetCommandInfo, Tcl_GetCommandName \- implement new commands in C .SH SYNOPSIS .nf \fB#include \fR .sp Tcl_Command \fBTcl_CreateObjCommand\fR(\fIinterp, cmdName, proc, clientData, deleteProc\fR) .sp int \fBTcl_DeleteCommand\fR(\fIinterp, cmdName\fR) .sp int \fBTcl_DeleteCommandFromToken\fR(\fIinterp, token\fR) .sp int \fBTcl_GetCommandInfo\fR(\fIinterp, cmdName, infoPtr\fR) .sp int \fBTcl_SetCommandInfo\fR(\fIinterp, cmdName, infoPtr\fR) .sp char * \fBTcl_GetCommandName\fR(\fIinterp, token\fR) .SH ARGUMENTS .AS Tcl_ObjCmdProc *deleteProc in/out .AP Tcl_Interp *interp in Interpreter in which to create a new command or that contains a command. .AP char *cmdName in Name of command. .AP Tcl_ObjCmdProc *proc in Implementation of the new command: \fIproc\fR will be called whenever \fIcmdName\fR is invoked as a command. .AP ClientData clientData in Arbitrary one-word value to pass to \fIproc\fR and \fIdeleteProc\fR. .AP Tcl_CmdDeleteProc *deleteProc in Procedure to call before \fIcmdName\fR is deleted from the interpreter; allows for command-specific cleanup. If NULL, then no procedure is called before the command is deleted. .AP Tcl_Command token in Token for command, returned by previous call to \fBTcl_CreateObjCommand\fR. The command must not have been deleted. .AP Tcl_CmdInfo *infoPtr in/out Pointer to structure containing various information about a Tcl command. .BE .SH DESCRIPTION .PP \fBTcl_CreateObjCommand\fR defines a new command in \fIinterp\fR and associates it with procedure \fIproc\fR such that whenever \fIname\fR is invoked as a Tcl command (e.g., via a call to \fBTcl_EvalObj\fR) the Tcl interpreter will call \fIproc\fR to process the command. .PP \fBTcl_CreateObjCommand\fR will delete any command \fIname\fR already associated with the interpreter. It returns a token that may be used to refer to the command in subsequent calls to \fBTcl_GetCommandName\fR. If \fIname\fR contains any \fB::\fR namespace qualifiers, then the command is added to the specified namespace; otherwise the command is added to the global namespace. If \fBTcl_CreateObjCommand\fR is called for an interpreter that is in the process of being deleted, then it does not create a new command and it returns NULL. \fIproc\fR should have arguments and result that match the type \fBTcl_ObjCmdProc\fR: .CS typedef int Tcl_ObjCmdProc( ClientData \fIclientData\fR, Tcl_Interp *\fIinterp\fR, int \fIobjc\fR, .VS Tcl_Obj *CONST \fIobjv\fR[]); .CE When \fIproc\fR is invoked, the \fIclientData\fR and \fIinterp\fR parameters will be copies of the \fIclientData\fR and \fIinterp\fR arguments given to \fBTcl_CreateObjCommand\fR. Typically, \fIclientData\fR points to an application-specific data structure that describes what to do when the command procedure is invoked. \fIObjc\fR and \fIobjv\fR describe the arguments to the command, \fIobjc\fR giving the number of argument objects (including the command name) and \fIobjv\fR giving the values of the arguments. The \fIobjv\fR array will contain \fIobjc\fR values, pointing to the argument objects. Unlike \fIargv\fR[\fIargv\fR] used in a string-based command procedure, \fIobjv\fR[\fIobjc\fR] will not contain NULL. .PP Additionally, when \fIproc\fR is invoked, it must not modify the contents of the \fIobjv\fR array by assigning new pointer values to any element of the array (for example, \fIobjv\fR[\fB2\fR] = \fBNULL\fR) because this will cause memory to be lost and the runtime stack to be corrupted. The \fBCONST\fR in the declaration of \fIobjv\fR will cause ANSI-compliant compilers to report any such attempted assignment as an error. However, it is acceptable to modify the internal representation of any individual object argument. For instance, the user may call \fBTcl_GetIntFromObject\fR on \fIobjv\fR[\fB2\fR] to obtain the integer representation of that object; that call may change the type of the object that \fIobjv\fR[\fB2\fR] points at, but will not change where \fIobjv\fR[\fB2\fR] points. .VE .PP \fIproc\fR must return an integer code that is either \fBTCL_OK\fR, \fBTCL_ERROR\fR, \fBTCL_RETURN\fR, \fBTCL_BREAK\fR, or \fBTCL_CONTINUE\fR. See the Tcl overview man page for details on what these codes mean. Most normal commands will only return \fBTCL_OK\fR or \fBTCL_ERROR\fR. In addition, if \fIproc\fR needs to return a non-empty result, it can call \fBTcl_SetObjResult\fR to set the interpreter's result. In the case of a \fBTCL_OK\fR return code this gives the result of the command, and in the case of \fBTCL_ERROR\fR this gives an error message. Before invoking a command procedure, \fBTcl_EvalObj\fR sets interpreter's result to point to an object representing an empty string, so simple commands can return an empty result by doing nothing at all. .PP The contents of the \fIobjv\fR array belong to Tcl and are not guaranteed to persist once \fIproc\fR returns: \fIproc\fR should not modify them. Call \fBTcl_SetObjResult\fR if you want to return something from the \fIobjv\fR array. .PP \fIDeleteProc\fR will be invoked when (if) \fIname\fR is deleted. This can occur through a call to \fBTcl_DeleteCommand\fR, \fBTcl_DeleteCommandFromToken\fR, or \fBTcl_DeleteInterp\fR, or by replacing \fIname\fR in another call to \fBTcl_CreateObjCommand\fR. \fIDeleteProc\fR is invoked before the command is deleted, and gives the application an opportunity to release any structures associated with the command. \fIDeleteProc\fR should have arguments and result that match the type \fBTcl_CmdDeleteProc\fR: .CS typedef void Tcl_CmdDeleteProc(ClientData \fIclientData\fR); .CE The \fIclientData\fR argument will be the same as the \fIclientData\fR argument passed to \fBTcl_CreateObjCommand\fR. .PP \fBTcl_DeleteCommand\fR deletes a command from a command interpreter. Once the call completes, attempts to invoke \fIcmdName\fR in \fIinterp\fR will result in errors. If \fIcmdName\fR isn't bound as a command in \fIinterp\fR then \fBTcl_DeleteCommand\fR does nothing and returns -1; otherwise it returns 0. There are no restrictions on \fIcmdName\fR: it may refer to a built-in command, an application-specific command, or a Tcl procedure. If \fIname\fR contains any \fB::\fR namespace qualifiers, the command is deleted from the specified namespace. .PP Given a token returned by \fBTcl_CreateObjCommand\fR, \fBTcl_DeleteCommandFromToken\fR deletes the command from a command interpreter. It will delete a command even if that command has been renamed. Once the call completes, attempts to invoke the command in \fIinterp\fR will result in errors. If the command corresponding to \fItoken\fR has already been deleted from \fIinterp\fR then \fBTcl_DeleteCommand\fR does nothing and returns -1; otherwise it returns 0. .PP \fBTcl_GetCommandInfo\fR checks to see whether its \fIcmdName\fR argument exists as a command in \fIinterp\fR. \fIcmdName\fR may include \fB::\fR namespace qualifiers to identify a command in a particular namespace. If the command is not found, then it returns 0. Otherwise it places information about the command in the \fBTcl_CmdInfo\fR structure pointed to by \fIinfoPtr\fR and returns 1. A \fBTcl_CmdInfo\fR structure has the following fields: .CS typedef struct Tcl_CmdInfo { int isNativeObjectProc; Tcl_ObjCmdProc *objProc; ClientData objClientData; Tcl_CmdProc *proc; ClientData clientData; Tcl_CmdDeleteProc *deleteProc; ClientData deleteData; Tcl_Namespace *namespacePtr; } Tcl_CmdInfo; .CE The \fIisNativeObjectProc\fR field has the value 1 if \fBTcl_CreateObjCommand\fR was called to register the command; it is 0 if only \fBTcl_CreateCommand\fR was called. It allows a program to determine whether it is faster to call \fIobjProc\fR or \fIproc\fR: \fIobjProc\fR is normally faster if \fIisNativeObjectProc\fR has the value 1. The fields \fIobjProc\fR and \fIobjClientData\fR have the same meaning as the \fIproc\fR and \fIclientData\fR arguments to \fBTcl_CreateObjCommand\fR; they hold information about the object-based command procedure that the Tcl interpreter calls to implement the command. The fields \fIproc\fR and \fIclientData\fR hold information about the string-based command procedure that implements the command. If \fBTcl_CreateCommand\fR was called for this command, this is the procedure passed to it; otherwise, this is a compatibility procedure registered by \fBTcl_CreateObjCommand\fR that simply calls the command's object-based procedure after converting its string arguments to Tcl objects. The field \fIdeleteData\fR is the ClientData value to pass to \fIdeleteProc\fR; it is normally the same as \fIclientData\fR but may be set independently using the \fBTcl_SetCommandInfo\fR procedure. The field \fInamespacePtr\fR holds a pointer to the Tcl_Namespace that contains the command. .PP \fBTcl_SetCommandInfo\fR is used to modify the procedures and ClientData values associated with a command. Its \fIcmdName\fR argument is the name of a command in \fIinterp\fR. \fIcmdName\fR may include \fB::\fR namespace qualifiers to identify a command in a particular namespace. If this command does not exist then \fBTcl_SetCommandInfo\fR returns 0. Otherwise, it copies the information from \fI*infoPtr\fR to Tcl's internal structure for the command and returns 1. Note that this procedure allows the ClientData for a command's deletion procedure to be given a different value than the ClientData for its command procedure. Note that \fBTcl_SetCmdInfo\fR will not change a command's namespace; you must use \fBTcl_RenameCommand\fR to do that. .PP \fBTcl_GetCommandName\fR provides a mechanism for tracking commands that have been renamed. Given a token returned by \fBTcl_CreateObjCommand\fR when the command was created, \fBTcl_GetCommandName\fR returns the string name of the command. If the command has been renamed since it was created, then \fBTcl_GetCommandName\fR returns the current name. This name does not include any \fB::\fR namespace qualifiers. The command corresponding to \fItoken\fR must not have been deleted. The string returned by \fBTcl_GetCommandName\fR is in dynamic memory owned by Tcl and is only guaranteed to retain its value as long as the command isn't deleted or renamed; callers should copy the string if they need to keep it for a long time. .PP .SH "SEE ALSO" Tcl_CreateCommand, Tcl_ResetResult, Tcl_SetObjResult .SH KEYWORDS bind, command, create, delete, namespace, object 070701000779c9000081a400004ccf0000000a0000000133f371be0000386e000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/man3/CrtSlave.3'\" '\" Copyright (c) 1995-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) CrtSlave.3 1.26 97/07/31 18:00:14 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_CreateSlave 3 7.6 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_IsSafe, Tcl_MakeSafe, Tcl_CreateSlave, Tcl_GetSlave, Tcl_GetMaster, Tcl_GetInterpPath, Tcl_CreateAlias, Tcl_CreateAliasObj, Tcl_GetAlias, Tcl_GetAliasObj, Tcl_ExposeCommand, Tcl_HideCommand \- manage multiple Tcl interpreters, aliases and hidden commands. .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_IsSafe\fR(\fIinterp\fR) .sp int \fBTcl_MakeSafe\fR(\fIinterp\fR) .sp Tcl_Interp * \fBTcl_CreateSlave\fR(\fIinterp, slaveName, isSafe\fR) .sp Tcl_Interp * \fBTcl_GetSlave\fR(\fIinterp, slaveName\fR) .sp Tcl_Interp * \fBTcl_GetMaster\fR(\fIinterp\fR) .sp int \fBTcl_GetInterpPath\fR(\fIaskingInterp, slaveInterp\fR) .sp .VS int \fBTcl_CreateAlias\fR(\fIslaveInterp, srcCmd, targetInterp, targetCmd, argc, argv\fR) .sp int \fBTcl_CreateAliasObj\fR(\fIslaveInterp, srcCmd, targetInterp, targetCmd, objc, objv\fR) .VE .sp int \fBTcl_GetAlias\fR(\fIinterp, srcCmd, targetInterpPtr, targetCmdPtr, argcPtr, argvPtr\fR) .sp .VS int \fBTcl_GetAliasObj\fR(\fIinterp, srcCmd, targetInterpPtr, targetCmdPtr, objcPtr, objvPtr\fR) .sp int \fBTcl_ExposeCommand\fR(\fIinterp, hiddenCmdName, cmdName\fR) .sp int \fBTcl_HideCommand\fR(\fIinterp, cmdName, hiddenCmdName\fR) .SH ARGUMENTS .AS Tcl_InterpDeleteProc **hiddenCmdName .AP Tcl_Interp *interp in Interpreter in which to execute the specified command. .AP char *slaveName in Name of slave interpreter to create or manipulate. .AP int isSafe in If non-zero, a ``safe'' slave that is suitable for running untrusted code is created, otherwise a trusted slave is created. .AP Tcl_Interp *slaveInterp in Interpreter to use for creating the source command for an alias (see below). .AP char *srcCmd in Name of source command for alias. .AP Tcl_Interp *targetInterp in Interpreter that contains the target command for an alias. .AP char *targetCmd in Name of target command for alias in \fItargetInterp\fR. .AP int argc in Count of additional arguments to pass to the alias command. .AP char **argv in Vector of strings, the additional arguments to pass to the alias command. This storage is owned by the caller. .AP int objc in Count of additional object arguments to pass to the alias object command. .AP Tcl_Object **objv in Vector of Tcl_Obj structures, the additional object argumenst to pass to the alias object command. This storage is owned by the caller. .AP Tcl_Interp **targetInterpPtr in Pointer to location to store the address of the interpreter where a target command is defined for an alias. .AP char **targetCmdPtr out Pointer to location to store the address of the name of the target command for an alias. .AP int *argcPtr out Pointer to location to store count of additional arguments to be passed to the alias. The location is in storage owned by the caller. .AP char ***argvPtr out Pointer to location to store a vector of strings, the additional arguments to pass to an alias. The location is in storage owned by the caller, the vector of strings is owned by the called function. .AP int *objcPtr out Pointer to location to store count of additional object arguments to be passed to the alias. The location is in storage owned by the caller. .AP Tcl_Obj ***objvPtr out Pointer to location to store a vector of Tcl_Obj structures, the additional arguments to pass to an object alias command. The location is in storage owned by the caller, the vector of Tcl_Obj structures is owned by the called function. .VS .AP char *cmdName in Name of an exposed command to hide or create. .AP char *hiddenCmdName in Name under which a hidden command is stored and with which it can be exposed or invoked. .VE .BE .SH DESCRIPTION .PP These procedures are intended for access to the multiple interpreter facility from inside C programs. They enable managing multiple interpreters in a hierarchical relationship, and the management of aliases, commands that when invoked in one interpreter execute a command in another interpreter. The return value for those procedures that return an \fBint\fR is either \fBTCL_OK\fR or \fBTCL_ERROR\fR. If \fBTCL_ERROR\fR is returned then the \fBresult\fR field of the interpreter contains an error message. .PP \fBTcl_CreateSlave\fR creates a new interpreter as a slave of \fIinterp\fR. It also creates a slave command named \fIslaveName\fR in \fIinterp\fR which allows \fIinterp\fR to manipulate the new slave. If \fIisSafe\fR is zero, the command creates a trusted slave in which Tcl code has access to all the Tcl commands. If it is \fB1\fR, the command creates a ``safe'' slave in which Tcl code has access only to set of Tcl commands defined as ``Safe Tcl''; see the manual entry for the Tcl \fBinterp\fR command for details. If the creation of the new slave interpreter failed, \fBNULL\fR is returned. .PP \fBTcl_IsSafe\fR returns \fB1\fR if \fIinterp\fR is ``safe'' (was created with the \fBTCL_SAFE_INTERPRETER\fR flag specified), \fB0\fR otherwise. .PP \fBTcl_MakeSafe\fR makes \fIinterp\fR ``safe'' by removing all non-core and core unsafe functionality. Note that if you call this after adding some extension to an interpreter, all traces of that extension will be removed from the interpreter. .PP \fBTcl_GetSlave\fR returns a pointer to a slave interpreter of \fIinterp\fR. The slave interpreter is identified by \fIslaveName\fR. If no such slave interpreter exists, \fBNULL\fR is returned. .PP \fBTcl_GetMaster\fR returns a pointer to the master interpreter of \fIinterp\fR. If \fIinterp\fR has no master (it is a top-level interpreter) then \fBNULL\fR is returned. .PP \fBTcl_GetInterpPath\fR sets the \fIresult\fR field in \fIaskingInterp\fR to the relative path between \fIaskingInterp\fR and \fIslaveInterp\fR; \fIslaveInterp\fR must be a slave of \fIaskingInterp\fR. If the computation of the relative path succeeds, \fBTCL_OK\fR is returned, else \fBTCL_ERROR\fR is returned and the \fIresult\fR field in \fIaskingInterp\fR contains the error message. .PP .VS \fBTcl_CreateAlias\fR creates an object command named \fIsrcCmd\fR in \fIslaveInterp\fR that when invoked, will cause the command \fItargetCmd\fR to be invoked in \fItargetInterp\fR. The arguments specified by the strings contained in \fIargv\fR are always prepended to any arguments supplied in the invocation of \fIsrcCmd\fR and passed to \fItargetCmd\fR. This operation returns \fBTCL_OK\fR if it succeeds, or \fBTCL_ERROR\fR if it fails; in that case, an error message is left in the object result of \fIslaveInterp\fR. Note that there are no restrictions on the ancestry relationship (as created by \fBTcl_CreateSlave\fR) between \fIslaveInterp\fR and \fItargetInterp\fR. Any two interpreters can be used, without any restrictions on how they are related. .PP \fBTcl_CreateAliasObj\fR is similar to \fBTcl_CreateAliasObj\fR except that it takes a vector of objects to pass as additional arguments instead of a vector of strings. .VE .PP \fBTcl_GetAlias\fR returns information about an alias \fIaliasName\fR in \fIinterp\fR. Any of the result fields can be \fBNULL\fR, in which case the corresponding datum is not returned. If a result field is non\-\fBNULL\fR, the address indicated is set to the corresponding datum. For example, if \fItargetNamePtr\fR is non\-\fBNULL\fR it is set to a pointer to the string containing the name of the target command. .VS .PP \fBTcl_GetAliasObj\fR is similar to \fBTcl_GetAlias\fR except that it returns a pointer to a vector of Tcl_Obj structures instead of a vector of strings. .PP \fBTcl_ExposeCommand\fR moves the command named \fIhiddenCmdName\fR from the set of hidden commands to the set of exposed commands, putting it under the name \fIcmdName\fR. \fIHiddenCmdName\fR must be the name of an existing hidden command, or the operation will return \fBTCL_ERROR\fR and leave an error message in the \fIresult\fR field in \fIinterp\fR. If an exposed command named \fIcmdName\fR already exists, the operation returns \fBTCL_ERROR\fR and leaves an error message in the object result of \fIinterp\fR. If the operation succeeds, it returns \fBTCL_OK\fR. After executing this command, attempts to use \fIcmdName\fR in a call to \fBTcl_Eval\fR or with the Tcl \fBeval\fR command will again succeed. .PP \fBTcl_HideCommand\fR moves the command named \fIcmdName\fR from the set of exposed commands to the set of hidden commands, under the name \fIhiddenCmdName\fR. \fICmdName\fR must be the name of an existing exposed command, or the operation will return \fBTCL_ERROR\fR and leave an error message in the object result of \fIinterp\fR. Currently both \fIcmdName\fR and \fIhiddenCmdName\fR must not contain namespace qualifiers, or the operation will return \fBTCL_ERROR\fR and leave an error message in the object result of \fIinterp\fR. The \fICmdName\fR will be looked up in the global namespace, and not relative to the current namespace, even if the current namespace is not the global one. If a hidden command whose name is \fIhiddenCmdName\fR already exists, the operation also returns \fBTCL_ERROR\fR and the \fIresult\fR field in \fIinterp\fR contains an error message. If the operation succeeds, it returns \fBTCL_OK\fR. After executing this command, attempts to use \fIcmdName\fR in a call to \fBTcl_Eval\fR or with the Tcl \fBeval\fR command will fail. .PP .SH "SEE ALSO" For a description of the Tcl interface to multiple interpreters, see \fIinterp(n)\fR. .SH KEYWORDS alias, command, exposed commands, hidden commands, interpreter, invoke, master, slave, 070701000779ca000081a400004ccf0000000a0000000133f371be00001d93000000a30000000400000000000000000000002a00000004reloc/SUNWtcl/8.0/man/man3/CrtTimerHdlr.3'\" '\" Copyright (c) 1990 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) CrtTimerHdlr.3 1.4 96/09/17 10:54:58 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_CreateTimerHandler 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_CreateTimerHandler, Tcl_DeleteTimerHandler \- call a procedure at a given time .SH SYNOPSIS .nf \fB#include \fR .sp Tcl_TimerToken \fBTcl_CreateTimerHandler\fR(\fImilliseconds, proc, clientData\fR) .sp \fBTcl_DeleteTimerHandler\fR(\fItoken\fR) .SH ARGUMENTS .AS Tcl_TimerToken milliseconds .AP int milliseconds in How many milliseconds to wait before invoking \fIproc\fR. .AP Tcl_TimerProc *proc in Procedure to invoke after \fImilliseconds\fR have elapsed. .AP ClientData clientData in Arbitrary one-word value to pass to \fIproc\fR. .AP Tcl_TimerToken token in Token for previously-created timer handler (the return value from some previous call to \fBTcl_CreateTimerHandler\fR). .BE .SH DESCRIPTION .PP \fBTcl_CreateTimerHandler\fR arranges for \fIproc\fR to be invoked at a time \fImilliseconds\fR milliseconds in the future. The callback to \fIproc\fR will be made by \fBTcl_DoOneEvent\fR, so \fBTcl_CreateTimerHandler\fR is only useful in programs that dispatch events through \fBTcl_DoOneEvent\fR or through Tcl commands such as \fBvwait\fR. The call to \fIproc\fR may not be made at the exact time given by \fImilliseconds\fR: it will be made at the next opportunity after that time. For example, if \fBTcl_DoOneEvent\fR isn't called until long after the time has elapsed, or if there are other pending events to process before the call to \fIproc\fR, then the call to \fIproc\fR will be delayed. .PP \fIProc\fR should have arguments and return value that match the type \fBTcl_TimerProc\fR: .CS typedef void Tcl_TimerProc(ClientData \fIclientData\fR); .CE The \fIclientData\fR parameter to \fIproc\fR is a copy of the \fIclientData\fR argument given to \fBTcl_CreateTimerHandler\fR when the callback was created. Typically, \fIclientData\fR points to a data structure containing application-specific information about what to do in \fIproc\fR. .PP \fBTcl_DeleteTimerHandler\fR may be called to delete a previously-created timer handler. It deletes the handler indicated by \fItoken\fR so that no call to \fIproc\fR will be made; if that handler no longer exists (e.g. because the time period has already elapsed and \fIproc\fR has been invoked then \fBTcl_DeleteTimerHandler\fR does nothing. The tokens returned by \fBTcl_CreateTimerHandler\fR never have a value of NULL, so if NULL is passed to \fBTcl_DeleteTimerHandler\fR then the procedure does nothing. .SH KEYWORDS callback, clock, handler, timer 070701000779cb000081a400004ccf0000000a0000000133f371be0000242e000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/man3/CrtTrace.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) CrtTrace.3 1.14 96/03/25 20:01:10 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_CreateTrace 3 "" Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_CreateTrace, Tcl_DeleteTrace \- arrange for command execution to be traced .SH SYNOPSIS .nf \fB#include \fR .sp Tcl_Trace \fBTcl_CreateTrace\fR(\fIinterp, level, proc, clientData\fR) .sp \fBTcl_DeleteTrace\fR(\fIinterp, trace\fR) .SH ARGUMENTS .AS Tcl_CmdTraceProc (clientData)() .AP Tcl_Interp *interp in Interpreter containing command to be traced or untraced. .AP int level in Only commands at or below this nesting level will be traced. 1 means top-level commands only, 2 means top-level commands or those that are invoked as immediate consequences of executing top-level commands (procedure bodies, bracketed commands, etc.) and so on. .AP Tcl_CmdTraceProc *proc in Procedure to call for each command that's executed. See below for details on the calling sequence. .AP ClientData clientData in Arbitrary one-word value to pass to \fIproc\fR. .AP Tcl_Trace trace in Token for trace to be removed (return value from previous call to \fBTcl_CreateTrace\fR). .BE .SH DESCRIPTION .PP \fBTcl_CreateTrace\fR arranges for command tracing. From now on, \fIproc\fR will be invoked before Tcl calls command procedures to process commands in \fIinterp\fR. The return value from \fBTcl_CreateTrace\fR is a token for the trace, which may be passed to \fBTcl_DeleteTrace\fR to remove the trace. There may be many traces in effect simultaneously for the same command interpreter. .PP \fIProc\fR should have arguments and result that match the type \fBTcl_CmdTraceProc\fR: .CS typedef void Tcl_CmdTraceProc( ClientData \fIclientData\fR, Tcl_Interp *\fIinterp\fR, int \fIlevel\fR, char *\fIcommand\fR, Tcl_CmdProc *\fIcmdProc\fR, ClientData \fIcmdClientData\fR, int \fIargc\fR, char *\fIargv\fR[]); .CE The \fIclientData\fR and \fIinterp\fR parameters are copies of the corresponding arguments given to \fBTcl_CreateTrace\fR. \fIClientData\fR typically points to an application-specific data structure that describes what to do when \fIproc\fR is invoked. \fILevel\fR gives the nesting level of the command (1 for top-level commands passed to \fBTcl_Eval\fR by the application, 2 for the next-level commands passed to \fBTcl_Eval\fR as part of parsing or interpreting level-1 commands, and so on). \fICommand\fR points to a string containing the text of the command, before any argument substitution. \fICmdProc\fR contains the address of the command procedure that will be called to process the command (i.e. the \fIproc\fR argument of some previous call to \fBTcl_CreateCommand\fR) and \fIcmdClientData\fR contains the associated client data for \fIcmdProc\fR (the \fIclientData\fR value passed to \fBTcl_CreateCommand\fR). \fIArgc\fR and \fIargv\fR give the final argument information that will be passed to \fIcmdProc\fR, after command, variable, and backslash substitution. \fIProc\fR must not modify the \fIcommand\fR or \fIargv\fR strings. .PP Tracing will only occur for commands at nesting level less than or equal to the \fIlevel\fR parameter (i.e. the \fIlevel\fR parameter to \fIproc\fR will always be less than or equal to the \fIlevel\fR parameter to \fBTcl_CreateTrace\fR). .PP Calls to \fIproc\fR will be made by the Tcl parser immediately before it calls the command procedure for the command (\fIcmdProc\fR). This occurs after argument parsing and substitution, so tracing for substituted commands occurs before tracing of the commands containing the substitutions. If there is a syntax error in a command, or if there is no command procedure associated with a command name, then no tracing will occur for that command. If a string passed to Tcl_Eval contains multiple commands (bracketed, or on different lines) then multiple calls to \fIproc\fR will occur, one for each command. The \fIcommand\fR string for each of these trace calls will reflect only a single command, not the entire string passed to Tcl_Eval. .PP \fBTcl_DeleteTrace\fR removes a trace, so that no future calls will be made to the procedure associated with the trace. After \fBTcl_DeleteTrace\fR returns, the caller should never again use the \fItrace\fR token. .SH KEYWORDS command, create, delete, interpreter, trace 070701000779cc000081a400004ccf0000000a0000000133f371bf0000290e000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/man3/DString.3'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) DString.3 1.20 96/08/26 12:59:44 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_DString 3 7.4 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_DStringInit, Tcl_DStringAppend, Tcl_DStringAppendElement, Tcl_DStringStartSublist, Tcl_DStringEndSublist, Tcl_DStringLength, Tcl_DStringValue, Tcl_DStringSetLength, Tcl_DStringFree, Tcl_DStringResult, Tcl_DStringGetResult \- manipulate dynamic strings .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_DStringInit\fR(\fIdsPtr\fR) .sp char * \fBTcl_DStringAppend\fR(\fIdsPtr, string, length\fR) .sp char * \fBTcl_DStringAppendElement\fR(\fIdsPtr, string\fR) .sp \fBTcl_DStringStartSublist\fR(\fIdsPtr\fR) .sp \fBTcl_DStringEndSublist\fR(\fIdsPtr\fR) .sp int \fBTcl_DStringLength\fR(\fIdsPtr\fR) .sp char * \fBTcl_DStringValue\fR(\fIdsPtr\fR) .sp \fBTcl_DStringSetLength\fR(\fIdsPtr, newLength\fR) .sp \fBTcl_DStringFree\fR(\fIdsPtr\fR) .sp \fBTcl_DStringResult\fR(\fIinterp, dsPtr\fR) .sp \fBTcl_DStringGetResult\fR(\fIinterp, dsPtr\fR) .SH ARGUMENTS .AS Tcl_DString newLength .AP Tcl_DString *dsPtr in/out Pointer to structure that is used to manage a dynamic string. .AP char *string in Pointer to characters to add to dynamic string. .AP int length in Number of characters from string to add to dynamic string. If -1, add all characters up to null terminating character. .AP int newLength in New length for dynamic string, not including null terminating character. .AP Tcl_Interp *interp in/out Interpreter whose result is to be set from or moved to the dynamic string. .BE .SH DESCRIPTION .PP Dynamic strings provide a mechanism for building up arbitrarily long strings by gradually appending information. If the dynamic string is short then there will be no memory allocation overhead; as the string gets larger, additional space will be allocated as needed. .PP \fBTcl_DStringInit\fR initializes a dynamic string to zero length. The Tcl_DString structure must have been allocated by the caller. No assumptions are made about the current state of the structure; anything already in it is discarded. If the structure has been used previously, \fBTcl_DStringFree\fR should be called first to free up any memory allocated for the old string. .PP \fBTcl_DStringAppend\fR adds new information to a dynamic string, allocating more memory for the string if needed. If \fIlength\fR is less than zero then everything in \fIstring\fR is appended to the dynamic string; otherwise \fIlength\fR specifies the number of bytes to append. \fBTcl_DStringAppend\fR returns a pointer to the characters of the new string. The string can also be retrieved from the \fIstring\fR field of the Tcl_DString structure. .PP \fBTcl_DStringAppendElement\fR is similar to \fBTcl_DStringAppend\fR except that it doesn't take a \fIlength\fR argument (it appends all of \fIstring\fR) and it converts the string to a proper list element before appending. \fBTcl_DStringAppendElement\fR adds a separator space before the new list element unless the new list element is the first in a list or sub-list (i.e. either the current string is empty, or it contains the single character ``{'', or the last two characters of the current string are `` {''). \fBTcl_DStringAppendElement\fR returns a pointer to the characters of the new string. .PP \fBTcl_DStringStartSublist\fR and \fBTcl_DStringEndSublist\fR can be used to create nested lists. To append a list element that is itself a sublist, first call \fBTcl_DStringStartSublist\fR, then call \fBTcl_DStringAppendElement\fR for each of the elements in the sublist, then call \fBTcl_DStringEndSublist\fR to end the sublist. \fBTcl_DStringStartSublist\fR appends a space character if needed, followed by an open brace; \fBTcl_DStringEndSublist\fR appends a close brace. Lists can be nested to any depth. .PP \fBTcl_DStringLength\fR is a macro that returns the current length of a dynamic string (not including the terminating null character). \fBTcl_DStringValue\fR is a macro that returns a pointer to the current contents of a dynamic string. .PP .PP \fBTcl_DStringSetLength\fR changes the length of a dynamic string. If \fInewLength\fR is less than the string's current length, then the string is truncated. If \fInewLength\fR is greater than the string's current length, then the string will become longer and new space will be allocated for the string if needed. However, \fBTcl_DStringSetLength\fR will not initialize the new space except to provide a terminating null character; it is up to the caller to fill in the new space. \fBTcl_DStringSetLength\fR does not free up the string's storage space even if the string is truncated to zero length, so \fBTcl_DStringFree\fR will still need to be called. .PP \fBTcl_DStringFree\fR should be called when you're finished using the string. It frees up any memory that was allocated for the string and reinitializes the string's value to an empty string. .PP \fBTcl_DStringResult\fR sets the result of \fIinterp\fR to the value of the dynamic string given by \fIdsPtr\fR. It does this by moving a pointer from \fIdsPtr\fR to \fIinterp->result\fR. This saves the cost of allocating new memory and copying the string. \fBTcl_DStringResult\fR also reinitializes the dynamic string to an empty string. .PP \fBTcl_DStringGetResult\fR does the opposite of \fBTcl_DStringResult\fR. It sets the value of \fIdsPtr\fR to the result of \fIinterp\fR and it clears \fIinterp\fR's result. If possible it does this by moving a pointer rather than by copying the string. .SH KEYWORDS append, dynamic string, free, result 070701000779cd000081a400004ccf0000000a0000000133f371bf00001c37000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/man/man3/DetachPids.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) DetachPids.3 1.15 96/08/26 12:59:44 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_DetachPids 3 "" Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_DetachPids, Tcl_ReapDetachedProcs \- manage child processes in background .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_DetachPids\fR(\fInumPids, pidPtr\fR) .sp \fBTcl_ReapDetachedProcs\fR() .SH ARGUMENTS .AS int *statusPtr .AP int numPids in Number of process ids contained in the array pointed to by \fIpidPtr\fR. .AP int *pidPtr in Address of array containing \fInumPids\fR process ids. .BE .SH DESCRIPTION .PP \fBTcl_DetachPids\fR and \fBTcl_ReapDetachedProcs\fR provide a mechanism for managing subprocesses that are running in background. These procedures are needed because the parent of a process must eventually invoke the \fBwaitpid\fR kernel call (or one of a few other similar kernel calls) to wait for the child to exit. Until the parent waits for the child, the child's state cannot be completely reclaimed by the system. If a parent continually creates children and doesn't wait on them, the system's process table will eventually overflow, even if all the children have exited. .PP \fBTcl_DetachPids\fR may be called to ask Tcl to take responsibility for one or more processes whose process ids are contained in the \fIpidPtr\fR array passed as argument. The caller presumably has started these processes running in background and doesn't want to have to deal with them again. .PP \fBTcl_ReapDetachedProcs\fR invokes the \fBwaitpid\fR kernel call on each of the background processes so that its state can be cleaned up if it has exited. If the process hasn't exited yet, \fBTcl_ReapDetachedProcs\fR doesn't wait for it to exit; it will check again the next time it is invoked. Tcl automatically calls \fBTcl_ReapDetachedProcs\fR each time the \fBexec\fR command is executed, so in most cases it isn't necessary for any code outside of Tcl to invoke \fBTcl_ReapDetachedProcs\fR. However, if you call \fBTcl_DetachPids\fR in situations where the \fBexec\fR command may never get executed, you may wish to call \fBTcl_ReapDetachedProcs\fR from time to time so that background processes can be cleaned up. .SH KEYWORDS background, child, detach, process, wait 070701000779ce000081a400004ccf0000000a0000000133f371bf000022b3000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/man/man3/DoOneEvent.3'\" '\" Copyright (c) 1990-1992 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) DoOneEvent.3 1.6 97/05/09 18:12:05 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_DoOneEvent 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_DoOneEvent \- wait for events and invoke event handlers .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_DoOneEvent\fR(\fIflags\fR) .SH ARGUMENTS .AS int flags .AP int flags in This parameter is normally zero. It may be an OR-ed combination of any of the following flag bits: TCL_WINDOW_EVENTS, TCL_FILE_EVENTS, TCL_TIMER_EVENTS, TCL_IDLE_EVENTS, TCL_ALL_EVENTS, or TCL_DONT_WAIT. .BE .SH DESCRIPTION .PP This procedure is the entry point to Tcl's event loop; it is responsible for waiting for events and dispatching event handlers created with procedures such as \fBTk_CreateEventHandler\fR, \fBTcl_CreateFileHandler\fR, \fBTcl_CreateTimerHandler\fR, and \fBTcl_DoWhenIdle\fR. \fBTcl_DoOneEvent\fR checks to see if events are already present on the Tcl event queue; if so, it calls the handler(s) for the first (oldest) event, removes it from the queue, and returns. If there are no events ready to be handled, then \fBTcl_DoOneEvent\fR checks for new events from all possible sources. If any are found, it puts all of them on Tcl's event queue, calls handlers for the first event on the queue, and returns. If no events are found, \fBTcl_DoOneEvent\fR checks for \fBTcl_DoWhenIdle\fR callbacks; if any are found, it invokes all of them and returns. Finally, if no events or idle callbacks have been found, then \fBTcl_DoOneEvent\fR sleeps until an event occurs; then it adds any new events to the Tcl event queue, calls handlers for the first event, and returns. The normal return value is 1 to signify that some event was processed (see below for other alternatives). .PP If the \fIflags\fR argument to \fBTcl_DoOneEvent\fR is non-zero, it restricts the kinds of events that will be processed by \fBTcl_DoOneEvent\fR. \fIFlags\fR may be an OR-ed combination of any of the following bits: .TP 27 \fBTCL_WINDOW_EVENTS\fR \- Process window system events. .TP 27 \fBTCL_FILE_EVENTS\fR \- Process file events. .TP 27 \fBTCL_TIMER_EVENTS\fR \- Process timer events. .TP 27 \fBTCL_IDLE_EVENTS\fR \- Process idle callbacks. .TP 27 \fBTCL_ALL_EVENTS\fR \- Process all kinds of events: equivalent to OR-ing together all of the above flags or specifying none of them. .TP 27 \fBTCL_DONT_WAIT\fR \- Don't sleep: process only events that are ready at the time of the call. .LP If any of the flags \fBTCL_WINDOW_EVENTS\fR, \fBTCL_FILE_EVENTS\fR, \fBTCL_TIMER_EVENTS\fR, or \fBTCL_IDLE_EVENTS\fR is set, then the only events that will be considered are those for which flags are set. Setting none of these flags is equivalent to the value \fBTCL_ALL_EVENTS\fR, which causes all event types to be processed. If an application has defined additional event sources with \fBTcl_CreateEventSource\fR, then additional \fIflag\fR values may also be valid, depending on those event sources. .PP The \fBTCL_DONT_WAIT\fR flag causes \fBTcl_DoOneEvent\fR not to put the process to sleep: it will check for events but if none are found then it returns immediately with a return value of 0 to indicate that no work was done. \fBTcl_DoOneEvent\fR will also return 0 without doing anything if the only alternative is to block forever (this can happen, for example, if \fIflags\fR is \fBTCL_IDLE_EVENTS\fR and there are no \fBTcl_DoWhenIdle\fR callbacks pending, or if no event handlers or timer handlers exist). .PP \fBTcl_DoOneEvent\fR may be invoked recursively. For example, it is possible to invoke \fBTcl_DoOneEvent\fR recursively from a handler called by \fBTcl_DoOneEvent\fR. This sort of operation is useful in some modal situations, such as when a notification dialog has been popped up and an application wishes to wait for the user to click a button in the dialog before doing anything else. .SH KEYWORDS callback, event, handler, idle, timer 070701000779cf000081a400004ccf0000000a0000000133f371bf00001fa5000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/man/man3/DoWhenIdle.3'\" '\" Copyright (c) 1990 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) DoWhenIdle.3 1.6 97/05/09 18:18:33 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_DoWhenIdle 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_DoWhenIdle, Tcl_CancelIdleCall \- invoke a procedure when there are no pending events .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_DoWhenIdle\fR(\fIproc, clientData\fR) .sp \fBTcl_CancelIdleCall\fR(\fIproc, clientData\fR) .SH ARGUMENTS .AS Tcl_IdleProc clientData .AP Tcl_IdleProc *proc in Procedure to invoke. .AP ClientData clientData in Arbitrary one-word value to pass to \fIproc\fR. .BE .SH DESCRIPTION .PP \fBTcl_DoWhenIdle\fR arranges for \fIproc\fR to be invoked when the application becomes idle. The application is considered to be idle when \fBTcl_DoOneEvent\fR has been called, couldn't find any events to handle, and is about to go to sleep waiting for an event to occur. At this point all pending \fBTcl_DoWhenIdle\fR handlers are invoked. For each call to \fBTcl_DoWhenIdle\fR there will be a single call to \fIproc\fR; after \fIproc\fR is invoked the handler is automatically removed. \fBTcl_DoWhenIdle\fR is only usable in programs that use \fBTcl_DoOneEvent\fR to dispatch events. .PP \fIProc\fR should have arguments and result that match the type \fBTcl_IdleProc\fR: .CS typedef void Tcl_IdleProc(ClientData \fIclientData\fR); .CE The \fIclientData\fR parameter to \fIproc\fR is a copy of the \fIclientData\fR argument given to \fBTcl_DoWhenIdle\fR. Typically, \fIclientData\fR points to a data structure containing application-specific information about what \fIproc\fR should do. .PP \fBTcl_CancelIdleCall\fR may be used to cancel one or more previous calls to \fBTcl_DoWhenIdle\fR: if there is a \fBTcl_DoWhenIdle\fR handler registered for \fIproc\fR and \fIclientData\fR, then it is removed without invoking it. If there is more than one handler on the idle list that refers to \fIproc\fR and \fIclientData\fR, all of the handlers are removed. If no existing handlers match \fIproc\fR and \fIclientData\fR then nothing happens. .PP \fBTcl_DoWhenIdle\fR is most useful in situations where (a) a piece of work will have to be done but (b) it's possible that something will happen in the near future that will change what has to be done or require something different to be done. \fBTcl_DoWhenIdle\fR allows the actual work to be deferred until all pending events have been processed. At this point the exact work to be done will presumably be known and it can be done exactly once. .PP For example, \fBTcl_DoWhenIdle\fR might be used by an editor to defer display updates until all pending commands have been processed. Without this feature, redundant redisplays might occur in some situations, such as the processing of a command file. .SH BUGS .PP At present it is not safe for an idle callback to reschedule itself continuously. This will interact badly with certain features of Tk that attempt to wait for all idle callbacks to complete. If you would like for an idle callback to reschedule itself continuously, it is better to use a timer handler with a zero timeout period. .SH KEYWORDS callback, defer, idle callback 070701000779d0000081a400004ccf0000000a0000000133f371bf00001dc7000000a30000000400000000000000000000002700000004reloc/SUNWtcl/8.0/man/man3/DoubleObj.3'\" '\" Copyright (c) 1996-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. '\" '\" SCCS: @(#) @(#) DoubleObj.3 1.6 97/05/08 19:50:07 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_DoubleObj 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_NewDoubleObj, Tcl_SetDoubleObj, Tcl_GetDoubleFromObj \- manipulate Tcl objects as floating-point values .SH SYNOPSIS .nf \fB#include \fR .sp Tcl_Obj * \fBTcl_NewDoubleObj\fR(\fIdoubleValue\fR) .sp \fBTcl_SetDoubleObj\fR(\fIobjPtr, doubleValue\fR) .sp int \fBTcl_GetDoubleFromObj\fR(\fIinterp, objPtr, doublePtr\fR) .SH ARGUMENTS .AS Tcl_Interp doubleValue in/out .AP double doubleValue in A double-precision floating point value used to initialize or set a double object. .AP Tcl_Obj *objPtr in/out For \fBTcl_SetDoubleObj\fR, this points to the object to be converted to double type. For \fBTcl_GetDoubleFromObj\fR, this refers to the object from which to get a double value; if \fIobjPtr\fR does not already point to a double object, an attempt will be made to convert it to one. .AP Tcl_Interp *interp in/out If an error occurs during conversion, an error message is left in the interpreter's result object unless \fIinterp\fR is NULL. .AP double *doublePtr out Points to place to store the double value obtained from \fIobjPtr\fR. .BE .SH DESCRIPTION .PP These procedures are used to create, modify, and read double Tcl objects from C code. \fBTcl_NewDoubleObj\fR and \fBTcl_SetDoubleObj\fR will create a new object of double type or modify an existing object to have double type. Both of these procedures set the object to have the double-precision floating point value given by \fIdoubleValue\fR; \fBTcl_NewDoubleObj\fR returns a pointer to a newly created object with reference count zero. Both procedures set the object's type to be double and assign the double value to the object's internal representation \fIdoubleValue\fR member. \fBTcl_SetDoubleObj\fR invalidates any old string representation and, if the object is not already a double object, frees any old internal representation. .PP \fBTcl_GetDoubleFromObj\fR attempts to return a double value from the Tcl object \fIobjPtr\fR. If the object is not already a double object, it will attempt to convert it to one. If an error occurs during conversion, it returns \fBTCL_ERROR\fR and leaves an error message in the interpreter's result object unless \fIinterp\fR is NULL. Otherwise, it returns \fBTCL_OK\fR and stores the double value in the address given by \fIdoublePtr\fR. If the object is not already a double object, the conversion will free any old internal representation. .SH "SEE ALSO" Tcl_NewObj, Tcl_DecrRefCount, Tcl_IncrRefCount, Tcl_GetObjResult .SH KEYWORDS double, double object, double type, internal representation, object, object type, string representation 070701000779d1000081a400004ccf0000000a0000000133f371bf000023e7000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/man3/Eval.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) Eval.3 1.21 97/01/22 14:22:03 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_Eval 3 7.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_Eval, Tcl_VarEval, Tcl_EvalFile, Tcl_GlobalEval \- execute Tcl commands .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_Eval\fR(\fIinterp, cmd\fR) .sp int \fBTcl_VarEval\fR(\fIinterp, string, string, ... \fB(char *) NULL\fR) .sp int \fBTcl_EvalFile\fR(\fIinterp, fileName\fR) .sp int \fBTcl_GlobalEval\fR(\fIinterp, cmd\fR) .SH ARGUMENTS .AS Tcl_Interp **termPtr; .AP Tcl_Interp *interp in Interpreter in which to execute the command. A string result will be stored in \fIinterp->result\fR. .AP char *cmd in Command (or sequence of commands) to execute. Must be in writable memory (\fBTcl_Eval\fR makes temporary modifications to the command). .AP char *string in String forming part of Tcl command. .AP char *fileName in Name of file containing Tcl command string. .BE .SH DESCRIPTION .PP All four of these procedures execute Tcl commands. \fBTcl_Eval\fR is the core procedure and is used by all the others. It executes the commands in the script held by \fIcmd\fR until either an error occurs or it reaches the end of the script. .PP Note that \fBTcl_Eval\fR and \fBTcl_GlobalEval\fR have been largely replaced by the object-based procedures \fBTcl_EvalObj\fR and \fBTcl_GlobalEvalObj\fR. Those object-based procedures evaluate a script held in a Tcl object instead of a string. The object argument can retain the bytecode instructions for the script and so avoid reparsing the script each time it is executed. \fBTcl_Eval\fR is implemented using \fBTcl_EvalObj\fR but is slower because it must reparse the script each time since there is no object to retain the bytecode instructions. .PP The return value from \fBTcl_Eval\fR is one of the Tcl return codes \fBTCL_OK\fR, \fBTCL_ERROR\fR, \fBTCL_RETURN\fR, \fBTCL_BREAK\fR, or \fBTCL_CONTINUE\fR, and \fIinterp->result\fR will point to a string with additional information (a result value or error message). If an error occurs during compilation, this return information describes the error. Otherwise, this return information corresponds to the last command executed from \fIcmd\fR. .PP \fBTcl_VarEval\fR takes any number of string arguments of any length, concatenates them into a single string, then calls \fBTcl_Eval\fR to execute that string as a Tcl command. It returns the result of the command and also modifies \fIinterp->result\fR in the usual fashion for Tcl commands. The last argument to \fBTcl_VarEval\fR must be NULL to indicate the end of arguments. .PP \fBTcl_EvalFile\fR reads the file given by \fIfileName\fR and evaluates its contents as a Tcl command by calling \fBTcl_Eval\fR. It returns a standard Tcl result that reflects the result of evaluating the file. If the file couldn't be read then a Tcl error is returned to describe why the file couldn't be read. .PP During the processing of a Tcl command it is legal to make nested calls to evaluate other commands (this is how procedures and some control structures are implemented). If a code other than \fBTCL_OK\fR is returned from a nested \fBTcl_Eval\fR invocation, then the caller should normally return immediately, passing that same return code back to its caller, and so on until the top-level application is reached. A few commands, like \fBfor\fR, will check for certain return codes, like \fBTCL_BREAK\fR and \fBTCL_CONTINUE\fR, and process them specially without returning. .PP \fBTcl_Eval\fR keeps track of how many nested \fBTcl_Eval\fR invocations are in progress for \fIinterp\fR. If a code of \fBTCL_RETURN\fR, \fBTCL_BREAK\fR, or \fBTCL_CONTINUE\fR is about to be returned from the topmost \fBTcl_Eval\fR invocation for \fIinterp\fR, it converts the return code to \fBTCL_ERROR\fR and sets \fIinterp->result\fR to point to an error message indicating that the \fBreturn\fR, \fBbreak\fR, or \fBcontinue\fR command was invoked in an inappropriate place. This means that top-level applications should never see a return code from \fBTcl_Eval\fR other then \fBTCL_OK\fR or \fBTCL_ERROR\fR. .SH "SEE ALSO" Tcl_EvalObj, Tcl_GlobalEvalObj .SH KEYWORDS command, execute, file, global, object, object result, variable 070701000779d2000081a400004ccf0000000a0000000133f371c000002004000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/man3/EvalObj.3'\" '\" Copyright (c) 1996-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. '\" '\" SCCS: @(#) EvalObj.3 1.4 97/01/22 15:18:44 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_EvalObj 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_EvalObj, Tcl_GlobalEvalObj \- execute Tcl commands .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_EvalObj\fR(\fIinterp, objPtr\fR) .sp int \fBTcl_GlobalEvalObj\fR(\fIinterp, objPtr\fR) .SH ARGUMENTS .AS Tcl_Interp **termPtr; .AP Tcl_Interp *interp in Interpreter in which to execute the command. The command's result will be stored in the interpreter's result object and can be retrieved using \fBTcl_GetObjResult\fR. .AP Tcl_Obj *objPtr in A Tcl object containing a command string (or sequence of commands in a string) to execute. .BE .SH DESCRIPTION .PP These two procedures execute Tcl commands. \fBTcl_EvalObj\fR is the core procedure and is used by \fBTcl_GlobalEvalObj\fR. It executes the commands in the script held by \fIobjPtr\fR until either an error occurs or it reaches the end of the script. If this is the first time \fIobjPtr\fR has been executed, its commands are compiled into bytecode instructions that are then executed if there are no compilation errors. .PP The return value from \fBTcl_EvalObj\fR is one of the Tcl return codes \fBTCL_OK\fR, \fBTCL_ERROR\fR, \fBTCL_RETURN\fR, \fBTCL_BREAK\fR, or \fBTCL_CONTINUE\fR, and a result object containing additional information (a result value or error message) that can be retrieved using \fBTcl_GetObjResult\fR. If an error occurs during compilation, this return information describes the error. Otherwise, this return information corresponds to the last command executed from \fIobjPtr\fR. .PP \fBTcl_GlobalEvalObj\fR is similar to \fBTcl_EvalObj\fR except that it processes the command at global level. This means that the variable context for the command consists of global variables only (it ignores any Tcl procedure that is active). This produces an effect similar to the Tcl command ``\fBuplevel 0\fR''. .PP During the processing of a Tcl command it is legal to make nested calls to evaluate other commands (this is how procedures and some control structures are implemented). If a code other than \fBTCL_OK\fR is returned from a nested \fBTcl_EvalObj\fR invocation, then the caller should normally return immediately, passing that same return code back to its caller, and so on until the top-level application is reached. A few commands, like \fBfor\fR, will check for certain return codes, like \fBTCL_BREAK\fR and \fBTCL_CONTINUE\fR, and process them specially without returning. .PP \fBTcl_EvalObj\fR keeps track of how many nested \fBTcl_EvalObj\fR invocations are in progress for \fIinterp\fR. If a code of \fBTCL_RETURN\fR, \fBTCL_BREAK\fR, or \fBTCL_CONTINUE\fR is about to be returned from the topmost \fBTcl_EvalObj\fR invocation for \fIinterp\fR, it converts the return code to \fBTCL_ERROR\fR and sets the interpreter's result object to point to an error message indicating that the \fBreturn\fR, \fBbreak\fR, or \fBcontinue\fR command was invoked in an inappropriate place. This means that top-level applications should never see a return code from \fBTcl_EvalObj\fR other then \fBTCL_OK\fR or \fBTCL_ERROR\fR. .SH "SEE ALSO" Tcl_GetObjResult, Tcl_SetObjResult .SH KEYWORDS command, execute, file, global, object, object result, variable 070701000779d3000081a400004ccf0000000a0000000133f371c0000022be000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/man3/Exit.3'\" '\" Copyright (c) 1995-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) Exit.3 1.8 96/12/10 07:37:23 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_Exit 3 7.7 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_Exit, Tcl_Finalize, Tcl_CreateExitHandler, Tcl_DeleteExitHandler \- end the application (and invoke exit handlers) .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_Exit\fR(\fIstatus\fR) .sp \fBTcl_Finalize\fR() .sp \fBTcl_CreateExitHandler\fR(\fIproc, clientData\fR) .sp \fBTcl_DeleteExitHandler\fR(\fIproc, clientData\fR) .SH ARGUMENTS .AS Tcl_ExitProc clientData .AP int status in Provides information about why application exited. Exact meaning may be platform-specific. 0 usually means a normal exit, any nonzero value usually means that an error occurred. .AP Tcl_ExitProc *proc in Procedure to invoke before exiting application. .AP ClientData clientData in Arbitrary one-word value to pass to \fIproc\fR. .BE .SH DESCRIPTION .PP The procedures described here provide a graceful mechanism to end the execution of a \fBTcl\fR application. Exit handlers are invoked to cleanup the application's state before ending the execution of \fBTcl\fR code. .PP Invoke \fBTcl_Exit\fR to end a \fBTcl\fR application and to exit from this process. This procedure is invoked by the \fBexit\fR command, and can be invoked anyplace else to terminate the application. No-one should ever invoke the \fBexit\fR system procedure directly; always invoke \fBTcl_Exit\fR instead, so that it can invoke exit handlers. Note that if other code invokes \fBexit\fR system procedure directly, or otherwise causes the application to terminate without calling \fBTcl_Exit\fR, the exit handlers will not be run. \fBTcl_Exit\fR internally invokes the \fBexit\fR system call, thus it never returns control to its caller. .PP .VS \fBTcl_Finalize\fR is similar to \fBTcl_Exit\fR except that it does not exit from the current process. It is useful for cleaning up when a process is finished using \fBTcl\fR but wishes to continue executing, and when \fBTcl\fR is used in a dynamically loaded extension that is about to be unloaded. On some systems \fBTcl\fR is automatically notified when it is being unloaded, and it calls \fBTcl_Finalize\fR internally; on these systems it not necessary for the caller to explicitly call \fBTcl_Finalize\fR. However, to ensure portability, your code should always invoke \fBTcl_Finalize\fR when \fBTcl\fR is being unloaded, to ensure that the code will work on all platforms. \fBTcl_Finalize\fR can be safely called more than once. .VE .PP \fBTcl_CreateExitHandler\fR arranges for \fIproc\fR to be invoked by \fBTcl_Finalize\fR and \fBTcl_Exit\fR. This provides a hook for cleanup operations such as flushing buffers and freeing global memory. \fIProc\fR should match the type \fBTcl_ExitProc\fR: .CS typedef void Tcl_ExitProc(ClientData \fIclientData\fR); .CE The \fIclientData\fR parameter to \fIproc\fR is a copy of the \fIclientData\fR argument given to \fBTcl_CreateExitHandler\fR when the callback was created. Typically, \fIclientData\fR points to a data structure containing application-specific information about what to do in \fIproc\fR. .PP \fBTcl_DeleteExitHandler\fR may be called to delete a previously-created exit handler. It removes the handler indicated by \fIproc\fR and \fIclientData\fR so that no call to \fIproc\fR will be made. If no such handler exists then \fBTcl_DeleteExitHandler\fR does nothing. .PP .VS .PP \fBTcl_Finalize\fR and \fBTcl_Exit\fR execute all registered exit handlers, in reverse order from the order in which they were registered. This matches the natural order in which extensions are loaded and unloaded; if extension \fBA\fR loads extension \fBB\fR, it usually unloads \fBB\fR before it itself is unloaded. If extension \fBA\fR registers its exit handlers before loading extension \fBB\fR, this ensures that any exit handlers for \fBB\fR will be executed before the exit handlers for \fBA\fR. .VE .SH KEYWORDS callback, cleanup, dynamic loading, end application, exit, unloading 070701000779d4000081a400004ccf0000000a0000000133f371c000002338000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/man3/ExprLong.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) ExprLong.3 1.26 97/06/26 13:42:47 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_ExprLong 3 7.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_ExprLong, Tcl_ExprDouble, Tcl_ExprBoolean, Tcl_ExprString \- evaluate an expression .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_ExprLong\fR(\fIinterp, string, longPtr\fR) .sp int \fBTcl_ExprDouble\fR(\fIinterp, string, doublePtr\fR) .sp int \fBTcl_ExprBoolean\fR(\fIinterp, string, booleanPtr\fR) .sp int \fBTcl_ExprString\fR(\fIinterp, string\fR) .SH ARGUMENTS .AS Tcl_Interp *booleanPtr .AP Tcl_Interp *interp in Interpreter in whose context to evaluate \fIstring\fR or \fIobjPtr\fR. .AP char *string in Expression to be evaluated. Must be in writable memory (the expression parser makes temporary modifications to the string during parsing, which it undoes before returning). .AP long *longPtr out Pointer to location in which to store the integer value of the expression. .AP int *doublePtr out Pointer to location in which to store the floating-point value of the expression. .AP int *booleanPtr out Pointer to location in which to store the 0/1 boolean value of the expression. .BE .SH DESCRIPTION .PP These four procedures all evaluate the expression given by the \fIstring\fR argument and return the result in one of four different forms. The expression can have any of the forms accepted by the \fBexpr\fR command. Note that these procedures have been largely replaced by the object-based procedures \fBTcl_ExprLongObj\fR, \fBTcl_ExprDoubleObj\fR, \fBTcl_ExprBooleanObj\fR, and \fBTcl_ExprStringObj\fR. Those object-based procedures evaluate an expression held in a Tcl object instead of a string. The object argument can retain an internal representation that is more efficient to execute. .PP The \fIinterp\fR argument refers to an interpreter used to evaluate the expression (e.g. for variables and nested Tcl commands) and to return error information. \fIinterp->result\fR is assumed to be initialized in the standard fashion when they are invoked. .PP For all of these procedures the return value is a standard Tcl result: \fBTCL_OK\fR means the expression was successfully evaluated, and \fBTCL_ERROR\fR means that an error occurred while evaluating the expression. If \fBTCL_ERROR\fR is returned then \fIinterp->result\fR will hold a message describing the error. If an error occurs while executing a Tcl command embedded in the expression then that error will be returned. .PP If the expression is successfully evaluated, then its value is returned in one of four forms, depending on which procedure is invoked. \fBTcl_ExprLong\fR stores an integer value at \fI*longPtr\fR. If the expression's actual value is a floating-point number, then it is truncated to an integer. If the expression's actual value is a non-numeric string then an error is returned. .PP \fBTcl_ExprDouble\fR stores a floating-point value at \fI*doublePtr\fR. If the expression's actual value is an integer, it is converted to floating-point. If the expression's actual value is a non-numeric string then an error is returned. .PP \fBTcl_ExprBoolean\fR stores a 0/1 integer value at \fI*booleanPtr\fR. If the expression's actual value is an integer or floating-point number, then they store 0 at \fI*booleanPtr\fR if the value was zero and 1 otherwise. If the expression's actual value is a non-numeric string then it must be one of the values accepted by \fBTcl_GetBoolean\fR such as ``yes'' or ``no'', or else an error occurs. .PP \fBTcl_ExprString\fR returns the value of the expression as a string stored in \fIinterp->result\fR. If the expression's actual value is an integer then \fBTcl_ExprString\fR converts it to a string using \fBsprintf\fR with a ``%d'' converter. If the expression's actual value is a floating-point number, then \fBTcl_ExprString\fR calls \fBTcl_PrintDouble\fR to convert it to a string. .SH "SEE ALSO" Tcl_ExprLongObj, Tcl_ExprDoubleObj, Tcl_ExprBooleanObj, Tcl_ExprObj .SH KEYWORDS boolean, double, evaluate, expression, integer, object, string 070701000779d5000081a400004ccf0000000a0000000133f371c000002132000000a30000000400000000000000000000002900000004reloc/SUNWtcl/8.0/man/man3/ExprLongObj.3'\" '\" Copyright (c) 1996-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. '\" '\" SCCS: @(#) ExprLongObj.3 1.6 97/06/26 13:41:12 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_ExprLongObj 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_ExprLongObj, Tcl_ExprDoubleObj, Tcl_ExprBooleanObj, Tcl_ExprObj \- evaluate an expression .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_ExprLongObj\fR(\fIinterp, objPtr, longPtr\fR) .sp int \fBTcl_ExprDoubleObj\fR(\fIinterp, objPtr, doublePtr\fR) .sp int \fBTcl_ExprBooleanObj\fR(\fIinterp, objPtr, booleanPtr\fR) .sp int \fBTcl_ExprObj\fR(\fIinterp, objPtr, resultPtrPtr\fR) .SH ARGUMENTS .AS Tcl_Interp *resultPtrPtr out .AP Tcl_Interp *interp in Interpreter in whose context to evaluate \fIstring\fR or \fIobjPtr\fR. .AP Tcl_Obj *objPtr in Pointer to an object containing the expression to evaluate. .AP long *longPtr out Pointer to location in which to store the integer value of the expression. .AP int *doublePtr out Pointer to location in which to store the floating-point value of the expression. .AP int *booleanPtr out Pointer to location in which to store the 0/1 boolean value of the expression. .AP Tcl_Obj *resultPtrPtr out Pointer to location in which to store a pointer to the object that is the result of the expression. .BE .SH DESCRIPTION .PP These four procedures all evaluate an expression, returning the result in one of four different forms. The expression is given by the \fIobjPtr\fR argument, and it can have any of the forms accepted by the \fBexpr\fR command. .PP The \fIinterp\fR argument refers to an interpreter used to evaluate the expression (e.g. for variables and nested Tcl commands) and to return error information. .PP For all of these procedures the return value is a standard Tcl result: \fBTCL_OK\fR means the expression was successfully evaluated, and \fBTCL_ERROR\fR means that an error occurred while evaluating the expression. If \fBTCL_ERROR\fR is returned, then a message describing the error can be retrieved using \fBTcl_GetObjResult\fR. If an error occurs while executing a Tcl command embedded in the expression then that error will be returned. .PP If the expression is successfully evaluated, then its value is returned in one of four forms, depending on which procedure is invoked. \fBTcl_ExprLongObj\fR stores an integer value at \fI*longPtr\fR. If the expression's actual value is a floating-point number, then it is truncated to an integer. If the expression's actual value is a non-numeric string then an error is returned. .PP \fBTcl_ExprDoubleObj\fR stores a floating-point value at \fI*doublePtr\fR. If the expression's actual value is an integer, it is converted to floating-point. If the expression's actual value is a non-numeric string then an error is returned. .PP \fBTcl_ExprBooleanObj\fR stores a 0/1 integer value at \fI*booleanPtr\fR. If the expression's actual value is an integer or floating-point number, then they store 0 at \fI*booleanPtr\fR if the value was zero and 1 otherwise. If the expression's actual value is a non-numeric string then it must be one of the values accepted by \fBTcl_GetBoolean\fR such as ``yes'' or ``no'', or else an error occurs. .PP If \fBTcl_ExprObj\fR successfully evaluates the expression, it stores a pointer to the Tcl object containing the expression's value at \fI*resultPtrPtr\fR. In this case, the caller is responsible for calling \fBTcl_DecrRefCount\fR to decrement the object's reference count when it is finished with the object. .SH "SEE ALSO" Tcl_ExprLong, Tcl_ExprDouble, Tcl_ExprBoolean, Tcl_ExprString, Tcl_GetObjResult .SH KEYWORDS boolean, double, evaluate, expression, integer, object, string 070701000779d6000081a400004ccf0000000a0000000133f371c000001843000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/man3/FindExec.3'\" '\" Copyright (c) 1995-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) FindExec.3 1.4 96/10/09 08:29:29 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_FindExecutable 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_FindExecutable \- identify the binary file containing the application .SH SYNOPSIS .nf \fB#include \fR .sp char * \fBTcl_FindExecutable\fR(\fIargv0\fR) .SH ARGUMENTS .AS char *argv0 in .AP char *argv0 in The first command-line argument to the program, which gives the application's name. .BE .SH DESCRIPTION .PP This procedure computes the full path name of the executable file from which the application was invoked and saves it for Tcl's internal use. The executable's path name is needed for several purposes in Tcl. For example, it is needed on some platforms in the implementation of the \fBload\fR command. It is also returned by the \fBinfo nameofexecutable\fR command. .PP On UNIX platforms this procedure is typically invoked as the very first thing in the application's main program; it must be passed \fIargv[0]\fR as its argument. \fBTcl_FindExecutable\fR uses \fIargv0\fR along with the \fBPATH\fR environment variable to find the application's executable, if possible. If it fails to find the binary, then future calls to \fBinfo nameofexecutable\fR will return an empty string. .SH KEYWORDS binary, executable file 070701000779d7000081a400004ccf0000000a0000000133f371c100001e3d000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/man3/GetIndex.3'\" '\" Copyright (c) 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. '\" '\" SCCS: @(#) @(#) GetIndex.3 1.3 97/07/30 16:21:05 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_GetIndexFromObj 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_GetIndexFromObj \- lookup string in table of keywords .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_GetIndexFromObj\fR(\fIinterp, objPtr, tablePtr, msg, flags, indexPtr\fR) .SH ARGUMENTS .AS Tcl_Interp **tablePtr .AP Tcl_Interp *interp in Interpreter to use for error reporting; if NULL, then no message is provided on errors. .AP Tcl_Obj *objPtr in/out The string value of this object is used to search through \fItablePtr\fR. The internal representation is modified to hold the index of the matching table entry. .AP char **tablePtr in An array of null-terminated strings. The end of the array is marked by a NULL string pointer. .AP char *msg in Null-terminated string describing what is being looked up, such as \fBoption\fR. This string is included in error messages. .AP int flags in OR-ed combination of bits providing additional information for operation. The only bit that is currently defined is \fBTCL_EXACT\fR. .AP int *indexPtr out The index of the string in \fItablePtr\fR that matches the value of \fIobjPtr\fR is returned here. .BE .SH DESCRIPTION .PP This procedure provides an efficient way for looking up keywords, switch names, option names, and similar things where the value of an object must be one of a predefined set of values. \fIObjPtr\fR is compared against each of the strings in \fItablePtr\fR to find a match. A match occurs if \fIobjPtr\fR's string value is identical to one of the strings in \fItablePtr\fR, or if it is a unique abbreviation for exactly one of the strings in \fItablePtr\fR and the \fBTCL_EXACT\fR flag was not specified; in either case the index of the matching entry is stored at \fI*indexPtr\fR and TCL_OK is returned. .PP If there is no matching entry, TCL_ERROR is returned and an error message is left in \fIinterp\fR's result if \fIinterp\fR isn't NULL. \fIMsg\fR is included in the error message to indicate what was being looked up. For example, if \fImsg\fR is \fBoption\fR the error message will have a form like \fBbad option "firt": must be first, second, or third\fR. .PP If \fBTcl_GetIndexFromObj\fR completes successfully it modifies the internal representation of \fIobjPtr\fR to hold the address of the table and the index of the matching entry. If \fBTcl_GetIndexFromObj\fR is invoked again with the same \fIobjPtr\fR and \fItablePtr\fR arguments (e.g. during a reinvocation of a Tcl command), it returns the matching index immediately without having to redo the lookup operation. Note: \fBTcl_GetIndexFromObj\fR assumes that the entries in \fItablePtr\fR are static: they must not change between invocations. .SH "SEE ALSO" Tcl_WrongNumArgs .SH KEYWORDS index, object, table lookup 070701000779d8000081a400004ccf0000000a0000000133f371c100001ec8000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/man3/GetInt.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) GetInt.3 1.12 96/03/25 20:03:44 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_GetInt 3 "" Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_GetInt, Tcl_GetDouble, Tcl_GetBoolean \- convert from string to integer, double, or boolean .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_GetInt\fR(\fIinterp, string, intPtr\fR) .sp int \fBTcl_GetDouble\fR(\fIinterp, string, doublePtr\fR) .sp int \fBTcl_GetBoolean\fR(\fIinterp, string, boolPtr\fR) .SH ARGUMENTS .AS Tcl_Interp *doublePtr .AP Tcl_Interp *interp in Interpreter to use for error reporting. .AP char *string in Textual value to be converted. .AP int *intPtr out Points to place to store integer value converted from \fIstring\fR. .AP double *doublePtr out Points to place to store double-precision floating-point value converted from \fIstring\fR. .AP int *boolPtr out Points to place to store boolean value (0 or 1) converted from \fIstring\fR. .BE .SH DESCRIPTION .PP These procedures convert from strings to integers or double-precision floating-point values or booleans (represented as 0- or 1-valued integers). Each of the procedures takes a \fIstring\fR argument, converts it to an internal form of a particular type, and stores the converted value at the location indicated by the procedure's third argument. If all goes well, each of the procedures returns TCL_OK. If \fIstring\fR doesn't have the proper syntax for the desired type then TCL_ERROR is returned, an error message is left in \fIinterp->result\fR, and nothing is stored at *\fIintPtr\fR or *\fIdoublePtr\fR or *\fIboolPtr\fR. .PP \fBTcl_GetInt\fR expects \fIstring\fR to consist of a collection of integer digits, optionally signed and optionally preceded by white space. If the first two characters of \fIstring\fR are ``0x'' then \fIstring\fR is expected to be in hexadecimal form; otherwise, if the first character of \fIstring\fR is ``0'' then \fIstring\fR is expected to be in octal form; otherwise, \fIstring\fR is expected to be in decimal form. .PP \fBTcl_GetDouble\fR expects \fIstring\fR to consist of a floating-point number, which is: white space; a sign; a sequence of digits; a decimal point; a sequence of digits; the letter ``e''; and a signed decimal exponent. Any of the fields may be omitted, except that the digits either before or after the decimal point must be present and if the ``e'' is present then it must be followed by the exponent number. .PP \fBTcl_GetBoolean\fR expects \fIstring\fR to specify a boolean value. If \fIstring\fR is any of \fB0\fR, \fBfalse\fR, \fBno\fR, or \fBoff\fR, then \fBTcl_GetBoolean\fR stores a zero value at \fI*boolPtr\fR. If \fIstring\fR is any of \fB1\fR, \fBtrue\fR, \fByes\fR, or \fBon\fR, then 1 is stored at \fI*boolPtr\fR. Any of these values may be abbreviated, and upper-case spellings are also acceptable. .SH KEYWORDS boolean, conversion, double, floating-point, integer 070701000779d9000081a400004ccf0000000a0000000133f371c100001ab8000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/man3/GetOpnFl.3'\" '\" Copyright (c) 1996-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. '\" '\" SCCS: @(#) GetOpnFl.3 1.3 97/04/23 16:14:43 '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_GetOpenFile 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_GetOpenFile \- Get a standard IO File * handle from a channel. (Unix only) .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_GetOpenFile\fR(\fIinterp, string, write, checkUsage, filePtr\fR) .sp .SH ARGUMENTS .AS Tcl_Interp checkUsage .AP Tcl_Interp *interp in Tcl interpreter from which file handle is to be obtained. .AP char *string in String identifying channel, such as \fBstdin\fR or \fBfile4\fR. .AP int write in Non-zero means the file will be used for writing, zero means it will be used for reading. .AP int checkUsage in If non-zero, then an error will be generated if the file wasn't opened for the access indicated by \fIwrite\fR. .AP ClientData *filePtr out Points to word in which to store pointer to FILE structure for the file given by \fIstring\fR. .BE .SH DESCRIPTION .PP \fBTcl_GetOpenFile\fR takes as argument a file identifier of the form returned by the \fBopen\fR command and returns at \fI*filePtr\fR a pointer to the FILE structure for the file. The \fIwrite\fR argument indicates whether the FILE pointer will be used for reading or writing. In some cases, such as a channel that connects to a pipeline of subprocesses, different FILE pointers will be returned for reading and writing. \fBTcl_GetOpenFile\fR normally returns TCL_OK. If an error occurs in \fBTcl_GetOpenFile\fR (e.g. \fIstring\fR didn't make any sense or \fIcheckUsage\fR was set and the file wasn't opened for the access specified by \fIwrite\fR) then TCL_ERROR is returned and \fIinterp->result\fR will contain an error message. In the current implementation \fIcheckUsage\fR is ignored and consistency checks are always performed. .VS .PP Note that this interface is only supported on the Unix platform. .VE .SH KEYWORDS channel, file handle, permissions, pipeline, read, write 070701000779da000081a400004ccf0000000a0000000133f371c100001e4a000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/man/man3/GetStdChan.3'\" '\" Copyright (c) 1996 by Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" @(#) GetStdChan.3 1.2 96/03/08 13:59:57 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_GetStdChannel 3 7.5 Tcl "Tcl Library Procedures" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME Tcl_GetStdChannel, Tcl_SetStdChannel \- procedures for retrieving and replacing the standard channels .SH SYNOPSIS .nf \fB#include \fR .sp Tcl_Channel \fBTcl_GetStdChannel\fR(\fItype\fR) .sp \fBTcl_SetStdChannel\fR(\fIchannel, type\fR) .sp .SH ARGUMENTS .AS Tcl_Channel channel in .AP int type in The identifier for the standard channel to retrieve or modify. Must be one of \fBTCL_STDIN\fR, \fBTCL_STDOUT\fR, or \fBTCL_STDERR\fR. .AP Tcl_Channel channel in The channel to use as the new value for the specified standard channel. .BE .SH DESCRIPTION .PP Tcl defines three special channels that are used by various I/O related commands if no other channels are specified. The standard input channel has a channel name of \fBstdin\fR and is used by \fBread\fR and \fBgets\fR. The standard output channel is named \fBstdout\fR and is used by \fBputs\fR. The standard error channel is named \fBstderr\fR and is used for reporting errors. In addition, the standard channels are inherited by any child processes created using \fBexec\fR or \fBopen\fR in the absence of any other redirections. .PP The standard channels are actually aliases for other normal channels. The current channel associated with a standard channel can be retrieved by calling \fBTcl_GetStdChannel\fR with one of \fBTCL_STDIN\fR, \fBTCL_STDOUT\fR, or \fBTCL_STDERR\fR as the \fItype\fR. The return value will be a valid channel, or NULL. .PP A new channel can be set for the standard channel specified by \fItype\fR by calling \fBTcl_SetStdChannel\fR with a new channel or NULL in the \fIchannel\fR argument. If the specified channel is closed by a later call to \fBTcl_Close\fR, then the corresponding standard channel will automatically be set to NULL. .PP If \fBTcl_GetStdChannel\fR is called before \fBTcl_SetStdChannel\fR, Tcl will construct a new channel to wrap the appropriate platform-specific standard file handle. If \fBTcl_SetStdChannel\fR is called before \fBTcl_GetStdChannel\fR, then the default channel will not be created. .PP If one of the standard channels is set to NULL, either by calling \fBTcl_SetStdChannel\fR with a null \fIchannel\fR argument, or by calling \fBTcl_Close\fR on the channel, then the next call to \fBTcl_CreateChannel\fR will automatically set the standard channel with the newly created channel. If more than one standard channel is NULL, then the standard channels will be assigned starting with standard input, followed by standard output, with standard error being last. .SH "SEE ALSO" Tcl_Close(3), Tcl_CreateChannel(3) .SH KEYWORDS standard channel, standard input, standard output, standard error 070701000779db000081a400004ccf0000000a0000000133f371c2000032fc000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/man3/Hash.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) Hash.3 1.15 96/03/25 20:04:01 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_Hash 3 "" Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_InitHashTable, Tcl_DeleteHashTable, Tcl_CreateHashEntry, Tcl_DeleteHashEntry, Tcl_FindHashEntry, Tcl_GetHashValue, Tcl_SetHashValue, Tcl_GetHashKey, Tcl_FirstHashEntry, Tcl_NextHashEntry, Tcl_HashStats \- procedures to manage hash tables .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_InitHashTable\fR(\fItablePtr, keyType\fR) .sp \fBTcl_DeleteHashTable\fR(\fItablePtr\fR) .sp Tcl_HashEntry * \fBTcl_CreateHashEntry\fR(\fItablePtr, key, newPtr\fR) .sp \fBTcl_DeleteHashEntry\fR(\fIentryPtr\fR) .sp Tcl_HashEntry * \fBTcl_FindHashEntry\fR(\fItablePtr, key\fR) .sp ClientData \fBTcl_GetHashValue\fR(\fIentryPtr\fR) .sp \fBTcl_SetHashValue\fR(\fIentryPtr, value\fR) .sp char * \fBTcl_GetHashKey\fR(\fItablePtr, entryPtr\fR) .sp Tcl_HashEntry * \fBTcl_FirstHashEntry\fR(\fItablePtr, searchPtr\fR) .sp Tcl_HashEntry * \fBTcl_NextHashEntry\fR(\fIsearchPtr\fR) .sp char * \fBTcl_HashStats\fR(\fItablePtr\fR) .SH ARGUMENTS .AS Tcl_HashSearch *searchPtr .AP Tcl_HashTable *tablePtr in Address of hash table structure (for all procedures but \fBTcl_InitHashTable\fR, this must have been initialized by previous call to \fBTcl_InitHashTable\fR). .AP int keyType in Kind of keys to use for new hash table. Must be either TCL_STRING_KEYS, TCL_ONE_WORD_KEYS, or an integer value greater than 1. .AP char *key in Key to use for probe into table. Exact form depends on \fIkeyType\fR used to create table. .AP int *newPtr out The word at \fI*newPtr\fR is set to 1 if a new entry was created and 0 if there was already an entry for \fIkey\fR. .AP Tcl_HashEntry *entryPtr in Pointer to hash table entry. .AP ClientData value in New value to assign to hash table entry. Need not have type ClientData, but must fit in same space as ClientData. .AP Tcl_HashSearch *searchPtr in Pointer to record to use to keep track of progress in enumerating all the entries in a hash table. .BE .SH DESCRIPTION .PP A hash table consists of zero or more entries, each consisting of a key and a value. Given the key for an entry, the hashing routines can very quickly locate the entry, and hence its value. There may be at most one entry in a hash table with a particular key, but many entries may have the same value. Keys can take one of three forms: strings, one-word values, or integer arrays. All of the keys in a given table have the same form, which is specified when the table is initialized. .PP The value of a hash table entry can be anything that fits in the same space as a ``char *'' pointer. Values for hash table entries are managed entirely by clients, not by the hash module itself. Typically each entry's value is a pointer to a data structure managed by client code. .PP Hash tables grow gracefully as the number of entries increases, so that there are always less than three entries per hash bucket, on average. This allows for fast lookups regardless of the number of entries in a table. .PP \fBTcl_InitHashTable\fR initializes a structure that describes a new hash table. The space for the structure is provided by the caller, not by the hash module. The value of \fIkeyType\fR indicates what kinds of keys will be used for all entries in the table. \fIKeyType\fR must have one of the following values: .IP \fBTCL_STRING_KEYS\fR 25 Keys are null-terminated ASCII strings. They are passed to hashing routines using the address of the first character of the string. .IP \fBTCL_ONE_WORD_KEYS\fR 25 Keys are single-word values; they are passed to hashing routines and stored in hash table entries as ``char *'' values. The pointer value is the key; it need not (and usually doesn't) actually point to a string. .IP \fIother\fR 25 If \fIkeyType\fR is not TCL_STRING_KEYS or TCL_ONE_WORD_KEYS, then it must be an integer value greater than 1. In this case the keys will be arrays of ``int'' values, where \fIkeyType\fR gives the number of ints in each key. This allows structures to be used as keys. All keys must have the same size. Array keys are passed into hashing functions using the address of the first int in the array. .PP \fBTcl_DeleteHashTable\fR deletes all of the entries in a hash table and frees up the memory associated with the table's bucket array and entries. It does not free the actual table structure (pointed to by \fItablePtr\fR), since that memory is assumed to be managed by the client. \fBTcl_DeleteHashTable\fR also does not free or otherwise manipulate the values of the hash table entries. If the entry values point to dynamically-allocated memory, then it is the client's responsibility to free these structures before deleting the table. .PP \fBTcl_CreateHashEntry\fR locates the entry corresponding to a particular key, creating a new entry in the table if there wasn't already one with the given key. If an entry already existed with the given key then \fI*newPtr\fR is set to zero. If a new entry was created, then \fI*newPtr\fR is set to a non-zero value and the value of the new entry will be set to zero. The return value from \fBTcl_CreateHashEntry\fR is a pointer to the entry, which may be used to retrieve and modify the entry's value or to delete the entry from the table. .PP \fBTcl_DeleteHashEntry\fR will remove an existing entry from a table. The memory associated with the entry itself will be freed, but the client is responsible for any cleanup associated with the entry's value, such as freeing a structure that it points to. .PP \fBTcl_FindHashEntry\fR is similar to \fBTcl_CreateHashEntry\fR except that it doesn't create a new entry if the key doesn't exist; instead, it returns NULL as result. .PP \fBTcl_GetHashValue\fR and \fBTcl_SetHashValue\fR are used to read and write an entry's value, respectively. Values are stored and retrieved as type ``ClientData'', which is large enough to hold a pointer value. On almost all machines this is large enough to hold an integer value too. .PP \fBTcl_GetHashKey\fR returns the key for a given hash table entry, either as a pointer to a string, a one-word (``char *'') key, or as a pointer to the first word of an array of integers, depending on the \fIkeyType\fR used to create a hash table. In all cases \fBTcl_GetHashKey\fR returns a result with type ``char *''. When the key is a string or array, the result of \fBTcl_GetHashKey\fR points to information in the table entry; this information will remain valid until the entry is deleted or its table is deleted. .PP \fBTcl_FirstHashEntry\fR and \fBTcl_NextHashEntry\fR may be used to scan all of the entries in a hash table. A structure of type ``Tcl_HashSearch'', provided by the client, is used to keep track of progress through the table. \fBTcl_FirstHashEntry\fR initializes the search record and returns the first entry in the table (or NULL if the table is empty). Each subsequent call to \fBTcl_NextHashEntry\fR returns the next entry in the table or NULL if the end of the table has been reached. A call to \fBTcl_FirstHashEntry\fR followed by calls to \fBTcl_NextHashEntry\fR will return each of the entries in the table exactly once, in an arbitrary order. It is unadvisable to modify the structure of the table, e.g. by creating or deleting entries, while the search is in progress. .PP \fBTcl_HashStats\fR returns a dynamically-allocated string with overall information about a hash table, such as the number of entries it contains, the number of buckets in its hash array, and the utilization of the buckets. It is the caller's responsibility to free the result string by passing it to \fBfree\fR. .PP The header file \fBtcl.h\fR defines the actual data structures used to implement hash tables. This is necessary so that clients can allocate Tcl_HashTable structures and so that macros can be used to read and write the values of entries. However, users of the hashing routines should never refer directly to any of the fields of any of the hash-related data structures; use the procedures and macros defined here. .SH KEYWORDS hash table, key, lookup, search, value 070701000779dc000081a400004ccf0000000a0000000133f371c2000021b8000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/man3/IntObj.3'\" '\" Copyright (c) 1996-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. '\" '\" SCCS: @(#) @(#) IntObj.3 1.7 97/05/08 19:49:22 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_IntObj 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_NewIntObj, Tcl_NewLongObj, Tcl_SetIntObj, Tcl_SetLongObj, Tcl_GetIntFromObj, Tcl_GetLongFromObj \- manipulate Tcl objects as integers .SH SYNOPSIS .nf \fB#include \fR .sp Tcl_Obj * \fBTcl_NewIntObj\fR(\fIintValue\fR) .sp Tcl_Obj * \fBTcl_NewLongObj\fR(\fIlongValue\fR) .sp \fBTcl_SetIntObj\fR(\fIobjPtr, intValue\fR) .sp \fBTcl_SetLongObj\fR(\fIobjPtr, longValue\fR) .sp int \fBTcl_GetIntFromObj\fR(\fIinterp, objPtr, intPtr\fR) .sp int \fBTcl_GetLongFromObj\fR(\fIinterp, objPtr, longPtr\fR) .SH ARGUMENTS .AS Tcl_Interp *interp .AP int intValue in Integer value used to initialize or set an integer object. .AP long longValue in Long integer value used to initialize or set an integer object. .AP Tcl_Obj *objPtr in/out For \fBTcl_SetIntObj\fR and \fBTcl_SetLongObj\fR, this points to the object to be converted to integer type. For \fBTcl_GetIntFromObj\fR and \fBTcl_GetLongFromObj\fR, this refers to the object from which to get an integer or long integer value; if \fIobjPtr\fR does not already point to an integer object, an attempt will be made to convert it to one. .AP Tcl_Interp *interp in/out If an error occurs during conversion, an error message is left in the interpreter's result object unless \fIinterp\fR is NULL. .AP int *intPtr out Points to place to store the integer value obtained by \fBTcl_GetIntFromObj\fR from \fIobjPtr\fR. .AP long *longPtr out Points to place to store the long integer value obtained by \fBTcl_GetLongFromObj\fR from \fIobjPtr\fR. .BE .SH DESCRIPTION .PP These procedures are used to create, modify, and read integer Tcl objects from C code. \fBTcl_NewIntObj\fR, \fBTcl_NewLongObj\fR, \fBTcl_SetIntObj\fR, and \fBTcl_SetLongObj\fR create a new object of integer type or modify an existing object to have integer type. \fBTcl_NewIntObj\fR and \fBTcl_SetIntObj\fR set the object to have the integer value given by \fIintValue\fR, while \fBTcl_NewLongObj\fR and \fBTcl_SetLongObj\fR set the object to have the long integer value given by \fIlongValue\fR. \fBTcl_NewIntObj\fR and \fBTcl_NewLongObj\fR return a pointer to a newly created object with reference count zero. These procedures set the object's type to be integer and assign the integer value to the object's internal representation \fIlongValue\fR member. \fBTcl_SetIntObj\fR and \fBTcl_SetLongObj\fR invalidate any old string representation and, if the object is not already an integer object, free any old internal representation. .PP \fBTcl_GetIntFromObj\fR and \fBTcl_GetLongFromObj\fR attempt to return an integer value from the Tcl object \fIobjPtr\fR. If the object is not already an integer object, they will attempt to convert it to one. If an error occurs during conversion, they return \fBTCL_ERROR\fR and leave an error message in the interpreter's result object unless \fIinterp\fR is NULL. Also, if the long integer held in the object's internal representation \fIlongValue\fR member can not be represented in a (non-long) integer, \fBTcl_GetIntFromObj\fR returns \fBTCL_ERROR\fR and leaves an error message in the interpreter's result object unless \fIinterp\fR is NULL. Otherwise, both procedures return \fBTCL_OK\fR and store the integer or the long integer value in the address given by \fIintPtr\fR and \fIlongPtr\fR respectively. If the object is not already an integer object, the conversion will free any old internal representation. .SH "SEE ALSO" Tcl_NewObj, Tcl_DecrRefCount, Tcl_IncrRefCount, Tcl_GetObjResult .SH KEYWORDS integer, integer object, integer type, internal representation, object, object type, string representation 070701000779dd000081a400004ccf0000000a0000000133f371c20000281f000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/man3/Interp.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) Interp.3 1.16 96/06/06 13:48:02 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_Interp 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_Interp \- client-visible fields of interpreter structures .SH SYNOPSIS .nf \fB#include \fR .sp typedef struct { char *\fIresult\fR; Tcl_FreeProc *\fIfreeProc\fR; int \fIerrorLine\fR; } Tcl_Interp; typedef void Tcl_FreeProc(char *\fIblockPtr\fR); .BE .SH DESCRIPTION .PP The \fBTcl_CreateInterp\fR procedure returns a pointer to a Tcl_Interp structure. This pointer is then passed into other Tcl procedures to process commands in the interpreter and perform other operations on the interpreter. Interpreter structures contain many many fields that are used by Tcl, but only three that may be accessed by clients: \fIresult\fR, \fIfreeProc\fR, and \fIerrorLine\fR. .PP The \fIresult\fR and \fIfreeProc\fR fields are used to return results or error messages from commands. This information is returned by command procedures back to \fBTcl_Eval\fR, and by \fBTcl_Eval\fR back to its callers. The \fIresult\fR field points to the string that represents the result or error message, and the \fIfreeProc\fR field tells how to dispose of the storage for the string when it isn't needed anymore. The easiest way for command procedures to manipulate these fields is to call procedures like \fBTcl_SetResult\fR or \fBTcl_AppendResult\fR; they will hide all the details of managing the fields. The description below is for those procedures that manipulate the fields directly. .PP Whenever a command procedure returns, it must ensure that the \fIresult\fR field of its interpreter points to the string being returned by the command. The \fIresult\fR field must always point to a valid string. If a command wishes to return no result then \fIinterp->result\fR should point to an empty string. Normally, results are assumed to be statically allocated, which means that the contents will not change before the next time \fBTcl_Eval\fR is called or some other command procedure is invoked. .VS In this case, the \fIfreeProc\fR field must be zero. Alternatively, a command procedure may dynamically allocate its return value (e.g. using \fBTcl_Alloc\fR) and store a pointer to it in \fIinterp->result\fR. In this case, the command procedure must also set \fIinterp->freeProc\fR to the address of a procedure that can free the value, or \fBTCL_DYNAMIC\fR if the storage was allocated directly by Tcl or by a call to \fBTcl_Alloc\fR. .VE If \fIinterp->freeProc\fR is non-zero, then Tcl will call \fIfreeProc\fR to free the space pointed to by \fIinterp->result\fR before it invokes the next command. If a client procedure overwrites \fIinterp->result\fR when \fIinterp->freeProc\fR is non-zero, then it is responsible for calling \fIfreeProc\fR to free the old \fIinterp->result\fR (the \fBTcl_FreeResult\fR macro should be used for this purpose). .PP \fIFreeProc\fR should have arguments and result that match the \fBTcl_FreeProc\fR declaration above: it receives a single argument which is a pointer to the result value to free. .VS In most applications \fBTCL_DYNAMIC\fR is the only non-zero value ever used for \fIfreeProc\fR. .VE However, an application may store a different procedure address in \fIfreeProc\fR in order to use an alternate memory allocator or in order to do other cleanup when the result memory is freed. .PP As part of processing each command, \fBTcl_Eval\fR initializes \fIinterp->result\fR and \fIinterp->freeProc\fR just before calling the command procedure for the command. The \fIfreeProc\fR field will be initialized to zero, and \fIinterp->result\fR will point to an empty string. Commands that do not return any value can simply leave the fields alone. Furthermore, the empty string pointed to by \fIresult\fR is actually part of an array of \fBTCL_RESULT_SIZE\fR characters (approximately 200). If a command wishes to return a short string, it can simply copy it to the area pointed to by \fIinterp->result\fR. Or, it can use the sprintf procedure to generate a short result string at the location pointed to by \fIinterp->result\fR. .PP It is a general convention in Tcl-based applications that the result of an interpreter is normally in the initialized state described in the previous paragraph. Procedures that manipulate an interpreter's result (e.g. by returning an error) will generally assume that the result has been initialized when the procedure is called. If such a procedure is to be called after the result has been changed, then \fBTcl_ResetResult\fR should be called first to reset the result to its initialized state. .PP The \fIerrorLine\fR field is valid only after \fBTcl_Eval\fR returns a \fBTCL_ERROR\fR return code. In this situation the \fIerrorLine\fR field identifies the line number of the command being executed when the error occurred. The line numbers are relative to the command being executed: 1 means the first line of the command passed to \fBTcl_Eval\fR, 2 means the second line, and so on. The \fIerrorLine\fR field is typically used in conjunction with \fBTcl_AddErrorInfo\fR to report information about where an error occurred. \fIErrorLine\fR should not normally be modified except by \fBTcl_Eval\fR. .SH KEYWORDS free, initialized, interpreter, malloc, result 070701000779de000081a400004ccf0000000a0000000133f371c2000023a1000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/man3/LinkVar.3'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) LinkVar.3 1.15 96/09/05 17:16:57 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_LinkVar 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_LinkVar, Tcl_UnlinkVar, Tcl_UpdateLinkedVar \- link Tcl variable to C variable .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_LinkVar\fR(\fIinterp, varName, addr, type\fR) .sp \fBTcl_UnlinkVar\fR(\fIinterp, varName\fR) .sp \fBTcl_UpdateLinkedVar\fR(\fIinterp, varName\fR) .SH ARGUMENTS .AS Tcl_Interp writable .AP Tcl_Interp *interp in Interpreter that contains \fIvarName\fR. Also used by \fBTcl_LinkVar\fR to return error messages. .AP char *varName in Name of global variable. Must be in writable memory: Tcl may make temporary modifications to it while parsing the variable name. .AP char *addr in Address of C variable that is to be linked to \fIvarName\fR. .AP int type in Type of C variable. Must be one of TCL_LINK_INT, TCL_LINK_DOUBLE, TCL_LINK_BOOLEAN, or TCL_LINK_STRING, optionally OR'ed with TCL_LINK_READ_ONLY to make Tcl variable read-only. .BE .SH DESCRIPTION .PP \fBTcl_LinkVar\fR uses variable traces to keep the Tcl variable named by \fIvarName\fR in sync with the C variable at the address given by \fIaddr\fR. Whenever the Tcl variable is read the value of the C variable will be returned, and whenever the Tcl variable is written the C variable will be updated to have the same value. \fBTcl_LinkVar\fR normally returns TCL_OK; if an error occurs while setting up the link (e.g. because \fIvarName\fR is the name of array) then TCL_ERROR is returned and \fIinterp->result\fR contains an error message. .PP The \fItype\fR argument specifies the type of the C variable, and must have one of the following values, optionally OR'ed with TCL_LINK_READ_ONLY: .TP \fBTCL_LINK_INT\fR The C variable is of type \fBint\fR. Any value written into the Tcl variable must have a proper integer form acceptable to \fBTcl_GetInt\fR; attempts to write non-integer values into \fIvarName\fR will be rejected with Tcl errors. .TP \fBTCL_LINK_DOUBLE\fR The C variable is of type \fBdouble\fR. Any value written into the Tcl variable must have a proper real form acceptable to \fBTcl_GetDouble\fR; attempts to write non-real values into \fIvarName\fR will be rejected with Tcl errors. .TP \fBTCL_LINK_BOOLEAN\fR The C variable is of type \fBint\fR. If its value is zero then it will read from Tcl as ``0''; otherwise it will read from Tcl as ``1''. Whenever \fIvarName\fR is modified, the C variable will be set to a 0 or 1 value. Any value written into the Tcl variable must have a proper boolean form acceptable to \fBTcl_GetBoolean\fR; attempts to write non-boolean values into \fIvarName\fR will be rejected with Tcl errors. .TP \fBTCL_LINK_STRING\fR The C variable is of type \fBchar *\fR. .VS If its value is not null then it must be a pointer to a string allocated with \fBTcl_Alloc\fR. .VE Whenever the Tcl variable is modified the current C string will be freed and new memory will be allocated to hold a copy of the variable's new value. If the C variable contains a null pointer then the Tcl variable will read as ``NULL''. .PP If the TCL_LINK_READ_ONLY flag is present in \fItype\fR then the variable will be read-only from Tcl, so that its value can only be changed by modifying the C variable. Attempts to write the variable from Tcl will be rejected with errors. .PP \fBTcl_UnlinkVar\fR removes the link previously set up for the variable given by \fIvarName\fR. If there does not exist a link for \fIvarName\fR then the procedure has no effect. .PP \fBTcl_UpdateLinkedVar\fR may be invoked after the C variable has changed to force the Tcl variable to be updated immediately. In many cases this procedure is not needed, since any attempt to read the Tcl variable will return the latest value of the C variable. However, if a trace has been set on the Tcl variable (such as a Tk widget that wishes to display the value of the variable), the trace will not trigger when the C variable has changed. \fBTcl_UpdateLinkedVar\fR ensures that any traces on the Tcl variable are invoked. .SH KEYWORDS boolean, integer, link, read-only, real, string, traces, variable 070701000779df000081a400004ccf0000000a0000000133f371c200003a91000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/man3/ListObj.3'\" '\" Copyright (c) 1996-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. '\" '\" SCCS: @(#) @(#) ListObj.3 1.9 97/06/03 13:51:42 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_ListObj 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_ListObjAppendList, Tcl_ListObjAppendElement, Tcl_NewListObj, Tcl_SetListObj, Tcl_ListObjGetElements, Tcl_ListObjLength, Tcl_ListObjIndex, Tcl_ListObjReplace \- manipulate Tcl objects as lists .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_ListObjAppendList\fR(\fIinterp, listPtr, elemListPtr\fR) .sp int \fBTcl_ListObjAppendElement\fR(\fIinterp, listPtr, objPtr\fR) .sp Tcl_Obj * \fBTcl_NewListObj\fR(\fIobjc, objv\fR) .sp \fBTcl_SetListObj\fR(\fIobjPtr, objc, objv\fR) .sp int \fBTcl_ListObjGetElements\fR(\fIinterp, listPtr, objcPtr, objvPtr\fR) .sp int \fBTcl_ListObjLength\fR(\fIinterp, listPtr, intPtr\fR) .sp int \fBTcl_ListObjIndex\fR(\fIinterp, listPtr, index, objPtrPtr\fR) .sp int \fBTcl_ListObjReplace\fR(\fIinterp, listPtr, first, count, objc, objv\fR) .SH ARGUMENTS .AS Tcl_Interp "*CONST objv[]" out .AP Tcl_Interp *interp in If an error occurs while converting an object to be a list object, an error message is left in the interpreter's result object unless \fIinterp\fR is NULL. .AP Tcl_Obj *listPtr in/out Points to the list object to be manipulated. If \fIlistPtr\fR does not already point to a list object, an attempt will be made to convert it to one. .AP Tcl_Obj *elemListPtr in/out For \fBTcl_ListObjAppendList\fR, this points to a list object containing elements to be appended onto \fIlistPtr\fR. Each element of *\fIelemListPtr\fR will become a new element of \fIlistPtr\fR. If *\fIelemListPtr\fR is not NULL and does not already point to a list object, an attempt will be made to convert it to one. .AP Tcl_Obj *objPtr in For \fBTcl_ListObjAppendElement\fR, points to the Tcl object that will be appended to \fIlistPtr\fR. For \fBTcl_SetListObj\fR, this points to the Tcl object that will be converted to a list object containing the \fIobjc\fR elements of the array referenced by \fIobjv\fR. .AP int *objcPtr in Points to location where \fBTcl_ListObjGetElements\fR stores the number of element objects in \fIlistPtr\fR. .AP Tcl_Obj ***objvPtr out A location where \fBTcl_ListObjGetElements\fR stores a pointer to an array of pointers to the element objects of \fIlistPtr\fR. .AP int objc in The number of Tcl objects that \fBTcl_NewListObj\fR will insert into a new list object, and \fBTcl_ListObjReplace\fR will insert into \fIlistPtr\fR. For \fBTcl_SetListObj\fR, the number of Tcl objects to insert into \fIobjPtr\fR. .VS .TP Tcl_Obj *CONST \fIobjv\fR[] (in) . An array of pointers to objects. \fBTcl_NewListObj\fR will insert these objects into a new list object and \fBTcl_ListObjReplace\fR will insert them into an existing \fIlistPtr\fR. Each object will become a separate list element. .VE .AP int *intPtr out Points to location where \fBTcl_ListObjLength\fR stores the length of the list. .AP int index in Index of the list element that \fBTcl_ListObjIndex\fR is to return. The first element has index 0. .AP Tcl_Obj **objPtrPtr out Points to place where \fBTcl_ListObjIndex\fR is to store a pointer to the resulting list element object. .AP int first in Index of the starting list element that \fBTcl_ListObjReplace\fR is to replace. The list's first element has index 0. .AP int last in Index of the final list element that \fBTcl_ListObjReplace\fR is to replace. .BE .SH DESCRIPTION .PP Tcl list objects have an internal representation that supports the efficient indexing and appending. The procedures described in this man page are used to create, modify, index, and append to Tcl list objects from C code. .PP \fBTcl_ListObjAppendList\fR and \fBTcl_ListObjAppendElement\fR both add one or more objects to the end of the list object referenced by \fIlistPtr\fR. \fBTcl_ListObjAppendList\fR appends each element of the list object referenced by \fIelemListPtr\fR while \fBTcl_ListObjAppendElement\fR appends the single object referenced by \fIobjPtr\fR. Both procedures will convert the object referenced by \fIlistPtr\fR to a list object if necessary. If an error occurs during conversion, both procedures return \fBTCL_ERROR\fR and leave an error message in the interpreter's result object if \fIinterp\fR is not NULL. Similarly, if \fIelemListPtr\fR does not already refer to a list object, \fBTcl_ListObjAppendList\fR will attempt to convert it to one and if an error occurs during conversion, will return \fBTCL_ERROR\fR and leave an error message in the interpreter's result object if interp is not NULL. Both procedures invalidate any old string representation of \fIlistPtr\fR and, if it was converted to a list object, free any old internal representation. Similarly, \fBTcl_ListObjAppendList\fR frees any old internal representation of \fIelemListPtr\fR if it converts it to a list object. After appending each element in \fIelemListPtr\fR, \fBTcl_ListObjAppendList\fR increments the element's reference count since \fIlistPtr\fR now also refers to it. For the same reason, \fBTcl_ListObjAppendElement\fR increments \fIobjPtr\fR's reference count. If no error occurs, the two procedures return \fBTCL_OK\fR after appending the objects. .PP \fBTcl_NewListObj\fR and \fBTcl_SetListObj\fR create a new object or modify an existing object to hold the \fIobjc\fR elements of the array referenced by \fIobjv\fR where each element is a pointer to a Tcl object. If \fIobjc\fR is less than or equal to zero, they return an empty object. The new object's string representation is left invalid. The two procedures increment the reference counts of the elements in \fIobjc\fR since the list object now refers to them. The new list object returned by \fBTcl_NewListObj\fR has reference count zero. .PP \fBTcl_ListObjGetElements\fR returns a count and a pointer to an array of the elements in a list object. It returns the count by storing it in the address \fIobjcPtr\fR. Similarly, it returns the array pointer by storing it in the address \fIobjvPtr\fR. If \fIlistPtr\fR is not already a list object, \fBTcl_ListObjGetElements\fR will attempt to convert it to one; if the conversion fails, it returns \fBTCL_ERROR\fR and leaves an error message in the interpreter's result object if \fIinterp\fR is not NULL. Otherwise it returns \fBTCL_OK\fR after storing the count and array pointer. .PP \fBTcl_ListObjLength\fR returns the number of elements in the list object referenced by \fIlistPtr\fR. It returns this count by storing an integer in the address \fIintPtr\fR. If the object is not already a list object, \fBTcl_ListObjLength\fR will attempt to convert it to one; if the conversion fails, it returns \fBTCL_ERROR\fR and leaves an error message in the interpreter's result object if \fIinterp\fR is not NULL. Otherwise it returns \fBTCL_OK\fR after storing the list's length. .PP The procedure \fBTcl_ListObjIndex\fR returns a pointer to the object at element \fIindex\fR in the list referenced by \fIlistPtr\fR. It returns this object by storing a pointer to it in the address \fIobjPtrPtr\fR. If \fIlistPtr\fR does not already refer to a list object, \fBTcl_ListObjIndex\fR will attempt to convert it to one; if the conversion fails, it returns \fBTCL_ERROR\fR and leaves an error message in the interpreter's result object if \fIinterp\fR is not NULL. If the index is out of range, that is, \fIindex\fR is negative or greater than or equal to the number of elements in the list, \fBTcl_ListObjIndex\fR stores a NULL in \fIobjPtrPtr\fR and returns \fBTCL_OK\fR. Otherwise it returns \fBTCL_OK\fR after storing the element's object pointer. The reference count for the list element is not incremented; the caller must do that if it needs to retain a pointer to the element. .PP \fBTcl_ListObjReplace\fR replaces zero or more elements of the list referenced by \fIlistPtr\fR with the \fIobjc\fR objects in the array referenced by \fIobjv\fR. If \fIlistPtr\fR does not point to a list object, \fBTcl_ListObjReplace\fR will attempt to convert it to one; if the conversion fails, it returns \fBTCL_ERROR\fR and leaves an error message in the interpreter's result object if \fIinterp\fR is not NULL. Otherwise, it returns \fBTCL_OK\fR after replacing the objects. If \fIobjv\fR is NULL, no new elements are added. If the argument \fIfirst\fR is zero or negative, it refers to the first element. If \fIfirst\fR is greater than or equal to the number of elements in the list, then no elements are deleted; the new elements are appended to the list. \fIcount\fR gives the number of elements to replace. If \fIcount\fR is zero or negative then no elements are deleted; the new elements are simply inserted before the one designated by \fIfirst\fR. \fBTcl_ListObjReplace\fR invalidates \fIlistPtr\fR's old string representation. The reference counts of any elements inserted from \fIobjv\fR are incremented since the resulting list now refers to them. Similarly, the reference counts for any replaced objects are decremented. .PP Because \fBTcl_ListObjReplace\fR combines both element insertion and deletion, it can be used to implement a number of list operations. For example, the following code inserts the \fIobjc\fR objects referenced by the array of object pointers \fIobjv\fR just before the element \fIindex\fR of the list referenced by \fIlistPtr\fR: .CS result = Tcl_ListObjReplace(interp, listPtr, index, 0, objc, objv); .CE Similarly, the following code appends the \fIobjc\fR objects referenced by the array \fIobjv\fR to the end of the list \fIlistPtr\fR: .CS result = Tcl_ListObjLength(interp, listPtr, &length); if (result == TCL_OK) { result = Tcl_ListObjReplace(interp, listPtr, length, 0, objc, objv); } .CE The \fIcount\fR list elements starting at \fIfirst\fR can be deleted by simply calling \fBTcl_ListObjReplace\fR with a NULL \fIobjvPtr\fR: .CS result = Tcl_ListObjReplace(interp, listPtr, first, count, 0, NULL); .CE .SH "SEE ALSO" Tcl_NewObj, Tcl_DecrRefCount, Tcl_IncrRefCount, Tcl_GetObjResult .SH KEYWORDS append, index, insert, internal representation, length, list, list object, list type, object, object type, replace, string representation 070701000779e0000081a400004ccf0000000a0000000133f371c200007311000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/man3/Notifier.3'\" '\" 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. '\" '\" SCCS: @(#) Notifier.3 1.16 97/05/17 17:03:17 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Notifier 3 8.0 Tcl "Tcl Library Procedures" .BS .VS .SH NAME Tcl_CreateEventSource, Tcl_DeleteEventSource, Tcl_SetMaxBlockTime, Tcl_QueueEvent, Tcl_DeleteEvents, Tcl_WaitForEvent, Tcl_SetTimer, Tcl_ServiceAll, Tcl_ServiceEvent, Tcl_GetServiceMode, Tcl_SetServiceMode \- the event queue and notifier interfaces .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_CreateEventSource\fR(\fIsetupProc, checkProc, clientData\fB)\fR .sp \fBTcl_DeleteEventSource\fR(\fIsetupProc, checkProc, clientData\fB)\fR .sp \fBTcl_SetMaxBlockTime\fR(\fItimePtr\fB)\fR .sp \fBTcl_QueueEvent\fR(\fIevPtr, position\fR) .VS .sp \fBTcl_DeleteEvents\fR(\fIdeleteProc, clientData\fR) .sp int \fBTcl_WaitForEvent\fR(\fItimePtr\fR) .sp \fBTcl_SetTimer\fR(\fItimePtr\fR) .sp int \fBTcl_ServiceAll\fR() .sp int \fBTcl_ServiceEvent\fR(\fIflags\fR) .sp int \fBTcl_GetServiceMode\fR() .sp int \fBTcl_SetServiceMode\fR(\fImode\fR) .VE .SH ARGUMENTS .AS Tcl_EventDeleteProc milliseconds .AS Tcl_EventSetupProc *setupProc .AP Tcl_EventSetupProc *setupProc in Procedure to invoke to prepare for event wait in \fBTcl_DoOneEvent\fR. .AP Tcl_EventCheckProc *checkProc in Procedure for \fBTcl_DoOneEvent\fR to invoke after waiting for events. Checks to see if any events have occurred and, if so, queues them. .AP ClientData clientData in Arbitrary one-word value to pass to \fIsetupProc\fR, \fIcheckProc\fR, or \fIdeleteProc\fR. .AP Tcl_Time *timePtr in Indicates the maximum amount of time to wait for an event. This is specified as an interval (how long to wait), not an absolute time (when to wakeup). If the pointer passed to \fBTcl_WaitForEvent\fR is NULL, it means there is no maximum wait time: wait forever if necessary. .AP Tcl_Event *evPtr in An event to add to the event queue. The storage for the event must have been allocated by the caller using \fBTcl_Alloc\fR or \fBckalloc\fR. .AP Tcl_QueuePosition position in Where to add the new event in the queue: \fBTCL_QUEUE_TAIL\fR, \fBTCL_QUEUE_HEAD\fR, or \fBTCL_QUEUE_MARK\fR. .AP int flags in What types of events to service. These flags are the same as those passed to \fBTcl_DoOneEvent\fR. .AP Tcl_EventDeleteProc *deleteProc in Procedure to invoke for each queued event in \fBTcl_DeleteEvents\fR. .VS .AP int mode in Inidicates whether events should be serviced by \fBTcl_ServiceAll\fR. Must be one of \fBTCL_SERVICE_NONE\fR or \fBTCL_SERVICE_ALL\fR. .VE .BE .SH INTRODUCTION .PP .VS The interfaces described here are used to customize the Tcl event loop. The two most common customizations are to add new sources of events and to merge Tcl's event loop with some other event loop, such as one provided by an application in which Tcl is embedded. Each of these tasks is described in a separate section below. .VE .PP The procedures in this manual entry are the building blocks out of which the Tcl event notifier is constructed. The event notifier is the lowest layer in the Tcl event mechanism. It consists of three things: .IP [1] Event sources: these represent the ways in which events can be generated. For example, there is a timer event source that implements the \fBTcl_CreateTimerHandler\fR procedure and the \fBafter\fR command, and there is a file event source that implements the \fBTcl_CreateFileHandler\fR procedure on Unix systems. An event source must work with the notifier to detect events at the right times, record them on the event queue, and eventually notify higher-level software that they have occurred. The procedures \fBTcl_CreateEventSource\fR, \fBTcl_DeleteEventSource\fR, and \fBTcl_SetMaxBlockTime\fR, \fBTcl_QueueEvent\fR, and \fBTcl_DeleteEvents\fR are used primarily by event sources. .IP [2] The event queue: there is a single queue for the whole application, containing events that have been detected but not yet serviced. Event sources place events onto the queue so that they may be processed in order at appropriate times during the event loop. The event queue guarantees a fair discipline of event handling, so that no event source can starve the others. It also allows events to be saved for servicing at a future time. .VS \fBTcl_QueueEvent\fR is used (primarily by event sources) to add events to the event queue and \fBTcl_DeleteEvents\fR is used to remove events from the queue without processing them. .IP [3] The event loop: in order to detect and process events, the application enters a loop that waits for events to occur, places them on the event queue, and then processes them. Most applications will do this by calling the procedure \fBTcl_DoOneEvent\fR, which is described in a separate manual entry. .PP Most Tcl applications need not worry about any of the internals of the Tcl notifier. However, the notifier now has enough flexibility to be retargeted either for a new platform or to use an external event loop (such as the Motif event loop, when Tcl is embedded in a Motif application). The procedures \fBTcl_WaitForEvent\fR and \fBTcl_SetTimer\fR are normally implemented by Tcl, but may be replaced with new versions to retarget the notifier (the \fBTcl_Sleep\fR, \fBTcl_CreateFileHandler\fR, and \fBTcl_DeleteFileHandler\fR must also be replaced; see CREATING A NEW NOTIFIER below for details). The procedures \fBTcl_ServiceAll\fR, \fBTcl_ServiceEvent\fR, \fBTcl_GetServiceMode\fR, and \fBTcl_SetServiceMode\fR are provided to help connect Tcl's event loop to an external event loop such as Motif's. .SH "NOTIFIER BASICS" .VE .PP The easiest way to understand how the notifier works is to consider what happens when \fBTcl_DoOneEvent\fR is called. \fBTcl_DoOneEvent\fR is passed a \fIflags\fR argument that indicates what sort of events it is OK to process and also whether or not to block if no events are ready. \fBTcl_DoOneEvent\fR does the following things: .IP [1] Check the event queue to see if it contains any events that can be serviced. If so, service the first possible event, remove it .VS from the queue, and return. It does this by calling \fBTcl_ServiceEvent\fR and passing in the \fIflags\fR argument. .VE .IP [2] Prepare to block for an event. To do this, \fBTcl_DoOneEvent\fR invokes a \fIsetup procedure\fR in each event source. The event source will perform event-source specific initialization and .VS possibly call \fBTcl_SetMaxBlockTime\fR to limit how long .VE \fBTcl_WaitForEvent\fR will block if no new events occur. .IP [3] Call \fBTcl_WaitForEvent\fR. This procedure is implemented differently on different platforms; it waits for an event to occur, based on the information provided by the event sources. It may cause the application to block if \fItimePtr\fR specifies an interval other than 0. \fBTcl_WaitForEvent\fR returns when something has happened, such as a file becoming readable or the interval given by \fItimePtr\fR expiring. If there are no events for \fBTcl_WaitForEvent\fR to wait for, so that it would block forever, then it returns immediately and \fBTcl_DoOneEvent\fR returns 0. .IP [4] Call a \fIcheck procedure\fR in each event source. The check procedure determines whether any events of interest to this source occurred. If so, the events are added to the event queue. .IP [5] Check the event queue to see if it contains any events that can be serviced. If so, service the first possible event, remove it from the queue, and return. .IP [6] See if there are idle callbacks pending. If so, invoke all of them and return. .IP [7] Either return 0 to indicate that no events were ready, or go back to step [2] if blocking was requested by the caller. .SH "CREATING A NEW EVENT SOURCE" .PP An event source consists of three procedures invoked by the notifier, plus additional C procedures that are invoked by higher-level code to arrange for event-driven callbacks. The three procedures called by the notifier consist of the setup and check procedures described above, plus an additional procedure that is invoked when an event is removed from the event queue for servicing. .PP The procedure \fBTcl_CreateEventSource\fR creates a new event source. Its arguments specify the setup procedure and check procedure for the event source. \fISetupProc\fR should match the following prototype: .CS typedef void Tcl_EventSetupProc( ClientData \fIclientData\fR, int \fIflags\fR); .CE The \fIclientData\fR argument will be the same as the \fIclientData\fR argument to \fBTcl_CreateEventSource\fR; it is typically used to point to private information managed by the event source. The \fIflags\fR argument will be the same as the \fIflags\fR argument passed to \fBTcl_DoOneEvent\fR except that it will never be 0 (\fBTcl_DoOneEvent\fR replaces 0 with \fBTCL_ALL_EVENTS\fR). \fIFlags\fR indicates what kinds of events should be considered; if the bit corresponding to this event source isn't set, the event source should return immediately without doing anything. For example, the file event source checks for the \fBTCL_FILE_EVENTS\fR bit. .PP \fISetupProc\fR's job is to make sure that the application wakes up when events of the desired type occur. This is typically done in a platform-dependent fashion. For example, under Unix an event source might call \fBTcl_CreateFileHandler\fR; under Windows it might request notification with a Windows event. For timer-driven event sources such as timer events or any polled event, the event source can call \fBTcl_SetMaxBlockTime\fR to force the application to wake up after a specified time even if no events have occurred. .VS If no event source calls \fBTcl_SetMaxBlockTime\fR then \fBTcl_WaitForEvent\fR will wait as long as necessary for an event to occur; otherwise, it will only wait as long as the shortest interval passed to \fBTcl_SetMaxBlockTime\fR by one of the event sources. If an event source knows that it already has events ready to report, it can request a zero maximum block time. For example, the setup procedure for the X event source looks to see if there are events already queued. If there are, it calls \fBTcl_SetMaxBlockTime\fR with a 0 block time so that \fBTcl_WaitForEvent\fR does not block if there is no new data on the X connection. .VE The \fItimePtr\fR argument to \fBTcl_WaitForEvent\fR points to a structure that describes a time interval in seconds and microseconds: .CS typedef struct Tcl_Time { long \fIsec\fR; long \fIusec\fR; } Tcl_Time; .CE The \fIusec\fR field should be less than 1000000. .PP .VS Information provided to \fBTcl_SetMaxBlockTime\fR is only used for the next call to \fBTcl_WaitForEvent\fR; it is discarded after \fBTcl_WaitForEvent\fR returns. .VE The next time an event wait is done each of the event sources' setup procedures will be called again, and they can specify new information for that event wait. .PP .VS If the application uses an external event loop rather than \fBTcl_DoOneEvent\fR, the event sources may need to call \fBTcl_SetMaxBlockTime\fR at other times. For example, if a new event handler is registered that needs to poll for events, the event source may call \fBTcl_SetMaxBlockTime\fR to set the block time to zero to force the external event loop to call Tcl. In this case, \fBTcl_SetMaxBlockTime\fR invokes \fBTcl_SetTimer\fR with the shortest interval seen since the last call to \fBTcl_DoOneEvent\fR or \fBTcl_ServiceAll\fR. .PP In addition to the generic procedure \fBTcl_SetMaxBlockTime\fR, other platform-specific procedures may also be available for \fIsetupProc\fR, if there is additional information needed by \fBTcl_WaitForEvent\fR on that platform. For example, on Unix systems the \fBTcl_CreateFileHandler\fR interface can be used to wait for file events. .VE .PP The second procedure provided by each event source is its check procedure, indicated by the \fIcheckProc\fR argument to \fBTcl_CreateEventSource\fR. \fICheckProc\fR must match the following prototype: .CS typedef void Tcl_EventCheckProc( ClientData \fIclientData\fR, int \fIflags\fR); .CE The arguments to this procedure are the same as those for \fIsetupProc\fR. \fBCheckProc\fR is invoked by \fBTcl_DoOneEvent\fR after it has waited for events. Presumably at least one event source is now prepared to queue an event. \fBTcl_DoOneEvent\fR calls each of the event sources in turn, so they all have a chance to queue any events that are ready. The check procedure does two things. First, it must see if any events have triggered. Different event sources do this in different ways. .PP If an event source's check procedure detects an interesting event, it must add the event to Tcl's event queue. To do this, the event source calls \fBTcl_QueueEvent\fR. The \fIevPtr\fR argument is a pointer to a dynamically allocated structure containing the event (see below for more information on memory management issues). Each event source can define its own event structure with whatever information is relevant to that event source. However, the first element of the structure must be a structure of type \fBTcl_Event\fR, and the address of this structure is used when communicating between the event source and the rest of the notifier. A \fBTcl_Event\fR has the following definition: .CS typedef struct Tcl_Event { Tcl_EventProc *\fIproc\fR; struct Tcl_Event *\fInextPtr\fR; }; .CE The event source must fill in the \fIproc\fR field of the event before calling \fBTcl_QueueEvent\fR. The \fInextPtr\fR is used to link together the events in the queue and should not be modified by the event source. .PP An event may be added to the queue at any of three positions, depending on the \fIposition\fR argument to \fBTcl_QueueEvent\fR: .IP \fBTCL_QUEUE_TAIL\fR 24 Add the event at the back of the queue, so that all other pending events will be serviced first. This is almost always the right place for new events. .IP \fBTCL_QUEUE_HEAD\fR 24 Add the event at the front of the queue, so that it will be serviced before all other queued events. .IP \fBTCL_QUEUE_MARK\fR 24 Add the event at the front of the queue, unless there are other events at the front whose position is \fBTCL_QUEUE_MARK\fR; if so, add the new event just after all other \fBTCL_QUEUE_MARK\fR events. This value of \fIposition\fR is used to insert an ordered sequence of events at the front of the queue, such as a series of Enter and Leave events synthesized during a grab or ungrab operation in Tk. .PP .VS When it is time to handle an event from the queue (steps 1 and 4 above) \fBTcl_ServiceEvent\fR will invoke the \fIproc\fR specified .VE in the first queued \fBTcl_Event\fR structure. \fIProc\fR must match the following prototype: .CS typedef int Tcl_EventProc( Tcl_Event *\fIevPtr\fR, int \fIflags\fR); .CE The first argument to \fIproc\fR is a pointer to the event, which will be the same as the first argument to the \fBTcl_QueueEvent\fR call that added the event to the queue. The second argument to \fIproc\fR is the \fIflags\fR argument for the .VS current call to \fBTcl_ServiceEvent\fR; this is used by the event source .VE to return immediately if its events are not relevant. .PP It is up to \fIproc\fR to handle the event, typically by invoking one or more Tcl commands or C-level callbacks. Once the event source has finished handling the event it returns 1 to indicate that the event can be removed from the queue. If for some reason the event source decides that the event cannot be handled at this time, it may return 0 to indicate that the event .VS should be deferred for processing later; in this case \fBTcl_ServiceEvent\fR .VE will go on to the next event in the queue and attempt to service it. There are several reasons why an event source might defer an event. One possibility is that events of this type are excluded by the \fIflags\fR argument. For example, the file event source will always return 0 if the \fBTCL_FILE_EVENTS\fR bit isn't set in \fIflags\fR. Another example of deferring events happens in Tk if \fBTk_RestrictEvents\fR has been invoked to defer certain kinds of window events. .PP .VS When \fIproc\fR returns 1, \fBTcl_ServiceEvent\fR will remove the event from the event queue and free its storage. Note that the storage for an event must be allocated by the event source (using \fBTcl_Alloc\fR or the Tcl macro \fBckalloc\fR) before calling \fBTcl_QueueEvent\fR, but it will be freed by \fBTcl_ServiceEvent\fR, not by the event source. .PP \fBTcl_DeleteEvents\fR can be used to explicitly remove one or more events from the event queue. \fBTcl_DeleteEvents\fR calls \fIproc\fR for each event in the queue, deleting those for with the procedure returns 1. Events for which the procedure returns 0 are left in the queue. \fIProc\fR should match the following prototype: .CS typedef int Tcl_EventDeleteProc( Tcl_Event *\fIevPtr\fR, ClientData \fIclientData\fR); .CE The \fIclientData\fR argument will be the same as the \fIclientData\fR argument to \fBTcl_DeleteEvents\fR; it is typically used to point to private information managed by the event source. The \fIevPtr\fR will point to the next event in the queue. .VE .SH "CREATING A NEW NOTIFIER" .PP The notifier consists of all the procedures described in this manual entry, plus \fBTcl_DoOneEvent\fR and \fBTcl_Sleep\fR, which are .VS available on all platforms, and \fBTcl_CreateFileHandler\fR and \fBTcl_DeleteFileHandler\fR, which are Unix-specific. Most of these procedures are generic, in that they are the same for all notifiers. However, five of the procedures are notifier-dependent: \fBTcl_SetTimer\fR, \fBTcl_Sleep\fR, \fBTcl_WaitForEvent\fR, \fBTcl_CreateFileHandler\fR and \fBTcl_DeleteFileHandler\fR. To support a new platform or to integrate Tcl with an application-specific event loop, you must write new versions of these procedures. .PP \fBTcl_WaitForEvent\fR is the lowest-level procedure in the notifier; it is responsible for waiting for an ``interesting'' event to occur or for a given time to elapse. Before \fBTcl_WaitForEvent\fR is invoked, each of the event sources' setup procedure will have been invoked. The \fItimePtr\fR argument to \fBTcl_WaitForEvent\fR gives the maximum time to block for an event, based on calls to \fBTcl_SetMaxBlockTime\fR made by setup procedures and on other information (such as the \fBTCL_DONT_WAIT\fR bit in \fIflags\fR). .PP Ideally, \fBTcl_WaitForEvent\fR should only wait for an event to occur; it should not actually process the event in any way. Later on, the event sources will process the raw events and create Tcl_Events on the event queue in their \fIcheckProc\fR procedures. However, on some platforms (such as Windows) this isn't possible; events may be processed in \fBTcl_WaitForEvent\fR, including queuing Tcl_Events and more (for example, callbacks for native widgets may be invoked). The return value from \fBTcl_WaitForEvent\fR must be either 0, 1, or \-1. On platforms such as Windows where events get processed in \fBTcl_WaitForEvent\fR, a return value of 1 means that there may be more events still pending that haven't been processed. This is a sign to the caller that it must call \fBTcl_WaitForEvent\fR again if it wants all pending events to be processed. A 0 return value means that calling \fBTcl_WaitForEvent\fR again will not have any effect: either this is a platform where \fBTcl_WaitForEvent\fR only waits without doing any event processing, or \fBTcl_WaitForEvent\fR knows for sure that there are no additional events to process (e.g. it returned because the time elapsed). Finally, a return value of \-1 means that the event loop is no longer operational and the application should probably unwind and terminate. Under Windows this happens when a WM_QUIT message is received; under Unix it happens when \fBTcl_WaitForEvent\fR would have waited forever because there were no active event sources and the timeout was infinite. .PP If the notifier will be used with an external event loop, then it must also support the \fBTcl_SetTimer\fR interface. \fBTcl_SetTimer\fR is invoked by \fBTcl_SetMaxBlockTime\fR whenever the maximum blocking time has been reduced. \fBTcl_SetTimer\fR should arrange for the external event loop to invoke \fBTcl_ServiceAll\fR after the specified interval even if no events have occurred. This interface is needed because \fBTcl_WaitForEvent\fR isn't invoked when there is an external event loop. If the notifier will only be used from \fBTcl_DoOneEvent\fR, then \fBTcl_SetTimer\fR need not do anything. .PP On Unix systems, the file event source also needs support from the notifier. The file event source consists of the \fBTcl_CreateFileHandler\fR and \fBTcl_DeleteFileHandler\fR procedures, which are described elsewhere. .PP The \fBTcl_Sleep\fR and \fBTcl_DoOneEvent\fR interfaces are described elsewhere. .PP The easiest way to create a new notifier is to look at the code for an existing notifier, such as the files \fBunix/tclUnixNotfy.c\fR or \fBwin/tclWinNotify.c\fR in the Tcl source distribution. .SH "EXTERNAL EVENT LOOPS" .PP The notifier interfaces are designed so that Tcl can be embedded into applications that have their own private event loops. In this case, the application does not call \fBTcl_DoOneEvent\fR except in the case of recursive event loops such as calls to the Tcl commands \fBupdate\fR or \fBvwait\fR. Most of the time is spent in the external event loop of the application. In this case the notifier must arrange for the external event loop to call back into Tcl when something happens on the various Tcl event sources. These callbacks should arrange for appropriate Tcl events to be placed on the Tcl event queue. .PP Because the external event loop is not calling \fBTcl_DoOneEvent\fR on a regular basis, it is up to the notifier to arrange for \fBTcl_ServiceEvent\fR to be called whenever events are pending on the Tcl event queue. The easiest way to do this is to invoke \fBTcl_ServiceAll\fR at the end of each callback from the external event loop. This will ensure that all of the event sources are polled, any queued events are serviced, and any pending idle handlers are processed before returning control to the application. In addition, event sources that need to poll for events can call \fBTcl_SetMaxBlockTime\fR to force the external event loop to call Tcl even if no events are available on the system event queue. .PP As a side effect of processing events detected in the main external event loop, Tcl may invoke \fBTcl_DoOneEvent\fR to start a recursive event loop in commands like \fBvwait\fR. \fBTcl_DoOneEvent\fR will invoke the external event loop, which will result in callbacks as described in the preceding paragraph, which will result in calls to \fBTcl_ServiceAll\fR. However, in these cases it is undesirable to service events in \fBTcl_ServiceAll\fR. Servicing events there is unnecessary because control will immediately return to the external event loop and hence to \fBTcl_DoOneEvent\fR, which can service the events itself. Furthermore, \fBTcl_DoOneEvent\fR is supposed to service only a single event, whereas \fBTcl_ServiceAll\fR normally services all pending events. To handle this situation, \fBTcl_DoOneEvent\fR sets a flag for \fBTcl_ServiceAll\fR that causes it to return without servicing any events. This flag is called the \fIservice mode\fR; \fBTcl_DoOneEvent\fR restores it to its previous value before it returns. .PP In some cases, however, it may be necessary for \fBTcl_ServiceAll\fR to service events even when it has been invoked from \fBTcl_DoOneEvent\fR. This happens when there is yet another recursive event loop invoked via an event handler called by \fBTcl_DoOneEvent\fR (such as one that is part of a native widget). In this case, \fBTcl_DoOneEvent\fR may not have a chance to service events so \fBTcl_ServiceAll\fR must service them all. Any recursive event loop that calls an external event loop rather than \fBTcl_DoOneEvent\fR must reset the service mode so that all events get processed in \fBTcl_ServiceAll\fR. This is done by invoking the \fBTcl_SetServiceMode\fR procedure. If \fBTcl_SetServiceMode\fR is passed \fBTCL_SERVICE_NONE\fR, then calls to \fBTcl_ServiceAll\fR will return immediately without processing any events. If \fBTcl_SetServiceMode\fR is passed \fBTCL_SERVICE_ALL\fR, then calls to \fBTcl_ServiceAll\fR will behave normally. \fBTcl_SetServiceMode\fR returns the previous value of the service mode, which should be restored when the recursive loop exits. \fBTcl_GetServiceMode\fR returns the current value of the service mode. .VE .SH KEYWORDS event, notifier, event queue, event sources, file events, timer, idle, service mode 070701000779e1000081a400004ccf0000000a0000000133f371c300002ca8000000a30000000400000000000000000000002700000004reloc/SUNWtcl/8.0/man/man3/ObjSetVar.3'\" '\" Copyright (c) 1996-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. '\" '\" SCCS: @(#) ObjSetVar.3 1.6 97/05/19 17:35:44 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_ObjSetVar2 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_ObjSetVar2, Tcl_ObjGetVar2 \- manipulate Tcl variables .SH SYNOPSIS .nf \fB#include \fR .sp Tcl_Obj * \fBTcl_ObjSetVar2\fR(\fIinterp, part1Ptr, part2Ptr, newValuePtr, flags\fR) .sp Tcl_Obj * \fBTcl_ObjGetVar2\fR(\fIinterp, part1Ptr, part2Ptr, flags\fR) .SH ARGUMENTS .AS Tcl_Interp *newValuePtr .AP Tcl_Interp *interp in Interpreter containing variable. .AP Tcl_Obj *part1Ptr in Points to a Tcl object containing the variable's name. The name may include a series of \fB::\fR namespace qualifiers to specify a variable in a particular namespace. May refer to a scalar variable or an element of an array variable. .AP Tcl_Obj *part2Ptr in If non-NULL, points to an object containing the name of an element within an array and \fIpart1Ptr\fR must refer to an array variable. .AP Tcl_Obj *newValuePtr in Points to a Tcl object containing the new value for the variable. .AP int flags in OR-ed combination of bits providing additional information for operation. See below for valid values. .BE .SH DESCRIPTION .PP These two procedures may be used to read and modify Tcl variables from C code. \fBTcl_ObjSetVar2\fR will create a new variable or modify an existing one. It sets the specified variable to the object referenced by \fInewValuePtr\fR and returns a pointer to the object which is the variable's new value. The returned object may not be the same one referenced by \fInewValuePtr\fR; this might happen because variable traces may modify the variable's value. The reference count for the variable's old value is decremented and the reference count for its new value is incremented. If the new value for the variable is not the same one referenced by \fInewValuePtr\fR (perhaps as a result of a variable trace), then \fInewValuePtr\fR's reference count is left unchanged. The reference count for the returned object is not incremented to reflect the returned reference. If the caller needs to keep a reference to the object, say in a data structure, it must increment its reference count using \fBTcl_IncrRefCount\fR. If an error occurs in setting the variable (e.g. an array variable is referenced without giving an index into the array), then NULL is returned. .PP The variable name specified to \fBTcl_ObjSetVar2\fR consists of two parts. \fIpart1Ptr\fR contains the name of a scalar or array variable. If \fIpart2Ptr\fR is NULL, the variable must be a scalar. If \fIpart2Ptr\fR is not NULL, it contains the name of an element in the array named by \fIpart2Ptr\fR. As a special case, if the flag TCL_PARSE_PART1 is specified, \fIpart1Ptr\fR may contain both an array and an element name: if the name contains an open parenthesis and ends with a close parenthesis, then the value between the parentheses is treated as an element name (which can have any string value) and the characters before the first open parenthesis are treated as the name of an array variable. If the flag TCL_PARSE_PART1 is given, \fIpart2Ptr\fR should be NULL since the array and element names are taken from \fIpart2Ptr\fR. .PP The \fIflags\fR argument may be used to specify any of several options to the procedures. It consists of an OR-ed combination of any of the following bits: .TP \fBTCL_GLOBAL_ONLY\fR Under normal circumstances the procedures look up variables as follows: If a procedure call is active in \fIinterp\fR, a variable is looked up at the current level of procedure call. Otherwise, a variable is looked up first in the current namespace, then in the global namespace. However, if this bit is set in \fIflags\fR then the variable is looked up only in the global namespace even if there is a procedure call active. If both \fBTCL_GLOBAL_ONLY\fR and \fBTCL_NAMESPACE_ONLY\fR are given, \fBTCL_GLOBAL_ONLY\fR is ignored. .TP \fBTCL_NAMESPACE_ONLY\fR Under normal circumstances the procedures look up variables as follows: If a procedure call is active in \fIinterp\fR, a variable is looked up at the current level of procedure call. Otherwise, a variable is looked up first in the current namespace, then in the global namespace. However, if this bit is set in \fIflags\fR then the variable is looked up only in the current namespace even if there is a procedure call active. .TP \fBTCL_LEAVE_ERR_MSG\fR If an error is returned and this bit is set in \fIflags\fR, then an error message will be left in the interpreter's result, where it can be retrieved with \fBTcl_GetObjResult\fR or \fBTcl_GetStringResult\fR. If this flag bit isn't set then no error message is left and the interpreter's result will not be modified. .TP \fBTCL_APPEND_VALUE\fR If this bit is set then \fInewValuePtr\fR is appended to the current value, instead of replacing it. If the variable is currently undefined, then this bit is ignored. .TP \fBTCL_LIST_ELEMENT\fR If this bit is set, then \fInewValuePtr\fR is converted to a valid Tcl list element before setting (or appending to) the variable. A separator space is appended before the new list element unless the list element is going to be the first element in a list or sublist (i.e. the variable's current value is empty, or contains the single character ``{'', or ends in `` }''). .TP \fBTCL_PARSE_PART1\fR If this bit is set, then \fBTcl_ObjGetVar2\fR and \fBTcl_ObjSetVar2\fR will parse \fIpart1Ptr\fR to obtain both an array name and an element name. If the name in \fIpart1Ptr\fR contains an open parenthesis and ends with a close parenthesis, the name is treated as the name of an element of an array; otherwise, the name in \fIpart1Ptr\fR is interpreted as the name of a scalar variable. When this bit is set, \fIpart2Ptr\fR is ignored. .PP \fBTcl_ObjGetVar2\fR returns the value of the specified variable. Its arguments are treated the same way as those for \fBTcl_ObjSetVar2\fR. It returns a pointer to the object which is the variable's value. The reference count for the returned object is not incremented. If the caller needs to keep a reference to the object, say in a data structure, it must increment the reference count using \fBTcl_IncrRefCount\fR. If an error occurs in setting the variable (e.g. an array variable is referenced without giving an index into the array), then NULL is returned. .SH "SEE ALSO" Tcl_GetObjResult, Tcl_GetStringResult, Tcl_GetVar, Tcl_GetVar2, Tcl_SetVar, Tcl_SetVar2, Tcl_TraceVar, Tcl_UnsetVar, Tcl_UnsetVar2 .SH KEYWORDS array, interpreter, object, scalar, set, unset, variable 070701000779e2000081a400004ccf0000000a0000000133f371c300004805000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/man3/Object.3'\" '\" Copyright (c) 1996-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. '\" '\" SCCS: @(#) @(#) Object.3 1.10 97/07/22 11:40:10 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_Obj 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_NewObj, Tcl_DuplicateObj, Tcl_IncrRefCount, Tcl_DecrRefCount, Tcl_IsShared \- manipulate Tcl objects .SH SYNOPSIS .nf \fB#include \fR .sp Tcl_Obj * \fBTcl_NewObj\fR() .sp Tcl_Obj * \fBTcl_DuplicateObj\fR(\fIobjPtr\fR) .sp \fBTcl_IncrRefCount\fR(\fIobjPtr\fR) .sp \fBTcl_DecrRefCount\fR(\fIobjPtr\fR) .sp int \fBTcl_IsShared\fR(\fIobjPtr\fR) .sp \fBTcl_InvalidateStringRep\fR(\fIobjPtr\fR) .SH ARGUMENTS .AS Tcl_Obj *objPtr in .AP Tcl_Obj *objPtr in Points to an object; must have been the result of a previous call to \fBTcl_NewObj\fR. .BE .SH INTRODUCTION .PP This man page presents an overview of Tcl objects and how they are used. It also describes generic procedures for managing Tcl objects. These procedures are used to create and copy objects, and increment and decrement the count of references (pointers) to objects. The procedures are used in conjunction with ones that operate on specific types of objects such as \fBTcl_GetIntFromObj\fR and \fBTcl_ListObjAppendElement\fR. The individual procedures are described along with the data structures they manipulate. .PP Tcl's \fIdual-ported\fR objects provide a general-purpose mechanism for storing and exchanging Tcl values. They largely replace the use of strings in Tcl. For example, they are used to store variable values, command arguments, command results, and scripts. Tcl objects behave like strings but also hold an internal representation that can be manipulated more efficiently. For example, a Tcl list is now represented as an object that holds the list's string representation as well as an array of pointers to the objects for each list element. Dual-ported objects avoid most runtime type conversions. They also improve the speed of many operations since an appropriate representation is immediately available. The compiler itself uses Tcl objects to cache the instruction bytecodes resulting from compiling scripts. .PP The two representations are a cache of each other and are computed lazily. That is, each representation is only computed when necessary, it is computed from the other representation, and, once computed, it is saved. In addition, a change in one representation invalidates the other one. As an example, a Tcl program doing integer calculations can operate directly on a variable's internal machine integer representation without having to constantly convert between integers and strings. Only when it needs a string representing the variable's value, say to print it, will the program regenerate the string representation from the integer. Although objects contain an internal representation, their semantics are defined in terms of strings: an up-to-date string can always be obtained, and any change to the object will be reflected in that string when the object's string representation is fetched. Because of this representation invalidation and regeneration, it is dangerous for extension writers to access \fBTcl_Obj\fR fields directly. It is better to access Tcl_Obj information using procedures like \fBTcl_GetStringFromObj\fR. .PP Objects are allocated on the heap and are referenced using a pointer to their \fBTcl_Obj\fR structure. Objects are shared as much as possible. This significantly reduces storage requirements because some objects such as long lists are very large. Also, most Tcl values are only read and never modified. This is especially true for procedure arguments, which can be shared between the caller and the called procedure. Assignment and argument binding is done by simply assigning a pointer to the value. Reference counting is used to determine when it is safe to reclaim an object's storage. .PP Tcl objects are typed. An object's internal representation is controlled by its type. Seven types are predefined in the Tcl core including integer, double, list, and bytecode. Extension writers can extend the set of types by using the procedure \fBTcl_RegisterObjType\fR . .SH "THE TCL_OBJ STRUCTURE" .PP Each Tcl object is represented by a \fBTcl_Obj\fR structure which is defined as follows. .CS typedef struct Tcl_Obj { int \fIrefCount\fR; char *\fIbytes\fR; int \fIlength\fR; Tcl_ObjType *\fItypePtr\fR; union { long \fIlongValue\fR; double \fIdoubleValue\fR; VOID *\fIotherValuePtr\fR; struct { VOID *\fIptr1\fR; VOID *\fIptr2\fR; } \fItwoPtrValue\fR; } \fIinternalRep\fR; } Tcl_Obj; .CE The \fIbytes\fR and the \fIlength\fR members together hold an object's string representation, which is a \fIcounted\fR or \fIbinary string\fR that may contain binary data with embedded null bytes. \fIbytes\fR points to the first byte of the string representation. The \fIlength\fR member gives the number of bytes. The byte array must always have a null after the last byte, at offset \fIlength\fR; this allows string representations that do not contain nulls to be treated as conventional null-terminated C strings. C programs use \fBTcl_GetStringFromObj\fR to get an object's string representation. If \fIbytes\fR is NULL, the string representation is invalid. .PP An object's type manages its internal representation. The member \fItypePtr\fR points to the Tcl_ObjType structure that describes the type. If \fItypePtr\fR is NULL, the internal representation is invalid. .PP The \fIinternalRep\fR union member holds an object's internal representation. This is either a (long) integer, a double-precision floating point number, a pointer to a value containing additional information needed by the object's type to represent the object, or two arbitrary pointers. .PP The \fIrefCount\fR member is used to tell when it is safe to free an object's storage. It holds the count of active references to the object. Maintaining the correct reference count is a key responsibility of extension writers. Reference counting is discussed below in the section \fBSTORAGE MANAGEMENT OF OBJECTS\fR. .PP Although extension writers can directly access the members of a Tcl_Obj structure, it is much better to use the appropriate procedures and macros. For example, extension writers should never read or update \fIrefCount\fR directly; they should use macros such as \fBTcl_IncrRefCount\fR and \fBTcl_IsShared\fR instead. .PP A key property of Tcl objects is that they hold two representations. An object typically starts out containing only a string representation: it is untyped and has a NULL \fItypePtr\fR. An object containing an empty string or a copy of a specified string is created using \fBTcl_NewObj\fR or \fBTcl_NewStringObj\fR respectively. An object's string value is gotten with \fBTcl_GetStringFromObj\fR and changed with \fBTcl_SetStringObj\fR. If the object is later passed to a procedure like \fBTcl_GetIntFromObj\fR that requires a specific internal representation, the procedure will create one and set the object's \fItypePtr\fR. The internal representation is computed from the string representation. An object's two representations are duals of each other: changes made to one are reflected in the other. For example, \fBTcl_ListObjReplace\fR will modify an object's internal representation and the next call to \fBTcl_GetStringFromObj\fR will reflect that change. .PP Representations are recomputed lazily for efficiency. A change to one representation made by a procedure such as \fBTcl_ListObjReplace\fR is not reflected immediately in the other representation. Instead, the other representation is marked invalid so that it is only regenerated if it is needed later. Most C programmers never have to be concerned with how this is done and simply use procedures such as \fBTcl_GetBooleanFromObj\fR or \fBTcl_ListObjIndex\fR. Programmers that implement their own object types must check for invalid representations and mark representations invalid when necessary. The procedure \fBTcl_InvalidateStringRep\fR is used to mark an object's string representation invalid and to free any storage associated with the old string representation. .PP Objects usually remain one type over their life, but occasionally an object must be converted from one type to another. For example, a C program might build up a string in an object with repeated calls to \fBTcl_StringObjAppend\fR, and then call \fBTcl_ListObjIndex\fR to extract a list element from the object. The same object holding the same string value can have several different internal representations at different times. Extension writers can also force an object to be converted from one type to another using the \fBTcl_ConvertToType\fR procedure. Only programmers that create new object types need to be concerned about how this is done. A procedure defined as part of the object type's implementation creates a new internal representation for an object and changes its \fItypePtr\fR. See the man page for \fBTcl_RegisterObjType\fR to see how to create a new object type. .SH "EXAMPLE OF THE LIFETIME OF AN OBJECT" .PP As an example of the lifetime of an object, consider the following sequence of commands: .CS \fBset x 123\fR .CE This assigns to \fIx\fR an untyped object whose \fIbytes\fR member points to \fB123\fR and \fIlength\fR member contains 3. The object's \fItypePtr\fR member is NULL. .CS \fBputs "x is $x"\fR .CE \fIx\fR's string representation is valid (since \fIbytes\fR is non-NULL) and is fetched for the command. .CS \fBincr x\fR .CE The \fBincr\fR command first gets an integer from \fIx\fR's object by calling \fBTcl_GetIntFromObj\fR. This procedure checks whether the object is already an integer object. Since it is not, it converts the object by setting the object's \fIinternalRep.longValue\fR member to the integer \fB123\fR and setting the object's \fItypePtr\fR to point to the integer Tcl_ObjType structure. Both representations are now valid. \fBincr\fR increments the object's integer internal representation then invalidates its string representation (by calling \fBTcl_InvalidateStringRep\fR) since the string representation no longer corresponds to the internal representation. .CS \fBputs "x is now $x"\fR .CE The string representation of \fIx\fR's object is needed and is recomputed. The string representation is now \fB124\fR. and both representations are again valid. .SH "STORAGE MANAGEMENT OF OBJECTS" .PP Tcl objects are allocated on the heap and are shared as much as possible to reduce storage requirements. Reference counting is used to determine when an object is no longer needed and can safely be freed. An object just created by \fBTcl_NewObj\fR or \fBTcl_NewStringObj\fR has \fIrefCount\fR 0. The macro \fBTcl_IncrRefCount\fR increments the reference count when a new reference to the object is created. The macro \fBTcl_DecrRefCount\fR decrements the count when a reference is no longer needed and, if the object's reference count drops to zero, frees its storage. An object shared by different code or data structures has \fIrefCount\fR greater than 1. Incrementing an object's reference count ensures that it won't be freed too early or have its value change accidently. .PP As an example, the bytecode interpreter shares argument objects between calling and called Tcl procedures to avoid having to copy objects. It assigns the call's argument objects to the procedure's formal parameter variables. In doing so, it calls \fBTcl_IncrRefCount\fR to increment the reference count of each argument since there is now a new reference to it from the formal parameter. When the called procedure returns, the interpreter calls \fBTcl_DecrRefCount\fR to decrement each argument's reference count. When an object's reference count drops to zero, \fBTcl_DecrRefCount\fR reclaims its storage. Most command procedures do not have to be concerned about reference counting since they use an object's value immediately and don't retain a pointer to the object after they return. However, if they do retain a pointer to an object in a data structure, they must be careful to increment its reference count since the retained pointer is a new reference. .PP Command procedures that directly modify objects such as those for \fBlappend\fR and \fBlinsert\fR must be careful to copy a shared object before changing it. They must first check whether the object is shared by calling \fBTcl_IsShared\fR. If the object is shared they must copy the object by using \fBTcl_DuplicateObj\fR; this returns a new duplicate of the original object that has \fIrefCount\fR 0. If the object is not shared, the command procedure "owns" the object and can safely modify it directly. For example, the following code appears in the command procedure that implements \fBlinsert\fR. This procedure modifies the list object passed to it in \fIobjv[1]\fR by inserting \fIobjc-3\fR new elements before \fIindex\fR. .CS listPtr = objv[1]; if (Tcl_IsShared(listPtr)) { listPtr = Tcl_DuplicateObj(listPtr); } result = Tcl_ListObjReplace(interp, listPtr, index, 0, (objc-3), &(objv[3])); .CE As another example, \fBincr\fR's command procedure must check whether the variable's object is shared before incrementing the integer in its internal representation. If it is shared, it needs to duplicate the object in order to avoid accidently changing values in other data structures. .SH "SEE ALSO" Tcl_ConvertToType, Tcl_GetIntFromObj, Tcl_ListObjAppendElement, Tcl_ListObjIndex, Tcl_ListObjReplace, Tcl_RegisterObjType .SH KEYWORDS internal representation, object, object creation, object type, reference counting, string representation, type conversion 070701000779e3000081a400004ccf0000000a0000000133f371c3000031d9000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/man/man3/ObjectType.3'\" '\" Copyright (c) 1996-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. '\" '\" SCCS: @(#) ObjectType.3 1.8 97/04/30 15:42:29 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_ObjType 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_RegisterObjType, Tcl_GetObjType, Tcl_AppendAllObjTypes, Tcl_ConvertToType \- manipulate Tcl object types .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_RegisterObjType\fR(\fItypePtr\fR) .sp Tcl_ObjType * \fBTcl_GetObjType\fR(\fItypeName\fR) .sp int \fBTcl_AppendAllObjTypes\fR(\fIinterp, objPtr\fR) .sp int \fBTcl_ConvertToType\fR(\fIinterp, objPtr, typePtr\fR) .SH ARGUMENTS .AS Tcl_ObjType *typeName in .AP Tcl_ObjType *typePtr in Points to the structure containing information about the Tcl object type. This storage must must live forever, typically by being statically allocated. .AP char *typeName in The name of a Tcl object type that \fBTcl_GetObjType\fR should look up. .AP Tcl_Interp *interp in Interpreter to use for error reporting. .AP Tcl_Obj *objPtr in For \fBTcl_AppendAllObjTypes\fR, this points to the object onto which it appends the name of each object type as a list element. For \fBTcl_ConvertToType\fR, this points to an object that must have been the result of a previous call to \fBTcl_NewObj\fR. .BE .SH DESCRIPTION .PP The procedures in this man page manage Tcl object types. The are used to register new object types, look up types, and force conversions from one type to another. .PP \fBTcl_RegisterObjType\fR registers a new Tcl object type in the table of all object types supported by Tcl. The argument \fItypePtr\fR points to a Tcl_ObjType structure that describes the new type by giving its name and by supplying pointers to four procedures that implement the type. If the type table already containes a type with the same name as in \fItypePtr\fR, it is replaced with the new type. The Tcl_ObjType structure is described in the section \fBTHE TCL_OBJTYPE STRUCTURE\fR below. .PP \fBTcl_GetObjType\fR returns a pointer to the Tcl_ObjType with name \fItypeName\fR. It returns NULL if no type with that name is registered. .PP \fBTcl_AppendAllObjTypes\fR appends the name of each object type as a list element onto the Tcl object referenced by \fIobjPtr\fR. The return value is \fBTCL_OK\fR unless there was an error converting \fIobjPtr\fR to a list object; in that case \fBTCL_ERROR\fR is returned. .PP \fBTcl_ConvertToType\fR converts an object from one type to another if possible. It creates a new internal representation for \fIobjPtr\fR appropriate for the target type \fItypePtr\fR and sets its \fItypePtr\fR member to that type. Any internal representation for \fIobjPtr\fR's old type is freed. If an error occurs during conversion, it returns \fBTCL_ERROR\fR and leaves an error message in the result object for \fIinterp\fR unless \fIinterp\fR is NULL. Otherwise, it returns \fBTCL_OK\fR. Passing a NULL \fIinterp\fR allows this procedure to be used as a test whether the conversion can be done (and in fact was done). .SH "THE TCL_OBJTYPE STRUCTURE" .PP Extension writers can define new object types by defining four procedures, initializing a Tcl_ObjType structure to describe the type, and calling \fBTcl_RegisterObjType\fR. The \fBTcl_ObjType\fR structure is defined as follows: .CS typedef struct Tcl_ObjType { char *\fIname\fR; Tcl_FreeInternalRepProc *\fIfreeIntRepProc\fR; Tcl_DupInternalRepProc *\fIdupIntRepProc\fR; Tcl_UpdateStringProc *\fIupdateStringProc\fR; Tcl_SetFromAnyProc *\fIsetFromAnyProc\fR; } Tcl_ObjType; .CE .PP The \fIname\fR member describes the name of the type, e.g. \fBint\fR. Extension writers can look up an object type using its name with the \fBTcl_GetObjType\fR procedure. The remaining four members are pointers to procedures called by the generic Tcl object code: .PP The \fIsetFromAnyProc\fR member contains the address of a function called to create a valid internal representation from an object's string representation. .CS typedef int (Tcl_SetFromAnyProc) (Tcl_Interp *\fIinterp\fR, Tcl_Obj *\fIobjPtr\fR); .CE If an internal representation can't be created from the string, it returns \fBTCL_ERROR\fR and puts a message describing the error in the result object for \fIinterp\fR unless \fIinterp\fR is NULL. If \fIsetFromAnyProc\fR is successful, it stores the new internal representation, sets \fIobjPtr\fR's \fItypePtr\fR member to point to \fIsetFromAnyProc\fR's \fBTcl_ObjType\fR, and returns \fBTCL_OK\fR. Before setting the new internal representation, the \fIsetFromAnyProc\fR must free any internal representation of \fIobjPtr\fR's old type; it does this by calling the old type's \fIfreeIntRepProc\fR if it is not NULL. As an example, the \fIsetFromAnyProc\fR for the builtin Tcl integer type gets an up-to-date string representation for \fIobjPtr\fR by calling \fBTcl_GetStringFromObj\fR. It parses the string to obtain an integer and, if this succeeds, stores the integer in \fIobjPtr\fR's internal representation and sets \fIobjPtr\fR's \fItypePtr\fR member to point to the integer type's Tcl_ObjType structure. .PP The \fIupdateStringProc\fR member contains the address of a function called to create a valid string representation from an object's internal representation. .CS typedef void (Tcl_UpdateStringProc) (Tcl_Obj *\fIobjPtr\fR); .CE \fIobjPtr\fR's \fIbytes\fR member is always NULL when it is called. It must always set \fIbytes\fR non-NULL before returning. We require the string representation's byte array to have a null after the last byte, at offset \fIlength\fR; this allows string representations that do not contain null bytes to be treated as conventional null character-terminated C strings. Storage for the byte array must be allocated in the heap by \fBTcl_Alloc\fR. Note that \fIupdateStringProc\fRs must allocate enough storage for the string's bytes and the terminating null byte. The \fIupdateStringProc\fR for Tcl's builtin list type, for example, builds an array of strings for each element object and then calls \fBTcl_Merge\fR to construct a string with proper Tcl list structure. It stores this string as the list object's string representation. .PP The \fIdupIntRepProc\fR member contains the address of a function called to copy an internal representation from one object to another. .CS typedef void (Tcl_DupInternalRepProc) (Tcl_Obj *\fIsrcPtr\fR, Tcl_Obj *\fIdupPtr\fR); .CE \fIdupPtr\fR's internal representation is made a copy of \fIsrcPtr\fR's internal representation. Before the call, \fIsrcPtr\fR's internal representation is valid and \fIdupPtr\fR's is not. \fIsrcPtr\fR's object type determines what copying its internal representation means. For example, the \fIdupIntRepProc\fR for the Tcl integer type simply copies an integer. The builtin list type's \fIdupIntRepProc\fR allocates a new array that points at the original element objects; the elements are shared between the two lists (and their reference counts are incremented to reflect the new references). .PP The \fIfreeIntRepProc\fR member contains the address of a function that is called when an object is freed. .CS typedef void (Tcl_FreeInternalRepProc) (Tcl_Obj *\fIobjPtr\fR); .CE The \fIfreeIntRepProc\fR function can deallocate the storage for the object's internal representation and do other type-specific processing necessary when an object is freed. For example, Tcl list objects have an \fIinternalRep.otherValuePtr\fR that points to an array of pointers to each element in the list. The list type's \fIfreeIntRepProc\fR decrements the reference count for each element object (since the list will no longer refer to those objects), then deallocates the storage for the array of pointers. The \fIfreeIntRepProc\fR member can be set to NULL to indicate that the internal representation does not require freeing. .SH "SEE ALSO" Tcl_NewObj, Tcl_DecrRefCount, Tcl_IncrRefCount .SH KEYWORDS internal representation, object, object type, string representation, type conversion 070701000779e5000081a400004ccf0000000a0000000133f371c300002feb000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/man3/OpenTcp.3'\" '\" Copyright (c) 1996-7 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) OpenTcp.3 1.19 97/06/25 14:44:00 '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_OpenTcpClient 3 8.0 Tcl "Tcl Library Procedures" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME Tcl_OpenTcpClient, Tcl_MakeTcpClientChannel, Tcl_OpenTcpServer \- procedures to open channels using TCP sockets .SH SYNOPSIS .nf \fB#include \fR .sp Tcl_Channel \fBTcl_OpenTcpClient\fR(\fIinterp, port, host, myaddr, myport, async\fR) .sp Tcl_Channel \fBTcl_MakeTcpClientChannel\fR(\fIsock\fR) .sp Tcl_Channel \fBTcl_OpenTcpServer\fR(\fIinterp, port, myaddr, proc, clientData\fR) .sp .SH ARGUMENTS .AS Tcl_ChannelType newClientProcPtr in .AP Tcl_Interp *interp in Tcl interpreter to use for error reporting. If non-NULL and an error occurs, an error message is left in \fIinterp->result\fR. .AP int port in A port number to connect to as a client or to listen on as a server. .AP char *host in A string specifying a host name or address for the remote end of the connection. .AP int myport in A port number for the client's end of the socket. If 0, a port number is allocated at random. .AP char *myaddr in A string specifying the host name or address for network interface to use for the local end of the connection. If NULL, a default interface is chosen. .AP int async in If nonzero, the client socket is connected asynchronously to the server. .AP ClientData sock in Platform-specific handle for client TCP socket. .AP Tcl_TcpAcceptProc *proc in Pointer to a procedure to invoke each time a new connection is accepted via the socket. .AP ClientData clientData in Arbitrary one-word value to pass to \fIproc\fR. .BE .SH DESCRIPTION .PP These functions are convenience procedures for creating channels that communicate over TCP sockets. The operations on a channel are described in the manual entry for \fBTcl_OpenFileChannel\fR. .SH TCL_OPENTCPCLIENT .PP \fBTcl_OpenTcpClient\fR opens a client TCP socket connected to a \fIport\fR on a specific \fIhost\fR, and returns a channel that can be used to communicate with the server. The host to connect to can be specified either as a domain name style name (e.g. \fBwww.sunlabs.com\fR), or as a string containing the alphanumeric representation of its four-byte address (e.g. \fB127.0.0.1\fR). Use the string \fBlocalhost\fR to connect to a TCP socket on the host on which the function is invoked. .PP The \fImyaddr\fR and \fImyport\fR arguments allow a client to specify an address for the local end of the connection. If \fImyaddr\fR is NULL, then an interface is chosen automatically by the operating system. If \fImyport\fR is 0, then a port number is chosen at random by the operating system. .PP If \fIasync\fR is zero, the call to \fBTcl_OpenTcpClient\fR returns only after the client socket has either successfully connected to the server, or the attempted connection has failed. If \fIasync\fR is nonzero the socket is connected asynchronously and the returned channel may not yet be connected to the server when the call to \fBTcl_OpenTcpClient\fR returns. If the channel is in blocking mode and an input or output operation is done on the channel before the connection is completed or fails, that operation will wait until the connection either completes successfully or fails. If the channel is in nonblocking mode, the input or output operation will return immediately and a subsequent call to \fBTcl_InputBlocked\fR on the channel will return nonzero. .PP The returned channel is opened for reading and writing. If an error occurs in opening the socket, \fBTcl_OpenTcpClient\fR returns NULL and records a POSIX error code that can be retrieved with \fBTcl_GetErrno\fR. In addition, if \fIinterp\fR is non-NULL, an error message is left in \fIinterp->result\fR. .PP The newly created channel is not registered in the supplied interpreter; to register it, use \fBTcl_RegisterChannel\fR. If one of the standard channels, \fBstdin, stdout\fR or \fBstderr\fR was previously closed, the act of creating the new channel also assigns it as a replacement for the standard channel. .SH TCL_MAKETCPCLIENTCHANNEL .PP \fBTcl_MakeTcpClientChannel\fR creates a \fBTcl_Channel\fR around an existing, platform specific, handle for a client TCP socket. .PP The newly created channel is not registered in the supplied interpreter; to register it, use \fBTcl_RegisterChannel\fR. If one of the standard channels, \fBstdin, stdout\fR or \fBstderr\fR was previously closed, the act of creating the new channel also assigns it as a replacement for the standard channel. .SH TCL_OPENTCPSERVER .PP \fBTcl_OpenTcpServer\fR opens a TCP socket on the local host on a specified \fIport\fR and uses the Tcl event mechanism to accept requests from clients to connect to it. The \fImyaddr\fP argument specifies the network interface. If \fImyaddr\fP is NULL the special address INADDR_ANY should be used to allow connections from any network interface. Each time a client connects to this socket, Tcl creates a channel for the new connection and invokes \fIproc\fR with information about the channel. \fIProc\fR must match the following prototype: .CS typedef void Tcl_TcpAcceptProc( ClientData \fIclientData\fR, Tcl_Channel \fIchannel\fR, char *\fIhostName\fR, int \fIport\fP); .CE .PP The \fIclientData\fR argument will be the same as the \fIclientData\fR argument to \fBTcl_OpenTcpServer\fR, \fIchannel\fR will be the handle for the new channel, \fIhostName\fR points to a string containing the name of the client host making the connection, and \fIport\fP will contain the client's port number. The new channel is opened for both input and output. If \fIproc\fR raises an error, the connection is closed automatically. \fIProc\fR has no return value, but if it wishes to reject the connection it can close \fIchannel\fR. .PP \fBTcl_OpenTcpServer\fR normally returns a pointer to a channel representing the server socket. If an error occurs, \fBTcl_OpenTcpServer\fR returns NULL and records a POSIX error code that can be retrieved with \fBTcl_GetErrno\fR. In addition, if \fIinterp->result\fR is non-NULL, an error message is left in \fIinterp->result\fR. .PP The channel returned by \fBTcl_OpenTcpServer\fR cannot be used for either input or output. It is simply a handle for the socket used to accept connections. The caller can close the channel to shut down the server and disallow further connections from new clients. .PP TCP server channels operate correctly only in applications that dispatch events through \fBTcl_DoOneEvent\fR or through Tcl commands such as \fBvwait\fR; otherwise Tcl will never notice that a connection request from a remote client is pending. .PP The newly created channel is not registered in the supplied interpreter; to register it, use \fBTcl_RegisterChannel\fR. If one of the standard channels, \fBstdin, stdout\fR or \fBstderr\fR was previously closed, the act of creating the new channel also assigns it as a replacement for the standard channel. .VS .SH "PLATFORM ISSUES" .PP On Unix platforms, the socket handle is a Unix file descriptor as returned by the \fBsocket\fR system call. On the Windows platform, the socket handle is a \fBSOCKET\fR as defined in the WinSock API. On the Macintosh platform, the socket handle is a \fBStreamPtr\fR. .VE .SH "SEE ALSO" Tcl_OpenFileChannel(3), Tcl_RegisterChannel(3), vwait(n) .SH KEYWORDS client, server, TCP 070701000779e4000081a400004ccf0000000a0000000133f371c3000068e1000000a30000000400000000000000000000002a00000004reloc/SUNWtcl/8.0/man/man3/OpenFileChnl.3'\" '\" Copyright (c) 1996-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. '\" '\" SCCS: @(#) OpenFileChnl.3 1.39 97/05/09 18:14:49 '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_OpenFileChannel 3 8.0 Tcl "Tcl Library Procedures" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME Tcl_OpenFileChannel, Tcl_OpenCommandChannel, Tcl_MakeFileChannel, Tcl_GetChannel, Tcl_RegisterChannel, Tcl_UnregisterChannel, Tcl_Close, Tcl_Read, Tcl_Gets, Tcl_Write, Tcl_Flush, Tcl_Seek, Tcl_Tell, Tcl_Eof, Tcl_InputBlocked, Tcl_InputBuffered, Tcl_GetChannelOption, Tcl_SetChannelOption \- buffered I/O facilities using channels .SH SYNOPSIS .nf \fB#include \fR .sp typedef ... Tcl_Channel; .sp Tcl_Channel \fBTcl_OpenFileChannel\fR(\fIinterp, fileName, mode, permissions\fR) .sp Tcl_Channel \fBTcl_OpenCommandChannel\fR(\fIinterp, argc, argv, flags\fR) .VS .sp Tcl_Channel \fBTcl_MakeFileChannel\fR(\fIhandle, readOrWrite\fR) .VE .sp Tcl_Channel \fBTcl_GetChannel\fR(\fIinterp, channelName, modePtr\fR) .sp void \fBTcl_RegisterChannel\fR(\fIinterp, channel\fR) .sp int \fBTcl_UnregisterChannel\fR(\fIinterp, channel\fR) .sp int \fBTcl_Close\fR(\fIinterp, channel\fR) .sp int \fBTcl_Read\fR(\fIchannel, buf, toRead\fR) .sp int \fBTcl_Gets\fR(\fIchannel, lineRead\fR) .sp int \fBTcl_GetsObj\fR(\fIchannel, lineObjPtr\fR) .sp int \fBTcl_Write\fR(\fIchannel, buf, toWrite\fR) .sp int \fBTcl_Flush\fR(\fIchannel\fR) .sp int \fBTcl_Seek\fR(\fIchannel, offset, seekMode\fR) .sp int \fBTcl_Tell\fR(\fIchannel\fR) .sp int \fBTcl_GetChannelOption\fR(\fIchannel, optionName, optionValue\fR) .sp int \fBTcl_SetChannelOption\fR(\fIinterp, channel, optionName, newValue\fR) .sp int \fBTcl_Eof\fR(\fIchannel\fR) .sp int \fBTcl_InputBlocked\fR(\fIchannel\fR) .sp int \fBTcl_InputBuffered\fR(\fIchannel\fR) .sp .SH ARGUMENTS .AS Tcl_ChannelType newClientProcPtr in .AP Tcl_Interp *interp in Used for error reporting and to look up a channel registered in it. .AP char *fileName in The name of a local or network file. .AP char *mode in Specifies how the file is to be accessed. May have any of the values allowed for the \fImode\fR argument to the Tcl \fBopen\fR command. For \fBTcl_OpenCommandChannel\fR, may be NULL. .AP int permissions in POSIX-style permission flags such as 0644. If a new file is created, these permissions will be set on the created file. .AP int argc in The number of elements in \fIargv\fR. .AP char **argv in Arguments for constructing a command pipeline. These values have the same meaning as the non-switch arguments to the Tcl \fBexec\fR command. .AP int flags in Specifies the disposition of the stdio handles in pipeline: OR-ed combination of \fBTCL_STDIN\fR, \fBTCL_STDOUT\fR, \fBTCL_STDERR\fR, and \fBTCL_ENFORCE_MODE\fR. If \fBTCL_STDIN\fR is set, stdin for the first child in the pipe is the pipe channel, otherwise it is the same as the standard input of the invoking process; likewise for \fBTCL_STDOUT\fR and \fBTCL_STDERR\fR. If \fBTCL_ENFORCE_MODE\fR is not set, then the pipe can redirect stdio handles to override the stdio handles for which \fBTCL_STDIN\fR, \fBTCL_STDOUT\fR and \fBTCL_STDERR\fR have been set. If it is set, then such redirections cause an error. .VS .AP ClientData handle in Operating system specific handle for I/O to a file. For Unix this is a file descriptor, for Windows it is a HANDLE. .AP int readOrWrite in OR-ed combination of \fBTCL_READABLE\fR and \fBTCL_WRITABLE\fR to indicate what operations are valid on \fIhandle\fR. .VE .AP int *modePtr out Points at an integer variable that will receive an OR-ed combination of \fBTCL_READABLE\fR and \fBTCL_WRITABLE\fR denoting whether the channel is open for reading and writing. .AP Tcl_Channel channel in A Tcl channel for input or output. Must have been the return value from a procedure such as \fBTcl_OpenFileChannel\fR. .AP char *buf in An array of bytes in which to store channel input, or from which to read channel output. .AP int len in The length of the input or output. .AP int atEnd in If nonzero, store the input at the end of the input queue, otherwise store it at the head of the input queue. .AP int toRead in The number of bytes to read from the channel. .AP Tcl_DString *lineRead in A pointer to a Tcl dynamic string in which to store the line read from the channel. Must have been initialized by the caller. The line read will be appended to any data already in the dynamic string. .AP Tcl_Obj *linePtrObj in A pointer to a Tcl object in which to store the line read from the channel. The line read will be appended to the current value of the object. .AP int toWrite in The number of bytes to read from \fIbuf\fR and output to the channel. .AP int offset in How far to move the access point in the channel at which the next input or output operation will be applied, measured in bytes from the position given by \fIseekMode\fR. May be either positive or negative. .AP int seekMode in Relative to which point to seek; used with \fIoffset\fR to calculate the new access point for the channel. Legal values are \fBSEEK_SET\fR, \fBSEEK_CUR\fR, and \fBSEEK_END\fR. .AP char *optionName in The name of an option applicable to this channel, such as \fB\-blocking\fR. May have any of the values accepted by the \fBfconfigure\fR command. .AP Tcl_DString *optionValue in Where to store the value of an option or a list of all options and their values. Must have been initialized by the caller. .AP char *newValue in New value for the option given by \fIoptionName\fR. .BE .SH DESCRIPTION .PP The Tcl channel mechanism provides a device-independent and platform-independent mechanism for performing buffered input and output operations on a variety of file, socket, and device types. The channel mechanism is extensible to new channel types, by providing a low level channel driver for the new type; the channel driver interface is described in the manual entry for \fBTcl_CreateChannel\fR. The channel mechanism provides a buffering scheme modelled after Unix's standard I/O, and it also allows for nonblocking I/O on channels. .PP The procedures described in this manual entry comprise the C APIs of the generic layer of the channel architecture. For a description of the channel driver architecture and how to implement channel drivers for new types of channels, see the manual entry for \fBTcl_CreateChannel\fR. .SH TCL_OPENFILECHANNEL .PP \fBTcl_OpenFileChannel\fR opens a file specified by \fIfileName\fR and returns a channel handle that can be used to perform input and output on the file. This API is modelled after the \fBfopen\fR procedure of the Unix standard I/O library. The syntax and meaning of all arguments is similar to those given in the Tcl \fBopen\fR command when opening a file. If an error occurs while opening the channel, \fBTcl_OpenFileChannel\fR returns NULL and records a POSIX error code that can be retrieved with \fBTcl_GetErrno\fR. In addition, if \fIinterp\fR is non-NULL, \fBTcl_OpenFileChannel\fR leaves an error message in \fIinterp->result\fR after any error. .PP The newly created channel is not registered in the supplied interpreter; to register it, use \fBTcl_RegisterChannel\fR, described below. If one of the standard channels, \fBstdin, stdout\fR or \fBstderr\fR was previously closed, the act of creating the new channel also assigns it as a replacement for the standard channel. .SH TCL_OPENCOMMANDCHANNEL .PP \fBTcl_OpenCommandChannel\fR provides a C-level interface to the functions of the \fBexec\fR and \fBopen\fR commands. It creates a sequence of subprocesses specified by the \fIargv\fR and \fIargc\fR arguments and returns a channel that can be used to communicate with these subprocesses. The \fIflags\fR argument indicates what sort of communication will exist with the command pipeline. .PP If the \fBTCL_STDIN\fR flag is set then the standard input for the first subprocess will be tied to the channel: writing to the channel will provide input to the subprocess. If \fBTCL_STDIN\fR is not set, then standard input for the first subprocess will be the same as this application's standard input. If \fBTCL_STDOUT\fR is set then standard output from the last subprocess can be read from the channel; otherwise it goes to this application's standard output. If \fBTCL_STDERR\fR is set, standard error output for all subprocesses is returned to the channel and results in an error when the channel is closed; otherwise it goes to this application's standard error. If \fBTCL_ENFORCE_MODE\fR is not set, then \fIargc\fR and \fIargv\fR can redirect the stdio handles to override \fBTCL_STDIN\fR, \fBTCL_STDOUT\fR, and \fBTCL_STDERR\fR; if it is set, then it is an error for argc and argv to override stdio channels for which \fBTCL_STDIN\fR, \fBTCL_STDOUT\fR, and \fBTCL_STDERR\fR have been set. .PP If an error occurs while opening the channel, \fBTcl_OpenCommandChannel\fR returns NULL and records a POSIX error code that can be retrieved with \fBTcl_GetErrno\fR. In addition, \fBTcl_OpenCommandChannel\fR leaves an error message in \fIinterp->result\fR if \fIinterp\fR is not NULL. .PP The newly created channel is not registered in the supplied interpreter; to register it, use \fBTcl_RegisterChannel\fR, described below. If one of the standard channels, \fBstdin, stdout\fR or \fBstderr\fR was previously closed, the act of creating the new channel also assigns it as a replacement for the standard channel. .SH TCL_MAKEFILECHANNEL .PP \fBTcl_MakeFileChannel\fR makes a \fBTcl_Channel\fR from an existing, platform-specific, file handle. The newly created channel is not registered in the supplied interpreter; to register it, use \fBTcl_RegisterChannel\fR, described below. If one of the standard channels, \fBstdin, stdout\fR or \fBstderr\fR was previously closed, the act of creating the new channel also assigns it as a replacement for the standard channel. .SH TCL_GETCHANNEL .PP \fBTcl_GetChannel\fR returns a channel given the \fIchannelName\fR used to create it with \fBTcl_CreateChannel\fR and a pointer to a Tcl interpreter in \fIinterp\fR. If a channel by that name is not registered in that interpreter, the procedure returns NULL. If the \fImode\fR argument is not NULL, it points at an integer variable that will receive an OR-ed combination of \fBTCL_READABLE\fR and \fBTCL_WRITABLE\fR describing whether the channel is open for reading and writing. .SH TCL_REGISTERCHANNEL .PP \fBTcl_RegisterChannel\fR adds a channel to the set of channels accessible in \fIinterp\fR. After this call, Tcl programs executing in that interpreter can refer to the channel in input or output operations using the name given in the call to \fBTcl_CreateChannel\fR. After this call, the channel becomes the property of the interpreter, and the caller should not call \fBTcl_Close\fR for the channel; the channel will be closed automatically when it is unregistered from the interpreter. .PP Code executing outside of any Tcl interpreter can call \fBTcl_RegisterChannel\fR with \fIinterp\fR as NULL, to indicate that it wishes to hold a reference to this channel. Subsequently, the channel can be registered in a Tcl interpreter and it will only be closed when the matching number of calls to \fBTcl_UnregisterChannel\fR have been made. This allows code executing outside of any interpreter to safely hold a reference to a channel that is also registered in a Tcl interpreter. .SH TCL_UNREGISTERCHANNEL .PP \fBTcl_UnregisterChannel\fR removes a channel from the set of channels accessible in \fIinterp\fR. After this call, Tcl programs will no longer be able to use the channel's name to refer to the channel in that interpreter. If this operation removed the last registration of the channel in any interpreter, the channel is also closed and destroyed. .PP Code not associated with a Tcl interpreter can call \fBTcl_UnregisterChannel\fR with \fIinterp\fR as NULL, to indicate to Tcl that it no longer holds a reference to that channel. If this is the last reference to the channel, it will now be closed. .SH TCL_CLOSE .PP \fBTcl_Close\fR destroys the channel \fIchannel\fR, which must denote a currently open channel. The channel should not be registered in any interpreter when \fBTcl_Close\fR is called. Buffered output is flushed to the channel's output device prior to destroying the channel, and any buffered input is discarded. If this is a blocking channel, the call does not return until all buffered data is successfully sent to the channel's output device. If this is a nonblocking channel and there is buffered output that cannot be written without blocking, the call returns immediately; output is flushed in the background and the channel will be closed once all of the buffered data has been output. In this case errors during flushing are not reported. .PP If the channel was closed successfully, \fBTcl_Close\fR returns \fBTCL_OK\fR. If an error occurs, \fBTcl_Close\fR returns \fBTCL_ERROR\fR and records a POSIX error code that can be retrieved with \fBTcl_GetErrno\fR. If the channel is being closed synchronously and an error occurs during closing of the channel and \fIinterp\fR is not NULL, an error message is left in \fIinterp->result\fR. .PP Note: it is not safe to call \fBTcl_Close\fR on a channel that has been registered using \fBTcl_RegisterChannel\fR; see the documentation for \fBTcl_RegisterChannel\fR, above, for details. If the channel has ever been given as the \fBchan\fR argument in a call to \fBTcl_RegisterChannel\fR, you should instead use \fBTcl_UnregisterChannel\fR, which will internally call \fBTcl_Close\fR when all calls to \fBTcl_RegisterChannel\fR have been matched by corresponding calls to \fBTcl_UnregisterChannel\fR. .SH TCL_READ .PP \fBTcl_Read\fR consumes up to \fItoRead\fR bytes of data from \fIchannel\fR and stores it at \fIbuf\fR. The return value of \fBTcl_Read\fR is the number of characters written at \fIbuf\fR. The buffer produced by \fBTcl_Read\fR is not NULL terminated. Its contents are valid from the zeroth position up to and excluding the position indicated by the return value. If an error occurs, the return value is -1 and \fBTcl_Read\fR records a POSIX error code that can be retrieved with \fBTcl_GetErrno\fR. .PP The return value may be smaller than the value of \fItoRead\fR, indicating that less data than requested was available, also called a \fIshort read\fR. In blocking mode, this can only happen on an end-of-file. In nonblocking mode, a short read can also occur if there is not enough input currently available: \fBTcl_Read\fR returns a short count rather than waiting for more data. .PP If the channel is in blocking mode, a return value of zero indicates an end of file condition. If the channel is in nonblocking mode, a return value of zero indicates either that no input is currently available or an end of file condition. Use \fBTcl_Eof\fR and \fBTcl_InputBlocked\fR to tell which of these conditions actually occurred. .PP \fBTcl_Read\fR translates platform-specific end-of-line representations into the canonical \fB\en\fR internal representation according to the current end-of-line recognition mode. End-of-line recognition and the various platform-specific modes are described in the manual entry for the Tcl \fBfconfigure\fR command. .SH TCL_GETS AND TCL_GETSOBJ .PP \fBTcl_Gets\fR reads a line of input from a channel and appends all of the characters of the line except for the terminating end-of-line character(s) to the dynamic string given by \fIdsPtr\fR. The end-of-line character(s) are read and discarded. .PP If a line was successfully read, the return value is greater than or equal to zero, and it indicates the number of characters stored in the dynamic string. If an error occurs, \fBTcl_Gets\fR returns -1 and records a POSIX error code that can be retrieved with \fBTcl_GetErrno\fR. \fBTcl_Gets\fR also returns -1 if the end of the file is reached; the \fBTcl_Eof\fR procedure can be used to distinguish an error from an end-of-file condition. .PP If the channel is in nonblocking mode, the return value can also be -1 if no data was available or the data that was available did not contain an end-of-line character. When -1 is returned, the \fBTcl_InputBlocked\fR procedure may be invoked to determine if the channel is blocked because of input unavailability. .PP \fBTcl_GetsObj\fR is the same as \fBTcl_Gets\fR except the resulting characters are appended to a Tcl object \fBlineObjPtr\fR rather than a dynamic string. .SH TCL_WRITE .PP \fBTcl_Write\fR accepts \fItoWrite\fR bytes of data at \fIbuf\fR for output on \fIchannel\fR. This data may not appear on the output device immediately. If the data should appear immediately, call \fBTcl_Flush\fR after the call to \fBTcl_Write\fR, or set the \fB-buffering\fR option on the channel to \fBnone\fR. If you wish the data to appear as soon as an end of line is accepted for output, set the \fB\-buffering\fR option on the channel to \fBline\fR mode. .PP The \fItoWrite\fR argument specifies how many bytes of data are provided in the \fIbuf\fR argument. If it is negative, \fBTcl_Write\fR expects the data to be NULL terminated and it outputs everything up to the NULL. .PP The return value of \fBTcl_Write\fR is a count of how many characters were accepted for output to the channel. This is either equal to \fItoWrite\fR or -1 to indicate that an error occurred. If an error occurs, \fBTcl_Write\fR also records a POSIX error code that may be retrieved with \fBTcl_GetErrno\fR. .PP Newline characters in the output data are translated to platform-specific end-of-line sequences according to the \fB\-translation\fR option for the channel. .SH TCL_FLUSH .PP \fBTcl_Flush\fR causes all of the buffered output data for \fIchannel\fR to be written to its underlying file or device as soon as possible. If the channel is in blocking mode, the call does not return until all the buffered data has been sent to the channel or some error occurred. The call returns immediately if the channel is nonblocking; it starts a background flush that will write the buffered data to the channel eventually, as fast as the channel is able to absorb it. .PP The return value is normally \fBTCL_OK\fR. If an error occurs, \fBTcl_Flush\fR returns \fBTCL_ERROR\fR and records a POSIX error code that can be retrieved with \fBTcl_GetErrno\fR. .SH TCL_SEEK .PP \fBTcl_Seek\fR moves the access point in \fIchannel\fR where subsequent data will be read or written. Buffered output is flushed to the channel and buffered input is discarded, prior to the seek operation. .PP \fBTcl_Seek\fR normally returns the new access point. If an error occurs, \fBTcl_Seek\fR returns -1 and records a POSIX error code that can be retrieved with \fBTcl_GetErrno\fR. After an error, the access point may or may not have been moved. .SH TCL_TELL .PP \fBTcl_Tell\fR returns the current access point for a channel. The returned value is -1 if the channel does not support seeking. .SH TCL_GETCHANNELOPTION .PP \fBTcl_GetChannelOption\fR retrieves, in \fIdsPtr\fR, the value of one of the options currently in effect for a channel, or a list of all options and their values. The \fIchannel\fR argument identifies the channel for which to query an option or retrieve all options and their values. If \fIoptionName\fR is not NULL, it is the name of the option to query; the option's value is copied to the Tcl dynamic string denoted by \fIoptionValue\fR. If \fIoptionName\fR is NULL, the function stores an alternating list of option names and their values in \fIoptionValue\fR, using a series of calls to \fBTcl_DStringAppendElement\fR. The various preexisting options and their possible values are described in the manual entry for the Tcl \fBfconfigure\fR command. Other options can be added by each channel type. These channel type specific options are described in the manual entry for the Tcl command that creates a channel of that type; for example, the additional options for TCP based channels are described in the manual entry for the Tcl \fBsocket\fR command. The procedure normally returns \fBTCL_OK\fR. If an error occurs, it returns \fBTCL_ERROR\fR and calls \fBTcl_SetErrno\fR to store an appropriate POSIX error code. .SH TCL_SETCHANNELOPTION .PP \fBTcl_SetChannelOption\fR sets a new value for an option on \fIchannel\fR. \fIOptionName\fR is the option to set and \fInewValue\fR is the value to set. The procedure normally returns \fBTCL_OK\fR. If an error occurs, it returns \fBTCL_ERROR\fR; in addition, if \fIinterp\fR is non-NULL, \fBTcl_SetChannelOption\fR leaves an error message in \fIinterp->result\fR. .SH TCL_EOF .PP \fBTcl_Eof\fR returns a nonzero value if \fIchannel\fR encountered an end of file during the last input operation. .SH TCL_INPUTBLOCKED .PP \fBTcl_InputBlocked\fR returns a nonzero value if \fIchannel\fR is in nonblocking mode and the last input operation returned less data than requested because there was insufficient data available. The call always returns zero if the channel is in blocking mode. .SH TCL_INPUTBUFFERED .PP \fBTcl_InputBuffered\fR returns the number of bytes of input currently buffered in the internal buffers for a channel. If the channel is not open for reading, this function always returns zero. .VS .SH "PLATFORM ISSUES" .PP The handles returned from \fBTcl_GetChannelHandle\fR depend on the platform and the channel type. On Unix platforms, the handle is always a Unix file descriptor as returned from the \fBopen\fR system call. On Windows platforms, the handle is a file \fBHANDLE\fR when the channel was created with \fBTcl_OpenFileChannel\fR, \fBTcl_OpenCommandChannel\fR, or \fBTcl_MakeFileChannel\fR. Other channel types may return a different type of handle on Windows platforms. On the Macintosh platform, the handle is a file reference number as returned from \fBHOpenDF\fR. .VE .SH "SEE ALSO" DString(3), fconfigure(n), filename(n), fopen(2), Tcl_CreateChannel(3) .SH KEYWORDS access point, blocking, buffered I/O, channel, channel driver, end of file, flush, input, nonblocking, output, read, seek, write 070701000779e6000081a400004ccf0000000a0000000133f371c4000019e8000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/man/man3/PkgRequire.3'\" '\" Copyright (c) 1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) PkgRequire.3 1.4 96/02/15 20:03:16 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_PkgRequire 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_PkgRequire, Tcl_PkgProvide \- package version control .SH SYNOPSIS .nf \fB#include \fR .sp char * \fBTcl_PkgRequire\fR(\fIinterp, name, version, exact\fR) .sp int \fBTcl_PkgProvide\fR(\fIinterp, name, version\fR) .SH ARGUMENTS .AS Tcl_FreeProc clientData .AP Tcl_Interp *interp in Interpreter where package is needed or available. .AP char *name in Name of package. .AP char *version in A version string consisting of one or more decimal numbers separated by dots. .AP int exact in Non-zero means that only the particular version specified by \fIversion\fR is acceptable. Zero means that newer versions than \fIversion\fR are also acceptable as long as they have the same major version number as \fIversion\fR. .BE .SH DESCRIPTION .PP These procedures provide C-level interfaces to Tcl's package and version management facilities. \fBTcl_PkgRequire\fR is equivalent to the \fBpackage require\fR command, and \fBTcl_PkgProvide\fR is equivalent to the \fBpackage provide\fR command. See the documentation for the Tcl commands for details on what these procedures do. If \fBTcl_PkgRequire\fR completes successfully it returns a pointer to the version string for the version of the package that is provided in the interpreter (which may be different than \fIversion\fR); if an error occurs it returns NULL and leaves an error message in \fIinterp->result\fR. \fBTcl_PkgProvide\fR returns TCL_OK if it completes successfully; if an error occurs it returns TCL_ERROR and leaves an error message in \fIinterp->result\fR. .SH KEYWORDS package, provide, require, version 070701000779e7000081a400004ccf0000000a0000000133f371c400002323000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/man3/Preserve.3'\" '\" Copyright (c) 1990 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) Preserve.3 1.13 96/05/28 09:26:12 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_Preserve 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_Preserve, Tcl_Release, Tcl_EventuallyFree \- avoid freeing storage while it's being used .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_Preserve\fR(\fIclientData\fR) .sp \fBTcl_Release\fR(\fIclientData\fR) .sp \fBTcl_EventuallyFree\fR(\fIclientData, freeProc\fR) .SH ARGUMENTS .AS Tcl_FreeProc clientData .AP ClientData clientData in Token describing structure to be freed or reallocated. Usually a pointer to memory for structure. .AP Tcl_FreeProc *freeProc in Procedure to invoke to free \fIclientData\fR. .BE .SH DESCRIPTION .PP These three procedures help implement a simple reference count mechanism for managing storage. They are designed to solve a problem having to do with widget deletion, but are also useful in many other situations. When a widget is deleted, its widget record (the structure holding information specific to the widget) must be returned to the storage allocator. However, it's possible that the widget record is in active use by one of the procedures on the stack at the time of the deletion. This can happen, for example, if the command associated with a button widget causes the button to be destroyed: an X event causes an event-handling C procedure in the button to be invoked, which in turn causes the button's associated Tcl command to be executed, which in turn causes the button to be deleted, which in turn causes the button's widget record to be de-allocated. Unfortunately, when the Tcl command returns, the button's event-handling procedure will need to reference the button's widget record. Because of this, the widget record must not be freed as part of the deletion, but must be retained until the event-handling procedure has finished with it. In other situations where the widget is deleted, it may be possible to free the widget record immediately. .PP \fBTcl_Preserve\fR and \fBTcl_Release\fR implement short-term reference counts for their \fIclientData\fR argument. The \fIclientData\fR argument identifies an object and usually consists of the address of a structure. The reference counts guarantee that an object will not be freed until each call to \fBTcl_Preserve\fR for the object has been matched by calls to \fBTcl_Release\fR. There may be any number of unmatched \fBTcl_Preserve\fR calls in effect at once. .PP \fBTcl_EventuallyFree\fR is invoked to free up its \fIclientData\fR argument. It checks to see if there are unmatched \fBTcl_Preserve\fR calls for the object. If not, then \fBTcl_EventuallyFree\fR calls \fIfreeProc\fR immediately. Otherwise \fBTcl_EventuallyFree\fR records the fact that \fIclientData\fR needs eventually to be freed. When all calls to \fBTcl_Preserve\fR have been matched with calls to \fBTcl_Release\fR then \fIfreeProc\fR will be called by \fBTcl_Release\fR to do the cleanup. .PP All the work of freeing the object is carried out by \fIfreeProc\fR. \fIFreeProc\fR must have arguments and result that match the type \fBTcl_FreeProc\fR: .CS typedef void Tcl_FreeProc(char *\fIblockPtr\fR); .CE The \fIblockPtr\fR argument to \fIfreeProc\fR will be the same as the \fIclientData\fR argument to \fBTcl_EventuallyFree\fR. The type of \fIblockPtr\fR (\fBchar *\fR) is different than the type of the \fIclientData\fR argument to \fBTcl_EventuallyFree\fR for historical reasons, but the value is the same. .PP This mechanism can be used to solve the problem described above by placing \fBTcl_Preserve\fR and \fBTcl_Release\fR calls around actions that may cause undesired storage re-allocation. The mechanism is intended only for short-term use (i.e. while procedures are pending on the stack); it will not work efficiently as a mechanism for long-term reference counts. The implementation does not depend in any way on the internal structure of the objects being freed; it keeps the reference counts in a separate structure. .SH KEYWORDS free, reference count, storage 070701000779e8000081a400004ccf0000000a0000000133f371c400001860000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/man3/PrintDbl.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) PrintDbl.3 1.8 97/02/18 16:34:51 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_PrintDouble 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_PrintDouble \- Convert floating value to string .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_PrintDouble\fR(\fIinterp, value, dst\fR) .SH ARGUMENTS .AS Tcl_Interp *interp .AP Tcl_Interp *interp in .VS Before Tcl 8.0, the \fBtcl_precision\fR variable in this interpreter controlled the conversion. As of Tcl 8.0, this argument is ignored and 17 digits of precision are always used for conversion. .VE .AP double value in Floating-point value to be converted. .AP char *dst out Where to store string representing \fIvalue\fR. Must have at least TCL_DOUBLE_SPACE characters of storage. .BE .SH DESCRIPTION .PP \fBTcl_PrintDouble\fR generates a string that represents the value of \fIvalue\fR and stores it in memory at the location given by \fIdst\fR. It uses \fB%g\fR format to generate the string, with one special twist: the string is guaranteed to contain either a ``.'' or an ``e'' so that it doesn't look like an integer. Where \fB%g\fR would generate an integer with no decimal point, \fBTcl_PrintDouble\fR adds ``.0''. .SH KEYWORDS conversion, double-precision, floating-point, string 070701000779e9000081a400004ccf0000000a0000000133f371c400001a19000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/man/man3/RecEvalObj.3'\" '\" Copyright (c) 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. '\" '\" SCCS: SCCS: @(#) RecEvalObj.3 1.1 97/07/29 18:31:21 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_RecordAndEvalObj 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_RecordAndEvalObj \- save command on history list before evaluating .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_RecordAndEvalObj\fR(\fIinterp, cmdPtr, flags\fR) .SH ARGUMENTS .AS Tcl_Interp *interp; .AP Tcl_Interp *interp in Tcl interpreter in which to evaluate command. .AP Tcl_Obj *cmdPtr in Points to a Tcl object containing a command (or sequence of commands) to execute. .AP int flags in An OR'ed combination of flag bits. TCL_NO_EVAL means record the command but don't evaluate it. TCL_EVAL_GLOBAL means evaluate the command at global level instead of the current stack level. .BE .SH DESCRIPTION .PP \fBTcl_RecordAndEvalObj\fR is invoked to record a command as an event on the history list and then execute it using \fBTcl_EvalObj\fR (or \fBTcl_GlobalEvalObj\fR if the TCL_EVAL_GLOBAL bit is set in \fIflags\fR). It returns a completion code such as TCL_OK just like \fBTcl_EvalObj\fR, as well as a result object containing additional information (a result value or error message) that can be retrieved using \fBTcl_GetObjResult\fR. If you don't want the command recorded on the history list then you should invoke \fBTcl_EvalObj\fR instead of \fBTcl_RecordAndEvalObj\fR. Normally \fBTcl_RecordAndEvalObj\fR is only called with top-level commands typed by the user, since the purpose of history is to allow the user to re-issue recently-invoked commands. If the \fIflags\fR argument contains the TCL_NO_EVAL bit then the command is recorded without being evaluated. .SH "SEE ALSO" Tcl_EvalObj, Tcl_GetObjResult .SH KEYWORDS command, event, execute, history, interpreter, object, record 070701000779ea000081a400004ccf0000000a0000000133f371c400001a8f000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/man/man3/RecordEval.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) RecordEval.3 1.18 97/07/29 18:25:13 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_RecordAndEval 3 7.4 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_RecordAndEval \- save command on history list before evaluating .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_RecordAndEval\fR(\fIinterp, cmd, flags\fR) .SH ARGUMENTS .AS Tcl_Interp *interp; .AP Tcl_Interp *interp in Tcl interpreter in which to evaluate command. .AP char *cmd in Command (or sequence of commands) to execute. .AP int flags in An OR'ed combination of flag bits. TCL_NO_EVAL means record the command but don't evaluate it. TCL_EVAL_GLOBAL means evaluate the command at global level instead of the current stack level. .BE .SH DESCRIPTION .PP \fBTcl_RecordAndEval\fR is invoked to record a command as an event on the history list and then execute it using \fBTcl_Eval\fR (or \fBTcl_GlobalEval\fR if the TCL_EVAL_GLOBAL bit is set in \fIflags\fR). It returns a completion code such as TCL_OK just like \fBTcl_Eval\fR and it leaves information in \fIinterp->result\fR. If you don't want the command recorded on the history list then you should invoke \fBTcl_Eval\fR instead of \fBTcl_RecordAndEval\fR. Normally \fBTcl_RecordAndEval\fR is only called with top-level commands typed by the user, since the purpose of history is to allow the user to re-issue recently-invoked commands. If the \fIflags\fR argument contains the TCL_NO_EVAL bit then the command is recorded without being evaluated. .PP Note that \fBTcl_RecordAndEval\fR has been largely replaced by the object-based procedure \fBTcl_RecordAndEvalObj\fR. That object-based procedure records and optionally executes a command held in a Tcl object instead of a string. .SH "SEE ALSO" Tcl_RecordAndEvalObj .SH KEYWORDS command, event, execute, history, interpreter, record 070701000779eb000081a400004ccf0000000a0000000133f371c400002649000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/man3/RegExp.3'\" '\" Copyright (c) 1994 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) RegExp.3 1.9 96/08/26 12:59:48 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_RegExpMatch 3 7.4 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_RegExpMatch, Tcl_RegExpCompile, Tcl_RegExpExec, Tcl_RegExpRange \- Pattern matching with regular expressions .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_RegExpMatch\fR(\fIinterp\fR, \fIstring\fR, \fIpattern\fR) .sp Tcl_RegExp \fBTcl_RegExpCompile\fR(\fIinterp\fR, \fIpattern\fR) .sp int \fBTcl_RegExpExec\fR(\fIinterp\fR, \fIregexp\fR, \fIstring\fR, \fIstart\fR) .sp \fBTcl_RegExpRange\fR(\fIregexp\fR, \fIindex\fR, \fIstartPtr\fR, \fIendPtr\fR) .SH ARGUMENTS .AS Tcl_Interp *interp .AP Tcl_Interp *interp in Tcl interpreter to use for error reporting. .AP char *string in String to check for a match with a regular expression. .AP char *pattern in String in the form of a regular expression pattern. .AP Tcl_RegExp regexp in Compiled regular expression. Must have been returned previously by \fBTcl_RegExpCompile\fR. .AP char *start in If \fIstring\fR is just a portion of some other string, this argument identifies the beginning of the larger string. If it isn't the same as \fIstring\fR, then no \fB^\fR matches will be allowed. .AP int index in Specifies which range is desired: 0 means the range of the entire match, 1 or greater means the range that matched a parenthesized sub-expression. .AP char **startPtr out The address of the first character in the range is stored here, or NULL if there is no such range. .AP char **endPtr out The address of the character just after the last one in the range is stored here, or NULL if there is no such range. .BE .SH DESCRIPTION .PP \fBTcl_RegExpMatch\fR determines whether its \fIpattern\fR argument matches \fIregexp\fR, where \fIregexp\fR is interpreted as a regular expression using the same rules as for the \fBregexp\fR Tcl command. If there is a match then \fBTcl_RegExpMatch\fR returns 1. If there is no match then \fBTcl_RegExpMatch\fR returns 0. If an error occurs in the matching process (e.g. \fIpattern\fR is not a valid regular expression) then \fBTcl_RegExpMatch\fR returns \-1 and leaves an error message in \fIinterp->result\fR. .PP \fBTcl_RegExpCompile\fR, \fBTcl_RegExpExec\fR, and \fBTcl_RegExpRange\fR provide lower-level access to the regular expression pattern matcher. \fBTcl_RegExpCompile\fR compiles a regular expression string into the internal form used for efficient pattern matching. The return value is a token for this compiled form, which can be used in subsequent calls to \fBTcl_RegExpExec\fR or \fBTcl_RegExpRange\fR. If an error occurs while compiling the regular expression then \fBTcl_RegExpCompile\fR returns NULL and leaves an error message in \fIinterp->result\fR. Note: the return value from \fBTcl_RegExpCompile\fR is only valid up to the next call to \fBTcl_RegExpCompile\fR; it is not safe to retain these values for long periods of time. .PP \fBTcl_RegExpExec\fR executes the regular expression pattern matcher. It returns 1 if \fIstring\fR contains a range of characters that match \fIregexp\fR, 0 if no match is found, and \-1 if an error occurs. In the case of an error, \fBTcl_RegExpExec\fR leaves an error message in \fIinterp->result\fR. When searching a string for multiple matches of a pattern, it is important to distinguish between the start of the original string and the start of the current search. For example, when searching for the second occurrence of a match, the \fIstring\fR argument might point to the character just after the first match; however, it is important for the pattern matcher to know that this is not the start of the entire string, so that it doesn't allow \fB^\fR atoms in the pattern to match. The \fIstart\fR argument provides this information by pointing to the start of the overall string containing \fIstring\fR. \fIStart\fR will be less than or equal to \fIstring\fR; if it is less than \fIstring\fR then no \fB^\fR matches will be allowed. .PP \fBTcl_RegExpRange\fR may be invoked after \fBTcl_RegExpExec\fR returns; it provides detailed information about what ranges of the string matched what parts of the pattern. \fBTcl_RegExpRange\fR returns a pair of pointers in \fI*startPtr\fR and \fI*endPtr\fR that identify a range of characters in the source string for the most recent call to \fBTcl_RegExpExec\fR. \fIIndex\fR indicates which of several ranges is desired: if \fIindex\fR is 0, information is returned about the overall range of characters that matched the entire pattern; otherwise, information is returned about the range of characters that matched the \fIindex\fR'th parenthesized subexpression within the pattern. If there is no range corresponding to \fIindex\fR then NULL is stored in \fI*firstPtr\fR and \fI*lastPtr\fR. .SH KEYWORDS match, pattern, regular expression, string, subexpression 070701000779ec000081a400004ccf0000000a0000000133f371c500001827000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/man3/SetErrno.3'\" '\" Copyright (c) 1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) SetErrno.3 1.5 96/02/15 20:01:31 '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_SetErrno 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_SetErrno, Tcl_GetErrno \- manipulate errno to store and retrieve error codes .SH SYNOPSIS .nf \fB#include \fR .sp void \fBTcl_SetErrno\fR(\fIerrorCode\fR) .sp int \fBTcl_GetErrno\fR() .sp .SH ARGUMENTS .AS Tcl_Interp *errorCode in .AP int errorCode in A POSIX error code such as \fBENOENT\fR. .BE .SH DESCRIPTION .PP \fBTcl_SetErrno\fR and \fBTcl_GetErrno\fR provide portable access to the \fBerrno\fR variable, which is used to record a POSIX error code after system calls and other operations such as \fBTcl_Gets\fR. These procedures are necessary because global variable accesses cannot be made across module boundaries on some platforms. .PP \fBTcl_SetErrno\fR sets the \fBerrno\fR variable to the value of the \fIerrorCode\fR argument C procedures that wish to return error information to their callers via \fBerrno\fR should call \fBTcl_SetErrno\fR rather than setting \fBerrno\fR directly. .PP \fBTcl_GetErrno\fR returns the current value of \fBerrno\fR. Procedures wishing to access \fBerrno\fR should call this procedure instead of accessing \fBerrno\fR directly. .SH KEYWORDS errno, error code, global variables 070701000779ed000081a400004ccf0000000a0000000133f371c5000019f2000000a30000000400000000000000000000002700000004reloc/SUNWtcl/8.0/man/man3/SetRecLmt.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) SetRecLmt.3 1.6 96/03/25 20:06:36 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_SetRecursionLimit 3 7.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_SetRecursionLimit \- set maximum allowable nesting depth in interpreter .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_SetRecursionLimit\fR(\fIinterp, depth\fR) .SH ARGUMENTS .AS Tcl_Interp *interp .AP Tcl_Interp *interp in Interpreter whose recursion limit is to be set. Must be greater than zero. .AP int depth in New limit for nested calls to \fBTcl_Eval\fR for \fIinterp\fR. .BE .SH DESCRIPTION .PP At any given time Tcl enforces a limit on the number of recursive calls that may be active for \fBTcl_Eval\fR and related procedures such as \fBTcl_GlobalEval\fR. Any call to \fBTcl_Eval\fR that exceeds this depth is aborted with an error. By default the recursion limit is 1000. .PP \fBTcl_SetRecursionLimit\fR may be used to change the maximum allowable nesting depth for an interpreter. The \fIdepth\fR argument specifies a new limit for \fIinterp\fR, and \fBTcl_SetRecursionLimit\fR returns the old limit. To read out the old limit without modifying it, invoke \fBTcl_SetRecursionDepth\fR with \fIdepth\fR equal to 0. .PP The \fBTcl_SetRecursionLimit\fR only sets the size of the Tcl call stack: it cannot by itself prevent stack overflows on the C stack being used by the application. If your machine has a limit on the size of the C stack, you may get stack overflows before reaching the limit set by \fBTcl_SetRecursionLimit\fR. If this happens, see if there is a mechanism in your system for increasing the maximum size of the C stack. .SH KEYWORDS nesting depth, recursion 070701000779ee000081a400004ccf0000000a0000000133f371c5000036fb000000a30000000400000000000000000000002700000004reloc/SUNWtcl/8.0/man/man3/SetResult.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) SetResult.3 1.23 97/06/26 14:05:57 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_SetResult 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_SetObjResult, Tcl_GetObjResult, Tcl_SetResult, Tcl_GetStringResult, Tcl_AppendResult, Tcl_AppendElement, Tcl_ResetResult \- manipulate Tcl result .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_SetObjResult\fR(\fIinterp, objPtr\fR) .sp Tcl_Obj * \fBTcl_GetObjResult\fR(\fIinterp\fR) .sp \fBTcl_SetResult\fR(\fIinterp, string, freeProc\fR) .sp char * \fBTcl_GetStringResult\fR(\fIinterp\fR) .sp \fBTcl_AppendResult\fR(\fIinterp, string, string, ... , \fB(char *) NULL\fR) .sp \fBTcl_AppendElement\fR(\fIinterp, string\fR) .sp \fBTcl_ResetResult\fR(\fIinterp\fR) .sp \fBTcl_FreeResult\fR(\fIinterp\fR) .SH ARGUMENTS .AS Tcl_FreeProc freeProc .AP Tcl_Interp *interp out Interpreter whose result is to be modified or read. .AP Tcl_Obj *objPtr in Object value to become result for \fIinterp\fR. .AP char *string in String value to become result for \fIinterp\fR or to be appended to the existing result. .AP Tcl_FreeProc *freeProc in Address of procedure to call to release storage at \fIstring\fR, or \fBTCL_STATIC\fR, \fBTCL_DYNAMIC\fR, or \fBTCL_VOLATILE\fR. .BE .SH DESCRIPTION .PP The procedures described here are utilities for manipulating the result value in a Tcl interpreter. The interpreter result may be either a Tcl object or a string. For example, \fBTcl_SetObjResult\fR and \fBTcl_SetResult\fR set the interpreter result to, respectively, an object and a string. Similarly, \fBTcl_GetObjResult\fR and \fBTcl_GetStringResult\fR return the interpreter result as an object and as a string. The procedures always keep the string and object forms of the interpreter result consistent. For example, if \fBTcl_SetObjResult\fR is called to set the result to an object, then \fBTcl_GetStringResult\fR is called, it will return the object's string value. .PP \fBTcl_SetObjResult\fR arranges for \fIobjPtr\fR to be the result for \fIinterp\fR, replacing any existing result. The result is left pointing to the object referenced by \fIobjPtr\fR. \fIobjPtr\fR's reference count is incremented since there is now a new reference to it from \fIinterp\fR. The reference count for any old result object is decremented and the old result object is freed if no references to it remain. .PP \fBTcl_GetObjResult\fR returns the result for \fIinterp\fR as an object. The object's reference count is not incremented; if the caller needs to retain a long-term pointer to the object they should use \fBTcl_IncrRefCount\fR to increment its reference count in order to keep it from being freed too early or accidently changed. .PP \fBTcl_SetResult\fR arranges for \fIstring\fR to be the result for the current Tcl command in \fIinterp\fR, replacing any existing result. The \fIfreeProc\fR argument specifies how to manage the storage for the \fIstring\fR argument; it is discussed in the section \fBTHE TCL_FREEPROC ARGUMENT TO TCL_SETRESULT\fR below. If \fIstring\fR is \fBNULL\fR, then \fIfreeProc\fR is ignored and \fBTcl_SetResult\fR re-initializes \fIinterp\fR's result to point to an empty string. .PP \fBTcl_GetStringResult\fR returns the result for \fIinterp\fR as an string. If the result was set to an object by a \fBTcl_SetObjResult\fR call, the object form will be converted to a string and returned. If the object's string representation contains null bytes, this conversion will lose information. For this reason, programmers are encouraged to write their code to use the new object API procedures and to call \fBTcl_GetObjResult\fR instead. .PP \fBTcl_ResetResult\fR clears the result for \fIinterp\fR and leaves the result in its normal empty initialized state. If the result is an object, its reference count is decremented and the result is left pointing to an unshared object representing an empty string. If the result is a dynamically allocated string, its memory is free*d and the result is left as a empty string. \fBTcl_ResetResult\fR also clears the error state managed by \fBTcl_AddErrorInfo\fR, \fBTcl_AddObjErrorInfo\fR, and \fBTcl_SetErrorCode\fR. .SH OLD STRING PROCEDURES .PP Use of the following procedures is deprecated since they manipulate the Tcl result as a string. Procedures such as \fBTcl_SetObjResult\fR that manipulate the result as an object can be significantly more efficient. .PP \fBTcl_AppendResult\fR makes it easy to build up Tcl results in pieces. It takes each of its \fIstring\fR arguments and appends them in order to the current result associated with \fIinterp\fR. If the result is in its initialized empty state (e.g. a command procedure was just invoked or \fBTcl_ResetResult\fR was just called), then \fBTcl_AppendResult\fR sets the result to the concatenation of its \fIstring\fR arguments. \fBTcl_AppendResult\fR may be called repeatedly as additional pieces of the result are produced. \fBTcl_AppendResult\fR takes care of all the storage management issues associated with managing \fIinterp\fR's result, such as allocating a larger result area if necessary. It also converts the current interpreter result from an object to a string, if necessary, before appending the argument strings. Any number of \fIstring\fR arguments may be passed in a single call; the last argument in the list must be a NULL pointer. .PP \fBTcl_AppendElement\fR is similar to \fBTcl_AppendResult\fR in that it allows results to be built up in pieces. However, \fBTcl_AppendElement\fR takes only a single \fIstring\fR argument and it appends that argument to the current result as a proper Tcl list element. \fBTcl_AppendElement\fR adds backslashes or braces if necessary to ensure that \fIinterp\fR's result can be parsed as a list and that \fIstring\fR will be extracted as a single element. Under normal conditions, \fBTcl_AppendElement\fR will add a space character to \fIinterp\fR's result just before adding the new list element, so that the list elements in the result are properly separated. However if the new list element is the first in a list or sub-list (i.e. \fIinterp\fR's current result is empty, or consists of the single character ``{'', or ends in the characters `` {'') then no space is added. .PP \fBTcl_FreeResult\fR performs part of the work of \fBTcl_ResetResult\fR. It frees up the memory associated with \fIinterp\fR's result. It also sets \fIinterp->freeProc\fR to zero, but doesn't change \fIinterp->result\fR or clear error state. \fBTcl_FreeResult\fR is most commonly used when a procedure is about to replace one result value with another. .SH DIRECT ACCESS TO INTERP->RESULT IS DEPRECATED .PP It used to be legal for programs to directly read and write \fIinterp->result\fR to manipulate the interpreter result. Direct access to \fIinterp->result\fR is now strongly deprecated because it can make the result's string and object forms inconsistent. Programs should always read the result using the procedures \fBTcl_GetObjResult\fR or \fBTcl_GetStringResult\fR, and write the result using \fBTcl_SetObjResult\fR or \fBTcl_SetResult\fR. .SH THE TCL_FREEPROC ARGUMENT TO TCL_SETRESULT .PP \fBTcl_SetResult\fR's \fIfreeProc\fR argument specifies how the Tcl system is to manage the storage for the \fIstring\fR argument. If \fBTcl_SetResult\fR or \fBTcl_SetObjResult\fR are called at a time when \fIinterp\fR holds a string result, they do whatever is necessary to dispose of the old string result (see the \fBTcl_Interp\fR manual entry for details on this). .PP If \fIfreeProc\fR is \fBTCL_STATIC\fR it means that \fIstring\fR refers to an area of static storage that is guaranteed not to be modified until at least the next call to \fBTcl_Eval\fR. If \fIfreeProc\fR is \fBTCL_DYNAMIC\fR it means that \fIstring\fR was allocated with a call to \fBTcl_Alloc\fR and is now the property of the Tcl system. \fBTcl_SetResult\fR will arrange for the string's storage to be released by calling \fBTcl_Free\fR when it is no longer needed. If \fIfreeProc\fR is \fBTCL_VOLATILE\fR it means that \fIstring\fR points to an area of memory that is likely to be overwritten when \fBTcl_SetResult\fR returns (e.g. it points to something in a stack frame). In this case \fBTcl_SetResult\fR will make a copy of the string in dynamically allocated storage and arrange for the copy to be the result for the current Tcl command. .PP If \fIfreeProc\fR isn't one of the values \fBTCL_STATIC\fR, \fBTCL_DYNAMIC\fR, and \fBTCL_VOLATILE\fR, then it is the address of a procedure that Tcl should call to free the string. This allows applications to use non-standard storage allocators. When Tcl no longer needs the storage for the string, it will call \fIfreeProc\fR. \fIFreeProc\fR should have arguments and result that match the type \fBTcl_FreeProc\fR: .CS typedef void Tcl_FreeProc(char *\fIblockPtr\fR); .CE When \fIfreeProc\fR is called, its \fIblockPtr\fR will be set to the value of \fIstring\fR passed to \fBTcl_SetResult\fR. .SH "SEE ALSO" Tcl_AddErrorInfo, Tcl_CreateObjCommand, Tcl_SetErrorCode, Tcl_Interp .SH KEYWORDS append, command, element, list, object, result, return value, interpreter 070701000779ef000081a400004ccf0000000a0000000133f371c500003002000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/man3/SetVar.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) SetVar.3 1.29 97/05/19 17:35:05 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_SetVar 3 7.4 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_SetVar, Tcl_SetVar2, Tcl_GetVar, Tcl_GetVar2, Tcl_UnsetVar, Tcl_UnsetVar2 \- manipulate Tcl variables .SH SYNOPSIS .nf \fB#include \fR .sp char * \fBTcl_SetVar\fR(\fIinterp, varName, newValue, flags\fR) .sp char * \fBTcl_SetVar2\fR(\fIinterp, name1, name2, newValue, flags\fR) .sp char * \fBTcl_GetVar\fR(\fIinterp, varName, flags\fR) .sp char * \fBTcl_GetVar2\fR(\fIinterp, name1, name2, flags\fR) .sp int \fBTcl_UnsetVar\fR(\fIinterp, varName, flags\fR) .sp int \fBTcl_UnsetVar2\fR(\fIinterp, name1, name2, flags\fR) .SH ARGUMENTS .AS Tcl_Interp *newValue .AP Tcl_Interp *interp in Interpreter containing variable. .AP char *varName in Name of variable. May include a series of \fB::\fR namespace qualifiers to specify a variable in a particular namespace. May refer to a scalar variable or an element of an array variable. If the name references an element of an array, then it must be in writable memory: Tcl will make temporary modifications to it while looking up the name. .AP char *newValue in New value for variable. .AP int flags in OR-ed combination of bits providing additional information for operation. See below for valid values. .AP char *name1 in Name of scalar variable, or name of array variable if \fIname2\fR is non-NULL. May include a series of \fB::\fR namespace qualifiers to specify a variable in a particular namespace. .AP char *name2 in If non-NULL, gives name of element within array and \fIname1\fR must refer to an array variable. .BE .SH DESCRIPTION .PP These procedures may be used to create, modify, read, and delete Tcl variables from C code. .PP Note that \fBTcl_GetVar\fR and \fBTcl_SetVar\fR have been largely replaced by the object-based procedures \fBTcl_ObjGetVar2\fR and \fBTcl_ObjSetVar2\fR. Those object-based procedures read, modify, and create a variable whose name is held in a Tcl object instead of a string. They also return a pointer to the object which is the variable's value instead of returning a string. Operations on objects can be faster since objects hold an internal representation that can be manipulated more efficiently. .PP \fBTcl_SetVar\fR and \fBTcl_SetVar2\fR will create a new variable or modify an existing one. Both of these procedures set the given variable to the value given by \fInewValue\fR, and they return a pointer to a copy of the variable's new value, which is stored in Tcl's variable structure. Tcl keeps a private copy of the variable's value, so the caller may change \fInewValue\fR after these procedures return without affecting the value of the variable. If an error occurs in setting the variable (e.g. an array variable is referenced without giving an index into the array), they return NULL. .PP The name of the variable may be specified to \fBTcl_SetVar\fR and \fBTcl_SetVar2\fR in either of two ways. If \fBTcl_SetVar\fR is called, the variable name is given as a single string, \fIvarName\fR. If \fIvarName\fR contains an open parenthesis and ends with a close parenthesis, then the value between the parentheses is treated as an index (which can have any string value) and the characters before the first open parenthesis are treated as the name of an array variable. If \fIvarName\fR doesn't have parentheses as described above, then the entire string is treated as the name of a scalar variable. If \fBTcl_SetVar2\fR is called, then the array name and index have been separated by the caller into two separate strings, \fIname1\fR and \fIname2\fR respectively; if \fIname2\fR is zero it means that a scalar variable is being referenced. .PP The \fIflags\fR argument may be used to specify any of several options to the procedures. It consists of an OR-ed combination of any of the following bits: .TP \fBTCL_GLOBAL_ONLY\fR Under normal circumstances the procedures look up variables as follows: If a procedure call is active in \fIinterp\fR, a variable is looked up at the current level of procedure call. Otherwise, a variable is looked up first in the current namespace, then in the global namespace. However, if this bit is set in \fIflags\fR then the variable is looked up only in the global namespace even if there is a procedure call active. If both \fBTCL_GLOBAL_ONLY\fR and \fBTCL_NAMESPACE_ONLY\fR are given, \fBTCL_GLOBAL_ONLY\fR is ignored. .TP \fBTCL_NAMESPACE_ONLY\fR Under normal circumstances the procedures look up variables as follows: If a procedure call is active in \fIinterp\fR, a variable is looked up at the current level of procedure call. Otherwise, a variable is looked up first in the current namespace, then in the global namespace. However, if this bit is set in \fIflags\fR then the variable is looked up only in the current namespace even if there is a procedure call active. .TP \fBTCL_LEAVE_ERR_MSG\fR If an error is returned and this bit is set in \fIflags\fR, then an error message will be left in the interpreter's result, where it can be retrieved with \fBTcl_GetObjResult\fR or \fBTcl_GetStringResult\fR. If this flag bit isn't set then no error message is left and the interpreter's result will not be modified. .TP \fBTCL_APPEND_VALUE\fR If this bit is set then \fInewValue\fR is appended to the current value, instead of replacing it. If the variable is currently undefined, then this bit is ignored. .TP \fBTCL_LIST_ELEMENT\fR If this bit is set, then \fInewValue\fR is converted to a valid Tcl list element before setting (or appending to) the variable. A separator space is appended before the new list element unless the list element is going to be the first element in a list or sublist (i.e. the variable's current value is empty, or contains the single character ``{'', or ends in `` }''). .PP \fBTcl_GetVar\fR and \fBTcl_GetVar2\fR return the current value of a variable. The arguments to these procedures are treated in the same way as the arguments to \fBTcl_SetVar\fR and \fBTcl_SetVar2\fR. Under normal circumstances, the return value is a pointer to the variable's value (which is stored in Tcl's variable structure and will not change before the next call to \fBTcl_SetVar\fR or \fBTcl_SetVar2\fR). The only bits of \fIflags\fR that are used are TCL_GLOBAL_ONLY and TCL_LEAVE_ERR_MSG, both of which have the same meaning as for \fBTcl_SetVar\fR. If an error occurs in reading the variable (e.g. the variable doesn't exist or an array element is specified for a scalar variable), then NULL is returned. .PP \fBTcl_UnsetVar\fR and \fBTcl_UnsetVar2\fR may be used to remove a variable, so that future calls to \fBTcl_GetVar\fR or \fBTcl_GetVar2\fR for the variable will return an error. The arguments to these procedures are treated in the same way as the arguments to \fBTcl_GetVar\fR and \fBTcl_GetVar2\fR. If the variable is successfully removed then TCL_OK is returned. If the variable cannot be removed because it doesn't exist then TCL_ERROR is returned. If an array element is specified, the given element is removed but the array remains. If an array name is specified without an index, then the entire array is removed. .SH "SEE ALSO" Tcl_GetObjResult, Tcl_GetStringResult, Tcl_ObjGetVar2, Tcl_ObjSetVar2, Tcl_TraceVar .SH KEYWORDS array, interpreter, object, scalar, set, unset, variable 070701000779f0000081a400004ccf0000000a0000000133f371c6000016c9000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/man3/Sleep.3'\" '\" Copyright (c) 1990 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) Sleep.3 1.3 96/03/25 20:07:21 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_Sleep 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_Sleep \- delay execution for a given number of milliseconds .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_Sleep\fR(\fIms\fR) .SH ARGUMENTS .AP int ms in Number of milliseconds to sleep. .BE .SH DESCRIPTION .PP This procedure delays the calling process by the number of milliseconds given by the \fIms\fR parameter and returns after that time has elapsed. It is typically used for things like flashing a button, where the delay is short and the application needn't do anything while it waits. For longer delays where the application needs to respond to other events during the delay, the procedure \fBTcl_CreateTimerHandler\fR should be used instead of \fBTcl_Sleep\fR. .SH KEYWORDS sleep, time, wait 070701000779f1000081a400004ccf0000000a0000000133f371c600002e07000000a30000000400000000000000000000002700000004reloc/SUNWtcl/8.0/man/man3/SplitList.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) SplitList.3 1.21 97/04/29 14:07:10 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_SplitList 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_SplitList, Tcl_Merge, Tcl_ScanElement, Tcl_ConvertElement \- manipulate Tcl lists .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_SplitList\fR(\fIinterp, list, argcPtr, argvPtr\fR) .sp char * \fBTcl_Merge\fR(\fIargc, argv\fR) .sp int \fBTcl_ScanElement\fR(\fIsrc, flagsPtr\fR) .VS .sp int \fBTcl_ScanCountedElement\fR(\fIsrc, length, flagsPtr\fR) .VE .sp int \fBTcl_ConvertElement\fR(\fIsrc, dst, flags\fR) .VS .sp int \fBTcl_ConvertCountedElement\fR(\fIsrc, length, dst, flags\fR) .VE .SH ARGUMENTS .AS Tcl_Interp ***argvPtr .AP Tcl_Interp *interp out .VS Interpreter to use for error reporting. If NULL, then no error message is left. .VE .AP char *list in Pointer to a string with proper list structure. .AP int *argcPtr out Filled in with number of elements in \fIlist\fR. .AP char ***argvPtr out \fI*argvPtr\fR will be filled in with the address of an array of pointers to the strings that are the extracted elements of \fIlist\fR. There will be \fI*argcPtr\fR valid entries in the array, followed by a NULL entry. .AP int argc in Number of elements in \fIargv\fR. .AP char **argv in Array of strings to merge together into a single list. Each string will become a separate element of the list. .AP char *src in String that is to become an element of a list. .AP int *flagsPtr in Pointer to word to fill in with information about \fIsrc\fR. The value of *\fIflagsPtr\fR must be passed to \fBTcl_ConvertElement\fR. .VS .AP int length in Number of bytes in string \fIsrc\fR. .VE .AP char *dst in Place to copy converted list element. Must contain enough characters to hold converted string. .AP int flags in Information about \fIsrc\fR. Must be value returned by previous call to \fBTcl_ScanElement\fR, possibly OR-ed with \fBTCL_DONT_USE_BRACES\fR. .BE .SH DESCRIPTION .PP These procedures may be used to disassemble and reassemble Tcl lists. \fBTcl_SplitList\fR breaks a list up into its constituent elements, returning an array of pointers to the elements using \fIargcPtr\fR and \fIargvPtr\fR. While extracting the arguments, \fBTcl_SplitList\fR obeys the usual rules for backslash substitutions and braces. The area of memory pointed to by \fI*argvPtr\fR is dynamically allocated; in addition to the array of pointers, it also holds copies of all the list elements. It is the caller's responsibility to free up all of this storage. For example, suppose that you have called \fBTcl_SplitList\fR with the following code: .CS int argc, code; char *string; char **argv; \&... code = Tcl_SplitList(interp, string, &argc, &argv); .CE Then you should eventually free the storage with a call like the following: .VS .CS Tcl_Free((char *) argv); .CE .VE .PP \fBTcl_SplitList\fR normally returns \fBTCL_OK\fR, which means the list was successfully parsed. If there was a syntax error in \fIlist\fR, then \fBTCL_ERROR\fR is returned and \fIinterp->result\fR will point to an error message describing the .VS problem (if \fIinterp\fR was not NULL). .VE If \fBTCL_ERROR\fR is returned then no memory is allocated and \fI*argvPtr\fR is not modified. .PP \fBTcl_Merge\fR is the inverse of \fBTcl_SplitList\fR: it takes a collection of strings given by \fIargc\fR and \fIargv\fR and generates a result string that has proper list structure. This means that commands like \fBindex\fR may be used to extract the original elements again. In addition, if the result of \fBTcl_Merge\fR is passed to \fBTcl_Eval\fR, it will be parsed into \fIargc\fR words whose values will be the same as the \fIargv\fR strings passed to \fBTcl_Merge\fR. \fBTcl_Merge\fR will modify the list elements with braces and/or backslashes in order to produce proper Tcl list structure. .VS The result string is dynamically allocated using \fBTcl_Alloc\fR; the caller must eventually release the space using \fBTcl_Free\fR. .VE .PP If the result of \fBTcl_Merge\fR is passed to \fBTcl_SplitList\fR, the elements returned by \fBTcl_SplitList\fR will be identical to those passed into \fBTcl_Merge\fR. However, the converse is not true: if \fBTcl_SplitList\fR is passed a given string, and the resulting \fIargc\fR and \fIargv\fR are passed to \fBTcl_Merge\fR, the resulting string may not be the same as the original string passed to \fBTcl_SplitList\fR. This is because \fBTcl_Merge\fR may use backslashes and braces differently than the original string. .PP \fBTcl_ScanElement\fR and \fBTcl_ConvertElement\fR are the procedures that do all of the real work of \fBTcl_Merge\fR. \fBTcl_ScanElement\fR scans its \fIsrc\fR argument and determines how to use backslashes and braces when converting it to a list element. It returns an overestimate of the number of characters required to represent \fIsrc\fR as a list element, and it stores information in \fI*flagsPtr\fR that is needed by \fBTcl_ConvertElement\fR. .PP \fBTcl_ConvertElement\fR is a companion procedure to \fBTcl_ScanElement\fR. It does the actual work of converting a string to a list element. Its \fIflags\fR argument must be the same as the value returned by \fBTcl_ScanElement\fR. \fBTcl_ConvertElement\fR writes a proper list element to memory starting at *\fIdst\fR and returns a count of the total number of characters written, which will be no more than the result returned by \fBTcl_ScanElement\fR. \fBTcl_ConvertElement\fR writes out only the actual list element without any leading or trailing spaces: it is up to the caller to include spaces between adjacent list elements. .PP \fBTcl_ConvertElement\fR uses one of two different approaches to handle the special characters in \fIsrc\fR. Wherever possible, it handles special characters by surrounding the string with braces. This produces clean-looking output, but can't be used in some situations, such as when \fIsrc\fR contains unmatched braces. In these situations, \fBTcl_ConvertElement\fR handles special characters by generating backslash sequences for them. The caller may insist on the second approach by OR-ing the flag value returned by \fBTcl_ScanElement\fR with \fBTCL_DONT_USE_BRACES\fR. Although this will produce an uglier result, it is useful in some special situations, such as when \fBTcl_ConvertElement\fR is being used to generate a portion of an argument for a Tcl command. In this case, surrounding \fIsrc\fR with curly braces would cause the command not to be parsed correctly. .PP .VS \fBTcl_ScanCountedElement\fR and \fBTcl_ConvertCountedElement\fR are the same as \fBTcl_ScanElement\fR and \fBTcl_ConvertElement\fR, except the length of string \fIsrc\fR is specified by the \fIlength\fR argument, and the string may contain embedded nulls. .VE .SH KEYWORDS backslash, convert, element, list, merge, split, strings 070701000779f2000081a400004ccf0000000a0000000133f371c600001f3e000000a30000000400000000000000000000002700000004reloc/SUNWtcl/8.0/man/man3/SplitPath.3'\" '\" Copyright (c) 1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) SplitPath.3 1.4 96/08/19 14:59:35 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_SplitPath 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_SplitPath, Tcl_JoinPath, Tcl_GetPathType \- manipulate platform-dependent file paths .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_SplitPath\fR(\fIpath, argcPtr, argvPtr\fR) .sp char * \fBTcl_JoinPath\fR(\fIargc, argv, resultPtr\fR) .sp Tcl_PathType \fBTcl_GetPathType\fR(\fIpath\fR) .SH ARGUMENTS .AS Tcl_DString ***argvPtr .AP char *path in File path in a form appropriate for the current platform (see the \fBfilename\fR manual entry for acceptable forms for path names). .AP int *argcPtr out Filled in with number of path elements in \fIpath\fR. .AP char ***argvPtr out \fI*argvPtr\fR will be filled in with the address of an array of pointers to the strings that are the extracted elements of \fIpath\fR. There will be \fI*argcPtr\fR valid entries in the array, followed by a NULL entry. .AP int argc in Number of elements in \fIargv\fR. .AP char **argv in Array of path elements to merge together into a single path. .AP Tcl_DString *resultPtr in/out A pointer to an initialized \fBTcl_DString\fR to which the result of \fBTcl_JoinPath\fR will be appended. .BE .SH DESCRIPTION .PP These procedures may be used to disassemble and reassemble file paths in a platform independent manner: they provide C-level access to the same functionality as the \fBfile split\fR, \fBfile join\fR, and \fBfile pathtype\fR commands. .PP \fBTcl_SplitPath\fR breaks a path into its constituent elements, returning an array of pointers to the elements using \fIargcPtr\fR and \fIargvPtr\fR. The area of memory pointed to by \fI*argvPtr\fR is dynamically allocated; in addition to the array of pointers, it also holds copies of all the path elements. It is the caller's responsibility to free all of this storage. For example, suppose that you have called \fBTcl_SplitPath\fR with the following code: .CS int argc; char *path; char **argv; \&... Tcl_SplitPath(string, &argc, &argv); .CE Then you should eventually free the storage with a call like the following: .CS Tcl_Free((char *) argv); .CE .PP \fBTcl_JoinPath\fR is the inverse of \fBTcl_SplitPath\fR: it takes a collection of path elements given by \fIargc\fR and \fIargv\fR and generates a result string that is a properly constructed path. The result string is appended to \fIresultPtr\fR. \fIResultPtr\fR must refer to an initialized \fBTcl_DString\fR. .PP If the result of \fBTcl_SplitPath\fR is passed to \fBTcl_JoinPath\fR, the result will refer to the same location, but may not be in the same form. This is because \fBTcl_SplitPath\fR and \fBTcl_JoinPath\fR eliminate duplicate path separators and return a normalized form for each platform. .PP \fBTcl_GetPathType\fR returns the type of the specified \fIpath\fR, where \fBTcl_PathType\fR is one of \fBTCL_PATH_ABSOLUTE\fR, \fBTCL_PATH_RELATIVE\fR, or \fBTCL_PATH_VOLUME_RELATIVE\fR. See the \fBfilename\fR manual entry for a description of the path types for each platform. .SH KEYWORDS file, filename, join, path, split, type 070701000779f3000081a400004ccf0000000a0000000133f371c600001daa000000a30000000400000000000000000000002700000004reloc/SUNWtcl/8.0/man/man3/StaticPkg.3'\" '\" Copyright (c) 1995-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) StaticPkg.3 1.4 96/09/04 11:21:26 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_StaticPackage 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_StaticPackage \- make a statically linked package available via the \fBload\fR command .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_StaticPackage\fR(\fIinterp, pkgName, initProc, safeInitProc\fR) .SH ARGUMENTS .AS Tcl_PackageInitProc *safeInitProc .AP Tcl_Interp *interp in If not NULL, points to an interpreter into which the package has already been loaded (i.e., the caller has already invoked the appropriate initialization procedure). NULL means the package hasn't yet been incorporated into any interpreter. .AP char *pkgName in Name of the package; should be properly capitalized (first letter upper-case, all others lower-case). .AP Tcl_PackageInitProc *initProc in Procedure to invoke to incorporate this package into a trusted interpreter. .AP Tcl_PackageInitProc *safeInitProc in Procedure to call to incorporate this package into a safe interpreter (one that will execute untrusted scripts). NULL means the package can't be used in safe interpreters. .BE .SH DESCRIPTION .PP This procedure may be invoked to announce that a package has been linked statically with a Tcl application and, optionally, that it has already been loaded into an interpreter. Once \fBTcl_StaticPackage\fR has been invoked for a package, it may be loaded into interpreters using the \fBload\fR command. \fBTcl_StaticPackage\fR is normally invoked only by the \fBTcl_AppInit\fR procedure for the application, not by packages for themselves (\fBTcl_StaticPackage\fR should only be invoked for statically loaded packages, and code in the package itself should not need to know whether the package is dynamically or statically loaded). .PP When the \fBload\fR command is used later to load the package into an interpreter, one of \fIinitProc\fR and \fIsafeInitProc\fR will be invoked, depending on whether the target interpreter is safe or not. \fIinitProc\fR and \fIsafeInitProc\fR must both match the following prototype: .CS typedef int Tcl_PackageInitProc(Tcl_Interp *\fIinterp\fR); .CE The \fIinterp\fR argument identifies the interpreter in which the package is to be loaded. The initialization procedure must return \fBTCL_OK\fR or \fBTCL_ERROR\fR to indicate whether or not it completed successfully; in the event of an error it should set \fIinterp->result\fR to point to an error message. The result or error from the initialization procedure will be returned as the result of the \fBload\fR command that caused the initialization procedure to be invoked. .SH KEYWORDS initialization procedure, package, static linking 070701000779f4000081a400004ccf0000000a0000000133f371c600001705000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/man3/StrMatch.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) StrMatch.3 1.11 96/03/25 20:08:06 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_StringMatch 3 "" Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_StringMatch \- test whether a string matches a pattern .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_StringMatch\fR(\fIstring\fR, \fIpattern\fR) .SH ARGUMENTS .AP char *string in String to test. .AP char *pattern in Pattern to match against string. May contain special characters from the set *?\e[]. .BE .SH DESCRIPTION .PP This utility procedure determines whether a string matches a given pattern. If it does, then \fBTcl_StringMatch\fR returns 1. Otherwise \fBTcl_StringMatch\fR returns 0. The algorithm used for matching is the same algorithm used in the ``string match'' Tcl command and is similar to the algorithm used by the C-shell for file name matching; see the Tcl manual entry for details. .SH KEYWORDS match, pattern, string 070701000779f5000081a400004ccf0000000a0000000133f371c60000283e000000a30000000400000000000000000000002700000004reloc/SUNWtcl/8.0/man/man3/StringObj.3'\" '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) @(#) StringObj.3 1.13 97/06/25 13:40:25 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_StringObj 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_NewStringObj, Tcl_SetStringObj, Tcl_GetStringFromObj, Tcl_AppendToObj, Tcl_AppendStringsToObj, Tcl_SetObjLength, TclConcatObj \- manipulate Tcl objects as strings .SH SYNOPSIS .nf \fB#include \fR .sp Tcl_Obj * \fBTcl_NewStringObj\fR(\fIbytes, length\fR) .sp \fBTcl_SetStringObj\fR(\fIobjPtr, bytes, length\fR) .sp char * \fBTcl_GetStringFromObj\fR(\fIobjPtr, lengthPtr\fR) .sp \fBTcl_AppendToObj\fR(\fIobjPtr, bytes, length\fR) .sp \fBTcl_AppendStringsToObj\fR(\fIobjPtr, string, string, ... \fB(char *) NULL\fR) .sp \fBTcl_SetObjLength\fR(\fIobjPtr, newLength\fR) .sp Tcl_Obj * \fBTcl_ConcatObj\fR(\fIobjc, objv\fR) .SH ARGUMENTS .AS Tcl_Interp *lengthPtr out .AP char *bytes in Points to the first byte of an array of bytes used to set or append to a string object. This byte array may contain embedded null bytes unless \fIlength\fR is negative. .AP int length in The number of bytes to copy from \fIbytes\fR when initializing, setting, or appending to a string object. If negative, all bytes up to the first null are used. .AP Tcl_Obj *objPtr in/out Points to an object to manipulate. .AP int *lengthPtr out If non-NULL, the location where \fBTcl_GetStringFromObj\fR will store the the length of an object's string representation. .AP char *string in Null-terminated string value to append to \fIobjPtr\fR. .AP int newLength in New length for the string value of \fIobjPtr\fR, not including the final NULL character. .AP int objc in The number of elements to concatenate. .AP Tcl_Obj *objv[] in The array of objects to concatenate. .BE .SH DESCRIPTION .PP The procedures described in this manual entry allow Tcl objects to be manipulated as string values. They use the internal representation of the object to store additional information to make the string manipulations more efficient. In particular, they make a series of append operations efficient by allocating extra storage space for the string so that it doesn't have to be copied for each append. .PP \fBTcl_NewStringObj\fR and \fBTcl_SetStringObj\fR create a new object or modify an existing object to hold a copy of the string given by \fIbytes\fR and \fIlength\fR. \fBTcl_NewStringObj\fR returns a pointer to a newly created object with reference count zero. Both procedures set the object to hold a copy of the specified string. \fBTcl_SetStringObj\fR frees any old string representation as well as any old internal representation of the object. .PP \fBTcl_GetStringFromObj\fR returns an object's string representation. This is given by the returned byte pointer and length, which is stored in \fIlengthPtr\fR if it is non-NULL. If the object's string representation is invalid (its byte pointer is NULL), the string representation is regenerated from the object's internal representation. The storage referenced by the returned byte pointer is owned by the object manager and should not be modified by the caller. .PP \fBTcl_AppendToObj\fR appends the data given by \fIbytes\fR and \fIlength\fR to the object specified by \fIobjPtr\fR. It does this in a way that handles repeated calls relatively efficiently (it overallocates the string space to avoid repeated reallocations and copies of object's string value). .PP \fBTcl_AppendStringsToObj\fR is similar to \fBTcl_AppendToObj\fR except that it can be passed more than one value to append and each value must be a null-terminated string (i.e. none of the values may contain internal null characters). Any number of \fIstring\fR arguments may be provided, but the last argument must be a NULL pointer to indicate the end of the list. .PP The \fBTcl_SetObjLength\fR procedure changes the length of the string value of its \fIobjPtr\fR argument. If the \fInewLength\fR argument is greater than the space allocated for the object's string, then the string space is reallocated and the old value is copied to the new space; the bytes between the old length of the string and the new length may have arbitrary values. If the \fInewLength\fR argument is less than the current length of the object's string, with \fIobjPtr->length\fR is reduced without reallocating the string space; the original allocated size for the string is recorded in the object, so that the string length can be enlarged in a subsequent call to \fBTcl_SetObjLength\fR without reallocating storage. In all cases \fBTcl_SetObjLength\fR leaves a null character at \fIobjPtr->bytes[newLength]\fR. .PP The \fBTcl_ConcatObj\fR function returns a new string object whose value is the space-separated concatenation of the string representations of all of the objects in the \fIobjv\fR array. \fBTcl_ConcatObj\fR eliminates leading and trailing white space as it copies the string representations of the \fIobjv\fR array to the result. If an element of the \fIobjv\fR array consists of nothing but white space, then that object is ignored entirely. This white-space removal was added to make the output of the \fBconcat\fR command cleaner-looking. \fBTcl_ConcatObj\fR returns a pointer to a newly-created object whose ref count is zero. .SH "SEE ALSO" Tcl_NewObj, Tcl_IncrRefCount, Tcl_DecrRefCount .SH KEYWORDS append, internal representation, object, object type, string object, string type, string representation, concat, concatenate 070701000779f6000081a400004ccf0000000a0000000133f371c600001b17000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/man3/Tcl_Main.3'\" '\" Copyright (c) 1994 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) Tcl_Main.3 1.8 96/03/25 20:08:33 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_Main 3 7.4 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_Main \- main program for Tcl-based applications .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_Main\fR(\fIargc, argv, appInitProc\fR) .SH ARGUMENTS .AS Tcl_AppInitProc *appInitProc .AP int argc in Number of elements in \fIargv\fR. .AP char *argv[] in Array of strings containing command-line arguments. .AP Tcl_AppInitProc *appInitProc in Address of an application-specific initialization procedure. The value for this argument is usually \fBTcl_AppInit\fR. .BE .SH DESCRIPTION .PP \fBTcl_Main\fR acts as the main program for most Tcl-based applications. Starting with Tcl 7.4 it is not called \fBmain\fR anymore because it is part of the Tcl library and having a function \fBmain\fR in a library (particularly a shared library) causes problems on many systems. Having \fBmain\fR in the Tcl library would also make it hard to use Tcl in C++ programs, since C++ programs must have special C++ \fBmain\fR functions. .PP Normally each application contains a small \fBmain\fR function that does nothing but invoke \fBTcl_Main\fR. \fBTcl_Main\fR then does all the work of creating and running a \fBtclsh\fR-like application. .PP When it is has finished its own initialization, but before it processes commands, \fBTcl_Main\fR calls the procedure given by the \fIappInitProc\fR argument. This procedure provides a ``hook'' for the application to perform its own initialization, such as defining application-specific commands. The procedure must have an interface that matches the type \fBTcl_AppInitProc\fR: .CS typedef int Tcl_AppInitProc(Tcl_Interp *\fIinterp\fR); .CE \fIAppInitProc\fR is almost always a pointer to \fBTcl_AppInit\fR; for more details on this procedure, see the documentation for \fBTcl_AppInit\fR. .SH KEYWORDS application-specific initialization, command-line arguments, main program 070701000779f7000081a400004ccf0000000a0000000133f371c7000049be000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/man3/TraceVar.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) TraceVar.3 1.26 96/08/26 12:59:52 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_TraceVar 3 7.4 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_TraceVar, Tcl_TraceVar2, Tcl_UntraceVar, Tcl_UntraceVar2, Tcl_VarTraceInfo, Tcl_VarTraceInfo2 \- monitor accesses to a variable .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_TraceVar(\fIinterp, varName, flags, proc, clientData\fB)\fR .sp int \fBTcl_TraceVar2(\fIinterp, name1, name2, flags, proc, clientData\fB)\fR .sp \fBTcl_UntraceVar(\fIinterp, varName, flags, proc, clientData\fB)\fR .sp \fBTcl_UntraceVar2(\fIinterp, name1, name2, flags, proc, clientData\fB)\fR .sp ClientData \fBTcl_VarTraceInfo(\fIinterp, varName, flags, proc, prevClientData\fB)\fR .sp ClientData \fBTcl_VarTraceInfo2(\fIinterp, name1, name2, flags, proc, prevClientData\fB)\fR .SH ARGUMENTS .AS Tcl_VarTraceProc prevClientData .AP Tcl_Interp *interp in Interpreter containing variable. .AP char *varName in Name of variable. May refer to a scalar variable, to an array variable with no index, or to an array variable with a parenthesized index. If the name references an element of an array, then it must be in writable memory: Tcl will make temporary modifications to it while looking up the name. .AP int flags in OR-ed combination of the values TCL_TRACE_READS, TCL_TRACE_WRITES, and TCL_TRACE_UNSETS, and TCL_GLOBAL_ONLY. Not all flags are used by all procedures. See below for more information. .AP Tcl_VarTraceProc *proc in Procedure to invoke whenever one of the traced operations occurs. .AP ClientData clientData in Arbitrary one-word value to pass to \fIproc\fR. .AP char *name1 in Name of scalar or array variable (without array index). .AP char *name2 in For a trace on an element of an array, gives the index of the element. For traces on scalar variables or on whole arrays, is NULL. .AP ClientData prevClientData in If non-NULL, gives last value returned by \fBTcl_VarTraceInfo\fR or \fBTcl_VarTraceInfo2\fR, so this call will return information about next trace. If NULL, this call will return information about first trace. .BE .SH DESCRIPTION .PP \fBTcl_TraceVar\fR allows a C procedure to monitor and control access to a Tcl variable, so that the C procedure is invoked whenever the variable is read or written or unset. If the trace is created successfully then \fBTcl_TraceVar\fR returns TCL_OK. If an error occurred (e.g. \fIvarName\fR specifies an element of an array, but the actual variable isn't an array) then TCL_ERROR is returned and an error message is left in \fIinterp->result\fR. .PP The \fIflags\fR argument to \fBTcl_TraceVar\fR indicates when the trace procedure is to be invoked and provides information for setting up the trace. It consists of an OR-ed combination of any of the following values: .TP \fBTCL_GLOBAL_ONLY\fR Normally, the variable will be looked up at the current level of procedure call; if this bit is set then the variable will be looked up at global level, ignoring any active procedures. .TP \fBTCL_TRACE_READS\fR Invoke \fIproc\fR whenever an attempt is made to read the variable. .TP \fBTCL_TRACE_WRITES\fR Invoke \fIproc\fR whenever an attempt is made to modify the variable. .TP \fBTCL_TRACE_UNSETS\fR Invoke \fIproc\fR whenever the variable is unset. A variable may be unset either explicitly by an \fBunset\fR command, or implicitly when a procedure returns (its local variables are automatically unset) or when the interpreter is deleted (all variables are automatically unset). .PP Whenever one of the specified operations occurs on the variable, \fIproc\fR will be invoked. It should have arguments and result that match the type \fBTcl_VarTraceProc\fR: .CS typedef char *Tcl_VarTraceProc( ClientData \fIclientData\fR, Tcl_Interp *\fIinterp\fR, char *\fIname1\fR, char *\fIname2\fR, int \fIflags\fR); .CE The \fIclientData\fR and \fIinterp\fR parameters will have the same values as those passed to \fBTcl_TraceVar\fR when the trace was created. \fIClientData\fR typically points to an application-specific data structure that describes what to do when \fIproc\fR is invoked. \fIName1\fR and \fIname2\fR give the name of the traced variable in the normal two-part form (see the description of \fBTcl_TraceVar2\fR below for details). \fIFlags\fR is an OR-ed combination of bits providing several pieces of information. One of the bits TCL_TRACE_READS, TCL_TRACE_WRITES, or TCL_TRACE_UNSETS will be set in \fIflags\fR to indicate which operation is being performed on the variable. The bit TCL_GLOBAL_ONLY will be set whenever the variable being accessed is a global one not accessible from the current level of procedure call: the trace procedure will need to pass this flag back to variable-related procedures like \fBTcl_GetVar\fR if it attempts to access the variable. The bit TCL_TRACE_DESTROYED will be set in \fIflags\fR if the trace is about to be destroyed; this information may be useful to \fIproc\fR so that it can clean up its own internal data structures (see the section TCL_TRACE_DESTROYED below for more details). Lastly, the bit TCL_INTERP_DESTROYED will be set if the entire interpreter is being destroyed. When this bit is set, \fIproc\fR must be especially careful in the things it does (see the section TCL_INTERP_DESTROYED below). The trace procedure's return value should normally be NULL; see ERROR RETURNS below for information on other possibilities. .PP \fBTcl_UntraceVar\fR may be used to remove a trace. If the variable specified by \fIinterp\fR, \fIvarName\fR, and \fIflags\fR has a trace set with \fIflags\fR, \fIproc\fR, and \fIclientData\fR, then the corresponding trace is removed. If no such trace exists, then the call to \fBTcl_UntraceVar\fR has no effect. The same bits are valid for \fIflags\fR as for calls to \fBTcl_TraceVar\fR. .PP \fBTcl_VarTraceInfo\fR may be used to retrieve information about traces set on a given variable. The return value from \fBTcl_VarTraceInfo\fR is the \fIclientData\fR associated with a particular trace. The trace must be on the variable specified by the \fIinterp\fR, \fIvarName\fR, and \fIflags\fR arguments (only the TCL_GLOBAL_ONLY bit from \fIflags\fR is used; other bits are ignored) and its trace procedure must the same as the \fIproc\fR argument. If the \fIprevClientData\fR argument is NULL then the return value corresponds to the first (most recently created) matching trace, or NULL if there are no matching traces. If the \fIprevClientData\fR argument isn't NULL, then it should be the return value from a previous call to \fBTcl_VarTraceInfo\fR. In this case, the new return value will correspond to the next matching trace after the one whose \fIclientData\fR matches \fIprevClientData\fR, or NULL if no trace matches \fIprevClientData\fR or if there are no more matching traces after it. This mechanism makes it possible to step through all of the traces for a given variable that have the same \fIproc\fR. .SH "TWO-PART NAMES" .PP The procedures \fBTcl_TraceVar2\fR, \fBTcl_UntraceVar2\fR, and \fBTcl_VarTraceInfo2\fR are identical to \fBTcl_TraceVar\fR, \fBTcl_UntraceVar\fR, and \fBTcl_VarTraceInfo\fR, respectively, except that the name of the variable has already been separated by the caller into two parts. \fIName1\fR gives the name of a scalar variable or array, and \fIname2\fR gives the name of an element within an array. If \fIname2\fR is NULL it means that either the variable is a scalar or the trace is to be set on the entire array rather than an individual element (see WHOLE-ARRAY TRACES below for more information). .SH "ACCESSING VARIABLES DURING TRACES" .PP During read and write traces, the trace procedure can read, write, or unset the traced variable using \fBTcl_GetVar2\fR, \fBTcl_SetVar2\fR, and other procedures. While \fIproc\fR is executing, traces are temporarily disabled for the variable, so that calls to \fBTcl_GetVar2\fR and \fBTcl_SetVar2\fR will not cause \fIproc\fR or other trace procedures to be invoked again. Disabling only occurs for the variable whose trace procedure is active; accesses to other variables will still be traced. However, if a variable is unset during a read or write trace then unset traces will be invoked. .PP During unset traces the variable has already been completely expunged. It is possible for the trace procedure to read or write the variable, but this will be a new version of the variable. Traces are not disabled during unset traces as they are for read and write traces, but existing traces have been removed from the variable before any trace procedures are invoked. If new traces are set by unset trace procedures, these traces will be invoked on accesses to the variable by the trace procedures. .SH "CALLBACK TIMING" .PP When read tracing has been specified for a variable, the trace procedure will be invoked whenever the variable's value is read. This includes \fBset\fR Tcl commands, \fB$\fR-notation in Tcl commands, and invocations of the \fBTcl_GetVar\fR and \fBTcl_GetVar2\fR procedures. \fIProc\fR is invoked just before the variable's value is returned. It may modify the value of the variable to affect what is returned by the traced access. If it unsets the variable then the access will return an error just as if the variable never existed. .PP When write tracing has been specified for a variable, the trace procedure will be invoked whenever the variable's value is modified. This includes \fBset\fR commands, commands that modify variables as side effects (such as \fBcatch\fR and \fBscan\fR), and calls to the \fBTcl_SetVar\fR and \fBTcl_SetVar2\fR procedures). \fIProc\fR will be invoked after the variable's value has been modified, but before the new value of the variable has been returned. It may modify the value of the variable to override the change and to determine the value actually returned by the traced access. If it deletes the variable then the traced access will return an empty string. .PP When unset tracing has been specified, the trace procedure will be invoked whenever the variable is destroyed. The traces will be called after the variable has been completely unset. .SH "WHOLE-ARRAY TRACES" .PP If a call to \fBTcl_TraceVar\fR or \fBTcl_TraceVar2\fR specifies the name of an array variable without an index into the array, then the trace will be set on the array as a whole. This means that \fIproc\fR will be invoked whenever any element of the array is accessed in the ways specified by \fIflags\fR. When an array is unset, a whole-array trace will be invoked just once, with \fIname1\fR equal to the name of the array and \fIname2\fR NULL; it will not be invoked once for each element. .SH "MULTIPLE TRACES" .PP It is possible for multiple traces to exist on the same variable. When this happens, all of the trace procedures will be invoked on each access, in order from most-recently-created to least-recently-created. When there exist whole-array traces for an array as well as traces on individual elements, the whole-array traces are invoked before the individual-element traces. If a read or write trace unsets the variable then all of the unset traces will be invoked but the remainder of the read and write traces will be skipped. .SH "ERROR RETURNS" .PP Under normal conditions trace procedures should return NULL, indicating successful completion. If \fIproc\fR returns a non-NULL value it signifies that an error occurred. The return value must be a pointer to a static character string containing an error message. If a trace procedure returns an error, no further traces are invoked for the access and the traced access aborts with the given message. Trace procedures can use this facility to make variables read-only, for example (but note that the value of the variable will already have been modified before the trace procedure is called, so the trace procedure will have to restore the correct value). .PP The return value from \fIproc\fR is only used during read and write tracing. During unset traces, the return value is ignored and all relevant trace procedures will always be invoked. .SH "RESTRICTIONS" .PP A trace procedure can be called at any time, even when there is a partially-formed result in the interpreter's result area. If the trace procedure does anything that could damage this result (such as calling \fBTcl_Eval\fR) then it must save the original values of the interpreter's \fBresult\fR and \fBfreeProc\fR fields and restore them before it returns. .SH "UNDEFINED VARIABLES" .PP It is legal to set a trace on an undefined variable. The variable will still appear to be undefined until the first time its value is set. If an undefined variable is traced and then unset, the unset will fail with an error (``no such variable''), but the trace procedure will still be invoked. .SH "TCL_TRACE_DESTROYED FLAG" .PP In an unset callback to \fIproc\fR, the TCL_TRACE_DESTROYED bit is set in \fIflags\fR if the trace is being removed as part of the deletion. Traces on a variable are always removed whenever the variable is deleted; the only time TCL_TRACE_DESTROYED isn't set is for a whole-array trace invoked when only a single element of an array is unset. .SH "TCL_INTERP_DESTROYED" .PP When an interpreter is destroyed, unset traces are called for all of its variables. The TCL_INTERP_DESTROYED bit will be set in the \fIflags\fR argument passed to the trace procedures. Trace procedures must be extremely careful in what they do if the TCL_INTERP_DESTROYED bit is set. It is not safe for the procedures to invoke any Tcl procedures on the interpreter, since its state is partially deleted. All that trace procedures should do under these circumstances is to clean up and free their own internal data structures. .SH BUGS .PP Tcl doesn't do any error checking to prevent trace procedures from misusing the interpreter during traces with TCL_INTERP_DESTROYED set. .SH KEYWORDS clientData, trace, variable 070701000779f8000081a400004ccf0000000a0000000133f371c700001bc4000000a30000000400000000000000000000002700000004reloc/SUNWtcl/8.0/man/man3/Translate.3'\" '\" Copyright (c) 1989-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) Translate.3 1.22 96/08/26 12:59:51 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_TranslateFileName 3 7.5 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_TranslateFileName \- convert file name to native form and replace tilde with home directory .SH SYNOPSIS .nf \fB#include \fR .sp char * \fBTcl_TranslateFileName\fR(\fIinterp\fR, \fIname\fR, \fIbufferPtr\fR) .SH ARGUMENTS .AS Tcl_DString *bufferPtr .AP Tcl_Interp *interp in Interpreter in which to report an error, if any. .AP char *name in File name, which may start with a ``~''. .AP Tcl_DString *bufferPtr in/out If needed, this dynamic string is used to store the new file name. At the time of the call it should be uninitialized or empty. The caller must eventually call \fBTcl_DStringFree\fR to free up anything stored here. .BE .SH DESCRIPTION .PP This utility procedure translates a file name to a form suitable for passing to the local operating system. It converts network names into native form and does tilde substitution. .PP If \fBTcl_TranslateFileName\fR has to do tilde substitution or translate the name then it uses the dynamic string at \fI*bufferPtr\fR to hold the new string it generates. After \fBTcl_TranslateFileName\fR returns a non-NULL result, the caller must eventually invoke \fBTcl_DStringFree\fR to free any information placed in \fI*bufferPtr\fR. The caller need not know whether or not \fBTcl_TranslateFileName\fR actually used the string; \fBTcl_TranslateFileName\fR initializes \fI*bufferPtr\fR even if it doesn't use it, so the call to \fBTcl_DStringFree\fR will be safe in either case. .PP If an error occurs (e.g. because there was no user by the given name) then NULL is returned and an error message will be left at \fIinterp->result\fR. When an error occurs, \fBTcl_TranslateFileName\fR frees the dynamic string itself so that the caller need not call \fBTcl_DStringFree\fR. .PP The caller is responsible for making sure that \fIinterp->result\fR has its default empty value when \fBTcl_TranslateFileName\fR is invoked. .SH "SEE ALSO" filename .SH KEYWORDS file name, home directory, tilde, translate, user 070701000779f9000081a400004ccf0000000a0000000133f371c700001d7b000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/man3/UpVar.3'\" '\" Copyright (c) 1994 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) UpVar.3 1.6 96/03/25 20:09:19 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_UpVar 3 7.4 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_UpVar, Tcl_UpVar2 \- link one variable to another .SH SYNOPSIS .nf \fB#include \fR .sp int \fBTcl_UpVar(\fIinterp, frameName, sourceName, destName, flags\fB)\fR .sp int \fBTcl_UpVar2(\fIinterp, frameName, name1, name2, destName, flags\fB)\fR .SH ARGUMENTS .AS Tcl_VarTraceProc prevClientData .AP Tcl_Interp *interp in Interpreter containing variables; also used for error reporting. .AP char *frameName in Identifies the stack frame containing source variable. May have any of the forms accepted by the \fBupvar\fR command, such as \fB#0\fR or \fB1\fR. .AP char *sourceName in Name of source variable, in the frame given by \fIframeName\fR. May refer to a scalar variable or to an array variable with a parenthesized index. .AP char *destName in Name of destination variable, which is to be linked to source variable so that references to \fIdestName\fR refer to the other variable. Must not currently exist except as an upvar-ed variable. .AP int flags in Either TCL_GLOBAL_ONLY or 0; if non-zero, then \fIdestName\fR is a global variable; otherwise it is a local to the current procedure (or global if no procedure is active). .AP char *name1 in First part of source variable's name (scalar name, or name of array without array index). .AP char *name2 in If source variable is an element of an array, gives the index of the element. For scalar source variables, is NULL. .BE .SH DESCRIPTION .PP \fBTcl_UpVar\fR and \fBTcl_UpVar2\fR provide the same functionality as the \fBupvar\fR command: they make a link from a source variable to a destination variable, so that references to the destination are passed transparently through to the source. The name of the source variable may be specified either as a single string such as \fBxyx\fR or \fBa(24)\fR (by calling \fBTcl_UpVar\fR) or in two parts where the array name has been separated from the element name (by calling \fBTcl_UpVar2\fR). The destination variable name is specified in a single string; it may not be an array element. .PP Both procedures return either TCL_OK or TCL_ERROR, and they leave an error message in \fIinterp->result\fR if an error occurs. .PP As with the \fBupvar\fR command, the source variable need not exist; if it does exist, unsetting it later does not destroy the link. The destination variable may exist at the time of the call, but if so it must exist as a linked variable. .SH KEYWORDS linked variable, upvar, variable 070701000779fa000081a400004ccf0000000a0000000133f371c700001ddc000000a30000000400000000000000000000002a00000004reloc/SUNWtcl/8.0/man/man3/WrongNumArgs.3'\" '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) @(#) WrongNumArgs.3 1.5 97/07/30 16:20:07 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl_WrongNumArgs 3 8.0 Tcl "Tcl Library Procedures" .BS .SH NAME Tcl_WrongNumArgs \- generate standard error message for wrong number of arguments .SH SYNOPSIS .nf \fB#include \fR .sp \fBTcl_WrongNumArgs\fR(\fIinterp, objc, objv, message\fR) .SH ARGUMENTS .AS Tcl_Interp "*CONST objv[]" .AP Tcl_Interp interp in Interpreter in which error will be reported: error message gets stored in its result object. .AP int objc in Number of leading arguments from \fIobjv\fR to include in error message. .TP Tcl_Obj *CONST \fIobjv\fR[] (in) Arguments to command that had the wrong number of arguments. .AP char *message in Additional error information to print after leading arguments from \fIobjv\fR. This typically gives the acceptable syntax of the command. This argument may be NULL. .BE .SH DESCRIPTION .PP \fBTcl_WrongNumArgs\fR is a utility procedure that is invoked by command procedures when they discover that they have received the wrong number of arguments. \fBTcl_WrongNumArgs\fR generates a standard error message and stores it in the result object of \fIinterp\fR. The message includes the \fIobjc\fR initial elements of \fIobjv\fR plus \fImessage\fR. For example, if \fIobjv\fR consists of the values \fBfoo\fR and \fBbar\fR, \fIobjc\fR is 1, and \fImessage\fR is ``\fBfileName count\fR'' then \fIinterp\fR's result object will be set to the following string: .CS wrong # args: should be "foo fileName count" .CE If \fIobjc\fR is 2, the result will be set to the following string: .CS wrong # args: should be "foo bar fileName count" .CE \fIObjc\fR is usually 1, but may be 2 or more for commands like \fBstring\fR and the Tk widget commands, which use the first argument as a subcommand. .PP Some of the objects in the \fIobjv\fR array may be abbreviations for a subcommand. The command \fBTcl_GetIndexFromObj\fR will convert the abbreviated string object into an \fIindexObject\fR. If an error occurs in the parsing of the subcommand we would like to use the full subcommand name rather than the abbreviation. If the \fBTcl_WrongNumArgs\fR command finds any \fIindexObjects\fR in the \fIobjv\fR array it will use the full subcommand name in the error message instead of the abbreviated name that was origionally passed in. Using the above example, lets assume that \fIbar\fR is actually an abbreviation for \fIbarfly\fR and the object is now an indexObject becasue it was passed to \fBTcl_GetIndexFromObj\fR. In this case the error message would be: .CS wrong # args: should be "foo barfly fileName count" .CE .SH "SEE ALSO" Tcl_GetIndexFromObj .SH KEYWORDS command, error message, wrong number of arguments 0707010007905a000041ed00004ccf0000000a0000000233f3720400000000000000a30000000400000000000000000000001b00000004reloc/SUNWtcl/8.0/man/mann0707010007905b000081a400004ccf0000000a0000000133f371dc00002dd2000000a30000000400000000000000000000002100000004reloc/SUNWtcl/8.0/man/mann/Tcl.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) Tcl.n 1.128 96/08/26 12:59:50 ' '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH Tcl n "" Tcl "Tcl Built-In Commands" .BS .SH NAME Tcl \- Summary of Tcl language syntax. .BE .SH DESCRIPTION .PP The following rules define the syntax and semantics of the Tcl language: .IP [1] A Tcl script is a string containing one or more commands. Semi-colons and newlines are command separators unless quoted as described below. Close brackets are command terminators during command substitution (see below) unless quoted. .IP [2] A command is evaluated in two steps. First, the Tcl interpreter breaks the command into \fIwords\fR and performs substitutions as described below. These substitutions are performed in the same way for all commands. The first word is used to locate a command procedure to carry out the command, then all of the words of the command are passed to the command procedure. The command procedure is free to interpret each of its words in any way it likes, such as an integer, variable name, list, or Tcl script. Different commands interpret their words differently. .IP [3] Words of a command are separated by white space (except for newlines, which are command separators). .IP [4] If the first character of a word is double-quote (``"'') then the word is terminated by the next double-quote character. If semi-colons, close brackets, or white space characters (including newlines) appear between the quotes then they are treated as ordinary characters and included in the word. Command substitution, variable substitution, and backslash substitution are performed on the characters between the quotes as described below. The double-quotes are not retained as part of the word. .IP [5] If the first character of a word is an open brace (``{'') then the word is terminated by the matching close brace (``}''). Braces nest within the word: for each additional open brace there must be an additional close brace (however, if an open brace or close brace within the word is quoted with a backslash then it is not counted in locating the matching close brace). No substitutions are performed on the characters between the braces except for backslash-newline substitutions described below, nor do semi-colons, newlines, close brackets, or white space receive any special interpretation. The word will consist of exactly the characters between the outer braces, not including the braces themselves. .IP [6] If a word contains an open bracket (``['') then Tcl performs \fIcommand substitution\fR. To do this it invokes the Tcl interpreter recursively to process the characters following the open bracket as a Tcl script. The script may contain any number of commands and must be terminated by a close bracket (``]''). The result of the script (i.e. the result of its last command) is substituted into the word in place of the brackets and all of the characters between them. There may be any number of command substitutions in a single word. Command substitution is not performed on words enclosed in braces. .IP [7] If a word contains a dollar-sign (``$'') then Tcl performs \fIvariable substitution\fR: the dollar-sign and the following characters are replaced in the word by the value of a variable. Variable substitution may take any of the following forms: .RS .TP 15 \fB$\fIname\fR \fIName\fR is the name of a scalar variable; the name is terminated by any character that isn't a letter, digit, or underscore. .TP 15 \fB$\fIname\fB(\fIindex\fB)\fR \fIName\fR gives the name of an array variable and \fIindex\fR gives the name of an element within that array. \fIName\fR must contain only letters, digits, and underscores. Command substitutions, variable substitutions, and backslash substitutions are performed on the characters of \fIindex\fR. .TP 15 \fB${\fIname\fB}\fR \fIName\fR is the name of a scalar variable. It may contain any characters whatsoever except for close braces. .LP There may be any number of variable substitutions in a single word. Variable substitution is not performed on words enclosed in braces. .RE .IP [8] If a backslash (``\e'') appears within a word then \fIbackslash substitution\fR occurs. In all cases but those described below the backslash is dropped and the following character is treated as an ordinary character and included in the word. This allows characters such as double quotes, close brackets, and dollar signs to be included in words without triggering special processing. The following table lists the backslash sequences that are handled specially, along with the value that replaces each sequence. .RS .TP 6 \e\fBa\fR Audible alert (bell) (0x7). .TP 6 \e\fBb\fR Backspace (0x8). .TP 6 \e\fBf\fR Form feed (0xc). .TP 6 \e\fBn\fR Newline (0xa). .TP 6 \e\fBr\fR Carriage-return (0xd). .TP 6 \e\fBt\fR Tab (0x9). .TP 6 \e\fBv\fR Vertical tab (0xb). .TP 6 \e\fB\fIwhiteSpace\fR A single space character replaces the backslash, newline, and all spaces and tabs after the newline. This backslash sequence is unique in that it is replaced in a separate pre-pass before the command is actually parsed. This means that it will be replaced even when it occurs between braces, and the resulting space will be treated as a word separator if it isn't in braces or quotes. .TP 6 \e\e Backslash (``\e''). .TP 6 \e\fIooo\fR The digits \fIooo\fR (one, two, or three of them) give the octal value of the character. .TP 6 \e\fBx\fIhh\fR The hexadecimal digits \fIhh\fR give the hexadecimal value of the character. Any number of digits may be present. .LP Backslash substitution is not performed on words enclosed in braces, except for backslash-newline as described above. .RE .IP [9] If a hash character (``#'') appears at a point where Tcl is expecting the first character of the first word of a command, then the hash character and the characters that follow it, up through the next newline, are treated as a comment and ignored. The comment character only has significance when it appears at the beginning of a command. .IP [10] Each character is processed exactly once by the Tcl interpreter as part of creating the words of a command. For example, if variable substitution occurs then no further substitutions are performed on the value of the variable; the value is inserted into the word verbatim. If command substitution occurs then the nested command is processed entirely by the recursive call to the Tcl interpreter; no substitutions are performed before making the recursive call and no additional substitutions are performed on the result of the nested script. .IP [11] Substitutions do not affect the word boundaries of a command. For example, during variable substitution the entire value of the variable becomes part of a single word, even if the variable's value contains spaces. 0707010007905c000081a400004ccf0000000a0000000133f371dc00002376000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/after.n'\" '\" Copyright (c) 1990-1994 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) after.n 1.4 96/03/25 20:09:33 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH after n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME after \- Execute a command after a time delay .SH SYNOPSIS \fBafter \fIms\fR .sp \fBafter \fIms \fR?\fIscript script script ...\fR? .sp \fBafter cancel \fIid\fR .sp \fBafter cancel \fIscript script script ...\fR .sp \fBafter idle \fR?\fIscript script script ...\fR? .sp \fBafter info \fR?\fIid\fR? .BE .SH DESCRIPTION .PP This command is used to delay execution of the program or to execute a command in background sometime in the future. It has several forms, depending on the first argument to the command: .TP \fBafter \fIms\fR \fIMs\fR must be an integer giving a time in milliseconds. The command sleeps for \fIms\fR milliseconds and then returns. While the command is sleeping the application does not respond to events. .TP \fBafter \fIms \fR?\fIscript script script ...\fR? In this form the command returns immediately, but it arranges for a Tcl command to be executed \fIms\fR milliseconds later as an event handler. The command will be executed exactly once, at the given time. The delayed command is formed by concatenating all the \fIscript\fR arguments in the same fashion as the \fBconcat\fR command. The command will be executed at global level (outside the context of any Tcl procedure). If an error occurs while executing the delayed command then the \fBbgerror\fR mechanism is used to report the error. The \fBafter\fR command returns an identifier that can be used to cancel the delayed command using \fBafter cancel\fR. .TP \fBafter cancel \fIid\fR Cancels the execution of a delayed command that was previously scheduled. \fIId\fR indicates which command should be canceled; it must have been the return value from a previous \fBafter\fR command. If the command given by \fIid\fR has already been executed then the \fBafter cancel\fR command has no effect. .TP \fBafter cancel \fIscript script ...\fR This command also cancels the execution of a delayed command. The \fIscript\fR arguments are concatenated together with space separators (just as in the \fBconcat\fR command). If there is a pending command that matches the string, it is cancelled and will never be executed; if no such command is currently pending then the \fBafter cancel\fR command has no effect. .TP \fBafter idle \fIscript \fR?\fIscript script ...\fR? Concatenates the \fIscript\fR arguments together with space separators (just as in the \fBconcat\fR command), and arranges for the resulting script to be evaluated later as an idle callback. The script will be run exactly once, the next time the event loop is entered and there are no events to process. The command returns an identifier that can be used to cancel the delayed command using \fBafter cancel\fR. If an error occurs while executing the script then the \fBbgerror\fR mechanism is used to report the error. .TP \fBafter info \fR?\fIid\fR? This command returns information about existing event handlers. If no \fIid\fR argument is supplied, the command returns a list of the identifiers for all existing event handlers created by the \fBafter\fR command for this interpreter. If \fIid\fR is supplied, it specifies an existing handler; \fIid\fR must have been the return value from some previous call to \fBafter\fR and it must not have triggered yet or been cancelled. In this case the command returns a list with two elements. The first element of the list is the script associated with \fIid\fR, and the second element is either \fBidle\fR or \fBtimer\fR to indicate what kind of event handler it is. .LP The \fBafter \fIms\fR and \fBafter idle\fR forms of the command assume that the application is event driven: the delayed commands will not be executed unless the application enters the event loop. In applications that are not normally event-driven, such as \fBtclsh\fR, the event loop can be entered with the \fBvwait\fR and \fBupdate\fR commands. .SH "SEE ALSO" bgerror .SH KEYWORDS cancel, delay, idle callback, sleep, time 0707010007905d000081a400004ccf0000000a0000000133f371dc00001656000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/append.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) append.n 1.6 96/03/25 20:09:44 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH append n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME append \- Append to variable .SH SYNOPSIS \fBappend \fIvarName \fR?\fIvalue value value ...\fR? .BE .SH DESCRIPTION .PP Append all of the \fIvalue\fR arguments to the current value of variable \fIvarName\fR. If \fIvarName\fR doesn't exist, it is given a value equal to the concatenation of all the \fIvalue\fR arguments. This command provides an efficient way to build up long variables incrementally. For example, ``\fBappend a $b\fR'' is much more efficient than ``\fBset a $a$b\fR'' if \fB$a\fR is long. .SH KEYWORDS append, variable 0707010007905e000081a400004ccf0000000a0000000133f371dc0000251e000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/array.n'\" '\" Copyright (c) 1993-1994 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) array.n 1.8 96/08/26 12:59:53 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH array n 7.4 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME array \- Manipulate array variables .SH SYNOPSIS \fBarray \fIoption arrayName\fR ?\fIarg arg ...\fR? .BE .SH DESCRIPTION .PP This command performs one of several operations on the variable given by \fIarrayName\fR. Unless otherwise specified for individual commands below, \fIarrayName\fR must be the name of an existing array variable. The \fIoption\fR argument determines what action is carried out by the command. The legal \fIoptions\fR (which may be abbreviated) are: .TP \fBarray anymore \fIarrayName searchId\fR Returns 1 if there are any more elements left to be processed in an array search, 0 if all elements have already been returned. \fISearchId\fR indicates which search on \fIarrayName\fR to check, and must have been the return value from a previous invocation of \fBarray startsearch\fR. This option is particularly useful if an array has an element with an empty name, since the return value from \fBarray nextelement\fR won't indicate whether the search has been completed. .TP \fBarray donesearch \fIarrayName searchId\fR This command terminates an array search and destroys all the state associated with that search. \fISearchId\fR indicates which search on \fIarrayName\fR to destroy, and must have been the return value from a previous invocation of \fBarray startsearch\fR. Returns an empty string. .TP \fBarray exists \fIarrayName\fR Returns 1 if \fIarrayName\fR is an array variable, 0 if there is no variable by that name or if it is a scalar variable. .TP \fBarray get \fIarrayName\fR ?\fIpattern\fR? Returns a list containing pairs of elements. The first element in each pair is the name of an element in \fIarrayName\fR and the second element of each pair is the value of the array element. The order of the pairs is undefined. If \fIpattern\fR is not specified, then all of the elements of the array are included in the result. If \fIpattern\fR is specified, then only those elements whose names match \fIpattern\fR (using the glob-style matching rules of \fBstring match\fR) are included. If \fIarrayName\fR isn't the name of an array variable, or if the array contains no elements, then an empty list is returned. .TP \fBarray names \fIarrayName\fR ?\fIpattern\fR? Returns a list containing the names of all of the elements in the array that match \fIpattern\fR (using the glob-style matching rules of \fBstring match\fR). If \fIpattern\fR is omitted then the command returns all of the element names in the array. If there are no (matching) elements in the array, or if \fIarrayName\fR isn't the name of an array variable, then an empty string is returned. .TP \fBarray nextelement \fIarrayName searchId\fR Returns the name of the next element in \fIarrayName\fR, or an empty string if all elements of \fIarrayName\fR have already been returned in this search. The \fIsearchId\fR argument identifies the search, and must have been the return value of an \fBarray startsearch\fR command. Warning: if elements are added to or deleted from the array, then all searches are automatically terminated just as if \fBarray donesearch\fR had been invoked; this will cause \fBarray nextelement\fR operations to fail for those searches. .TP \fBarray set \fIarrayName list\fR Sets the values of one or more elements in \fIarrayName\fR. \fIlist\fR must have a form like that returned by \fBarray get\fR, consisting of an even number of elements. Each odd-numbered element in \fIlist\fR is treated as an element name within \fIarrayName\fR, and the following element in \fIlist\fR is used as a new value for that array element. .TP \fBarray size \fIarrayName\fR Returns a decimal string giving the number of elements in the array. If \fIarrayName\fR isn't the name of an array then 0 is returned. .TP \fBarray startsearch \fIarrayName\fR This command initializes an element-by-element search through the array given by \fIarrayName\fR, such that invocations of the \fBarray nextelement\fR command will return the names of the individual elements in the array. When the search has been completed, the \fBarray donesearch\fR command should be invoked. The return value is a search identifier that must be used in \fBarray nextelement\fR and \fBarray donesearch\fR commands; it allows multiple searches to be underway simultaneously for the same array. .SH KEYWORDS array, element names, search 0707010007905f000081a400004ccf0000000a0000000133f371dc00001d90000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/mann/bgerror.n'\" '\" Copyright (c) 1990-1994 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) bgerror.n 1.5 97/08/04 17:49:35 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH bgerror n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME bgerror \- Command invoked to process background errors .SH SYNOPSIS \fBbgerror \fImessage\fR .BE .SH DESCRIPTION .PP The \fBbgerror\fR command doesn't exist as built-in part of Tcl. Instead, individual applications or users can define a \fBbgerror\fR command (e.g. as a Tcl procedure) if they wish to handle background errors. .PP A background error is one that occurs in an event handler or some other command that didn't originate with the application. For example, if an error occurs while executing a command specified with the \fBafter\fR command, then it is a background error. For a non-background error, the error can simply be returned up through nested Tcl command evaluations until it reaches the top-level code in the application; then the application can report the error in whatever way it wishes. When a background error occurs, the unwinding ends in the Tcl library and there is no obvious way for Tcl to report the error. .PP When Tcl detects a background error, it saves information about the error and invokes the \fBbgerror\fR command later as an idle event handler. Before invoking \fBbgerror\fR, Tcl restores the \fBerrorInfo\fR and \fBerrorCode\fR variables to their values at the time the error occurred, then it invokes \fBbgerror\fR with the error message as its only argument. Tcl assumes that the application has implemented the \fBbgerror\fR command, and that the command will report the error in a way that makes sense for the application. Tcl will ignore any result returned by the \fBbgerror\fR command as long as no error is generated. .PP If another Tcl error occurs within the \fBbgerror\fR command (for example, because no \fBbgerror\fR command has been defined) then Tcl reports the error itself by writing a message to stderr. .PP If several background errors accumulate before \fBbgerror\fR is invoked to process them, \fBbgerror\fR will be invoked once for each error, in the order they occurred. However, if \fBbgerror\fR returns with a break exception, then any remaining errors are skipped without calling \fBbgerror\fR. .PP Tcl has no default implementation for \fBbgerror\fR. However, in applications using Tk there is a default \fBbgerror\fR procedure which posts a dialog box containing the error message and offers the user a chance to see a stack trace showing where the error occurred. .SH KEYWORDS background error, reporting 07070100079060000081a400004ccf0000000a0000000133f371dc000063a0000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/binary.n'\" '\" Copyright (c) 1997 by Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) binary.n 1.5 97/06/10 17:52:46 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH binary n 8.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME binary \- Insert and extract fields from binary strings .SH SYNOPSIS \fBbinary format \fIformatString \fR?\fIarg arg ...\fR? .br \fBbinary scan \fIstring formatString \fR?\fIvarName varName ...\fR? .BE .SH DESCRIPTION .PP This command provides facilities for manipulating binary data. The first form, \fBbinary format\fR, creates a binary string from normal Tcl values. For example, given the values 16 and 22, it might produce an 8-byte binary string consisting of two 4-byte integers, one for each of the numbers. The second form of the command, \fBbinary scan\fR, does the opposite: it extracts data from a binary string and returns it as ordinary Tcl string values. .SH "BINARY FORMAT" .PP The \fBbinary format\fR command generates a binary string whose layout is specified by the \fIformatString\fR and whose contents come from the additional arguments. The resulting binary value is returned. .PP The \fIformatString\fR consists of a sequence of zero or more field specifiers separated by zero or more spaces. Each field specifier is a single type character followed by an optional numeric \fIcount\fR. Most field specifiers consume one argument to obtain the value to be formatted. The type character specifies how the value is to be formatted. The \fIcount\fR typically indicates how many items of the specified type are taken from the value. If present, the \fIcount\fR is a non-negative decimal integer or \fB*\fR, which normally indicates that all of the items in the value are to be used. If the number of arguments does not match the number of fields in the format string that consume arguments, then an error is generated. .PP Each type-count pair moves an imaginary cursor through the binary data, storing bytes at the current position and advancing the cursor to just after the last byte stored. The cursor is initially at position 0 at the beginning of the data. The type may be any one of the following characters: .IP \fBa\fR 5 Stores a character string of length \fIcount\fR in the output string. If \fIarg\fR has fewer than \fIcount\fR bytes, then additional zero bytes are used to pad out the field. If \fIarg\fR is longer than the specified length, the extra characters will be ignored. If \fIcount\fR is \fB*\fR, then all of the bytes in \fIarg\fR will be formatted. If \fIcount\fR is omitted, then one character will be formatted. For example, .RS .CS \fBbinary format a7a*a alpha bravo charlie\fR .CE will return a string equivalent to \fBalpha\\000\\000bravoc\fR. .RE .IP \fBA\fR 5 This form is the same as \fBa\fR except that spaces are used for padding instead of nulls. For example, .RS .CS \fBbinary format A6A*A alpha bravo charlie\fR .CE will return \fBalpha bravoc\fR. .RE .IP \fBb\fR 5 Stores a string of \fIcount\fR binary digits in low-to-high order within each byte in the output string. \fIArg\fR must contain a sequence of \fB1\fR and \fB0\fR characters. The resulting bytes are emitted in first to last order with the bits being formatted in low-to-high order within each byte. If \fIarg\fR has fewer than \fIcount\fR digits, then zeros will be used for the remaining bits. If \fIarg\fR has more than the specified number of digits, the extra digits will be ignored. If \fIcount\fR is \fB*\fR, then all of the digits in \fIarg\fR will be formatted. If \fIcount\fR is omitted, then one digit will be formatted. If the number of bits formatted does not end at a byte boundary, the remaining bits of the last byte will be zeros. For example, .RS .CS \fBbinary format b5b* 11100 111000011010\fR .CE will return a string equivalent to \fB\\x07\\x87\\x05\fR. .RE .IP \fBB\fR 5 This form is the same as \fBb\fR except that the bits are stored in high-to-low order within each byte. For example, .RS .CS \fBbinary format B5B* 11100 111000011010\fR .CE will return a string equivalent to \fB\\xe0\\xe1\\xa0\fR. .RE .IP \fBh\fR 5 Stores a string of \fIcount\fR hexadecimal digits in low-to-high within each byte in the output string. \fIArg\fR must contain a sequence of characters in the set ``0123456789abcdefABCDEF''. The resulting bytes are emitted in first to last order with the hex digits being formatted in low-to-high order within each byte. If \fIarg\fR has fewer than \fIcount\fR digits, then zeros will be used for the remaining digits. If \fIarg\fR has more than the specified number of digits, the extra digits will be ignored. If \fIcount\fR is \fB*\fR, then all of the digits in \fIarg\fR will be formatted. If \fIcount\fR is omitted, then one digit will be formatted. If the number of digits formatted does not end at a byte boundary, the remaining bits of the last byte will be zeros. For example, .RS .CS \fBbinary format h3h* AB def\fR .CE will return a string equivalent to \fB\\xba\\xed\\x0f\fR. .RE .IP \fBH\fR 5 This form is the same as \fBh\fR except that the digits are stored in high-to-low order within each byte. For example, .RS .CS \fBbinary format H3H* ab DEF\fR .CE will return a string equivalent to \fB\\xab\\xde\\xf0\fR. .RE .IP \fBc\fR 5 Stores one or more 8-bit integer values in the output string. If no \fIcount\fR is specified, then \fIarg\fR must consist of an integer value; otherwise \fIarg\fR must consist of a list containing at least \fIcount\fR integer elements. The low-order 8 bits of each integer are stored as a one-byte value at the cursor position. If \fIcount\fR is \fB*\fR, then all of the integers in the list are formatted. If the number of elements in the list is fewer than \fIcount\fR, then an error is generated. If the number of elements in the list is greater than \fIcount\fR, then the extra elements are ignored. For example, .RS .CS \fBbinary format c3cc* {3 -3 128 1} 257 {2 5}\fR .CE will return a string equivalent to \fB\\x03\\xfd\\x80\\x01\\x02\\x05\fR, whereas .CS \fBbinary format c {2 5}\fR .CE will generate an error. .RE .IP \fBs\fR 5 This form is the same as \fBc\fR except that it stores one or more 16-bit integers in little-endian byte order in the output string. The low-order 16-bits of each integer are stored as a two-byte value at the cursor position with the least significant byte stored first. For example, .RS .CS \fBbinary format s3 {3 -3 258 1}\fR .CE will return a string equivalent to \fB\\x03\\x00\\xfd\\xff\\x02\\x01\fR. .RE .IP \fBS\fR 5 This form is the same as \fBs\fR except that it stores one or more 16-bit integers in big-endian byte order in the output string. For example, .RS .CS \fBbinary format S3 {3 -3 258 1}\fR .CE will return a string equivalent to \fB\\x00\\x03\\xff\\xfd\\x01\\x02\fR. .RE .IP \fBi\fR 5 This form is the same as \fBc\fR except that it stores one or more 32-bit integers in little-endian byte order in the output string. The low-order 32-bits of each integer are stored as a four-byte value at the cursor position with the least significant byte stored first. For example, .RS .CS \fBbinary format i3 {3 -3 65536 1}\fR .CE will return a string equivalent to \fB\\x03\\x00\\x00\\x00\\xfd\\xff\\xff\\xff\\x00\\x00\\x10\\x00\fR. .RE .IP \fBI\fR 5 This form is the same as \fBi\fR except that it stores one or more one or more 32-bit integers in big-endian byte order in the output string. For example, .RS .CS \fBbinary format I3 {3 -3 65536 1}\fR .CE will return a string equivalent to \fB\\x00\\x00\\x00\\x03\\xff\\xff\\xff\\xfd\\x00\\x10\\x00\\x00\fR. .RE .IP \fBf\fR 5 This form is the same as \fBc\fR except that it stores one or more one or more single-precision floating in the machine's native representation in the output string. This representation is not portable across architectures, so it should not be used to communicate floating point numbers across the network. The size of a floating point number may vary across architectures, so the number of bytes that are generated may vary. If the value is out of range for the machine's native representation, then the value of FLT_MIN or FLT_MAX as defined by the system will be used instead. Because Tcl uses double-precision floating-point numbers internally, there may be some loss of precision in the conversion to single-precision. For example, on a Windows system running on an Intel Pentium processor, .RS .CS \fBbinary format f2 {1.6 3.4}\fR .CE will return a string equivalent to \fB\\xcd\\xcc\\xcc\\x3f\\x9a\\x99\\x59\\x40\fR. .RE .IP \fBd\fR 5 This form is the same as \fBf\fR except that it stores one or more one or more double-precision floating in the machine's native representation in the output string. For example, on a Windows system running on an Intel Pentium processor, .RS .CS \fBbinary format d1 {1.6}\fR .CE will return a string equivalent to \fB\\x9a\\x99\\x99\\x99\\x99\\x99\\xf9\\x3f\fR. .RE .IP \fBx\fR 5 Stores \fIcount\fR null bytes in the output string. If \fIcount\fR is not specified, stores one null byte. If \fIcount\fR is \fB*\fR, generates an error. This type does not consume an argument. For example, .RS .CS \fBbinary format a3xa3x2a3 abc def ghi\fR .CE will return a string equivalent to \fBabc\\000def\\000\\000ghi\fR. .RE .IP \fBX\fR 5 Moves the cursor back \fIcount\fR bytes in the output string. If \fIcount\fR is \fB*\fR or is larger than the current cursor position, then the cursor is positioned at location 0 so that the next byte stored will be the first byte in the result string. If \fIcount\fR is omitted then the cursor is moved back one byte. This type does not consume an argument. For example, .RS .CS \fBbinary format a3X*a3X2a3 abc def ghi\fR .CE will return \fBdghi\fR. .RE .IP \fB@\fR 5 Moves the cursor to the absolute location in the output string specified by \fIcount\fR. Position 0 refers to the first byte in the output string. If \fIcount\fR refers to a position beyond the last byte stored so far, then null bytes will be placed in the unitialized locations and the cursor will be placed at the specified location. If \fIcount\fR is \fB*\fR, then the cursor is moved to the current end of the output string. If \fIcount\fR is omitted, then an error will be generated. This type does not consume an argument. For example, .RS .CS \fBbinary format a5@2a1@*a3@10a1 abcde f ghi j\fR .CE will return \fBabfdeghi\\000\\000j\fR. .RE .SH "BINARY SCAN" .PP The \fBbinary scan\fR command parses fields from a binary string, returning the number of conversions performed. \fIString\fR gives the input to be parsed and \fIformatString\fR indicates how to parse it. Each \fIvarName\fR gives the name of a variable; when a field is scanned from \fIstring\fR the result is assigned to the corresponding variable. .PP As with \fBbinary format\fR, the \fIformatString\fR consists of a sequence of zero or more field specifiers separated by zero or more spaces. Each field specifier is a single type character followed by an optional numeric \fIcount\fR. Most field specifiers consume one argument to obtain the variable into which the scanned values should be placed. The type character specifies how the binary data is to be interpreted. The \fIcount\fR typically indicates how many items of the specified type are taken from the data. If present, the \fIcount\fR is a non-negative decimal integer or \fB*\fR, which normally indicates that all of the remaining items in the data are to be used. If there are not enough bytes left after the current cursor position to satisfy the current field specifier, then the corresponding variable is left untouched and \fBbinary scan\fR returns immediately with the number of variables that were set. If there are not enough arguments for all of the fields in the format string that consume arguments, then an error is generated. .PP Each type-count pair moves an imaginary cursor through the binary data, reading bytes from the current position. The cursor is initially at position 0 at the beginning of the data. The type may be any one of the following characters: .IP \fBa\fR 5 The data is a character string of length \fIcount\fR. If \fIcount\fR is \fB*\fR, then all of the remaining bytes in \fIstring\fR will be scanned into the variable. If \fIcount\fR is omitted, then one character will be scanned. For example, .RS .CS \fBbinary scan abcde\\000fghi a6a10 var1 var2\fR .CE will return \fB1\fR with the string equivalent to \fBabcde\\000\fR stored in \fBvar1\fR and \fBvar2\fR left unmodified. .RE .IP \fBA\fR 5 This form is the same as \fBa\fR, except trailing blanks and nulls are stripped from the scanned value before it is stored in the variable. For example, .RS .CS \fBbinary scan "abc efghi \\000" a* var1\fR .CE will return \fB1\fR with \fBabc efghi\fR stored in \fBvar1\fR. .RE .IP \fBb\fR 5 The data is turned into a string of \fIcount\fR binary digits in low-to-high order represented as a sequence of ``1'' and ``0'' characters. The data bytes are scanned in first to last order with the bits being taken in low-to-high order within each byte. Any extra bits in the last byte are ignored. If \fIcount\fR is \fB*\fR, then all of the remaining bits in \fBstring\fR will be scanned. If \fIcount\fR is omitted, then one bit will be scanned. For example, .RS .CS \fBbinary scan \\x07\\x87\\x05 b5b* var1 var2\fR .CE will return \fB2\fR with \fB11100\fR stored in \fBvar1\fR and \fB1110000110100000\fR stored in \fBvar2\fR. .RE .IP \fBB\fR 5 This form is the same as \fBB\fR, except the bits are taken in high-to-low order within each byte. For example, .RS .CS \fBbinary scan \\x70\\x87\\x05 b5b* var1 var2\fR .CE will return \fB2\fR with \fB01110\fR stored in \fBvar1\fR and \fB1000011100000101\fR stored in \fBvar2\fR. .RE .IP \fBh\fR 5 The data is turned into a string of \fIcount\fR hexadecimal digits in low-to-high order represented as a sequence of characters in the set ``0123456789abcdef''. The data bytes are scanned in first to last order with the hex digits being taken in low-to-high order within each byte. Any extra bits in the last byte are ignored. If \fIcount\fR is \fB*\fR, then all of the remaining hex digits in \fBstring\fR will be scanned. If \fIcount\fR is omitted, then one hex digit will be scanned. For example, .RS .CS \fBbinary scan \\x07\\x86\\x05 h3h* var1 var2\fR .CE will return \fB2\fR with \fB706\fR stored in \fBvar1\fR and \fB50\fR stored in \fBvar2\fR. .RE .IP \fBH\fR 5 This form is the same as \fBh\fR, except the digits are taken in low-to-high order within each byte. For example, .RS .CS \fBbinary scan \\x07\\x86\\x05 H3H* var1 var2\fR .CE will return \fB2\fR with \fB078\fR stored in \fBvar1\fR and \fB05\fR stored in \fBvar2\fR. .RE .IP \fBc\fR 5 The data is turned into \fIcount\fR 8-bit signed integers and stored in the corresponding variable as a list. If \fIcount\fR is \fB*\fR, then all of the remaining bytes in \fBstring\fR will be scanned. If \fIcount\fR is omitted, then one 8-bit integer will be scanned. For example, .RS .CS \fBbinary scan \\x07\\x86\\x05 c2c* var1 var2\fR .CE will return \fB2\fR with \fB7 -122\fR stored in \fBvar1\fR and \fB5\fR stored in \fBvar2\fR. Note that the integers returned are signed, but they can be converted to unsigned 8-bit quantities using an expression like: .CS \fBexpr ( $num + 0x100 ) % 0x100\fR .CE .RE .IP \fBs\fR 5 The data is interpreted as \fIcount\fR 16-bit signed integers represented in little-endian byte order. The integers are stored in the corresponding variable as a list. If \fIcount\fR is \fB*\fR, then all of the remaining bytes in \fBstring\fR will be scanned. If \fIcount\fR is omitted, then one 16-bit integer will be scanned. For example, .RS .CS \fBbinary scan \\x05\\x00\\x07\\x00\\xf0\\xff s2s* var1 var2\fR .CE will return \fB2\fR with \fB5 7\fR stored in \fBvar1\fR and \fB-16\fR stored in \fBvar2\fR. Note that the integers returned are signed, but they can be converted to unsigned 16-bit quantities using an expression like: .CS \fBexpr ( $num + 0x10000 ) % 0x10000\fR .CE .RE .IP \fBS\fR 5 This form is the same as \fBs\fR except that the data is interpreted as \fIcount\fR 16-bit signed integers represented in big-endian byte order. For example, .RS .CS \fBbinary scan \\x00\\x05\\x00\\x07\\xff\\xf0 S2S* var1 var2\fR .CE will return \fB2\fR with \fB5 7\fR stored in \fBvar1\fR and \fB-16\fR stored in \fBvar2\fR. .RE .IP \fBi\fR 5 The data is interpreted as \fIcount\fR 32-bit signed integers represented in little-endian byte order. The integers are stored in the corresponding variable as a list. If \fIcount\fR is \fB*\fR, then all of the remaining bytes in \fBstring\fR will be scanned. If \fIcount\fR is omitted, then one 32-bit integer will be scanned. For example, .RS .CS \fBbinary scan \\x05\\x00\\x00\\x00\\x07\\x00\\x00\\x00\\xf0\\xff\\xff\\xff i2i* var1 var2\fR .CE will return \fB2\fR with \fB5 7\fR stored in \fBvar1\fR and \fB-16\fR stored in \fBvar2\fR. Note that the integers returned are signed and cannot be represented by Tcl as unsigned values. .RE .IP \fBI\fR 5 This form is the same as \fBI\fR except that the data is interpreted as \fIcount\fR 32-bit signed integers represented in big-endian byte order. For example, .RS .CS \fBbinary \\x00\\x00\\x00\\x05\\x00\\x00\\x00\\x07\\xff\\xff\\xff\\xf0 I2I* var1 var2\fR .CE will return \fB2\fR with \fB5 7\fR stored in \fBvar1\fR and \fB-16\fR stored in \fBvar2\fR. .RE .IP \fBf\fR 5 The data is interpreted as \fIcount\fR single-precision floating point numbers in the machine's native representation. The floating point numbers are stored in the corresponding variable as a list. If \fIcount\fR is \fB*\fR, then all of the remaining bytes in \fBstring\fR will be scanned. If \fIcount\fR is omitted, then one single-precision floating point number will be scanned. The size of a floating point number may vary across architectures, so the number of bytes that are scanned may vary. If the data does not represent a valid floating point number, the resulting value is undefined and compiler dependent. For example, on a Windows system running on an Intel Pentium processor, .RS .CS \fBbinary scan \\x3f\\xcc\\xcc\\xcd f var1\fR .CE will return \fB1\fR with \fB1.6000000238418579\fR stored in \fBvar1\fR. .RE .IP \fBd\fR 5 This form is the same as \fBf\fR except that the data is interpreted as \fIcount\fR double-precision floating point numbers in the machine's native representation. For example, on a Windows system running on an Intel Pentium processor, .RS .CS \fBbinary scan \\x9a\\x99\\x99\\x99\\x99\\x99\\xf9\\x3f d var1\fR .CE will return \fB1\fR with \fB1.6000000000000001\fR stored in \fBvar1\fR. .RE .IP \fBx\fR 5 Moves the cursor forward \fIcount\fR bytes in \fIstring\fR. If \fIcount\fR is \fB*\fR or is larger than the number of bytes after the current cursor cursor position, then the cursor is positioned after the last byte in \fIstring\fR. If \fIcount\fR is omitted, then the cursor is moved forward one byte. Note that this type does not consume an argument. For example, .RS .CS \fBbinary scan \\x01\\x02\\x03\\x04 x2H* var1\fR .CE will return \fB1\fR with \fB0304\fR stored in \fBvar1\fR. .RE .IP \fBX\fR 5 Moves the cursor back \fIcount\fR bytes in \fIstring\fR. If \fIcount\fR is \fB*\fR or is larger than the current cursor position, then the cursor is positioned at location 0 so that the next byte scanned will be the first byte in \fIstring\fR. If \fIcount\fR is omitted then the cursor is moved back one byte. Note that this type does not consume an argument. For example, .RS .CS \fBbinary scan \\x01\\x02\\x03\\x04 c2XH* var1 var2\fR .CE will return \fB2\fR with \fB1 2\fR stored in \fBvar1\fR and \fB020304\fR stored in \fBvar2\fR. .RE .IP \fB@\fR 5 Moves the cursor to the absolute location in the data string specified by \fIcount\fR. Note that position 0 refers to the first byte in \fIstring\fR. If \fIcount\fR refers to a position beyond the end of \fIstring\fR, then the cursor is positioned after the last byte. If \fIcount\fR is omitted, then an error will be generated. For example, .RS .CS \fBbinary scan \\x01\\x02\\x03\\x04 c2@1H* var1 var2\fR .CE will return \fB2\fR with \fB1 2\fR stored in \fBvar1\fR and \fB020304\fR stored in \fBvar2\fR. .RE .SH "PLATFORM ISSUES" Sometimes it is desirable to format or scan integer values in the native byte order for the machine. Refer to the \fBbyteOrder\fR element of the \fBtcl_platform\fR array to decide which type character to use when formatting or scanning integers. .SH "SEE ALSO" format, scan, tclvars .SH KEYWORDS binary, format, scan 07070100079061000081a400004ccf0000000a0000000133f371dd000016a9000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/break.n'\" '\" Copyright (c) 1993-1994 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) break.n 1.7 96/10/09 08:29:26 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH break n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME break \- Abort looping command .SH SYNOPSIS \fBbreak\fR .BE .SH DESCRIPTION .PP This command is typically invoked inside the body of a looping command such as \fBfor\fR or \fBforeach\fR or \fBwhile\fR. It returns a TCL_BREAK code, which causes a break exception to occur. The exception causes the current script to be aborted out to the innermost containing loop command, which then aborts its execution and returns normally. Break exceptions are also handled in a few other situations, such as the \fBcatch\fR command, Tk event bindings, and the outermost scripts of procedure bodies. .SH KEYWORDS abort, break, loop 07070100079062000081a400004ccf0000000a0000000133f371dd00001c8b000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/case.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) case.n 1.8 96/03/25 20:10:49 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH case n 7.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME case \- Evaluate one of several scripts, depending on a given value .SH SYNOPSIS \fBcase\fI string \fR?\fBin\fR? \fIpatList body \fR?\fIpatList body \fR...? .sp \fBcase\fI string \fR?\fBin\fR? {\fIpatList body \fR?\fIpatList body \fR...?} .BE .SH DESCRIPTION .PP \fINote: the \fBcase\fI command is obsolete and is supported only for backward compatibility. At some point in the future it may be removed entirely. You should use the \fBswitch\fI command instead.\fR .PP The \fBcase\fR command matches \fIstring\fR against each of the \fIpatList\fR arguments in order. Each \fIpatList\fR argument is a list of one or more patterns. If any of these patterns matches \fIstring\fR then \fBcase\fR evaluates the following \fIbody\fR argument by passing it recursively to the Tcl interpreter and returns the result of that evaluation. Each \fIpatList\fR argument consists of a single pattern or list of patterns. Each pattern may contain any of the wild-cards described under \fBstring match\fR. If a \fIpatList\fR argument is \fBdefault\fR, the corresponding body will be evaluated if no \fIpatList\fR matches \fIstring\fR. If no \fIpatList\fR argument matches \fIstring\fR and no default is given, then the \fBcase\fR command returns an empty string. .PP Two syntaxes are provided for the \fIpatList\fR and \fIbody\fR arguments. The first uses a separate argument for each of the patterns and commands; this form is convenient if substitutions are desired on some of the patterns or commands. The second form places all of the patterns and commands together into a single argument; the argument must have proper list structure, with the elements of the list being the patterns and commands. The second form makes it easy to construct multi-line case commands, since the braces around the whole list make it unnecessary to include a backslash at the end of each line. Since the \fIpatList\fR arguments are in braces in the second form, no command or variable substitutions are performed on them; this makes the behavior of the second form different than the first form in some cases. .SH KEYWORDS case, match, regular expression 07070100079063000081a400004ccf0000000a0000000133f371dd00001887000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/catch.n'\" '\" Copyright (c) 1993-1994 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) catch.n 1.6 96/03/25 20:11:08 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH catch n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME catch \- Evaluate script and trap exceptional returns .SH SYNOPSIS \fBcatch\fI script \fR?\fIvarName\fR? .BE .SH DESCRIPTION .PP The \fBcatch\fR command may be used to prevent errors from aborting command interpretation. \fBCatch\fR calls the Tcl interpreter recursively to execute \fIscript\fR, and always returns a TCL_OK code, regardless of any errors that might occur while executing \fIscript\fR. The return value from \fBcatch\fR is a decimal string giving the code returned by the Tcl interpreter after executing \fIscript\fR. This will be \fB0\fR (TCL_OK) if there were no errors in \fIscript\fR; otherwise it will have a non-zero value corresponding to one of the exceptional return codes (see tcl.h for the definitions of code values). If the \fIvarName\fR argument is given, then it gives the name of a variable; \fBcatch\fR will set the variable to the string returned from \fIscript\fR (either a result or an error message). .PP Note that \fBcatch\fR catches all exceptions, including those generated by \fBbreak\fR and \fBcontinue\fR as well as errors. .SH KEYWORDS catch, error 07070100079064000081a400004ccf0000000a0000000133f371dd00001568000000a30000000400000000000000000000002000000004reloc/SUNWtcl/8.0/man/mann/cd.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) cd.n 1.6 96/03/28 08:40:52 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH cd n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME cd \- Change working directory .SH SYNOPSIS \fBcd \fR?\fIdirName\fR? .BE .SH DESCRIPTION .PP Change the current working directory to \fIdirName\fR, or to the home directory (as specified in the HOME environment variable) if \fIdirName\fR is not given. Returns an empty string. .SH KEYWORDS working directory 07070100079065000081a400004ccf0000000a0000000133f371dd00002c5a000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/clock.n'\" '\" Copyright (c) 1992-1995 Karl Lehenbauer and Mark Diekhans. '\" Copyright (c) 1995-1997 Sun Microsystems, Inc. '\" '\" This documentation is derived from the time and date facilities of '\" TclX, by Mark Diekhans and Karl Lehenbauer. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) clock.n 1.17 97/02/03 16:34:17 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH clock n 7.4 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME clock \- Obtain and manipulate time .SH SYNOPSIS \fBclock \fIoption\fR ?\fIarg arg ...\fR? .BE .SH DESCRIPTION .PP This command performs one of several operations that may obtain or manipulate strings or values that represent some notion of time. The \fIoption\fR argument determines what action is carried out by the command. The legal \fIoptions\fR (which may be abbreviated) are: .TP \fBclock clicks\fR Return a high-resolution time value as a system-dependent integer value. The unit of the value is system-dependent but should be the highest resolution clock available on the system such as a CPU cycle counter. This value should only be used for the relative measurement of elapsed time. .TP \fBclock format \fIclockValue\fR ?\fB\-format \fIstring\fR? ?\fB\-gmt \fIboolean\fR? Converts an integer time value, typically returned by \fBclock seconds\fR, \fBclock scan\fR, or the \fBatime\fR, \fBmtime\fR, or \fBctime\fR options of the \fBfile\fR command, to human-readable form. If the \fB\-format\fR argument is present the next argument is a string that describes how the date and time are to be formatted. Field descriptors consist of a \fB%\fR followed by a field descriptor character. All other characters are copied into the result. Valid field descriptors are: .RS .IP \fB%%\fR Insert a %. .IP \fB%a\fR Abbreviated weekday name (Mon, Tue, etc.). .IP \fB%A\fR Full weekday name (Monday, Tuesday, etc.). .IP \fB%b\fR Abbreviated month name (Jan, Feb, etc.). .IP \fB%B\fR Full month name. .IP \fB%c\fR Locale specific date and time. .IP \fB%d\fR Day of month (01 - 31). .IP \fB%H\fR Hour in 24-hour format (00 - 23). .IP \fB%I\fR Hour in 12-hour format (00 - 12). .IP \fB%j\fR Day of year (001 - 366). .IP \fB%m\fR Month number (01 - 12). .IP \fB%M\fR Minute (00 - 59). .IP \fB%p\fR AM/PM indicator. .IP \fB%S\fR Seconds (00 - 59). .IP \fB%U\fR Week of year (01 - 52), Sunday is the first day of the week. .IP \fB%w\fR Weekday number (Sunday = 0). .IP \fB%W\fR Week of year (01 - 52), Monday is the first day of the week. .IP \fB%x\fR Locale specific date format. .IP \fB%X\fR Locale specific time format. .IP \fB%y\fR Year without century (00 - 99). .IP \fB%Y\fR Year with century (e.g. 1990) .IP \fB%Z\fR Time zone name. .RE .sp .RS In addition, the following field descriptors may be supported on some systems (e.g. Unix but not Windows): .IP \fB%D\fR Date as %m/%d/%y. .IP \fB%e\fR Day of month (1 - 31), no leading zeros. .IP \fB%h\fR Abbreviated month name. .IP \fB%n\fR Insert a newline. .IP \fB%r\fR Time as %I:%M:%S %p. .IP \fB%R\fR Time as %H:%M. .IP \fB%t\fR Insert a tab. .IP \fB%T\fR Time as %H:%M:%S. .RE .sp .RS If the \fB\-format\fR argument is not specified, the format string "\fB%a %b %d %H:%M:%S %Z %Y\fR" is used. If the \fB\-gmt\fR argument is present the next argument must be a boolean which if true specifies that the time will be formatted as Greenwich Mean Time. If false then the local timezone will be used as defined by the operating environment. .RE .TP \fBclock scan \fIdateString\fR ?\fB\-base \fIclockVal\fR? ?\fB\-gmt \fIboolean\fR? Convert \fIdateString\fR to an integer clock value (see \fBclock seconds\fR). This command can parse and convert virtually any standard date and/or time string, which can include standard time zone mnemonics. If only a time is specified, the current date is assumed. If the string does not contain a time zone mnemonic, the local time zone is assumed, unless the \fB\-gmt\fR argument is true, in which case the clock value is calculated assuming that the specified time is relative to Greenwich Mean Time. .sp If the \fB\-base\fR flag is specified, the next argument should contain an integer clock value. Only the date in this value is used, not the time. This is useful for determining the time on a specific day or doing other date-relative conversions. .sp The \fIdateString\fR consists of zero or more specifications of the following form: .RS .TP \fItime\fR A time of day, which is of the form: \fIhh\fR?\fI:mm\fR?\fI:ss\fR?? ?\fImeridian\fR? ?\fIzone\fR? or \fIhhmm \fR?\fImeridian\fR? ?\fIzone\fR?. If no meridian is specified, \fIhh\fR is interpreted on a 24-hour clock. .TP \fIdate\fR A specific month and day with optional year. The acceptable formats are \fImm/dd\fR?\fI/yy\fR?, \fImonthname dd\fR ?, \fIyy\fR?, \fIdd monthname \fR?\fIyy\fR? and \fIday, dd monthname yy\fR. The default year is the current year. If the year is less then 100, we treat the years 00-38 as 2000-2038 and the years 70-99 as 1970-1999. The years 39-70 are undefined and may not be valid on certain platforms. (For thos platforms where it is defined then the years 69-99 match to 1969-1999.) .TP \fIrelative time\fR A specification relative to the current time. The format is \fInumber unit\fR acceptable units are \fByear\fR, \fBfortnight\fR, \fBmonth\fR, \fBweek\fR, \fBday\fR, \fBhour\fR, \fBminute\fR (or \fBmin\fR), and \fBsecond\fR (or \fBsec\fR). The unit can be specified as a singular or plural, as in \fB3 weeks\fR. These modifiers may also be specified: \fBtomorrow\fR, \fByesterday\fR, \fBtoday\fR, \fBnow\fR, \fBlast\fR, \fBthis\fR, \fBnext\fR, \fBago\fR. .RE .sp .RS The actual date is calculated according to the following steps. First, any absolute date and/or time is processed and converted. Using that time as the base, day-of-week specifications are added. Next, relative specifications are used. If a date or day is specified, and no absolute or relative time is given, midnight is used. Finally, a correction is applied so that the correct hour of the day is produced after allowing for daylight savings time differences and the correct date is given when going from the end of a long month to a short month. .RE .TP \fBclock seconds\fR Return the current date and time as a system-dependent integer value. The unit of the value is seconds, allowing it to be used for relative time calculations. The value is usually defined as total elapsed time from an ``epoch''. You shouldn't assume the value of the epoch. .SH KEYWORDS clock, date, time 07070100079066000081a400004ccf0000000a0000000133f371dd00001adf000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/close.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) close.n 1.10 96/02/15 20:01:34 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH close n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME close \- Close an open channel. .SH SYNOPSIS \fBclose \fIchannelId\fR .BE .SH DESCRIPTION .PP Closes the channel given by \fIchannelId\fR. \fIChannelId\fR must be a channel identifier such as the return value from a previous \fBopen\fR or \fBsocket\fR command. All buffered output is flushed to the channel's output device, any buffered input is discarded, the underlying file or device is closed, and \fIchannelId\fR becomes unavailable for use. .VS br .PP If the channel is blocking, the command does not return until all output is flushed. If the channel is nonblocking and there is unflushed output, the channel remains open and the command returns immediately; output will be flushed in the background and the channel will be closed when all the flushing is complete. .VE .PP If \fIchannelId\fR is a blocking channel for a command pipeline then \fBclose\fR waits for the child processes to complete. .VS br .PP If the channel is shared between interpreters, then \fBclose\fR makes \fIchannelId\fR unavailable in the invoking interpreter but has no other effect until all of the sharing interpreters have closed the channel. When the last interpreter in which the channel is registered invokes \fBclose\fR, the cleanup actions described above occur. See the \fBinterp\fR command for a description of channel sharing. .PP Channels are automatically closed when an interpreter is destroyed and when the process exits. Channels are switched to blocking mode, to ensure that all output is correctly flushed before the process exits. .VE .PP The command returns an empty string, and may generate an error if an error occurs while flushing output. .SH KEYWORDS blocking, channel, close, nonblocking 07070100079067000081a400004ccf0000000a0000000133f371de0000167e000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/concat.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) concat.n 1.8 96/08/26 12:59:54 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH concat n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME concat \- Join lists together .SH SYNOPSIS \fBconcat\fI \fR?\fIarg arg ...\fR? .BE .SH DESCRIPTION .PP This command treats each argument as a list and concatenates them into a single list. It also eliminates leading and trailing spaces in the \fIarg\fR's and adds a single separator space between \fIarg\fR's. It permits any number of arguments. For example, the command .CS \fBconcat a b {c d e} {f {g h}}\fR .CE will return .CS \fBa b c d e f {g h}\fR .CE as its result. .PP If no \fIarg\fRs are supplied, the result is an empty string. .SH KEYWORDS concatenate, join, lists 07070100079068000081a400004ccf0000000a0000000133f371de000016c1000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/mann/continue.n'\" '\" Copyright (c) 1993-1994 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) continue.n 1.7 96/10/09 08:29:27 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH continue n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME continue \- Skip to the next iteration of a loop .SH SYNOPSIS \fBcontinue\fR .BE .SH DESCRIPTION .PP This command is typically invoked inside the body of a looping command such as \fBfor\fR or \fBforeach\fR or \fBwhile\fR. It returns a TCL_CONTINUE code, which causes a continue exception to occur. The exception causes the current script to be aborted out to the innermost containing loop command, which then continues with the next iteration of the loop. Catch exceptions are also handled in a few other situations, such as the \fBcatch\fR command and the outermost scripts of procedure bodies. .SH KEYWORDS continue, iteration, loop 07070100079069000081a400004ccf0000000a0000000133f371de00001553000000a30000000400000000000000000000002100000004reloc/SUNWtcl/8.0/man/mann/eof.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) eof.n 1.8 96/02/15 20:01:59 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH eof n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME eof \- Check for end of file condition on channel .SH SYNOPSIS \fBeof \fIchannelId\fR .BE .SH DESCRIPTION .PP Returns 1 if an end of file condition occurred during the most recent input operation on \fIchannelId\fR (such as \fBgets\fR), 0 otherwise. .SH KEYWORDS channel, end of file 0707010007906a000081a400004ccf0000000a0000000133f371de00001b11000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/error.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) error.n 1.7 96/03/25 20:12:35 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH error n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME error \- Generate an error .SH SYNOPSIS \fBerror \fImessage\fR ?\fIinfo\fR? ?\fIcode\fR? .BE .SH DESCRIPTION .PP Returns a TCL_ERROR code, which causes command interpretation to be unwound. \fIMessage\fR is a string that is returned to the application to indicate what went wrong. .PP If the \fIinfo\fR argument is provided and is non-empty, it is used to initialize the global variable \fBerrorInfo\fR. \fBerrorInfo\fR is used to accumulate a stack trace of what was in progress when an error occurred; as nested commands unwind, the Tcl interpreter adds information to \fBerrorInfo\fR. If the \fIinfo\fR argument is present, it is used to initialize \fBerrorInfo\fR and the first increment of unwind information will not be added by the Tcl interpreter. In other words, the command containing the \fBerror\fR command will not appear in \fBerrorInfo\fR; in its place will be \fIinfo\fR. This feature is most useful in conjunction with the \fBcatch\fR command: if a caught error cannot be handled successfully, \fIinfo\fR can be used to return a stack trace reflecting the original point of occurrence of the error: .CS \fBcatch {...} errMsg set savedInfo $errorInfo \&... error $errMsg $savedInfo\fR .CE .PP If the \fIcode\fR argument is present, then its value is stored in the \fBerrorCode\fR global variable. This variable is intended to hold a machine-readable description of the error in cases where such information is available; see the \fBtclvars\fR manual page for information on the proper format for the variable. If the \fIcode\fR argument is not present, then \fBerrorCode\fR is automatically reset to ``NONE'' by the Tcl interpreter as part of processing the error generated by the command. .SH KEYWORDS error, errorCode, errorInfo 0707010007906b000081a400004ccf0000000a0000000133f371de0000161e000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/eval.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) eval.n 1.5 96/03/25 20:12:53 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH eval n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME eval \- Evaluate a Tcl script .SH SYNOPSIS \fBeval \fIarg \fR?\fIarg ...\fR? .BE .SH DESCRIPTION .PP \fBEval\fR takes one or more arguments, which together comprise a Tcl script containing one or more commands. \fBEval\fR concatenates all its arguments in the same fashion as the \fBconcat\fR command, passes the concatenated string to the Tcl interpreter recursively, and returns the result of that evaluation (or any error generated by it). .SH KEYWORDS concatenate, evaluate, script 0707010007906c000081a400004ccf0000000a0000000133f371de00004c08000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/exec.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) exec.n 1.17 96/09/18 15:21:17 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH exec n 7.6 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME exec \- Invoke subprocess(es) .SH SYNOPSIS \fBexec \fR?\fIswitches\fR? \fIarg \fR?\fIarg ...\fR? .BE .SH DESCRIPTION .PP This command treats its arguments as the specification of one or more subprocesses to execute. The arguments take the form of a standard shell pipeline where each \fIarg\fR becomes one word of a command, and each distinct command becomes a subprocess. .PP If the initial arguments to \fBexec\fR start with \fB\-\fR then they are treated as command-line switches and are not part of the pipeline specification. The following switches are currently supported: .TP 13 \fB\-keepnewline\fR Retains a trailing newline in the pipeline's output. Normally a trailing newline will be deleted. .TP 13 \fB\-\|\-\fR Marks the end of switches. The argument following this one will be treated as the first \fIarg\fR even if it starts with a \fB\-\fR. .PP If an \fIarg\fR (or pair of \fIarg\fR's) has one of the forms described below then it is used by \fBexec\fR to control the flow of input and output among the subprocess(es). Such arguments will not be passed to the subprocess(es). In forms such as ``< \fIfileName\fR'' \fIfileName\fR may either be in a separate argument from ``<'' or in the same argument with no intervening space (i.e. ``<\fIfileName\fR''). .TP 15 | Separates distinct commands in the pipeline. The standard output of the preceding command will be piped into the standard input of the next command. .TP 15 |& Separates distinct commands in the pipeline. Both standard output and standard error of the preceding command will be piped into the standard input of the next command. This form of redirection overrides forms such as 2> and >&. .TP 15 <\0\fIfileName\fR The file named by \fIfileName\fR is opened and used as the standard input for the first command in the pipeline. .TP 15 <@\0\fIfileId\fR \fIFileId\fR must be the identifier for an open file, such as the return value from a previous call to \fBopen\fR. It is used as the standard input for the first command in the pipeline. \fIFileId\fR must have been opened for reading. .TP 15 <<\0\fIvalue\fR \fIValue\fR is passed to the first command as its standard input. .TP 15 >\0\fIfileName\fR Standard output from the last command is redirected to the file named \fIfileName\fR, overwriting its previous contents. .TP 15 2>\0\fIfileName\fR Standard error from all commands in the pipeline is redirected to the file named \fIfileName\fR, overwriting its previous contents. .TP 15 >&\0\fIfileName\fR Both standard output from the last command and standard error from all commands are redirected to the file named \fIfileName\fR, overwriting its previous contents. .TP 15 >>\0\fIfileName\fR Standard output from the last command is redirected to the file named \fIfileName\fR, appending to it rather than overwriting it. .TP 15 2>>\0\fIfileName\fR Standard error from all commands in the pipeline is redirected to the file named \fIfileName\fR, appending to it rather than overwriting it. .TP 15 >>&\0\fIfileName\fR Both standard output from the last command and standard error from all commands are redirected to the file named \fIfileName\fR, appending to it rather than overwriting it. .TP 15 >@\0\fIfileId\fR \fIFileId\fR must be the identifier for an open file, such as the return value from a previous call to \fBopen\fR. Standard output from the last command is redirected to \fIfileId\fR's file, which must have been opened for writing. .TP 15 2>@\0\fIfileId\fR \fIFileId\fR must be the identifier for an open file, such as the return value from a previous call to \fBopen\fR. Standard error from all commands in the pipeline is redirected to \fIfileId\fR's file. The file must have been opened for writing. .TP 15 >&@\0\fIfileId\fR \fIFileId\fR must be the identifier for an open file, such as the return value from a previous call to \fBopen\fR. Both standard output from the last command and standard error from all commands are redirected to \fIfileId\fR's file. The file must have been opened for writing. .PP If standard output has not been redirected then the \fBexec\fR command returns the standard output from the last command in the pipeline. If any of the commands in the pipeline exit abnormally or are killed or suspended, then \fBexec\fR will return an error and the error message will include the pipeline's output followed by error messages describing the abnormal terminations; the \fBerrorCode\fR variable will contain additional information about the last abnormal termination encountered. If any of the commands writes to its standard error file and that standard error isn't redirected, then \fBexec\fR will return an error; the error message will include the pipeline's standard output, followed by messages about abnormal terminations (if any), followed by the standard error output. .PP If the last character of the result or error message is a newline then that character is normally deleted from the result or error message. This is consistent with other Tcl return values, which don't normally end with newlines. However, if \fB\-keepnewline\fR is specified then the trailing newline is retained. .PP If standard input isn't redirected with ``<'' or ``<<'' or ``<@'' then the standard input for the first command in the pipeline is taken from the application's current standard input. .PP If the last \fIarg\fR is ``&'' then the pipeline will be executed in background. In this case the \fBexec\fR command will return a list whose elements are the process identifiers for all of the subprocesses in the pipeline. The standard output from the last command in the pipeline will go to the application's standard output if it hasn't been redirected, and error output from all of the commands in the pipeline will go to the application's standard error file unless redirected. .PP The first word in each command is taken as the command name; tilde-substitution is performed on it, and if the result contains no slashes then the directories in the PATH environment variable are searched for an executable by the given name. If the name contains a slash then it must refer to an executable reachable from the current directory. No ``glob'' expansion or other shell-like substitutions are performed on the arguments to commands. .VS .SH "PORTABILITY ISSUES" .TP \fBWindows\fR (all versions) . Reading from or writing to a socket, using the ``\fB@\0\fIfileId\fR'' notation, does not work. When reading from a socket, a 16-bit DOS application will hang and a 32-bit application will return immediately with end-of-file. When either type of application writes to a socket, the information is instead sent to the console, if one is present, or is discarded. .sp The Tk console text widget does not provide real standard IO capabilities. Under Tk, when redirecting from standard input, all applications will see an immediate end-of-file; information redirected to standard output or standard error will be discarded. .sp Either forward or backward slashes are accepted as path separators for arguments to Tcl commands. When executing an application, the path name specified for the application may also contain forward or backward slashes as path separators. Bear in mind, however, that most Windows applications accept arguments with forward slashes only as option delimiters and backslashes only in paths. Any arguments to an application that specify a path name with forward slashes will not automatically be converted to use the backslash character. If an argument contains forward slashes as the path separator, it may or may not be recognized as a path name, depending on the program. .sp Additionally, when calling a 16-bit DOS or Windows 3.X application, all path names must use the short, cryptic, path format (e.g., using ``applba~1.def'' instead of ``applbakery.default''). .sp Two or more forward or backward slashes in a row in a path refer to a network path. For example, a simple concatenation of the root directory \fBc:/\fR with a subdirectory \fB/windows/system\fR will yield \fBc://windows/system\fR (two slashes together), which refers to the directory \fB/system\fR on the machine \fBwindows\fR (and the \fBc:/\fR is ignored), and is not equivalent to \fBc:/windows/system\fR, which describes a directory on the current computer. .TP \fBWindows NT\fR . When attempting to execute an application, \fBexec\fR first searches for the name as it was specified. Then, in order, \fB.com\fR, \fB.exe\fR, and \fB.bat\fR are appended to the end of the specified name and it searches for the longer name. If a directory name was not specified as part of the application name, the following directories are automatically searched in order when attempting to locate the application: .sp .RS .RS The directory from which the Tcl executable was loaded. .br The current directory. .br The Windows NT 32-bit system directory. .br The Windows NT 16-bit system directory. .br The Windows NT home directory. .br The directories listed in the path. .RE .sp In order to execute the shell builtin commands like \fBdir\fR and \fBcopy\fR, the caller must prepend ``\fBcmd.exe /c\0\fR'' to the desired command. .sp .RE .TP \fBWindows 95\fR . When attempting to execute an application, \fBexec\fR first searches for the name as it was specified. Then, in order, \fB.com\fR, \fB.exe\fR, and \fB.bat\fR are appended to the end of the specified name and it searches for the longer name. If a directory name was not specified as part of the application name, the following directories are automatically searched in order when attempting to locate the application: .sp .RS .RS The directory from which the Tcl executable was loaded. .br The current directory. .br The Windows 95 system directory. .br The Windows 95 home directory. .br The directories listed in the path. .RE .sp In order to execute the shell builtin commands like \fBdir\fR and \fBcopy\fR, the caller must prepend ``\fBcommand.com /c\0\fR'' to the desired command. .sp Once a 16-bit DOS application has read standard input from a console and then quit, all subsequently run 16-bit DOS applications will see the standard input as already closed. 32-bit applications do not have this problem and will run correctly even after a 16-bit DOS application thinks that standard input is closed. There is no known workaround for this bug at this time. .sp Redirection between the \fBNUL:\fR device and a 16-bit application does not always work. When redirecting from \fBNUL:\fR, some applications may hang, others will get an infinite stream of ``0x01'' bytes, and some will actually correctly get an immediate end-of-file; the behavior seems to depend upon something compiled into the application itself. When redirecting greater than 4K or so to \fBNUL:\fR, some applications will hang. The above problems do not happen with 32-bit applications. .sp All DOS 16-bit applications are run synchronously. All standard input from a pipe to a 16-bit DOS application is collected into a temporary file; the other end of the pipe must be closed before the 16-bit DOS application begins executing. All standard output or error from a 16-bit DOS application to a pipe is collected into temporary files; the application must terminate before the temporary files are redirected to the next stage of the pipeline. This is due to a workaround for a Windows 95 bug in the implementation of pipes, and is how the Windows 95 command line interpreter handles pipes itself. .sp Certain applications, such as \fBcommand.com\fR, should not be executed interactively. Applications which directly access the console window, rather than reading from their standard input and writing to their standard output may fail, hang Tcl, or even hang the system if their own private console window is not available to them. .RE .TP \fBWindows 3.X\fR . When attempting to execute an application, \fBexec\fR first searches for the name as it was specified. Then, in order, \fB.com\fR, \fB.exe\fR, and \fB.bat\fR are appended to the end of the specified name and it searches for the longer name. If a directory name was not specified as part of the application name, the following directories are automatically searched in order when attempting to locate the application: .sp .RS .RS The directory from which the Tcl executable was loaded. .br The current directory. .br The Windows 3.X system directory. .br The Windows 3.X home directory. .br The directories listed in the path. .RE .sp In order to execute the shell builtin commands like \fBdir\fR and \fBcopy\fR, the caller must prepend ``\fBcommand.com /c\0\fR'' to the desired command. .sp 16-bit and 32-bit DOS and Windows applications may be executed. However, redirection and piping of standard IO only works with 16-bit DOS applications. 32-bit applications always see standard input as already closed, and any standard output or error is discarded, no matter where in the pipeline the application occurs or what redirection symbols are used by the caller. Additionally, for 16-bit applications, standard error is always sent to the same place as standard output; it cannot be redirected to a separate location. In order to achieve pseudo-redirection for 32-bit applications, the 32-bit application must instead be written to take command line arguments that specify the files that it should read from and write to and open those files itself. .sp All applications, both 16-bit and 32-bit, run synchronously; each application runs to completion before the next one in the pipeline starts. Temporary files are used to simulate piping between applications. The \fBexec\fR command cannot be used to start an application in the background. .sp When standard input is redirected from an open file using the ``\fB@\0\fIfileId\fR'' notation, the open file is completely read up to its end. This is slightly different than under Windows 95 or NT, where the child application consumes from the open file only as much as it wants. Redirecting to an open file is supported as normal. .RE .TP \fBMacintosh\fR The \fBexec\fR command is not implemented and does not exist under Macintosh. .TP \fBUnix\fR\0\0\0\0\0\0\0 The \fBexec\fR command is fully functional and works as described. .SH "SEE ALSO" open(n) .VE .SH KEYWORDS execute, pipeline, redirection, subprocess 0707010007906d000081a400004ccf0000000a0000000133f371df00001541000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/exit.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) exit.n 1.6 96/03/25 20:13:32 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH exit n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME exit \- End the application .SH SYNOPSIS \fBexit \fR?\fIreturnCode\fR? .BE .SH DESCRIPTION .PP Terminate the process, returning \fIreturnCode\fR to the system as the exit status. If \fIreturnCode\fR isn't specified then it defaults to 0. .SH KEYWORDS exit, process 0707010007906e000081a400004ccf0000000a0000000133f371df0000413b000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/expr.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) expr.n 1.27 97/08/12 11:31:30 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH expr n 8.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME expr \- Evaluate an expression .SH SYNOPSIS \fBexpr \fIarg \fR?\fIarg arg ...\fR? .BE .SH DESCRIPTION .PP Concatenates \fIarg\fR's (adding separator spaces between them), evaluates the result as a Tcl expression, and returns the value. The operators permitted in Tcl expressions are a subset of the operators permitted in C expressions, and they have the same meaning and precedence as the corresponding C operators. Expressions almost always yield numeric results (integer or floating-point values). For example, the expression .CS \fBexpr 8.2 + 6\fR .CE evaluates to 14.2. Tcl expressions differ from C expressions in the way that operands are specified. Also, Tcl expressions support non-numeric operands and string comparisons. .SH OPERANDS .PP A Tcl expression consists of a combination of operands, operators, and parentheses. White space may be used between the operands and operators and parentheses; it is ignored by the expression's instructions. Where possible, operands are interpreted as integer values. Integer values may be specified in decimal (the normal case), in octal (if the first character of the operand is \fB0\fR), or in hexadecimal (if the first two characters of the operand are \fB0x\fR). If an operand does not have one of the integer formats given above, then it is treated as a floating-point number if that is possible. Floating-point numbers may be specified in any of the ways accepted by an ANSI-compliant C compiler (except that the \fBf\fR, \fBF\fR, \fBl\fR, and \fBL\fR suffixes will not be permitted in most installations). For example, all of the following are valid floating-point numbers: 2.1, 3., 6e4, 7.91e+16. If no numeric interpretation is possible, then an operand is left as a string (and only a limited set of operators may be applied to it). .PP Operands may be specified in any of the following ways: .IP [1] As an numeric value, either integer or floating-point. .IP [2] As a Tcl variable, using standard \fB$\fR notation. The variable's value will be used as the operand. .IP [3] As a string enclosed in double-quotes. The expression parser will perform backslash, variable, and command substitutions on the information between the quotes, and use the resulting value as the operand .IP [4] As a string enclosed in braces. The characters between the open brace and matching close brace will be used as the operand without any substitutions. .IP [5] As a Tcl command enclosed in brackets. The command will be executed and its result will be used as the operand. .IP [6] As a mathematical function whose arguments have any of the above forms for operands, such as \fBsin($x)\fR. See below for a list of defined functions. .LP Where substitutions occur above (e.g. inside quoted strings), they are performed by the expression's instructions. However, an additional layer of substitution may already have been performed by the command parser before the expression processor was called. As discussed below, it is usually best to enclose expressions in braces to prevent the command parser from performing substitutions on the contents. .PP For some examples of simple expressions, suppose the variable \fBa\fR has the value 3 and the variable \fBb\fR has the value 6. Then the command on the left side of each of the lines below will produce the value on the right side of the line: .CS .ta 6c \fBexpr 3.1 + $a 6.1 expr 2 + "$a.$b" 5.6 expr 4*[llength "6 2"] 8 expr {{word one} < "word $a"} 0\fR .CE .SH OPERATORS .PP The valid operators are listed below, grouped in decreasing order of precedence: .TP 20 \fB\-\0\0+\0\0~\0\0!\fR Unary minus, unary plus, bit-wise NOT, logical NOT. None of these operands may be applied to string operands, and bit-wise NOT may be applied only to integers. .TP 20 \fB*\0\0/\0\0%\fR Multiply, divide, remainder. None of these operands may be applied to string operands, and remainder may be applied only to integers. The remainder will always have the same sign as the divisor and an absolute value smaller than the divisor. .TP 20 \fB+\0\0\-\fR Add and subtract. Valid for any numeric operands. .TP 20 \fB<<\0\0>>\fR Left and right shift. Valid for integer operands only. A right shift always propagates the sign bit. .TP 20 \fB<\0\0>\0\0<=\0\0>=\fR Boolean less, greater, less than or equal, and greater than or equal. Each operator produces 1 if the condition is true, 0 otherwise. These operators may be applied to strings as well as numeric operands, in which case string comparison is used. .TP 20 \fB==\0\0!=\fR Boolean equal and not equal. Each operator produces a zero/one result. Valid for all operand types. .TP 20 \fB&\fR Bit-wise AND. Valid for integer operands only. .TP 20 \fB^\fR Bit-wise exclusive OR. Valid for integer operands only. .TP 20 \fB|\fR Bit-wise OR. Valid for integer operands only. .TP 20 \fB&&\fR Logical AND. Produces a 1 result if both operands are non-zero, 0 otherwise. Valid for numeric operands only (integers or floating-point). .TP 20 \fB||\fR Logical OR. Produces a 0 result if both operands are zero, 1 otherwise. Valid for numeric operands only (integers or floating-point). .TP 20 \fIx\fB?\fIy\fB:\fIz\fR If-then-else, as in C. If \fIx\fR evaluates to non-zero, then the result is the value of \fIy\fR. Otherwise the result is the value of \fIz\fR. The \fIx\fR operand must have a numeric value. .LP See the C manual for more details on the results produced by each operator. All of the binary operators group left-to-right within the same precedence level. For example, the command .CS \fBexpr 4*2 < 7\fR .CE returns 0. .PP The \fB&&\fR, \fB||\fR, and \fB?:\fR operators have ``lazy evaluation'', just as in C, which means that operands are not evaluated if they are not needed to determine the outcome. For example, in the command .CS \fBexpr {$v ? [a] : [b]}\fR .CE only one of \fB[a]\fR or \fB[b]\fR will actually be evaluated, depending on the value of \fB$v\fR. Note, however, that this is only true if the entire expression is enclosed in braces; otherwise the Tcl parser will evaluate both \fB[a]\fR and \fB[b]\fR before invoking the \fBexpr\fR command. .SH "MATH FUNCTIONS" .PP Tcl supports the following mathematical functions in expressions: .DS .ta 3c 6c 9c \fBacos\fR \fBcos\fR \fBhypot\fR \fBsinh\fR \fBasin\fR \fBcosh\fR \fBlog\fR \fBsqrt\fR \fBatan\fR \fBexp\fR \fBlog10\fR \fBtan\fR \fBatan2\fR \fBfloor\fR \fBpow\fR \fBtanh\fR \fBceil\fR \fBfmod\fR \fBsin\fR .DE Each of these functions invokes the math library function of the same name; see the manual entries for the library functions for details on what they do. Tcl also implements the following functions for conversion between integers and floating-point numbers and the generation of random numbers: .TP \fBabs(\fIarg\fB)\fR Returns the absolute value of \fIarg\fR. \fIArg\fR may be either integer or floating-point, and the result is returned in the same form. .TP \fBdouble(\fIarg\fB)\fR If \fIarg\fR is a floating value, returns \fIarg\fR, otherwise converts \fIarg\fR to floating and returns the converted value. .TP \fBint(\fIarg\fB)\fR If \fIarg\fR is an integer value, returns \fIarg\fR, otherwise converts \fIarg\fR to integer by truncation and returns the converted value. .TP \fBrand()\fR Returns a floating point number from zero to just less than one or, in mathematical terms, the range [0,1). The seed comes from the internal clock of the machine or may be set manual with the srand function. .TP \fBround(\fIarg\fB)\fR If \fIarg\fR is an integer value, returns \fIarg\fR, otherwise converts \fIarg\fR to integer by rounding and returns the converted value. .TP \fBsrand(\fIarg\fB)\fR The \fIarg\fR, which must be an integer, is used to reset the seed for the random number generator. Returns the first random number from that seed. Each interpreter has it's own seed. .PP In addition to these predefined functions, applications may define additional functions using \fBTcl_CreateMathFunc\fR(). .SH "TYPES, OVERFLOW, AND PRECISION" .PP All internal computations involving integers are done with the C type \fIlong\fR, and all internal computations involving floating-point are done with the C type \fIdouble\fR. When converting a string to floating-point, exponent overflow is detected and results in a Tcl error. For conversion to integer from string, detection of overflow depends on the behavior of some routines in the local C library, so it should be regarded as unreliable. In any case, integer overflow and underflow are generally not detected reliably for intermediate results. Floating-point overflow and underflow are detected to the degree supported by the hardware, which is generally pretty reliable. .PP Conversion among internal representations for integer, floating-point, and string operands is done automatically as needed. For arithmetic computations, integers are used until some floating-point number is introduced, after which floating-point is used. For example, .CS \fBexpr 5 / 4\fR .CE returns 1, while .CS \fBexpr 5 / 4.0\fR \fBexpr 5 / ( [string length "abcd"] + 0.0 )\fR .CE both return 1.25. Floating-point values are always returned with a ``\fB.\fR'' or an \fBe\fR so that they will not look like integer values. For example, .CS \fBexpr 20.0/5.0\fR .CE returns \fB4.0\fR, not \fB4\fR. .SH "STRING OPERATIONS" .PP String values may be used as operands of the comparison operators, although the expression evaluator tries to do comparisons as integer or floating-point when it can. If one of the operands of a comparison is a string and the other has a numeric value, the numeric operand is converted back to a string using the C \fIsprintf\fR format specifier \fB%d\fR for integers and \fB%g\fR for floating-point values. For example, the commands .CS \fBexpr {"0x03" > "2"}\fR \fBexpr {"0y" < "0x12"}\fR .CE both return 1. The first comparison is done using integer comparison, and the second is done using string comparison after the second operand is converted to the string \fB18\fR. Because of Tcl's tendency to treat values as numbers whenever possible, it isn't generally a good idea to use operators like \fB==\fR when you really want string comparison and the values of the operands could be arbitrary; it's better in these cases to use the \fBstring compare\fR command instead. .SH "PERFORMANCE CONSIDERATIONS" .VS .PP Enclose expressions in braces for the best speed and the smallest storage requirements. This allows the Tcl bytecode compiler to generate the best code. .PP As mentioned above, expressions are substituted twice: once by the Tcl parser and once by the \fBexpr\fR command. For example, the commands .CS \fBset a 3\fR \fBset b {$a + 2}\fR \fBexpr $b*4\fR .CE return 11, not a multiple of 4. This is because the Tcl parser will first substitute \fB$a + 2\fR for the variable \fBb\fR, then the \fBexpr\fR command will evaluate the expression \fB$a + 2*4\fR. .PP Most expressions do not require a second round of substitutions. Either they are enclosed in braces or, if not, their variable and command substitutions yield numbers or strings that don't themselves require substitutions. However, because a few unbraced expressions need two rounds of substitutions, the bytecode compiler must emit additional instructions to handle this situation. The most expensive code is required for unbraced expressions that contain command substitutions. These expressions must be implemented by generating new code each time the expression is executed. .VE .SH KEYWORDS arithmetic, boolean, compare, expression, fuzzy comparison 0707010007906f000081a400004ccf0000000a0000000133f371df00001650000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/mann/fblocked.n'\" '\" Copyright (c) 1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) fblocked.n 1.6 96/02/23 13:46:30 '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH fblocked n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME fblocked \- Test whether the last input operation exhausted all available input .SH SYNOPSIS \fBfblocked \fIchannelId\fR .BE .SH DESCRIPTION .PP The \fBfblocked\fR command returns 1 if the most recent input operation on \fIchannelId\fR returned less information than requested because all available input was exhausted. For example, if \fBgets\fR is invoked when there are only three characters available for input and no end-of-line sequence, \fBgets\fR returns an empty string and a subsequent call to \fBfblocked\fR will return 1. .PP .SH "SEE ALSO" gets(n), read(n) .SH KEYWORDS blocking, nonblocking 07070100079070000081a400004ccf0000000a0000000133f371df0000315b000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/man/mann/fconfigure.n'\" '\" Copyright (c) 1995-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) fconfigure.n 1.23 96/04/16 08:20:07 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH fconfigure n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME fconfigure \- Set and get options on a channel .SH SYNOPSIS .nf \fBfconfigure \fIchannelId\fR \fBfconfigure \fIchannelId\fR \fIname\fR \fBfconfigure \fIchannelId\fR \fIname value \fR?\fIname value ...\fR? .fi .BE .SH DESCRIPTION .PP The \fBfconfigure\fR command sets and retrieves options for channels. \fIChannelId\fR identifies the channel for which to set or query an option. If no \fIname\fR or \fIvalue\fR arguments are supplied, the command returns a list containing alternating option names and values for the channel. If \fIname\fR is supplied but no \fIvalue\fR then the command returns the current value of the given option. If one or more pairs of \fIname\fR and \fIvalue\fR are supplied, the command sets each of the named options to the corresponding \fIvalue\fR; in this case the return value is an empty string. .PP The options described below are supported for all channels. In addition, each channel type may add options that only it supports. See the manual entry for the command that creates each type of channels for the options that that specific type of channel supports. For example, see the manual entry for the \fBsocket\fR command for its additional options. .TP \fB\-blocking\fR \fIboolean\fR The \fB\-blocking\fR option determines whether I/O operations on the channel can cause the process to block indefinitely. The value of the option must be a proper boolean value. Channels are normally in blocking mode; if a channel is placed into nonblocking mode it will affect the operation of the \fBgets\fR, \fBread\fR, \fBputs\fR, \fBflush\fR, and \fBclose\fR commands; see the documentation for those commands for details. For nonblocking mode to work correctly, the application must be using the Tcl event loop (e.g. by calling \fBTcl_DoOneEvent\fR or invoking the \fBvwait\fR command). .TP \fB\-buffering\fR \fInewValue\fR If \fInewValue\fR is \fBfull\fR then the I/O system will buffer output until its internal buffer is full or until the \fBflush\fR command is invoked. If \fInewValue\fR is \fBline\fR, then the I/O system will automatically flush output for the channel whenever a newline character is output. If \fInewValue\fR is \fBnone\fR, the I/O system will flush automatically after every output operation. The default is for \fB\-buffering\fR to be set to \fBfull\fR except for channels that connect to terminal-like devices; for these channels the initial setting is \fBline\fR. .TP \fB\-buffersize\fR \fInewSize\fR \fINewvalue\fR must be an integer; its value is used to set the size of buffers, in bytes, subsequently allocated for this channel to store input or output. \fINewvalue\fR must be between ten and one million, allowing buffers of ten to one million bytes in size. .TP \fB\-eofchar\fR \fIchar\fR .TP \fB\-eofchar\fR \fB{\fIinChar outChar\fB}\fR This option supports DOS file systems that use Control-z (\ex1a) as an end of file marker. If \fIchar\fR is not an empty string, then this character signals end of file when it is encountered during input. For output, the end of file character is output when the channel is closed. If \fIchar\fR is the empty string, then there is no special end of file character marker. For read-write channels, a two-element list specifies the end of file marker for input and output, respectively. As a convenience, when setting the end-of-file character for a read-write channel you can specify a single value that will apply to both reading and writing. When querying the end-of-file character of a read-write channel, a two-element list will always be returned. The default value for \fB\-eofchar\fR is the empty string in all cases except for files under Windows. In that case the \fB\-eofchar\fR is Control-z (\ex1a) for reading and the empty string for writing. .TP \fB\-translation\fR \fImode\fR .TP \fB\-translation\fR \fB{\fIinMode outMode\fB}\fR In Tcl scripts the end of a line is always represented using a single newline character (\en). However, in actual files and devices the end of a line may be represented differently on different platforms, or even for different devices on the same platform. For example, under UNIX newlines are used in files, whereas carriage-return-linefeed sequences are normally used in network connections. On input (i.e., with \fBgets\fP and \fBread\fP) the Tcl I/O system automatically translates the external end-of-line representation into newline characters. Upon output (i.e., with \fBputs\fP), the I/O system translates newlines to the external end-of-line representation. The default translation mode, \fBauto\fP, handles all the common cases automatically, but the \fB\-translation\fR option provides explicit control over the end of line translations. .RS .PP The value associated with \fB\-translation\fR is a single item for read-only and write-only channels. The value is a two-element list for read-write channels; the read translation mode is the first element of the list, and the write translation mode is the second element. As a convenience, when setting the translation mode for a read-write channel you can specify a single value that will apply to both reading and writing. When querying the translation mode of a read-write channel, a two-element list will always be returned. The following values are currently supported: .TP \fBauto\fR As the input translation mode, \fBauto\fR treats any of newline (\fBlf\fP), carriage return (\fBcr\fP), or carriage return followed by a newline (\fBcrlf\fP) as the end of line representation. The end of line representation can even change from line-to-line, and all cases are translated to a newline. As the output translation mode, \fBauto\fR chooses a platform specific representation; for sockets on all platforms Tcl chooses \fBcrlf\fR, for all Unix flavors, it chooses \fBlf\fR, for the Macintosh platform it chooses \fBcr\fR and for the various flavors of Windows it chooses \fBcrlf\fR. The default setting for \fB\-translation\fR is \fBauto\fR for both input and output. .TP \fBbinary\fR No end-of-line translations are performed. This is nearly identical to \fBlf\fP mode, except that in addition \fBbinary\fP mode also sets the end of file character to the empty string, which disables it. See the description of \fB\-eofchar\fP for more information. .TP \fBcr\fR The end of a line in the underlying file or device is represented by a single carriage return character. As the input translation mode, \fBcr\fP mode converts carriage returns to newline characters. As the output translation mode, \fBcr\fP mode translates newline characters to carriage returns. This mode is typically used on Macintosh platforms. .TP \fBcrlf\fR The end of a line in the underlying file or device is represented by a carriage return character followed by a linefeed character. As the input translation mode, \fBcrlf\fP mode converts carriage-return-linefeed sequences to newline characters. As the output translation mode, \fBcrlf\fP mode translates newline characters to carriage-return-linefeed sequences. This mode is typically used on Windows platforms and for network connections. .TP \fBlf\fR The end of a line in the underlying file or device is represented by a single newline (linefeed) character. In this mode no translations occur during either input or output. This mode is typically used on UNIX platforms. .RE .PP .SH "SEE ALSO" close(n), flush(n), gets(n), puts(n), read(n), socket(n) .SH KEYWORDS blocking, buffering, carriage return, end of line, flushing, linemode, newline, nonblocking, platform, translation 07070100079071000081a400004ccf0000000a0000000133f371e0000023ea000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/fcopy.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) fcopy.n 1.4 97/06/19 11:10:07 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH fcopy n 8.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME fcopy \- Copy data from one channel to another. .SH SYNOPSIS \fBfcopy \fIinchan\fR \fIoutchan\fR ?\fB\-size \fIsize\fR? ?\fB\-command \fIcallback\fR? .BE .SH DESCRIPTION .PP The \fBfcopy\fP command copies data from one I/O channel, \fIinchan\fR to another I/O channel, \fIoutchan\fR. The \fBfcopy\fP command leverages the buffering in the Tcl I/O system to avoid extra copies and to avoid buffering too much data in main memory when copying large files to slow destinations like network sockets. .PP The \fBfcopy\fP command transfers data from \fIinchan\fR until end of file or \fIsize\fP bytes have been transferred. If no \fB\-size\fP argument is given, then the copy goes until end of file. All the data read from \fIinchan\fR is copied to \fIoutchan\fR. Without the \fB\-command\fP option, \fBfcopy\fP blocks until the copy is complete and returns the number of bytes written to \fIoutchan\fR. .PP The \fB\-command\fP argument makes \fBfcopy\fP work in the background. In this case it returns immediately and the \fIcallback\fP is invoked later when the copy completes. The \fIcallback\fP is called with one or two additional arguments that indicates how many bytes were written to \fIoutchan\fR. If an error occurred during the background copy, the second argument is the error string associated with the error. With a background copy, it is not necessary to put \fIinchan\fR or \fIoutchan\fR into non-blocking mode; the \fBfcopy\fP command takes care of that automatically. However, it is necessary to enter the event loop by using the \fBvwait\fP command or by using Tk. .PP You are not allowed to do other I/O operations with \fIinchan\fR or \fIoutchan\fR during a background fcopy. If either \fIinchan\fR or \fIoutchan\fR get closed while the copy is in progress, the current copy is stopped and the command callback is \fInot\fP made. If \fIinchan\fR is closed, then all data already queued for \fIoutchan\fR is written out. .PP Note that \fIinchan\fR can become readable during a background copy. You should turn off any \fBfileevent\fP handlers during a background copy so those handlers do not interfere with the copy. Any I/O attempted by a \fBfileevent\fP handler will get a "channel busy" error. .PP \fBFcopy\fR translates end-of-line sequences in \fIinchan\fR and \fIoutchan\fR according to the \fB\-translation\fR option for these channels. See the manual entry for \fBfconfigure\fR for details on the \fB\-translation\fR option. The translations mean that the number of bytes read from \fIinchan\fR can be different than the number of bytes written to \fIoutchan\fR. Only the number of bytes written to \fIoutchan\fR is reported, either as the return value of a synchronous \fBfcopy\fP or as the argument to the callback for an asynchronous \fBfcopy\fP. .SH EXAMPLE .PP This first example shows how the callback gets passed the number of bytes transferred. It also uses vwait to put the application into the event loop. Of course, this simplified example could be done without the command callback. .DS proc Cleanup {in out bytes {error {}}} { global total set total $bytes close $in close $out if {[string length $error] != 0} { # error occurred during the copy } } set in [open $file1] set out [socket $server $port] fcopy $in $out -command [list Cleanup $in $out] vwait total .DE .PP The second example copies in chunks and tests for end of file in the command callback .DS proc CopyMore {in out chunk bytes {error {}}} { global total done incr total $bytes if {([string length $error] != 0) || [eof $in] { set done $total close $in close $out } else { fcopy $in $out -command [list CopyMore $in $out $chunk] \\ -size $chunk } } set in [open $file1] set out [socket $server $port] set chunk 1024 set total 0 fcopy $in $out -command [list CopyMore $in $out $chunk] -size $chunk vwait done .DE .SH "SEE ALSO" eof(n), fblocked(n), fconfigure(n) .SH KEYWORDS blocking, channel, end of line, end of file, nonblocking, read, translation 07070100079074000081a400004ccf0000000a0000000133f371e000004731000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/file.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) file.n 1.23 97/04/30 11:37:10 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH file n 7.6 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME file \- Manipulate file names and attributes .SH SYNOPSIS \fBfile \fIoption\fR \fIname\fR ?\fIarg arg ...\fR? .BE .SH DESCRIPTION .PP This command provides several operations on a file's name or attributes. \fIName\fR is the name of a file; if it starts with a tilde, then tilde substitution is done before executing the command (see the manual entry for \fBfilename\fR for details). \fIOption\fR indicates what to do with the file name. Any unique abbreviation for \fIoption\fR is acceptable. The valid options are: .TP \fBfile atime \fIname\fR . Returns a decimal string giving the time at which file \fIname\fR was last accessed. The time is measured in the standard POSIX fashion as seconds from a fixed starting time (often January 1, 1970). If the file doesn't exist or its access time cannot be queried then an error is generated. .VS .TP \fBfile attributes \fIname\fR .br \fBfile attributes \fIname\fR ?\fBoption\fR? .br \fBfile attributes \fIname\fR ?\fBoption value option value...\fR? .RS This subcommand returns or sets platform specific values associated with a file. The first form returns a list of the platform specific flags and their values. The second form returns the value for the specific option. The third form sets one or more of the values. The values are as follows: .PP On Unix, \fB-group\fR gets or sets the group name for the file. A group id can be given to the command, but it returns a group name. \fB-owner\fR gets or sets the user name of the owner of the file. The command returns the owner name, but the numerical id can be passed when setting the owner. \fB-permissions\fR sets or retrieves the octal code that chmod(1) uses. This command does not support the symbolic attributes for chmod(1) at this time. .PP On Windows, \fB-archive\fR gives the value or sets or clears the archive attribute of the file. \fB-hidden\fR gives the value or sets or clears the hidden attribute of the file. \fB-longname\fR will expand each path element to its long version. This attribute cannot be set. \fB-readonly\fR gives the value or sets or clears the readonly attribute of the file. \fB-shortname\fR gives a string where every path element is replaced with its short (8.3) version of the name. This attribute cannot be set. \fB-system\fR gives or sets or clears the value of the system attribute of the file. .PP On Macintosh, \fB-creator\fR gives or sets the Finder creator type of the file. \fB-hidden\fR gives or sets or clears the hidden attribute of the file. \fB-readonly\fR gives or sets or clears the readonly attribute of the file. Note that directories can only be locked if File Sharing is turned on. \fB-type\fR gives or sets the Finder file type for the file. .RE .VE .PP \fBfile copy \fR?\fB\-force\fR? ?\fB\-\|\-\fR? \fIsource\fR \fItarget\fR .br \fBfile copy \fR?\fB\-force\fR? ?\fB\-\|\-\fR? \fIsource\fR ?\fIsource\fR ...? \fItargetDir\fR .RS The first form makes a copy of the file or directory \fIsource\fR under the pathname \fItarget\fR. If \fItarget\fR is an existing directory, then the second form is used. The second form makes a copy inside \fItargetDir\fR of each \fIsource\fR file listed. If a directory is specified as a \fIsource\fR, then the contents of the directory will be recursively copied into \fItargetDir\fR. Existing files will not be overwritten unless the \fB\-force\fR option is specified. Trying to overwrite a non-empty directory, overwrite a directory with a file, or a file with a directory will all result in errors even if \fI\-force\fR was specified. Arguments are processed in the order specified, halting at the first error, if any. A \fB\-\|\-\fR marks the end of switches; the argument following the \fB\-\|\-\fR will be treated as a \fIsource\fR even if it starts with a \fB\-\fR. .RE .TP \fBfile delete \fR?\fB\-force\fR? ?\fB\-\|\-\fR? \fIpathname\fR ?\fIpathname\fR ... ? . Removes the file or directory specified by each \fIpathname\fR argument. Non-empty directories will be removed only if the \fB\-force\fR option is specified. Trying to delete a non-existant file is not considered an error. Trying to delete a read-only file will cause the file to be deleted, even if the \fB\-force\fR flags is not specified. Arguments are processed in the order specified, halting at the first error, if any. A \fB\-\|\-\fR marks the end of switches; the argument following the \fB\-\|\-\fR will be treated as a \fIpathname\fR even if it starts with a \fB\-\fR. .TP \fBfile dirname \fIname\fR Returns a name comprised of all of the path components in \fIname\fR excluding the last element. If \fIname\fR is a relative file name and only contains one path element, then returns ``\fB.\fR'' (or ``\fB:\fR'' on the Macintosh). If \fIname\fR refers to a root directory, then the root directory is returned. For example, .RS .CS \fBfile dirname c:/\fR .CE returns \fBc:/\fR. .PP Note that tilde substitution will only be performed if it is necessary to complete the command. For example, .CS \fBfile dirname ~/src/foo.c\fR .CE returns \fB~/src\fR, whereas .CS \fBfile dirname ~\fR .CE returns \fB/home\fR (or something similar). .RE .TP \fBfile executable \fIname\fR . Returns \fB1\fR if file \fIname\fR is executable by the current user, \fB0\fR otherwise. .TP \fBfile exists \fIname\fR . Returns \fB1\fR if file \fIname\fR exists and the current user has search privileges for the directories leading to it, \fB0\fR otherwise. .TP \fBfile extension \fIname\fR . Returns all of the characters in \fIname\fR after and including the last dot in the last element of \fIname\fR. If there is no dot in the last element of \fIname\fR then returns the empty string. .TP \fBfile isdirectory \fIname\fR . Returns \fB1\fR if file \fIname\fR is a directory, \fB0\fR otherwise. .TP \fBfile isfile \fIname\fR . Returns \fB1\fR if file \fIname\fR is a regular file, \fB0\fR otherwise. .TP \fBfile join \fIname\fR ?\fIname ...\fR? . Takes one or more file names and combines them, using the correct path separator for the current platform. If a particular \fIname\fR is relative, then it will be joined to the previous file name argument. Otherwise, any earlier arguments will be discarded, and joining will proceed from the current argument. For example, .RS .CS \fBfile join a b /foo bar\fR .CE returns \fB/foo/bar\fR. .PP Note that any of the names can contain separators, and that the result is always canonical for the current platform: \fB/\fR for Unix and Windows, and \fB:\fR for Macintosh. .RE .TP \fBfile lstat \fIname varName\fR . Same as \fBstat\fR option (see below) except uses the \fIlstat\fR kernel call instead of \fIstat\fR. This means that if \fIname\fR refers to a symbolic link the information returned in \fIvarName\fR is for the link rather than the file it refers to. On systems that don't support symbolic links this option behaves exactly the same as the \fBstat\fR option. .TP \fBfile mkdir \fIdir\fR ?\fIdir\fR ...? . Creates each directory specified. For each pathname \fIdir\fR specified, this command will create all non-existing parent directories as well as \fIdir\fR itself. If an existing directory is specified, then no action is taken and no error is returned. Trying to overwrite an existing file with a directory will result in an error. Arguments are processed in the order specified, halting at the first error, if any. .TP \fBfile mtime \fIname\fR . Returns a decimal string giving the time at which file \fIname\fR was last modified. The time is measured in the standard POSIX fashion as seconds from a fixed starting time (often January 1, 1970). If the file doesn't exist or its modified time cannot be queried then an error is generated. .VS .TP \fBfile nativename \fIname\fR . Returns the platform-specific name of the file. This is useful if the filename is needed to pass to a platform-specific call, such as exec under Windows or AppleScript on the Macintosh. .VE .TP \fBfile owned \fIname\fR . Returns \fB1\fR if file \fIname\fR is owned by the current user, \fB0\fR otherwise. .TP \fBfile pathtype \fIname\fR . Returns one of \fBabsolute\fR, \fBrelative\fR, \fBvolumerelative\fR. If \fIname\fR refers to a specific file on a specific volume, the path type will be \fBabsolute\fR. If \fIname\fR refers to a file relative to the current working directory, then the path type will be \fBrelative\fR. If \fIname\fR refers to a file relative to the current working directory on a specified volume, or to a specific file on the current working volume, then the file type is \fBvolumerelative\fR. .TP \fBfile readable \fIname\fR . Returns \fB1\fR if file \fIname\fR is readable by the current user, \fB0\fR otherwise. .TP \fBfile readlink \fIname\fR . Returns the value of the symbolic link given by \fIname\fR (i.e. the name of the file it points to). If \fIname\fR isn't a symbolic link or its value cannot be read, then an error is returned. On systems that don't support symbolic links this option is undefined. .PP \fBfile rename \fR?\fB\-force\fR? ?\fB\-\|\-\fR? \fIsource\fR \fItarget\fR .br \fBfile rename \fR?\fB\-force\fR? ?\fB\-\|\-\fR? \fIsource\fR ?\fIsource\fR ...? \fItargetDir\fR .RS The first form takes the file or directory specified by pathname \fIsource\fR and renames it to \fItarget\fR, moving the file if the pathname \fItarget\fR specifies a name in a different directory. If \fItarget\fR is an existing directory, then the second form is used. The second form moves each \fIsource\fR file or directory into the directory \fItargetDir\fR. Existing files will not be overwritten unless the \fB\-force\fR option is specified. Trying to overwrite a non-empty directory, overwrite a directory with a file, or a file with a directory will all result in errors. Arguments are processed in the order specified, halting at the first error, if any. A \fB\-\|\-\fR marks the end of switches; the argument following the \fB\-\|\-\fR will be treated as a \fIsource\fR even if it starts with a \fB\-\fR. .RE .TP \fBfile rootname \fIname\fR . Returns all of the characters in \fIname\fR up to but not including the last ``.'' character in the last component of name. If the last component of \fIname\fR doesn't contain a dot, then returns \fIname\fR. .TP \fBfile size \fIname\fR . Returns a decimal string giving the size of file \fIname\fR in bytes. If the file doesn't exist or its size cannot be queried then an error is generated. .TP \fBfile split \fIname\fR . Returns a list whose elements are the path components in \fIname\fR. The first element of the list will have the same path type as \fIname\fR. All other elements will be relative. Path separators will be discarded unless they are needed ensure that an element is unambiguously relative. For example, under Unix .RS .CS \fBfile split /foo/~bar/baz\fR .CE returns \fB/\0\0foo\0\0./~bar\0\0baz\fR to ensure that later commands that use the third component do not attempt to perform tilde substitution. .RE .TP \fBfile stat \fIname varName\fR . Invokes the \fBstat\fR kernel call on \fIname\fR, and uses the variable given by \fIvarName\fR to hold information returned from the kernel call. \fIVarName\fR is treated as an array variable, and the following elements of that variable are set: \fBatime\fR, \fBctime\fR, \fBdev\fR, \fBgid\fR, \fBino\fR, \fBmode\fR, \fBmtime\fR, \fBnlink\fR, \fBsize\fR, \fBtype\fR, \fBuid\fR. Each element except \fBtype\fR is a decimal string with the value of the corresponding field from the \fBstat\fR return structure; see the manual entry for \fBstat\fR for details on the meanings of the values. The \fBtype\fR element gives the type of the file in the same form returned by the command \fBfile type\fR. This command returns an empty string. .TP \fBfile tail \fIname\fR . Returns all of the characters in \fIname\fR after the last directory separator. If \fIname\fR contains no separators then returns \fIname\fR. .TP \fBfile type \fIname\fR . Returns a string giving the type of file \fIname\fR, which will be one of \fBfile\fR, \fBdirectory\fR, \fBcharacterSpecial\fR, \fBblockSpecial\fR, \fBfifo\fR, \fBlink\fR, or \fBsocket\fR. .TP \fBfile volume\fR . Returns the absolute paths to the volumes mounted on the system, as a proper Tcl list. On the Macintosh, this will be a list of the mounted drives, both local and network. N.B. if two drives have the same name, they will both appear on the volume list, but there is currently no way, from Tcl, to access any but the first of these drives. On UNIX, the command will always return "/", since all filesystems are locally mounted. On Windows, it will return a list of the available local drives (e.g. {a:/ c:/}). .TP \fBfile writable \fIname\fR . Returns \fB1\fR if file \fIname\fR is writable by the current user, \fB0\fR otherwise. .SH "PORTABILITY ISSUES" .TP \fBUnix\fR\0\0\0\0\0\0\0 . These commands always operate using the real user and group identifiers, not the effective ones. .SH "SEE ALSO" filename .SH KEYWORDS attributes, copy files, delete files, directory, file, move files, name, rename files, stat 07070100079075000081a400004ccf0000000a0000000133f371e000002628000000a30000000400000000000000000000002700000004reloc/SUNWtcl/8.0/man/mann/fileevent.n'\" '\" Copyright (c) 1994 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) fileevent.n 1.6 96/02/23 13:46:29 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH fileevent n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME fileevent \- Execute a script when a channel becomes readable or writable .SH SYNOPSIS \fBfileevent \fIchannelId \fBreadable \fR?\fIscript\fR? .sp \fBfileevent \fIchannelId \fBwritable \fR?\fIscript\fR? .BE .SH DESCRIPTION .PP This command is used to create \fIfile event handlers\fR. A file event handler is a binding between a channel and a script, such that the script is evaluated whenever the channel becomes readable or writable. File event handlers are most commonly used to allow data to be received from another process on an event-driven basis, so that the receiver can continue to interact with the user while waiting for the data to arrive. If an application invokes \fBgets\fR or \fBread\fR on a blocking channel when there is no input data available, the process will block; until the input data arrives, it will not be able to service other events, so it will appear to the user to ``freeze up''. With \fBfileevent\fR, the process can tell when data is present and only invoke \fBgets\fR or \fBread\fR when they won't block. .PP The \fIchannelId\fR argument to \fBfileevent\fR refers to an open channel, such as the return value from a previous \fBopen\fR or \fBsocket\fR command. If the \fIscript\fR argument is specified, then \fBfileevent\fR creates a new event handler: \fIscript\fR will be evaluated whenever the channel becomes readable or writable (depending on the second argument to \fBfileevent\fR). In this case \fBfileevent\fR returns an empty string. The \fBreadable\fR and \fBwritable\fR event handlers for a file are independent, and may be created and deleted separately. However, there may be at most one \fBreadable\fR and one \fBwritable\fR handler for a file at a given time in a given interpreter. If \fBfileevent\fR is called when the specified handler already exists in the invoking interpreter, the new script replaces the old one. .PP If the \fIscript\fR argument is not specified, \fBfileevent\fR returns the current script for \fIchannelId\fR, or an empty string if there is none. If the \fIscript\fR argument is specified as an empty string then the event handler is deleted, so that no script will be invoked. A file event handler is also deleted automatically whenever its channel is closed or its interpreter is deleted. .PP A channel is considered to be readable if there is unread data available on the underlying device. A channel is also considered to be readable if there is unread data in an input buffer, except in the special case where the most recent attempt to read from the channel was a \fBgets\fR call that could not find a complete line in the input buffer. This feature allows a file to be read a line at a time in nonblocking mode using events. A channel is also considered to be readable if an end of file or error condition is present on the underlying file or device. It is important for \fIscript\fR to check for these conditions and handle them appropriately; for example, if there is no special check for end of file, an infinite loop may occur where \fIscript\fR reads no data, returns, and is immediately invoked again. .PP A channel is considered to be writable if at least one byte of data can be written to the underlying file or device without blocking, or if an error condition is present on the underlying file or device. .PP Event-driven I/O works best for channels that have been placed into nonblocking mode with the \fBfconfigure\fR command. In blocking mode, a \fBputs\fR command may block if you give it more data than the underlying file or device can accept, and a \fBgets\fR or \fBread\fR command will block if you attempt to read more data than is ready; no events will be processed while the commands block. In nonblocking mode \fBputs\fR, \fBread\fR, and \fBgets\fR never block. See the documentation for the individual commands for information on how they handle blocking and nonblocking channels. .PP The script for a file event is executed at global level (outside the context of any Tcl procedure) in the interpreter in which the \fBfileevent\fR command was invoked. If an error occurs while executing the script then the \fBbgerror\fR mechanism is used to report the error. In addition, the file event handler is deleted if it ever returns an error; this is done in order to prevent infinite loops due to buggy handlers. .SH CREDITS .PP \fBfileevent\fR is based on the \fBaddinput\fR command created by Mark Diekhans. .SH "SEE ALSO" bgerror, fconfigure, gets, puts, read .SH KEYWORDS asynchronous I/O, blocking, channel, event handler, nonblocking, readable, script, writable. 07070100079076000081a400004ccf0000000a0000000133f371e10000310a000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/mann/filename.n'\" '\" Copyright (c) 1995-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) filename.n 1.7 96/04/11 17:03:14 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH filename n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME filename \- File name conventions supported by Tcl commands .BE .SH INTRODUCTION .PP All Tcl commands and C procedures that take file names as arguments expect the file names to be in one of three forms, depending on the current platform. On each platform, Tcl supports file names in the standard forms(s) for that platform. In addition, on all platforms, Tcl supports a Unix-like syntax intended to provide a convenient way of constructing simple file names. However, scripts that are intended to be portable should not assume a particular form for file names. Instead, portable scripts must use the \fBfile split\fR and \fBfile join\fR commands to manipulate file names (see the \fBfile\fR manual entry for more details). .SH PATH TYPES .PP File names are grouped into three general types based on the starting point for the path used to specify the file: absolute, relative, and volume-relative. Absolute names are completely qualified, giving a path to the file relative to a particular volume and the root directory on that volume. Relative names are unqualified, giving a path to the file relative to the current working directory. Volume-relative names are partially qualified, either giving the path relative to the root directory on the current volume, or relative to the current directory of the specified volume. The \fBfile pathtype\fR command can be used to determine the type of a given path. .SH PATH SYNTAX .PP The rules for native names depend on the value reported in the Tcl array element \fBtcl_platform(platform)\fR: .TP 10 \fBmac\fR On Apple Macintosh systems, Tcl supports two forms of path names. The normal Mac style names use colons as path separators. Paths may be relative or absolute, and file names may contain any character other than colon. A leading colon causes the rest of the path to be interpreted relative to the current directory. If a path contains a colon that is not at the beginning, then the path is interpreted as an absolute path. Sequences of two or more colons anywhere in the path are used to construct relative paths where \fB::\fR refers to the parent of the current directory, \fB:::\fR refers to the parent of the parent, and so forth. .RS .PP In addition to Macintosh style names, Tcl also supports a subset of Unix-like names. If a path contains no colons, then it is interpreted like a Unix path. Slash is used as the path separator. The file name \fB\&.\fR refers to the current directory, and \fB\&..\fR refers to the parent of the current directory. However, some names like \fB/\fR or \fB/..\fR have no mapping, and are interpreted as Macintosh names. In general, commands that generate file names will return Macintosh style names, but commands that accept file names will take both Macintosh and Unix-style names. .PP The following examples illustrate various forms of path names: .TP 15 \fB:\fR Relative path to the current folder. .TP 15 \fBMyFile\fR Relative path to a file named \fBMyFile\fR in the current folder. .TP 15 \fBMyDisk:MyFile\fR Absolute path to a file named \fBMyFile\fR on the device named \fBMyDisk\fR. .TP 15 \fB:MyDir:MyFile\fR Relative path to a file name \fBMyFile\fR in a folder named \fBMyDir\fR in the current folder. .TP 15 \fB::MyFile\fR Relative path to a file named \fBMyFile\fR in the folder above the current folder. .TP 15 \fB:::MyFile\fR Relative path to a file named \fBMyFile\fR in the folder two levels above the current folder. .TP 15 \fB/MyDisk/MyFile\fR Absolute path to a file named \fBMyFile\fR on the device named \fBMyDisk\fR. .TP 15 \fB\&../MyFile\fR Relative path to a file named \fBMyFile\fR in the folder above the current folder. .RE .TP \fBunix\fR On Unix platforms, Tcl uses path names where the components are separated by slashes. Path names may be relative or absolute, and file names may contain any character other than slash. The file names \fB\&.\fR and \fB\&..\fR are special and refer to the current directory and the parent of the current directory respectively. Multiple adjacent slash characters are interpreted as a single separator. The following examples illustrate various forms of path names: .RS .TP 15 \fB/\fR Absolute path to the root directory. .TP 15 \fB/etc/passwd\fR Absolute path to the file named \fBpasswd\fR in the directory \fBetc\fR in the root directory. .TP 15 \fB\&.\fR Relative path to the current directory. .TP 15 \fBfoo\fR Relative path to the file \fBfoo\fR in the current directory. .TP 15 \fBfoo/bar\fR Relative path to the file \fBbar\fR in the directory \fBfoo\fR in the current directory. .TP 15 \fB\&../foo\fR Relative path to the file \fBfoo\fR in the directory above the current directory. .RE .TP \fBwindows\fR On Microsoft Windows platforms, Tcl supports both drive-relative and UNC style names. Both \fB/\fR and \fB\e\fR may be used as directory separators in either type of name. Drive-relative names consist of an optional drive specifier followed by an absolute or relative path. UNC paths follow the general form \fB\e\eservername\esharename\epath\efile\fR. In both forms, the file names \fB.\fR and \fB..\fR are special and refer to the current directory and the parent of the current directory respectively. The following examples illustrate various forms of path names: .RS .TP 15 \fB\&\e\eHost\eshare/file\fR Absolute UNC path to a file called \fBfile\fR in the root directory of the export point \fBshare\fR on the host \fBHost\fR. .TP 15 \fBc:foo\fR Volume-relative path to a file \fBfoo\fR in the current directory on drive \fBc\fR. .TP 15 \fBc:/foo\fR Absolute path to a file \fBfoo\fR in the root directory of drive \fBc\fR. .TP 15 \fBfoo\ebar\fR Relative path to a file \fBbar\fR in the \fBfoo\fR directory in the current directory on the current volume. .TP 15 \fB\&\efoo\fR Volume-relative path to a file \fBfoo\fR in the root directory of the current volume. .RE .SH TILDE SUBSTITUTION .PP In addition to the file name rules described above, Tcl also supports \fIcsh\fR-style tilde substitution. If a file name starts with a tilde, then the file name will be interpreted as if the first element is replaced with the location of the home directory for the given user. If the tilde is followed immediately by a separator, then the \fB$HOME\fR environment variable is substituted. Otherwise the characters between the tilde and the next separator are taken as a user name, which is used to retrieve the user's home directory for substitution. .PP The Macintosh and Windows platforms do not support tilde substitution when a user name follows the tilde. On these platforms, attempts to use a tilde followed by a user name will generate an error. File names that have a tilde without a user name will be substituted using the \fB$HOME\fR environment variable, just like for Unix. .SH PORTABILITY ISSUES .PP Not all file systems are case sensitive, so scripts should avoid code that depends on the case of characters in a file name. In addition, the character sets allowed on different devices may differ, so scripts should choose file names that do not contain special characters like: \fB<>:"/\e|\fR. The safest approach is to use names consisting of alphanumeric characters only. Also Windows 3.1 only supports file names with a root of no more than 8 characters and an extension of no more than 3 characters. .SH KEYWORDS current directory, absolute file name, relative file name, volume-relative file name, portability 07070100079077000081a400004ccf0000000a0000000133f371e10000173e000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/flush.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) flush.n 1.10 96/08/26 12:59:57 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH flush n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME flush \- Flush buffered output for a channel .SH SYNOPSIS \fBflush \fIchannelId\fR .BE .SH DESCRIPTION .PP Flushes any output that has been buffered for \fIchannelId\fR. \fIChannelId\fR must be a channel identifier such as returned by a previous \fBopen\fR or \fBsocket\fR command, and it must have been opened for writing. If the channel is in blocking mode the command does not return until all the buffered output has been flushed to the channel. If the channel is in nonblocking mode, the command may return before all buffered output has been flushed; the remainder will be flushed in the background as fast as the underlying file or device is able to absorb it. .SH "SEE ALSO" open(n), socket(n) .SH KEYWORDS blocking, buffer, channel, flush, nonblocking, output 07070100079078000081a400004ccf0000000a0000000133f371e100001b42000000a30000000400000000000000000000002100000004reloc/SUNWtcl/8.0/man/mann/for.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) for.n 1.6 97/04/08 17:13:49 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH for n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME for \- ``For'' loop .SH SYNOPSIS \fBfor \fIstart test next body\fR .BE .SH DESCRIPTION .PP \fBFor\fR is a looping command, similar in structure to the C \fBfor\fR statement. The \fIstart\fR, \fInext\fR, and \fIbody\fR arguments must be Tcl command strings, and \fItest\fR is an expression string. The \fBfor\fR command first invokes the Tcl interpreter to execute \fIstart\fR. Then it repeatedly evaluates \fItest\fR as an expression; if the result is non-zero it invokes the Tcl interpreter on \fIbody\fR, then invokes the Tcl interpreter on \fInext\fR, then repeats the loop. The command terminates when \fItest\fR evaluates to 0. If a \fBcontinue\fR command is invoked within \fIbody\fR then any remaining commands in the current execution of \fIbody\fR are skipped; processing continues by invoking the Tcl interpreter on \fInext\fR, then evaluating \fItest\fR, and so on. If a \fBbreak\fR command is invoked within \fIbody\fR or \fInext\fR, then the \fBfor\fR command will return immediately. The operation of \fBbreak\fR and \fBcontinue\fR are similar to the corresponding statements in C. \fBFor\fR returns an empty string. .PP Note: \fItest\fR should almost always be enclosed in braces. If not, variable substitutions will be made before the \fBfor\fR command starts executing, which means that variable changes made by the loop body will not be considered in the expression. This is likely to result in an infinite loop. If \fItest\fR is enclosed in braces, variable substitutions are delayed until the expression is evaluated (before each loop iteration), so changes in the variables will be visible. For an example, try the following script with and without the braces around \fB$x<10\fR: .CS for {set x 0} {$x<10} {incr x} { puts "x is $x" } .CE .SH KEYWORDS for, iteration, looping 07070100079079000081a400004ccf0000000a0000000133f371e100001d77000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/mann/foreach.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) foreach.n 1.6 96/03/25 20:15:14 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH foreach n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME foreach \- Iterate over all elements in one or more lists .SH SYNOPSIS \fBforeach \fIvarname list body\fR .br \fBforeach \fIvarlist1 list1\fR ?\fIvarlist2 list2 ...\fR? \fIbody\fR .BE .SH DESCRIPTION .PP The \fBforeach\fR command implements a loop where the loop variable(s) take on values from one or more lists. In the simplest case there is one loop variable, \fIvarname\fR, and one list, \fIlist\fR, that is a list of values to assign to \fIvarname\fR. The \fIbody\fR argument is a Tcl script. For each element of \fIlist\fR (in order from first to last), \fBforeach\fR assigns the contents of the element to \fIvarname\fR as if the \fBlindex\fR command had been used to extract the element, then calls the Tcl interpreter to execute \fIbody\fR. .PP In the general case there can be more than one value list (e.g., \fIlist1\fR and \fIlist2\fR), and each value list can be associated with a list of loop variables (e.g., \fIvarlist1\fR and \fIvarlist2\fR). During each iteration of the loop the variables of each \fIvarlist\fP are assigned consecutive values from the corresponding \fIlist\fP. Values in each \fIlist\fP are used in order from first to last, and each value is used exactly once. The total number of loop iterations is large enough to use up all the values from all the value lists. If a value list does not contain enough elements for each of its loop variables in each iteration, empty values are used for the missing elements. .PP The \fBbreak\fR and \fBcontinue\fR statements may be invoked inside \fIbody\fR, with the same effect as in the \fBfor\fR command. \fBForeach\fR returns an empty string. .SH EXAMPLES .PP The following loop uses i and j as loop variables to iterate over pairs of elements of a single list. .DS set x {} foreach {i j} {a b c d e f} { lappend x $j $i } # The value of x is "b a d c f e" # There are 3 iterations of the loop. .DE .PP The next loop uses i and j to iterate over two lists in parallel. .DS set x {} foreach i {a b c} j {d e f g} { lappend x $i $j } # The value of x is "a d b e c f {} g" # There are 4 iterations of the loop. .DE .PP The two forms are combined in the following example. .DS set x {} foreach i {a b c} {j k} {d e f g} { lappend x $i $j $k } # The value of x is "a d e b f g c {} {}" # There are 3 iterations of the loop. .DE .SH KEYWORDS foreach, iteration, list, looping 0707010007907a000081a400004ccf0000000a0000000133f371e200003470000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/format.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) format.n 1.11 96/08/26 12:59:57 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH format n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME format \- Format a string in the style of sprintf .SH SYNOPSIS \fBformat \fIformatString \fR?\fIarg arg ...\fR? .BE .SH INTRODUCTION .PP This command generates a formatted string in the same way as the ANSI C \fBsprintf\fR procedure (it uses \fBsprintf\fR in its implementation). \fIFormatString\fR indicates how to format the result, using \fB%\fR conversion specifiers as in \fBsprintf\fR, and the additional arguments, if any, provide values to be substituted into the result. The return value from \fBformat\fR is the formatted string. .SH "DETAILS ON FORMATTING" .PP The command operates by scanning \fIformatString\fR from left to right. Each character from the format string is appended to the result string unless it is a percent sign. If the character is a \fB%\fR then it is not copied to the result string. Instead, the characters following the \fB%\fR character are treated as a conversion specifier. The conversion specifier controls the conversion of the next successive \fIarg\fR to a particular format and the result is appended to the result string in place of the conversion specifier. If there are multiple conversion specifiers in the format string, then each one controls the conversion of one additional \fIarg\fR. The \fBformat\fR command must be given enough \fIarg\fRs to meet the needs of all of the conversion specifiers in \fIformatString\fR. .PP Each conversion specifier may contain up to six different parts: an XPG3 position specifier, a set of flags, a minimum field width, a precision, a length modifier, and a conversion character. Any of these fields may be omitted except for the conversion character. The fields that are present must appear in the order given above. The paragraphs below discuss each of these fields in turn. .PP If the \fB%\fR is followed by a decimal number and a \fB$\fR, as in ``\fB%2$d\fR'', then the value to convert is not taken from the next sequential argument. Instead, it is taken from the argument indicated by the number, where 1 corresponds to the first \fIarg\fR. If the conversion specifier requires multiple arguments because of \fB*\fR characters in the specifier then successive arguments are used, starting with the argument given by the number. This follows the XPG3 conventions for positional specifiers. If there are any positional specifiers in \fIformatString\fR then all of the specifiers must be positional. .PP The second portion of a conversion specifier may contain any of the following flag characters, in any order: .TP 10 \fB\-\fR Specifies that the converted argument should be left-justified in its field (numbers are normally right-justified with leading spaces if needed). .TP 10 \fB+\fR Specifies that a number should always be printed with a sign, even if positive. .TP 10 \fIspace\fR Specifies that a space should be added to the beginning of the number if the first character isn't a sign. .TP 10 \fB0\fR Specifies that the number should be padded on the left with zeroes instead of spaces. .TP 10 \fB#\fR Requests an alternate output form. For \fBo\fR and \fBO\fR conversions it guarantees that the first digit is always \fB0\fR. For \fBx\fR or \fBX\fR conversions, \fB0x\fR or \fB0X\fR (respectively) will be added to the beginning of the result unless it is zero. For all floating-point conversions (\fBe\fR, \fBE\fR, \fBf\fR, \fBg\fR, and \fBG\fR) it guarantees that the result always has a decimal point. For \fBg\fR and \fBG\fR conversions it specifies that trailing zeroes should not be removed. .PP The third portion of a conversion specifier is a number giving a minimum field width for this conversion. It is typically used to make columns line up in tabular printouts. If the converted argument contains fewer characters than the minimum field width then it will be padded so that it is as wide as the minimum field width. Padding normally occurs by adding extra spaces on the left of the converted argument, but the \fB0\fR and \fB\-\fR flags may be used to specify padding with zeroes on the left or with spaces on the right, respectively. If the minimum field width is specified as \fB*\fR rather than a number, then the next argument to the \fBformat\fR command determines the minimum field width; it must be a numeric string. .PP The fourth portion of a conversion specifier is a precision, which consists of a period followed by a number. The number is used in different ways for different conversions. For \fBe\fR, \fBE\fR, and \fBf\fR conversions it specifies the number of digits to appear to the right of the decimal point. For \fBg\fR and \fBG\fR conversions it specifies the total number of digits to appear, including those on both sides of the decimal point (however, trailing zeroes after the decimal point will still be omitted unless the \fB#\fR flag has been specified). For integer conversions, it specifies a minimum number of digits to print (leading zeroes will be added if necessary). For \fBs\fR conversions it specifies the maximum number of characters to be printed; if the string is longer than this then the trailing characters will be dropped. If the precision is specified with \fB*\fR rather than a number then the next argument to the \fBformat\fR command determines the precision; it must be a numeric string. .PP The fifth part of a conversion specifier is a length modifier, which must be \fBh\fR or \fBl\fR. If it is \fBh\fR it specifies that the numeric value should be truncated to a 16-bit value before converting. This option is rarely useful. The \fBl\fR modifier is ignored. .PP The last thing in a conversion specifier is an alphabetic character that determines what kind of conversion to perform. The following conversion characters are currently supported: .TP 10 \fBd\fR Convert integer to signed decimal string. .TP 10 \fBu\fR Convert integer to unsigned decimal string. .TP 10 \fBi\fR Convert integer to signed decimal string; the integer may either be in decimal, in octal (with a leading \fB0\fR) or in hexadecimal (with a leading \fB0x\fR). .TP 10 \fBo\fR Convert integer to unsigned octal string. .TP 10 \fBx\fR or \fBX\fR Convert integer to unsigned hexadecimal string, using digits ``0123456789abcdef'' for \fBx\fR and ``0123456789ABCDEF'' for \fBX\fR). .TP 10 \fBc\fR Convert integer to the 8-bit character it represents. .TP 10 \fBs\fR No conversion; just insert string. .TP 10 \fBf\fR Convert floating-point number to signed decimal string of the form \fIxx.yyy\fR, where the number of \fIy\fR's is determined by the precision (default: 6). If the precision is 0 then no decimal point is output. .TP 10 \fBe\fR or \fBe\fR Convert floating-point number to scientific notation in the form \fIx.yyy\fBe\(+-\fIzz\fR, where the number of \fIy\fR's is determined by the precision (default: 6). If the precision is 0 then no decimal point is output. If the \fBE\fR form is used then \fBE\fR is printed instead of \fBe\fR. .TP 10 \fBg\fR or \fBG\fR If the exponent is less than \-4 or greater than or equal to the precision, then convert floating-point number as for \fB%e\fR or \fB%E\fR. Otherwise convert as for \fB%f\fR. Trailing zeroes and a trailing decimal point are omitted. .TP 10 \fB%\fR No conversion: just insert \fB%\fR. .LP For the numerical conversions the argument being converted must be an integer or floating-point string; format converts the argument to binary and then converts it back to a string according to the conversion specifier. .SH "DIFFERENCES FROM ANSI SPRINTF" .PP The behavior of the format command is the same as the ANSI C \fBsprintf\fR procedure except for the following differences: .IP [1] \fB%p\fR and \fB%n\fR specifiers are not currently supported. .IP [2] For \fB%c\fR conversions the argument must be a decimal string, which will then be converted to the corresponding character value. .IP [3] The \fBl\fR modifier is ignored; integer values are always converted as if there were no modifier present and real values are always converted as if the \fBl\fR modifier were present (i.e. type \fBdouble\fR is used for the internal representation). If the \fBh\fR modifier is specified then integer values are truncated to \fBshort\fR before conversion. .SH KEYWORDS conversion specifier, format, sprintf, string, substitution 0707010007907b000081a400004ccf0000000a0000000133f371e2000019c3000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/gets.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) gets.n 1.13 96/08/26 12:59:58 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH gets n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME gets \- Read a line from a channel .SH SYNOPSIS \fBgets \fIchannelId\fR ?\fIvarName\fR? .BE .SH DESCRIPTION .PP This command reads the next line from \fIchannelId\fR, returns everything in the line up to (but not including) the end-of-line character(s), and discards the end-of-line character(s). If \fIvarName\fR is omitted the line is returned as the result of the command. If \fIvarName\fR is specified then the line is placed in the variable by that name and the return value is a count of the number of characters returned. .PP If end of file occurs while scanning for an end of line, the command returns whatever input is available up to the end of file. If \fIchannelId\fR is in nonblocking mode and there is not a full line of input available, the command returns an empty string and does not consume any input. If \fIvarName\fR is specified and an empty string is returned in \fIvarName\fR because of end-of-file or because of insufficient data in nonblocking mode, then the return count is -1. Note that if \fIvarName\fR is not specified then the end-of-file and no-full-line-available cases can produce the same results as if there were an input line consisting only of the end-of-line character(s). The \fBeof\fR and \fBfblocked\fR commands can be used to distinguish these three cases. .SH "SEE ALSO" eof(n), fblocked(n) .SH KEYWORDS blocking, channel, end of file, end of line, line, nonblocking, read 0707010007907c000081a400004ccf0000000a0000000133f371e200001df2000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/glob.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) glob.n 1.11 96/08/26 12:59:59 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH glob n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME glob \- Return names of files that match patterns .SH SYNOPSIS \fBglob \fR?\fIswitches\fR? \fIpattern \fR?\fIpattern ...\fR? .BE .SH DESCRIPTION .PP This command performs file name ``globbing'' in a fashion similar to the csh shell. It returns a list of the files whose names match any of the \fIpattern\fR arguments. .LP If the initial arguments to \fBglob\fR start with \fB\-\fR then they are treated as switches. The following switches are currently supported: .TP 15 \fB\-nocomplain\fR Allows an empty list to be returned without error; without this switch an error is returned if the result list would be empty. .TP 15 \fB\-\|\-\fR Marks the end of switches. The argument following this one will be treated as a \fIpattern\fR even if it starts with a \fB\-\fR. .PP The \fIpattern\fR arguments may contain any of the following special characters: .TP 10 \fB?\fR Matches any single character. .TP 10 \fB*\fR Matches any sequence of zero or more characters. .TP 10 \fB[\fIchars\fB]\fR Matches any single character in \fIchars\fR. If \fIchars\fR contains a sequence of the form \fIa\fB\-\fIb\fR then any character between \fIa\fR and \fIb\fR (inclusive) will match. .TP 10 \fB\e\fIx\fR Matches the character \fIx\fR. .TP 10 \fB{\fIa\fB,\fIb\fB,\fI...\fR} Matches any of the strings \fIa\fR, \fIb\fR, etc. .LP As with csh, a ``.'' at the beginning of a file's name or just after a ``/'' must be matched explicitly or with a {} construct. In addition, all ``/'' characters must be matched explicitly. .LP If the first character in a \fIpattern\fR is ``~'' then it refers to the home directory for the user whose name follows the ``~''. If the ``~'' is followed immediately by ``/'' then the value of the HOME environment variable is used. .LP The \fBglob\fR command differs from csh globbing in two ways. First, it does not sort its result list (use the \fBlsort\fR command if you want the list sorted). Second, \fBglob\fR only returns the names of files that actually exist; in csh no check for existence is made unless a pattern contains a ?, *, or [] construct. .SH PORTABILITY ISSUES .PP Unlike other Tcl commands that will accept both network and native style names (see the \fBfilename\fR manual entry for details on how native and network names are specified), the \fBglob\fR command only accepts native names. Also, for Windows UNC names, the servername and sharename components of the path may not contain ?, *, or [] constructs. .SH KEYWORDS exist, file, glob, pattern 0707010007907d000081a400004ccf0000000a0000000133f371e2000016a8000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/global.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) global.n 1.6 97/05/18 15:23:09 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH global n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME global \- Access global variables .SH SYNOPSIS \fBglobal \fIvarname \fR?\fIvarname ...\fR? .BE .SH DESCRIPTION .PP This command is ignored unless a Tcl procedure is being interpreted. If so then it declares the given \fIvarname\fR's to be global variables rather than local ones. Global variables are variables in the global namespace. For the duration of the current procedure (and only while executing in the current procedure), any reference to any of the \fIvarname\fRs will refer to the global variable by the same name. .SH "SEE ALSO" namespace(n), variable(n) .SH KEYWORDS global, namespace, procedure, variable 0707010007907e000081a400004ccf0000000a0000000133f371e300002308000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/mann/history.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) history.n 1.11 97/08/07 16:44:49 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH history n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME history \- Manipulate the history list .SH SYNOPSIS \fBhistory \fR?\fIoption\fR? ?\fIarg arg ...\fR? .BE .SH DESCRIPTION .PP The \fBhistory\fR command performs one of several operations related to recently-executed commands recorded in a history list. Each of these recorded commands is referred to as an ``event''. When specifying an event to the \fBhistory\fR command, the following forms may be used: .IP [1] A number: if positive, it refers to the event with that number (all events are numbered starting at 1). If the number is negative, it selects an event relative to the current event (\fB\-1\fR refers to the previous event, \fB\-2\fR to the one before that, and so on). Event \fB0\fP refers to the current event. .IP [2] A string: selects the most recent event that matches the string. An event is considered to match the string either if the string is the same as the first characters of the event, or if the string matches the event in the sense of the \fBstring match\fR command. .PP The \fBhistory\fR command can take any of the following forms: .TP \fBhistory\fR Same as \fBhistory info\fR, described below. .TP \fBhistory add\fI command \fR?\fBexec\fR? Adds the \fIcommand\fR argument to the history list as a new event. If \fBexec\fR is specified (or abbreviated) then the command is also executed and its result is returned. If \fBexec\fR isn't specified then an empty string is returned as result. .TP \fBhistory change\fI newValue\fR ?\fIevent\fR? Replaces the value recorded for an event with \fInewValue\fR. \fIEvent\fR specifies the event to replace, and defaults to the \fIcurrent\fR event (not event \fB\-1\fR). This command is intended for use in commands that implement new forms of history substitution and wish to replace the current event (which invokes the substitution) with the command created through substitution. The return value is an empty string. .TP \fBhistory clear\fR Erase the history list. The current keep limit is retained. The history event numbers are reset. .TP \fBhistory event\fR ?\fIevent\fR? Returns the value of the event given by \fIevent\fR. \fIEvent\fR defaults to \fB\-1\fR. .TP \fBhistory info \fR?\fIcount\fR? Returns a formatted string (intended for humans to read) giving the event number and contents for each of the events in the history list except the current event. If \fIcount\fR is specified then only the most recent \fIcount\fR events are returned. .TP \fBhistory keep \fR?\fIcount\fR? This command may be used to change the size of the history list to \fIcount\fR events. Initially, 20 events are retained in the history list. If \fIcount\fR is not specified, the current keep limit is returned. .TP \fBhistory nextid\fR Returns the number of the next event to be recorded in the history list. It is useful for things like printing the event number in command-line prompts. .TP \fBhistory redo \fR?\fIevent\fR? Re-executes the command indicated by \fIevent\fR and return its result. \fIEvent\fR defaults to \fB\-1\fR. This command results in history revision: see below for details. .SH "HISTORY REVISION" .PP Pre-8.0 Tcl had a complex history revision mechanism. The current mechanism is more limited, and the old history operations \fBsubstitute\fP and \fBwords\fP have been removed. (As a consolation, the \fBclear\fP operation was added.) .PP The history option \fBredo\fR results in much simpler ``history revision''. When this option is invoked then the most recent event is modified to eliminate the history command and replace it with the result of the history command. If you want to redo an event without modifying history, then use the \fBevent\fP operation to retrieve some event, and the \fBadd\fP operation to add it to history and execute it. .SH KEYWORDS event, history, record 0707010007907f000081a400004ccf0000000a0000000133f371e300004373000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/http.n'\" '\" 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. '\" '\" SCCS: @(#) http.n 1.11 97/08/07 16:45:02 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH "Http" n 8.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME Http \- Client-side implementation of the HTTP/1.0 protocol. .SH SYNOPSIS \fBpackage require http ?2.0?\fP .sp \fB::http::config \fI?options?\fR .sp \fB::http::geturl \fIurl ?options?\fR .sp \fB::http::formatQuery \fIlist\fR .sp \fB::http::reset \fItoken\fR .sp \fB::http::wait \fItoken\fR .sp \fB::http::status \fItoken\fR .sp \fB::http::size \fItoken\fR .sp \fB::http::code \fItoken\fR .sp \fB::http::data \fItoken\fR .BE .SH DESCRIPTION .PP The \fBhttp\fR package provides the client side of the HTTP/1.0 protocol. The package implements the GET, POST, and HEAD operations of HTTP/1.0. It allows configuration of a proxy host to get through firewalls. The package is compatible with the \fBSafesock\fR security policy, so it can be used by untrusted applets to do URL fetching from a restricted set of hosts. .PP The \fB::http::geturl\fR procedure does a HTTP transaction. Its \fIoptions \fR determine whether a GET, POST, or HEAD transaction is performed. The return value of \fB::http::geturl\fR is a token for the transaction. The value is also the name of an array in the ::http namespace that contains state information about the transaction. The elements of this array are described in the STATE ARRAY section. .PP If the \fB-command\fP option is specified, then the HTTP operation is done in the background. \fB::http::geturl\fR returns immediately after generating the HTTP request and the callback is invoked when the transaction completes. For this to work, the Tcl event loop must be active. In Tk applications this is always true. For pure-Tcl applications, the caller can use \fB::http::wait\fR after calling \fB::http::geturl\fR to start the event loop. .SH COMMANDS .TP \fB::http::config\fP ?\fIoptions\fR? The \fB::http::config\fR command is used to set and query the name of the proxy server and port, and the User-Agent name used in the HTTP requests. If no options are specified, then the current configuration is returned. If a single argument is specified, then it should be one of the flags described below. In this case the current value of that setting is returned. Otherwise, the options should be a set of flags and values that define the configuration: .RS .TP \fB\-accept\fP \fImimetypes\fP The Accept header of the request. The default is */*, which means that all types of documents are accepted. Otherwise you can supply a comma separated list of mime type patterns that you are willing to receive. For example, "image/gif, image/jpeg, text/*". .TP \fB\-proxyhost\fP \fIhostname\fP The name of the proxy host, if any. If this value is the empty string, the URL host is contacted directly. .TP \fB\-proxyport\fP \fInumber\fP The proxy port number. .TP \fB\-proxyfilter\fP \fIcommand\fP The command is a callback that is made during \fB::http::geturl\fR to determine if a proxy is required for a given host. One argument, a host name, is added to \fIcommand\fR when it is invoked. If a proxy is required, the callback should return a two element list containing the proxy server and proxy port. Otherwise the filter should return an empty list. The default filter returns the values of the \fB\-proxyhost\fR and \fB\-proxyport\fR settings if they are non-empty. .TP \fB\-useragent\fP \fIstring\fP The value of the User-Agent header in the HTTP request. The default is \fB"Tcl http client package 2.0."\fR .RE .TP \fB::http::geturl\fP \fIurl\fP ?\fIoptions\fP? The \fB::http::geturl \fR command is the main procedure in the package. The \fB\-query\fR option causes a POST operation and the \fB\-validate\fR option causes a HEAD operation; otherwise, a GET operation is performed. The \fB::http::geturl\fR command returns a \fItoken\fR value that can be used to get information about the transaction. See the STATE ARRAY section for details. The \fB::http::geturl\fR command blocks until the operation completes, unless the \fB\-command\fR option specifies a callback that is invoked when the HTTP transaction completes. \fB::http::geturl\fR takes several options: .RS .TP \fB\-blocksize\fP \fIsize\fP The blocksize used when reading the URL. At most \fIsize\fR bytes are read at once. After each block, a call to the \fB\-progress\fR callback is made. .TP \fB\-channel\fP \fIname\fP Copy the URL contents to channel \fIname\fR instead of saving it in \fBstate(body)\fR. .TP \fB\-command\fP \fIcallback\fP Invoke \fIcallback\fP after the HTTP transaction completes. This option causes \fB::http::geturl\fP to return immediately. The \fIcallback\fP gets an additional argument that is the \fItoken\fR returned from \fB::http::geturl\fR. This token is the name of an array that is described in the STATE ARRAY section. Here is a template for the callback: .RS .CS proc httpCallback {token} { upvar #0 $token state # Access state as a Tcl array } .CE .RE .TP \fB\-handler\fP \fIcallback\fP Invoke \fIcallback\fP whenever HTTP data is available; if present, nothing else will be done with the HTTP data. This procedure gets two additional arguments: the socket for the HTTP data and the \fItoken\fR returned from \fB::http::geturl\fR. The token is the name of a global array that is described in the STATE ARRAY section. The procedure is expected to return the number of bytes read from the socket. Here is a template for the callback: .RS .CS proc httpHandlerCallback {socket token} { upvar #0 $token state # Access socket, and state as a Tcl array ... (example: set data [read $socket 1000];set nbytes [string length $data]) ... return nbytes } .CE .RE .TP \fB\-headers\fP \fIkeyvaluelist\fP This option is used to add extra headers to the HTTP request. The \fIkeyvaluelist\fR argument must be a list with an even number of elements that alternate between keys and values. The keys become header field names. Newlines are stripped from the values so the header cannot be corrupted. For example, if \fIkeyvaluelist\fR is \fBPragma no-cache\fR then the following header is included in the HTTP request: .CS Pragma: no-cache .CE .TP \fB\-progress\fP \fIcallback\fP The \fIcallback\fR is made after each transfer of data from the URL. The callback gets three additional arguments: the \fItoken\fR from \fB::http::geturl\fR, the expected total size of the contents from the \fBContent-Length\fR meta-data, and the current number of bytes transferred so far. The expected total size may be unknown, in which case zero is passed to the callback. Here is a template for the progress callback: .RS .CS proc httpProgress {token total current} { upvar #0 $token state } .CE .RE .TP \fB\-query\fP \fIquery\fP This flag causes \fB::http::geturl\fR to do a POST request that passes the \fIquery\fR to the server. The \fIquery\fR must be a x-url-encoding formatted query. The \fB::http::formatQuery\fR procedure can be used to do the formatting. .TP \fB\-timeout\fP \fImilliseconds\fP If \fImilliseconds\fR is non-zero, then \fB::http::geturl\fR sets up a timeout to occur after the specified number of milliseconds. A timeout results in a call to \fB::http::reset\fP and to the \fB-command\fP callback, if specified. The return value of \fB::http::status\fP is \fBtimeout\fP after a timeout has occurred. .TP \fB\-validate\fP \fIboolean\fP If \fIboolean\fR is non-zero, then \fB::http::geturl\fR does an HTTP HEAD request. This request returns meta information about the URL, but the contents are not returned. The meta information is available in the \fBstate(meta) \fR variable after the transaction. See the STATE ARRAY section for details. .RE .TP \fB::http::formatQuery\fP \fIkey value\fP ?\fIkey value\fP ...? This procedure does x-url-encoding of query data. It takes an even number of arguments that are the keys and values of the query. It encodes the keys and values, and generates one string that has the proper & and = separators. The result is suitable for the \fB\-query\fR value passed to \fB::http::geturl\fR. .TP \fB::http::reset\fP \fItoken\fP ?\fIwhy\fP? This command resets the HTTP transaction identified by \fItoken\fR, if any. This sets the \fBstate(status)\fP value to \fIwhy\fP, which defaults to \fBreset\fR, and then calls the registered \fB\-command\fR callback. .TP \fB::http::wait\fP \fItoken\fP This is a convenience procedure that blocks and waits for the transaction to complete. This only works in trusted code because it uses \fBvwait\fR. .TP \fB::http::data\fP \fItoken\fP This is a convenience procedure that returns the \fBbody\fP element (i.e., the URL data) of the state array. .TP \fB::http::status\fP \fItoken\fP This is a convenience procedure that returns the \fBstatus\fP element of the state array. .TP \fB::http::code\fP \fItoken\fP This is a convenience procedure that returns the \fBhttp\fP element of the state array. .TP \fB::http::size\fP \fItoken\fP This is a convenience procedure that returns the \fBcurrentsize\fP element of the state array. .SH "STATE ARRAY" The \fB::http::geturl\fR procedure returns a \fItoken\fR that can be used to get to the state of the HTTP transaction in the form of a Tcl array. Use this construct to create an easy-to-use array variable: .CS upvar #0 $token state .CE The following elements of the array are supported: .RS .TP \fBbody\fR The contents of the URL. This will be empty if the \fB\-channel\fR option has been specified. This value is returned by the \fB::http::data\fP command. .TP \fBcurrentsize\fR The current number of bytes fetched from the URL. This value is returned by the \fB::http::size\fP command. .TP \fBerror\fR If defined, this is the error string seen when the HTTP transaction was aborted. .TP \fBhttp\fR The HTTP status reply from the server. This value is returned by the \fB::http::code\fP command. The format of this value is: .RS .CS \fIcode string\fP .CE The \fIcode\fR is a three-digit number defined in the HTTP standard. A code of 200 is OK. Codes beginning with 4 or 5 indicate errors. Codes beginning with 3 are redirection errors. In this case the \fBLocation\fR meta-data specifies a new URL that contains the requested information. .RE .TP \fBmeta\fR The HTTP protocol returns meta-data that describes the URL contents. The \fBmeta\fR element of the state array is a list of the keys and values of the meta-data. This is in a format useful for initializing an array that just contains the meta-data: .RS .CS array set meta $state(meta) .CE Some of the meta-data keys are listed below, but the HTTP standard defines more, and servers are free to add their own. .TP \fBContent-Type\fR The type of the URL contents. Examples include \fBtext/html\fR, \fBimage/gif,\fR \fBapplication/postscript\fR and \fBapplication/x-tcl\fR. .TP \fBContent-Length\fR The advertised size of the contents. The actual size obtained by \fB::http::geturl\fR is available as \fBstate(size)\fR. .TP \fBLocation\fR An alternate URL that contains the requested data. .RE .TP \fBstatus\fR Either \fBok\fR, for successful completion, \fBreset\fR for user-reset, or \fBerror\fR for an error condition. During the transaction this value is the empty string. .TP \fBtotalsize\fR A copy of the \fBContent-Length\fR meta-data value. .TP \fBtype\fR A copy of the \fBContent-Type\fR meta-data value. .TP \fBurl\fR The requested URL. .RE .SH EXAMPLE .DS # Copy a URL to a file and print meta-data proc ::http::copy { url file {chunk 4096} } { set out [open $file w] set token [geturl $url -channel $out -progress ::http::Progress \\ -blocksize $chunk] close $out # This ends the line started by http::Progress puts stderr "" upvar #0 $token state set max 0 foreach {name value} $state(meta) { if {[string length $name] > $max} { set max [string length $name] } if {[regexp -nocase ^location$ $name]} { # Handle URL redirects puts stderr "Location:$value" return [copy [string trim $value] $file $chunk] } } incr max foreach {name value} $state(meta) { puts [format "%-*s %s" $max $name: $value] } return $token } proc ::http::Progress {args} { puts -nonewline stderr . ; flush stderr } .DE .SH "SEE ALSO" safe(n), socket(n), safesock(n) .SH KEYWORDS security policy, socket 07070100079080000081a400004ccf0000000a0000000133f371e300001924000000a30000000400000000000000000000002000000004reloc/SUNWtcl/8.0/man/mann/if.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) if.n 1.7 96/08/26 13:00:00 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH if n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME if \- Execute scripts conditionally .SH SYNOPSIS \fBif \fIexpr1 \fR?\fBthen\fR? \fIbody1 \fBelseif \fIexpr2 \fR?\fBthen\fR? \fIbody2\fR \fBelseif\fR ... ?\fBelse\fR? ?\fIbodyN\fR? .BE .SH DESCRIPTION .PP The \fIif\fR command evaluates \fIexpr1\fR as an expression (in the same way that \fBexpr\fR evaluates its argument). The value of the expression must be a boolean (a numeric value, where 0 is false and anything is true, or a string value such as \fBtrue\fR or \fByes\fR for true and \fBfalse\fR or \fBno\fR for false); if it is true then \fIbody1\fR is executed by passing it to the Tcl interpreter. Otherwise \fIexpr2\fR is evaluated as an expression and if it is true then \fBbody2\fR is executed, and so on. If none of the expressions evaluates to true then \fIbodyN\fR is executed. The \fBthen\fR and \fBelse\fR arguments are optional ``noise words'' to make the command easier to read. There may be any number of \fBelseif\fR clauses, including zero. \fIBodyN\fR may also be omitted as long as \fBelse\fR is omitted too. The return value from the command is the result of the body script that was executed, or an empty string if none of the expressions was non-zero and there was no \fIbodyN\fR. .SH KEYWORDS boolean, conditional, else, false, if, true 07070100079081000081a400004ccf0000000a0000000133f371e300001658000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/incr.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) incr.n 1.5 96/03/25 20:16:58 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH incr n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME incr \- Increment the value of a variable .SH SYNOPSIS \fBincr \fIvarName \fR?\fIincrement\fR? .BE .SH DESCRIPTION .PP Increments the value stored in the variable whose name is \fIvarName\fR. The value of the variable must be an integer. If \fIincrement\fR is supplied then its value (which must be an integer) is added to the value of variable \fIvarName\fR; otherwise 1 is added to \fIvarName\fR. The new value is stored as a decimal string in variable \fIvarName\fR and also returned as result. .SH KEYWORDS add, increment, variable, value 07070100079082000081a400004ccf0000000a0000000133f371e40000311b000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/info.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1997 Sun Microsystems, Inc. '\" Copyright (c) 1993-1997 Bell Labs Innovations for Lucent Technologies '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) info.n 1.17 97/05/19 14:48:52 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH info n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME info \- Return information about the state of the Tcl interpreter .SH SYNOPSIS \fBinfo \fIoption \fR?\fIarg arg ...\fR? .BE .SH DESCRIPTION .PP This command provides information about various internals of the Tcl interpreter. The legal \fIoption\fR's (which may be abbreviated) are: .TP \fBinfo args \fIprocname\fR Returns a list containing the names of the arguments to procedure \fIprocname\fR, in order. \fIProcname\fR must be the name of a Tcl command procedure. .TP \fBinfo body \fIprocname\fR Returns the body of procedure \fIprocname\fR. \fIProcname\fR must be the name of a Tcl command procedure. .TP \fBinfo cmdcount\fR Returns a count of the total number of commands that have been invoked in this interpreter. .TP \fBinfo commands \fR?\fIpattern\fR? If \fIpattern\fR isn't specified, returns a list of names of all the Tcl commands in the current namespace, including both the built-in commands written in C and the command procedures defined using the \fBproc\fR command. If \fIpattern\fR is specified, only those names matching \fIpattern\fR are returned. Matching is determined using the same rules as for \fBstring match\fR. \fIpattern\fR can be a qualified name like \fBFoo::print*\fR. That is, it may specify a particular namespace using a sequence of namespace names separated by \fB::\fRs, and may have pattern matching special characters at the end to specify a set of commands in that namespace. If \fIpattern\fR is a qualified name, the resulting list of command names has each one qualified with the name of the specified namespace. .TP \fBinfo complete \fIcommand\fR Returns 1 if \fIcommand\fR is a complete Tcl command in the sense of having no unclosed quotes, braces, brackets or array element names, If the command doesn't appear to be complete then 0 is returned. This command is typically used in line-oriented input environments to allow users to type in commands that span multiple lines; if the command isn't complete, the script can delay evaluating it until additional lines have been typed to complete the command. .TP \fBinfo default \fIprocname arg varname\fR \fIProcname\fR must be the name of a Tcl command procedure and \fIarg\fR must be the name of an argument to that procedure. If \fIarg\fR doesn't have a default value then the command returns \fB0\fR. Otherwise it returns \fB1\fR and places the default value of \fIarg\fR into variable \fIvarname\fR. .TP \fBinfo exists \fIvarName\fR Returns \fB1\fR if the variable named \fIvarName\fR exists in the current context (either as a global or local variable), returns \fB0\fR otherwise. .TP \fBinfo globals \fR?\fIpattern\fR? If \fIpattern\fR isn't specified, returns a list of all the names of currently-defined global variables. Global variables are variables in the global namespace. If \fIpattern\fR is specified, only those names matching \fIpattern\fR are returned. Matching is determined using the same rules as for \fBstring match\fR. .TP \fBinfo hostname\fR Returns the name of the computer on which this invocation is being executed. .TP \fBinfo level\fR ?\fInumber\fR? If \fInumber\fR is not specified, this command returns a number giving the stack level of the invoking procedure, or 0 if the command is invoked at top-level. If \fInumber\fR is specified, then the result is a list consisting of the name and arguments for the procedure call at level \fInumber\fR on the stack. If \fInumber\fR is positive then it selects a particular stack level (1 refers to the top-most active procedure, 2 to the procedure it called, and so on); otherwise it gives a level relative to the current level (0 refers to the current procedure, -1 to its caller, and so on). See the \fBuplevel\fR command for more information on what stack levels mean. .TP \fBinfo library\fR Returns the name of the library directory in which standard Tcl scripts are stored. This is actually the value of the \fBtcl_library\fR variable and may be changed by setting \fBtcl_library\fR. See the \fBtclvars\fR manual entry for more information. .TP \fBinfo loaded \fR?\fIinterp\fR? Returns a list describing all of the packages that have been loaded into \fIinterp\fR with the \fBload\fR command. Each list element is a sub-list with two elements consisting of the name of the file from which the package was loaded and the name of the package. For statically-loaded packages the file name will be an empty string. If \fIinterp\fR is omitted then information is returned for all packages loaded in any interpreter in the process. To get a list of just the packages in the current interpreter, specify an empty string for the \fIinterp\fR argument. .TP \fBinfo locals \fR?\fIpattern\fR? If \fIpattern\fR isn't specified, returns a list of all the names of currently-defined local variables, including arguments to the current procedure, if any. Variables defined with the \fBglobal\fR and \fBupvar\fR commands will not be returned. If \fIpattern\fR is specified, only those names matching \fIpattern\fR are returned. Matching is determined using the same rules as for \fBstring match\fR. .TP \fBinfo nameofexecutable\fR Returns the full path name of the binary file from which the application was invoked. If Tcl was unable to identify the file, then an empty string is returned. .TP \fBinfo patchlevel\fR Returns the value of the global variable \fBtcl_patchLevel\fR; see the \fBtclvars\fR manual entry for more information. .TP \fBinfo procs \fR?\fIpattern\fR? If \fIpattern\fR isn't specified, returns a list of all the names of Tcl command procedures in the current namespace. If \fIpattern\fR is specified, only those procedure names in the current namespace matching \fIpattern\fR are returned. Matching is determined using the same rules as for \fBstring match\fR. .TP \fBinfo script\fR If a Tcl script file is currently being evaluated (i.e. there is a call to \fBTcl_EvalFile\fR active or there is an active invocation of the \fBsource\fR command), then this command returns the name of the innermost file being processed. Otherwise the command returns an empty string. .TP \fBinfo sharedlibextension\fR Returns the extension used on this platform for the names of files containing shared libraries (for example, \fB.so\fR under Solaris). If shared libraries aren't supported on this platform then an empty string is returned. .TP \fBinfo tclversion\fR Returns the value of the global variable \fBtcl_version\fR; see the \fBtclvars\fR manual entry for more information. .TP \fBinfo vars\fR ?\fIpattern\fR? If \fIpattern\fR isn't specified, returns a list of all the names of currently-visible variables. This includes locals and currently-visible globals. If \fIpattern\fR is specified, only those names matching \fIpattern\fR are returned. Matching is determined using the same rules as for \fBstring match\fR. \fIpattern\fR can be a qualified name like \fBFoo::option*\fR. That is, it may specify a particular namespace using a sequence of namespace names separated by \fB::\fRs, and may have pattern matching special characters at the end to specify a set of variables in that namespace. If \fIpattern\fR is a qualified name, the resulting list of variable names has each matching namespace variable qualified with the name of its namespace. .SH KEYWORDS command, information, interpreter, level, namespace, procedure, variable 07070100079083000081a400004ccf0000000a0000000133f371e40000782a000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/interp.n'\" '\" Copyright (c) 1995-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) interp.n 1.35 97/07/31 18:04:06 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH interp n 7.6 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME interp \- Create and manipulate Tcl interpreters .SH SYNOPSIS \fBinterp \fIoption \fR?\fIarg arg ...\fR? .BE .SH DESCRIPTION .PP This command makes it possible to create one or more new Tcl interpreters that co-exist with the creating interpreter in the same application. The creating interpreter is called the \fImaster\fR and the new interpreter is called a \fIslave\fR. A master can create any number of slaves, and each slave can itself create additional slaves for which it is master, resulting in a hierarchy of interpreters. .PP Each interpreter is independent from the others: it has its own name space for commands, procedures, and global variables. A master interpreter may create connections between its slaves and itself using a mechanism called an \fIalias\fR. An \fIalias\fR is a command in a slave interpreter which, when invoked, causes a command to be invoked in its master interpreter or in another slave interpreter. The only other connections between interpreters are through environment variables (the \fBenv\fR variable), which are normally shared among all interpreters in the application. Note that the name space for files (such as the names returned by the \fBopen\fR command) is no longer shared between interpreters. Explicit commands are provided to share files and to transfer references to open files from one interpreter to another. .PP The \fBinterp\fR command also provides support for \fIsafe\fR interpreters. A safe interpreter is a slave whose functions have been greatly restricted, so that it is safe to execute untrusted scripts without fear of them damaging other interpreters or the application's environment. For example, all IO channel creation commands and subprocess creation commands are made inaccessible to safe interpreters. .VS See SAFE INTERPRETERS below for more information on what features are present in a safe interpreter. The dangerous functionality is not removed from the safe interpreter; instead, it is \fIhidden\fR, so that only trusted interpreters can obtain access to it. For a detailed explanation of hidden commands, see HIDDEN COMMANDS, below. The alias mechanism can be used for protected communication (analogous to a kernel call) between a slave interpreter and its master. See ALIAS INVOCATION, below, for more details on how the alias mechanism works. .VE .PP A qualified interpreter name is a proper Tcl lists containing a subset of its ancestors in the interpreter hierarchy, terminated by the string naming the interpreter in its immediate master. Interpreter names are relative to the interpreter in which they are used. For example, if \fBa\fR is a slave of the current interpreter and it has a slave \fBa1\fR, which in turn has a slave \fBa11\fR, the qualified name of \fBa11\fR in \fBa\fR is the list \fBa1 a11\fR. .PP The \fBinterp\fR command, described below, accepts qualified interpreter names as arguments; the interpreter in which the command is being evaluated can always be referred to as \fB{}\fR (the empty list or string). Note that it is impossible to refer to a master (ancestor) interpreter by name in a slave interpreter except through aliases. Also, there is no global name by which one can refer to the first interpreter created in an application. Both restrictions are motivated by safety concerns. .VS .SH "THE INTERP COMMAND" .PP .VE The \fBinterp\fR command is used to create, delete, and manipulate slave interpreters, and to share or transfer channels between interpreters. It can have any of several forms, depending on the \fIoption\fR argument: .TP \fBinterp \fBalias \fIsrcPath \fIsrcCmd\fR Returns a Tcl list whose elements are the \fItargetCmd\fR and \fIarg\fRs associated with the alias named \fIsrcCmd\fR (all of these are the values specified when the alias was created; it is possible that the actual source command in the slave is different from \fIsrcCmd\fR if it was renamed). .TP \fBinterp \fBalias \fIsrcPath \fIsrcCmd\fR \fB{}\fR Deletes the alias for \fIsrcCmd\fR in the slave interpreter identified by \fIsrcPath\fR. \fIsrcCmd\fR refers to the name under which the alias was created; if the source command has been renamed, the renamed command will be deleted. .TP \fBinterp \fBalias \fIsrcPath \fIsrcCmd\fR \fItargetPath \fItargetCmd \fR?\fIarg arg ...\fR? This command creates an alias between one slave and another (see the \fBalias\fR slave command below for creating aliases between a slave and its master). In this command, either of the slave interpreters may be anywhere in the hierarchy of interpreters under the interpreter invoking the command. \fISrcPath\fR and \fIsrcCmd\fR identify the source of the alias. \fISrcPath\fR is a Tcl list whose elements select a particular interpreter. For example, ``\fBa b\fR'' identifies an interpreter \fBb\fR, which is a slave of interpreter \fBa\fR, which is a slave of the invoking interpreter. An empty list specifies the interpreter invoking the command. \fIsrcCmd\fR gives the name of a new command, which will be created in the source interpreter. \fITargetPath\fR and \fItargetCmd\fR specify a target interpreter and command, and the \fIarg\fR arguments, if any, specify additional arguments to \fItargetCmd\fR which are prepended to any arguments specified in the invocation of \fIsrcCmd\fR. \fITargetCmd\fR may be undefined at the time of this call, or it may already exist; it is not created by this command. The alias arranges for the given target command to be invoked in the target interpreter whenever the given source command is invoked in the source interpreter. See ALIAS INVOCATION below for more details. .TP \fBinterp \fBaliases \fR?\fIpath\fR? This command returns a Tcl list of the names of all the source commands for aliases defined in the interpreter identified by \fIpath\fR. .TP \fBinterp \fBcreate \fR?\fB\-safe\fR? ?\fB\-\|\-\fR? ?\fIpath\fR? Creates a slave interpreter identified by \fIpath\fR and a new command, called a \fIslave command\fR. The name of the slave command is the last component of \fIpath\fR. The new slave interpreter and the slave command are created in the interpreter identified by the path obtained by removing the last component from \fIpath\fR. For example, if \fIpath is \fBa b c\fR then a new slave interpreter and slave command named \fBc\fR are created in the interpreter identified by the path \fBa b\fR. The slave command may be used to manipulate the new interpreter as described below. If \fIpath\fR is omitted, Tcl creates a unique name of the form \fBinterp\fIx\fR, where \fIx\fR is an integer, and uses it for the interpreter and the slave command. If the \fB\-safe\fR switch is specified (or if the master interpreter is a safe interpreter), the new slave interpreter will be created as a safe interpreter with limited functionality; otherwise the slave will include the full set of Tcl built-in commands and variables. The \fB\-\|\-\fR switch can be used to mark the end of switches; it may be needed if \fIpath\fR is an unusual value such as \fB\-safe\fR. The result of the command is the name of the new interpreter. The name of a slave interpreter must be unique among all the slaves for its master; an error occurs if a slave interpreter by the given name already exists in this master. .TP \fBinterp \fBdelete \fR?\fIpath ...?\fR Deletes zero or more interpreters given by the optional \fIpath\fR arguments, and for each interpreter, it also deletes its slaves. The command also deletes the slave command for each interpreter deleted. For each \fIpath\fR argument, if no interpreter by that name exists, the command raises an error. .TP \fBinterp \fBeval \fIpath arg \fR?\fIarg ...\fR? This command concatenates all of the \fIarg\fR arguments in the same fashion as the \fBconcat\fR command, then evaluates the resulting string as a Tcl script in the slave interpreter identified by \fIpath\fR. The result of this evaluation (including error information such as the \fBerrorInfo\fR and \fBerrorCode\fR variables, if an error occurs) is returned to the invoking interpreter. .TP \fBinterp \fBexists \fIpath\fR Returns \fB1\fR if a slave interpreter by the specified \fIpath\fR exists in this master, \fB0\fR otherwise. If \fIpath\fR is omitted, the invoking interpreter is used. .VS BR .TP \fBinterp \fBexpose \fIpath\fR \fIhiddenName\fR ?\fIexposedCmdName\fR? Makes the hidden command \fIhiddenName\fR exposed, eventually bringing it back under a new \fIexposedCmdName\fR name (this name is currently accepted only if it is a valid global name space name without any ::), in the interpreter denoted by \fIpath\fR. If an exposed command with the targetted name already exists, this command fails. Hidden commands are explained in more detail in HIDDEN COMMANDS, below. .TP \fBinterp \fBhide \fIpath\fR \fIexposedCmdName\fR ?\fIhiddenCmdName\fR? Makes the exposed command \fIexposedCmdName\fR hidden, renaming it to the hidden command \fIhiddenCmdName\fR, or keeping the same name if \fIhiddenCmdName\fR is not given, in the interpreter denoted by \fIpath\fR. If a hidden command with the targetted name already exists, this command fails. Currently both \fIexposedCmdName\fR and \fIhiddenCmdName\fR can not contain namespace qualifiers, or an error is raised. Commands to be hidden by \fBinterp hide\fR are looked up in the global namespace even if the current namespace is not the global one. This prevents slaves from fooling a master interpreter into hiding the wrong command, by making the current namespace be different from the global one. Hidden commands are explained in more detail in HIDDEN COMMANDS, below. .TP \fBinterp \fBhidden \fIpath\fR Returns a list of the names of all hidden commands in the interpreter identified by \fIpath\fR. .TP \fBinterp \fBinvokehidden\fR \fIpath\fR ?\fB-global\fR \fIhiddenCmdName\fR ?\fIarg ...\fR? Invokes the hidden command \fIhiddenCmdName\fR with the arguments supplied in the interpreter denoted by \fIpath\fR. No substitutions or evaluation are applied to the arguments. If the \fB-global\fR flag is present, the hidden command is invoked at the global level in the target interpreter; otherwise it is invoked at the current call frame and can access local variables in that and outer call frames. Hidden commands are explained in more detail in HIDDEN COMMANDS, below. .VE .TP \fBinterp \fBissafe\fR ?\fIpath\fR? Returns \fB1\fR if the interpreter identified by the specified \fIpath\fR is safe, \fB0\fR otherwise. .VS BR .TP \fBinterp \fBmarktrusted\fR \fIpath\fR Marks the interpreter identified by \fIpath\fR as trusted. Does not expose the hidden commands. This command can only be invoked from a trusted interpreter. The command has no effect if the interpreter identified by \fIpath\fR is already trusted. .VE .TP \fBinterp \fBshare\fR \fIsrcPath channelId destPath\fR Causes the IO channel identified by \fIchannelId\fR to become shared between the interpreter identified by \fIsrcPath\fR and the interpreter identified by \fIdestPath\fR. Both interpreters have the same permissions on the IO channel. Both interpreters must close it to close the underlying IO channel; IO channels accessible in an interpreter are automatically closed when an interpreter is destroyed. .TP \fBinterp \fBslaves\fR ?\fIpath\fR? Returns a Tcl list of the names of all the slave interpreters associated with the interpreter identified by \fIpath\fR. If \fIpath\fR is omitted, the invoking interpreter is used. .TP \fBinterp \fBtarget \fIpath alias\fR Returns a Tcl list describing the target interpreter for an alias. The alias is specified with an interpreter path and source command name, just as in \fBinterp alias\fR above. The name of the target interpreter is returned as an interpreter path, relative to the invoking interpreter. If the target interpreter for the alias is the invoking interpreter then an empty list is returned. If the target interpreter for the alias is not the invoking interpreter or one of its descendants then an error is generated. The target command does not have to be defined at the time of this invocation. .TP \fBinterp \fBtransfer\fR \fIsrcPath channelId destPath\fR Causes the IO channel identified by \fIchannelId\fR to become available in the interpreter identified by \fIdestPath\fR and unavailable in the interpreter identified by \fIsrcPath\fR. .SH "SLAVE COMMAND" .PP For each slave interpreter created with the \fBinterp\fR command, a new Tcl command is created in the master interpreter with the same name as the new interpreter. This command may be used to invoke various operations on the interpreter. It has the following general form: .CS \fIslave command \fR?\fIarg arg ...\fR? .CE \fISlave\fR is the name of the interpreter, and \fIcommand\fR and the \fIarg\fRs determine the exact behavior of the command. The valid forms of this command are: .TP \fIslave \fBaliases\fR Returns a Tcl list whose elements are the names of all the aliases in \fIslave\fR. The names returned are the \fIsrcCmd\fR values used when the aliases were created (which may not be the same as the current names of the commands, if they have been renamed). .TP \fIslave \fBalias \fIsrcCmd\fR Returns a Tcl list whose elements are the \fItargetCmd\fR and \fIarg\fRs associated with the alias named \fIsrcCmd\fR (all of these are the values specified when the alias was created; it is possible that the actual source command in the slave is different from \fIsrcCmd\fR if it was renamed). .TP \fIslave \fBalias \fIsrcCmd \fB{}\fR Deletes the alias for \fIsrcCmd\fR in the slave interpreter. \fIsrcCmd\fR refers to the name under which the alias was created; if the source command has been renamed, the renamed command will be deleted. .TP \fIslave \fBalias \fIsrcCmd targetCmd \fR?\fIarg ..\fR? Creates an alias such that whenever \fIsrcCmd\fR is invoked in \fIslave\fR, \fItargetCmd\fR is invoked in the master. The \fIarg\fR arguments will be passed to \fItargetCmd\fR as additional arguments, prepended before any arguments passed in the invocation of \fIsrcCmd\fR. See ALIAS INVOCATION below for details. .TP \fIslave \fBeval \fIarg \fR?\fIarg ..\fR? This command concatenates all of the \fIarg\fR arguments in the same fashion as the \fBconcat\fR command, then evaluates the resulting string as a Tcl script in \fIslave\fR. The result of this evaluation (including error information such as the \fBerrorInfo\fR and \fBerrorCode\fR variables, if an error occurs) is returned to the invoking interpreter. .VS BR .TP \fIslave \fBexpose \fIhiddenName \fR?\fIexposedCmdName\fR? This command exposes the hidden command \fIhiddenName\fR, eventually bringing it back under a new \fIexposedCmdName\fR name (this name is currently accepted only if it is a valid global name space name without any ::), in \fIslave\fR. If an exposed command with the targetted name already exists, this command fails. For more details on hidden commands, see HIDDEN COMMANDS, below. .TP \fIslave \fBhide \fIexposedCmdName\fR ?\fIhiddenCmdName\fR? This command hides the exposed command \fIexposedCmdName\fR, renaming it to the hidden command \fIhiddenCmdName\fR, or keeping the same name if the the argument is not given, in the \fIslave\fR interpreter. If a hidden command with the targetted name already exists, this command fails. Currently both \fIexposedCmdName\fR and \fIhiddenCmdName\fR can not contain namespace qualifiers, or an error is raised. Commands to be hidden are looked up in the global namespace even if the current namespace is not the global one. This prevents slaves from fooling a master interpreter into hiding the wrong command, by making the current namespace be different from the global one. For more details on hidden commands, see HIDDEN COMMANDS, below. .TP \fIslave \fBhidden\fR Returns a list of the names of all hidden commands in \fIslave\fR. .TP \fIslave \fBinvokehidden\fR ?\fB-global\fR \fIhiddenName \fR?\fIarg ..\fR? This command invokes the hidden command \fIhiddenName\fR with the supplied arguments, in \fIslave\fR. No substitutions or evaluations are applied to the arguments. If the \fB-global\fR flag is given, the command is invoked at the global level in the slave; otherwise it is invoked at the current call frame and can access local variables in that or outer call frames. For more details on hidden commands, see HIDDEN COMMANDS, below. .VE .TP \fIslave \fBissafe\fR Returns \fB1\fR if the slave interpreter is safe, \fB0\fR otherwise. .VS BR .TP \fIslave \fBmarktrusted\fR Marks the slave interpreter as trusted. Can only be invoked by a trusted interpreter. This command does not expose any hidden commands in the slave interpreter. The command has no effect if the slave is already trusted. .VE .SH "SAFE INTERPRETERS" .PP A safe interpreter is one with restricted functionality, so that is safe to execute an arbitrary script from your worst enemy without fear of that script damaging the enclosing application or the rest of your computing environment. In order to make an interpreter safe, certain commands and variables are removed from the interpreter. For example, commands to create files on disk are removed, and the \fBexec\fR command is removed, since it could be used to cause damage through subprocesses. Limited access to these facilities can be provided, by creating aliases to the master interpreter which check their arguments carefully and provide restricted access to a safe subset of facilities. For example, file creation might be allowed in a particular subdirectory and subprocess invocation might be allowed for a carefully selected and fixed set of programs. .PP A safe interpreter is created by specifying the \fB\-safe\fR switch to the \fBinterp create\fR command. Furthermore, any slave created by a safe interpreter will also be safe. .PP A safe interpreter is created with exactly the following set of built-in commands: .DS .ta 1.2i 2.4i 3.6i \fBafter append array break case catch clock close concat continue eof error eval expr fblocked fileevent flush for foreach format gets global history if incr info interp join lappend lindex linsert list llength lower lrange lreplace lsearch lsort package pid proc puts read rename return scan seek set split string subst switch tell trace unset update uplevel upvar vwait while\fR .DE .VS BR The following commands are hidden by \fBinterp create\fR when it creates a safe interpreter: .DS .ta 1.2i 2.4i 3.6i \fBcd exec exit fconfigure file glob load open pwd socket source vwait\fR .DE These commands can be recreated later as Tcl procedures or aliases, or re-exposed by \fBinterp expose\fR. .VE .PP In addition, the \fBenv\fR variable is not present in a safe interpreter, so it cannot share environment variables with other interpreters. The \fBenv\fR variable poses a security risk, because users can store sensitive information in an environment variable. For example, the PGP manual recommends storing the PGP private key protection password in the environment variable \fIPGPPASS\fR. Making this variable available to untrusted code executing in a safe interpreter would incur a security risk. .PP If extensions are loaded into a safe interpreter, they may also restrict their own functionality to eliminate unsafe commands. For a discussion of management of extensions for safety see the manual entries for \fBSafe\-Tcl\fR and the \fBload\fR Tcl command. .SH "ALIAS INVOCATION" .PP The alias mechanism has been carefully designed so that it can be used safely when an untrusted script is executing in a safe slave and the target of the alias is a trusted master. The most important thing in guaranteeing safety is to ensure that information passed from the slave to the master is never evaluated or substituted in the master; if this were to occur, it would enable an evil script in the slave to invoke arbitrary functions in the master, which would compromise security. .PP When the source for an alias is invoked in the slave interpreter, the usual Tcl substitutions are performed when parsing that command. These substitutions are carried out in the source interpreter just as they would be for any other command invoked in that interpreter. The command procedure for the source command takes its arguments and merges them with the \fItargetCmd\fR and \fIarg\fRs for the alias to create a new array of arguments. If the words of \fIsrcCmd\fR were ``\fIsrcCmd arg1 arg2 ... argN\fR'', the new set of words will be ``\fItargetCmd arg arg ... arg arg1 arg2 ... argN\fR'', where \fItargetCmd\fR and \fIarg\fRs are the values supplied when the alias was created. \fITargetCmd\fR is then used to locate a command procedure in the target interpreter, and that command procedure is invoked with the new set of arguments. An error occurs if there is no command named \fItargetCmd\fR in the target interpreter. No additional substitutions are performed on the words: the target command procedure is invoked directly, without going through the normal Tcl evaluation mechanism. Substitutions are thus performed on each word exactly once: \fItargetCmd\fR and \fIargs\fR were substituted when parsing the command that created the alias, and \fIarg1 - argN\fR are substituted when the alias's source command is parsed in the source interpreter. .PP When writing the \fItargetCmd\fRs for aliases in safe interpreters, it is very important that the arguments to that command never be evaluated or substituted, since this would provide an escape mechanism whereby the slave interpreter could execute arbitrary code in the master. This in turn would compromise the security of the system. .VS .SH "HIDDEN COMMANDS" .PP Safe interpreters greatly restrict the functionality available to Tcl programs executing within them. Allowing the untrusted Tcl program to have direct access to this functionality is unsafe, because it can be used for a variety of attacks on the environment. However, there are times when there is a legitimate need to use the dangerous functionality in the context of the safe interpreter. For example, sometimes a program must be \fBsource\fRd into the interpreter. Another example is Tk, where windows are bound to the hierarchy of windows for a specific interpreter; some potentially dangerous functions, e.g. window management, must be performed on these windows within the interpreter context. .PP The \fBinterp\fR command provides a solution to this problem in the form of \fIhidden commands\fR. Instead of removing the dangerous commands entirely from a safe interpreter, these commands are hidden so they become unavailable to Tcl scripts executing in the interpreter. However, such hidden commands can be invoked by any trusted ancestor of the safe interpreter, in the context of the safe interpreter, using \fBinterp invoke\fR. Hidden commands and exposed commands reside in separate name spaces. It is possible to define a hidden command and an exposed command by the same name within one interpreter. .PP Hidden commands in a slave interpreter can be invoked in the body of procedures called in the master during alias invocation. For example, an alias for \fBsource\fR could be created in a slave interpreter. When it is invoked in the slave interpreter, a procedure is called in the master interpreter to check that the operation is allowable (e.g. it asks to source a file that the slave interpreter is allowed to access). The procedure then it invokes the hidden \fBsource\fR command in the slave interpreter to actually source in the contents of the file. Note that two commands named \fBsource\fR exist in the slave interpreter: the alias, and the hidden command. .PP Because a master interpreter may invoke a hidden command as part of handling an alias invocation, great care must be taken to avoid evaluating any arguments passed in through the alias invocation. Otherwise, malicious slave interpreters could cause a trusted master interpreter to execute dangerous commands on their behalf. See the section on ALIAS INVOCATION for a more complete discussion of this topic. To help avoid this problem, no substitutions or evaluations are applied to arguments of \fBinterp invokehidden\fR. .PP Safe interpreters are not allowed to invoke hidden commands in themselves or in their descendants. This prevents safe slaves from gaining access to hidden functionality in themselves or their descendants. .PP The set of hidden commands in an interpreter can be manipulated by a trusted interpreter using \fBinterp expose\fR and \fBinterp hide\fR. The \fBinterp expose\fR command moves a hidden command to the set of exposed commands in the interpreter identified by \fIpath\fR, potentially renaming the command in the process. If an exposed command by the targetted name already exists, the operation fails. Similarly, \fBinterp hide\fR moves an exposed command to the set of hidden commands in that interpreter. Safe interpreters are not allowed to move commands between the set of hidden and exposed commands, in either themselves or their descendants. .PP Currently, the names of hidden commands cannot contain namespace qualifiers, and you must first rename a command in a namespace to the global namespace before you can hide it. Commands to be hidden by \fBinterp hide\fR are looked up in the global namespace even if the current namespace is not the global one. This prevents slaves from fooling a master interpreter into hiding the wrong command, by making the current namespace be different from the global one. .VE .SH CREDITS .PP This mechanism is based on the Safe-Tcl prototype implemented by Nathaniel Borenstein and Marshall Rose. .SH "SEE ALSO" load(n), safe(n), Tcl_CreateSlave(3) .SH KEYWORDS alias, master interpreter, safe interpreter, slave interpreter 07070100079084000081a400004ccf0000000a0000000133f371e4000015f6000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/join.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) join.n 1.5 96/03/25 20:17:46 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH join n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME join \- Create a string by joining together list elements .SH SYNOPSIS \fBjoin \fIlist \fR?\fIjoinString\fR? .BE .SH DESCRIPTION .PP The \fIlist\fR argument must be a valid Tcl list. This command returns the string formed by joining all of the elements of \fIlist\fR together with \fIjoinString\fR separating each adjacent pair of elements. The \fIjoinString\fR argument defaults to a space character. .SH KEYWORDS element, join, list, separator 07070100079085000081a400004ccf0000000a0000000133f371e400001755000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/mann/lappend.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) lappend.n 1.6 96/03/25 20:18:03 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH lappend n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME lappend \- Append list elements onto a variable .SH SYNOPSIS \fBlappend \fIvarName \fR?\fIvalue value value ...\fR? .BE .SH DESCRIPTION .PP This command treats the variable given by \fIvarName\fR as a list and appends each of the \fIvalue\fR arguments to that list as a separate element, with spaces between elements. If \fIvarName\fR doesn't exist, it is created as a list with elements given by the \fIvalue\fR arguments. \fBLappend\fR is similar to \fBappend\fR except that the \fIvalue\fRs are appended as list elements rather than raw text. This command provides a relatively efficient way to build up large lists. For example, ``\fBlappend a $b\fR'' is much more efficient than ``\fBset a [concat $a [list $b]]\fR'' when \fB$a\fR is long. .SH KEYWORDS append, element, list, variable 07070100079086000081a400004ccf0000000a0000000133f371e40000391b000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/mann/library.n'\" '\" Copyright (c) 1991-1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) library.n 1.23 96/11/20 14:07:04 '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH library n "8.0" Tcl "Tcl Built-In Commands" .BS .SH NAME library \- standard library of Tcl procedures .SH SYNOPSIS .nf \fBauto_execok \fIcmd\fR \fBauto_load \fIcmd\fR \fBauto_mkindex \fIdir pattern pattern ...\fR \fBauto_reset\fR \fBparray \fIarrayName\fR .VS \fBtcl_endOfWord \fIstr start\fR \fBtcl_startOfNextWord \fIstr start\fR \fBtcl_startOfPreviousWord \fIstr start\fR \fBtcl_wordBreakAfter \fIstr start\fR \fBtcl_wordBreakBefore \fIstr start\fR .VE .BE .SH INTRODUCTION .PP Tcl includes a library of Tcl procedures for commonly-needed functions. The procedures defined in the Tcl library are generic ones suitable for use by many different applications. The location of the Tcl library is returned by the \fBinfo library\fR command. In addition to the Tcl library, each application will normally have its own library of support procedures as well; the location of this library is normally given by the value of the \fB$\fIapp\fB_library\fR global variable, where \fIapp\fR is the name of the application. For example, the location of the Tk library is kept in the variable \fB$tk_library\fR. .PP To access the procedures in the Tcl library, an application should source the file \fBinit.tcl\fR in the library, for example with the Tcl command .CS \fBsource [file join [info library] init.tcl]\fR .CE If the library procedure \fBTcl_Init\fR is invoked from an application's \fBTcl_AppInit\fR procedure, this happens automatically. The code in \fBinit.tcl\fR will define the \fBunknown\fR procedure and arrange for the other procedures to be loaded on-demand using the auto-load mechanism defined below. .SH "COMMAND PROCEDURES" .PP The following procedures are provided in the Tcl library: .TP \fBauto_execok \fIcmd\fR Determines whether there is an executable file by the name \fIcmd\fR. This command examines the directories in the current search path (given by the PATH environment variable) to see if there is an executable file named \fIcmd\fR in any of those directories. If so, it returns 1; if not it returns 0. \fBAuto_exec\fR remembers information about previous searches in an array named \fBauto_execs\fR; this avoids the path search in future calls for the same \fIcmd\fR. The command \fBauto_reset\fR may be used to force \fBauto_execok\fR to forget its cached information. .TP \fBauto_load \fIcmd\fR This command attempts to load the definition for a Tcl command named \fIcmd\fR. To do this, it searches an \fIauto-load path\fR, which is a list of one or more directories. The auto-load path is given by the global variable \fB$auto_path\fR if it exists. If there is no \fB$auto_path\fR variable, then the TCLLIBPATH environment variable is used, if it exists. Otherwise the auto-load path consists of just the Tcl library directory. Within each directory in the auto-load path there must be a file \fBtclIndex\fR that describes one or more commands defined in that directory and a script to evaluate to load each of the commands. The \fBtclIndex\fR file should be generated with the \fBauto_mkindex\fR command. If \fIcmd\fR is found in an index file, then the appropriate script is evaluated to create the command. The \fBauto_load\fR command returns 1 if \fIcmd\fR was successfully created. The command returns 0 if there was no index entry for \fIcmd\fR or if the script didn't actually define \fIcmd\fR (e.g. because index information is out of date). If an error occurs while processing the script, then that error is returned. \fBAuto_load\fR only reads the index information once and saves it in the array \fBauto_index\fR; future calls to \fBauto_load\fR check for \fIcmd\fR in the array rather than re-reading the index files. The cached index information may be deleted with the command \fBauto_reset\fR. This will force the next \fBauto_load\fR command to reload the index database from disk. .TP \fBauto_mkindex \fIdir pattern pattern ...\fR Generates an index suitable for use by \fBauto_load\fR. The command searches \fIdir\fR for all files whose names match any of the \fIpattern\fR arguments (matching is done with the \fBglob\fR command), generates an index of all the Tcl command procedures defined in all the matching files, and stores the index information in a file named \fBtclIndex\fR in \fIdir\fR. If no pattern is given a pattern of \fB*.tcl\fR will be assumed. For example, the command .RS .CS \fBauto_mkindex foo *.tcl\fR .CE .LP will read all the \fB.tcl\fR files in subdirectory \fBfoo\fR and generate a new index file \fBfoo/tclIndex\fR. .PP \fBAuto_mkindex\fR parses the Tcl scripts in a relatively unsophisticated way: if any line contains the word \fBproc\fR as its first characters then it is assumed to be a procedure definition and the next word of the line is taken as the procedure's name. Procedure definitions that don't appear in this way (e.g. they have spaces before the \fBproc\fR) will not be indexed. .RE .TP \fBauto_reset\fR Destroys all the information cached by \fBauto_execok\fR and \fBauto_load\fR. This information will be re-read from disk the next time it is needed. \fBAuto_reset\fR also deletes any procedures listed in the auto-load index, so that fresh copies of them will be loaded the next time that they're used. .TP \fBparray \fIarrayName\fR Prints on standard output the names and values of all the elements in the array \fIarrayName\fR. \fBArrayName\fR must be an array accessible to the caller of \fBparray\fR. It may be either local or global. .TP \fBtcl_endOfWord \fIstr start\fR .VS Returns the index of the first end-of-word location that occurs after a starting index \fIstart\fR in the string \fIstr\fR. An end-of-word location is defined to be the first non-word character following the first word character after the starting point. Returns -1 if there are no more end-of-word locations after the starting point. See the description of \fBtcl_wordchars\fR and \fBtcl_nonwordchars\fR below for more details on how Tcl determines which characters are word characters. .TP \fBtcl_startOfNextWord \fIstr start\fR Returns the index of the first start-of-word location that occurs after a starting index \fIstart\fR in the string \fIstr\fR. A start-of-word location is defined to be the first word character following a non-word character. Returns \-1 if there are no more start-of-word locations after the starting point. .TP \fBtcl_startOfPreviousWord \fIstr start\fR Returns the index of the first start-of-word location that occurs before a starting index \fIstart\fR in the string \fIstr\fR. Returns \-1 if there are no more start-of-word locations before the starting point. .TP \fBtcl_wordBreakAfter \fIstr start\fR Returns the index of the first word boundary after the starting index \fIstart\fR in the string \fIstr\fR. Returns \-1 if there are no more boundaries after the starting point in the given string. The index returned refers to the second character of the pair that comprises a boundary. .TP \fBtcl_wordBreakBefore \fIstr start\fR Returns the index of the first word boundary before the starting index \fIstart\fR in the string \fIstr\fR. Returns \-1 if there are no more boundaries before the starting point in the given string. The index returned refers to the second character of the pair that comprises a boundary. .VE .SH "VARIABLES" .PP The following global variables are defined or used by the procedures in the Tcl library: .TP \fBauto_execs\fR Used by \fBauto_execok\fR to record information about whether particular commands exist as executable files. .TP \fBauto_index\fR Used by \fBauto_load\fR to save the index information read from disk. .TP \fBauto_noexec\fR If set to any value, then \fBunknown\fR will not attempt to auto-exec any commands. .TP \fBauto_noload\fR If set to any value, then \fBunknown\fR will not attempt to auto-load any commands. .TP \fBauto_path\fR If set, then it must contain a valid Tcl list giving directories to search during auto-load operations. .TP \fBenv(TCL_LIBRARY)\fR If set, then it specifies the location of the directory containing library scripts (the value of this variable will be returned by the command \fBinfo library\fR). If this variable isn't set then a default value is used. .TP \fBenv(TCLLIBPATH)\fR If set, then it must contain a valid Tcl list giving directories to search during auto-load operations. This variable is only used if \fBauto_path\fR is not defined. .TP \fBtcl_nonwordchars\fR .VS This variable contains a regular expression that is used by routines like \fBtcl_endOfWord\fR to identify whether a character is part of a word or not. If the pattern matches a character, the character is considered to be a non-word character. On Windows platforms, spaces, tabs, and newlines are considered non-word characters. Under Unix, everything but numbers, letters and underscores are considered non-word characters. .TP \fBtcl_wordchars\fR This variable contains a regular expression that is used by routines like \fBtcl_endOfWord\fR to identify whether a character is part of a word or not. If the pattern matches a character, the character is considered to be a word character. On Windows platforms, words are comprised of any character that is not a space, tab, or newline. Under Unix, words are comprised of numbers, letters or underscores. .VE .TP \fBunknown_active\fR This variable is set by \fBunknown\fR to indicate that it is active. It is used to detect errors where \fBunknown\fR recurses on itself infinitely. The variable is unset before \fBunknown\fR returns. .SH KEYWORDS auto-exec, auto-load, library, unknown, word, whitespace 07070100079087000081a400004ccf0000000a0000000133f371e5000016f8000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/lindex.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) lindex.n 1.8 96/08/26 13:00:02 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH lindex n 7.4 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME lindex \- Retrieve an element from a list .SH SYNOPSIS \fBlindex \fIlist index\fR .BE .SH DESCRIPTION .PP This command treats \fIlist\fR as a Tcl list and returns the \fIindex\fR'th element from it (0 refers to the first element of the list). In extracting the element, \fIlindex\fR observes the same rules concerning braces and quotes and backslashes as the Tcl command interpreter; however, variable substitution and command substitution do not occur. If \fIindex\fR is negative or greater than or equal to the number of elements in \fIvalue\fR, then an empty string is returned. If \fIindex\fR has the value \fBend\fR, it refers to the last element in the list. .SH KEYWORDS element, index, list 07070100079088000081a400004ccf0000000a0000000133f371e5000016e3000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/mann/linsert.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) linsert.n 1.8 96/08/26 13:00:03 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH linsert n 7.4 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME linsert \- Insert elements into a list .SH SYNOPSIS \fBlinsert \fIlist index element \fR?\fIelement element ...\fR? .BE .SH DESCRIPTION .PP This command produces a new list from \fIlist\fR by inserting all of the \fIelement\fR arguments just before the \fIindex\fRth element of \fIlist\fR. Each \fIelement\fR argument will become a separate element of the new list. If \fIindex\fR is less than or equal to zero, then the new elements are inserted at the beginning of the list. If \fIindex\fR has the value \fBend\fR, or if it is greater than or equal to the number of elements in the list, then the new elements are appended to the list. .SH KEYWORDS element, insert, list 07070100079089000081a400004ccf0000000a0000000133f371e5000017e2000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/list.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) list.n 1.9 96/08/26 13:00:04 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH list n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME list \- Create a list .SH SYNOPSIS \fBlist \fR?\fIarg arg ...\fR? .BE .SH DESCRIPTION .PP This command returns a list comprised of all the \fIarg\fRs, or an empty string if no \fIarg\fRs are specified. Braces and backslashes get added as necessary, so that the \fBindex\fR command may be used on the result to re-extract the original arguments, and also so that \fBeval\fR may be used to execute the resulting list, with \fIarg1\fR comprising the command's name and the other \fIarg\fRs comprising its arguments. \fBList\fR produces slightly different results than \fBconcat\fR: \fBconcat\fR removes one level of grouping before forming the list, while \fBlist\fR works directly from the original arguments. For example, the command .CS \fBlist a b {c d e} {f {g h}}\fR .CE will return .CS \fBa b {c d e} {f {g h}}\fR .CE while \fBconcat\fR with the same arguments will return .CS \fBa b c d e f {g h}\fR .CE .SH KEYWORDS element, list 0707010007908a000081a400004ccf0000000a0000000133f371e50000152c000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/mann/llength.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) llength.n 1.5 96/03/25 20:19:25 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH llength n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME llength \- Count the number of elements in a list .SH SYNOPSIS \fBllength \fIlist\fR .BE .SH DESCRIPTION .PP Treats \fIlist\fR as a list and returns a decimal string giving the number of elements in it. .SH KEYWORDS element, list, length 0707010007908b000081a400004ccf0000000a0000000133f371e5000026c4000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/load.n'\" '\" Copyright (c) 1995-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) load.n 1.8 96/12/20 09:23:23 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH load n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME load \- Load machine code and initialize new commands. .SH SYNOPSIS \fBload \fIfileName\fR .br \fBload \fIfileName packageName\fR .br \fBload \fIfileName packageName interp\fR .BE .SH DESCRIPTION .PP This command loads binary code from a file into the application's address space and calls an initialization procedure in the package to incorporate it into an interpreter. \fIfileName\fR is the name of the file containing the code; its exact form varies from system to system but on most systems it is a shared library, such as a \fB.so\fR file under Solaris or a DLL under Windows. \fIpackageName\fR is the name of the package, and is used to compute the name of an initialization procedure. \fIinterp\fR is the path name of the interpreter into which to load the package (see the \fBinterp\fR manual entry for details); if \fIinterp\fR is omitted, it defaults to the interpreter in which the \fBload\fR command was invoked. .PP Once the file has been loaded into the application's address space, one of two initialization procedures will be invoked in the new code. Typically the initialization procedure will add new commands to a Tcl interpreter. The name of the initialization procedure is determined by \fIpackageName\fR and whether or not the target interpreter is a safe one. For normal interpreters the name of the initialization procedure will have the form \fIpkg\fB_Init\fR, where \fIpkg\fR is the same as \fIpackageName\fR except that the first letter is converted to upper case and all other letters are converted to lower case. For example, if \fIpackageName\fR is \fBfoo\fR or \fBFOo\fR, the initialization procedure's name will be \fBFoo_Init\fR. .PP If the target interpreter is a safe interpreter, then the name of the initialization procedure will be \fIpkg\fB_SafeInit\fR instead of \fIpkg\fB_Init\fR. The \fIpkg\fB_SafeInit\fR function should be written carefully, so that it initializes the safe interpreter only with partial functionality provided by the package that is safe for use by untrusted code. For more information on Safe\-Tcl, see the \fBsafe\fR manual entry. .PP The initialization procedure must match the following prototype: .CS typedef int Tcl_PackageInitProc(Tcl_Interp *\fIinterp\fR); .CE The \fIinterp\fR argument identifies the interpreter in which the package is to be loaded. The initialization procedure must return \fBTCL_OK\fR or \fBTCL_ERROR\fR to indicate whether or not it completed successfully; in the event of an error it should set \fIinterp->result\fR to point to an error message. The result of the \fBload\fR command will be the result returned by the initialization procedure. .PP The actual loading of a file will only be done once for each \fIfileName\fR in an application. If a given \fIfileName\fR is loaded into multiple interpreters, then the first \fBload\fR will load the code and call the initialization procedure; subsequent \fBload\fRs will call the initialization procedure without loading the code again. It is not possible to unload or reload a package. .PP The \fBload\fR command also supports packages that are statically linked with the application, if those packages have been registered by calling the \fBTcl_StaticPackage\fR procedure. If \fIfileName\fR is an empty string, then \fIpackageName\fR must be specified. .PP If \fIpackageName\fR is omitted or specified as an empty string, Tcl tries to guess the name of the package. This may be done differently on different platforms. The default guess, which is used on most UNIX platforms, is to take the last element of \fIfileName\fR, strip off the first three characters if they are \fBlib\fR, and use any following .VS alphabetic and underline characters as the module name. .VE For example, the command \fBload libxyz4.2.so\fR uses the module name \fBxyz\fR and the command \fBload bin/last.so {}\fR uses the module name \fBlast\fR. .VS br .PP If \fIfileName\fR is an empty string, then \fIpackageName\fR must be specified. The \fBload\fR command first searches for a statically loaded package (one that has been registered by calling the \fBTcl_StaticPackage\fR procedure) by that name; if one is found, it is used. Otherwise, the \fBload\fR command searches for a dynamically loaded package by that name, and uses it if it is found. If several different files have been \fBload\fRed with different versions of the package, Tcl picks the file that was loaded first. .VE .SH BUGS .PP If the same file is \fBload\fRed by different \fIfileName\fRs, it will be loaded into the process's address space multiple times. The behavior of this varies from system to system (some systems may detect the redundant loads, others may not). .SH "SEE ALSO" \fBinfo sharedlibextension\fR, Tcl_StaticPackage, safe(n) .SH KEYWORDS binary code, loading, safe interpreter, shared library 0707010007908c000081a400004ccf0000000a0000000133f371e50000180e000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/lrange.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) lrange.n 1.9 96/08/26 13:00:05 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH lrange n 7.4 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME lrange \- Return one or more adjacent elements from a list .SH SYNOPSIS \fBlrange \fIlist first last\fR .BE .SH DESCRIPTION .PP \fIList\fR must be a valid Tcl list. This command will return a new list consisting of elements \fIfirst\fR through \fIlast\fR, inclusive. \fIFirst\fR or \fIlast\fR may be \fBend\fR (or any abbreviation of it) to refer to the last element of the list. If \fIfirst\fR is less than zero, it is treated as if it were zero. If \fIlast\fR is greater than or equal to the number of elements in the list, then it is treated as if it were \fBend\fR. If \fIfirst\fR is greater than \fIlast\fR then an empty string is returned. Note: ``\fBlrange \fIlist first first\fR'' does not always produce the same result as ``\fBlindex \fIlist first\fR'' (although it often does for simple fields that aren't enclosed in braces); it does, however, produce exactly the same results as ``\fBlist [lindex \fIlist first\fB]\fR'' .SH KEYWORDS element, list, range, sublist 0707010007908d000081a400004ccf0000000a0000000133f371e6000018f3000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/mann/lreplace.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) lreplace.n 1.9 96/08/26 13:00:07 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH lreplace n 7.4 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME lreplace \- Replace elements in a list with new elements .SH SYNOPSIS \fBlreplace \fIlist first last \fR?\fIelement element ...\fR? .BE .SH DESCRIPTION .PP \fBLreplace\fR returns a new list formed by replacing one or more elements of \fIlist\fR with the \fIelement\fR arguments. \fIFirst\fR gives the index in \fIlist\fR of the first element to be replaced (0 refers to the first element). If \fIfirst\fR is less than zero then it refers to the first element of \fIlist\fR; the element indicated by \fIfirst\fR must exist in the list. \fILast\fR gives the index in \fIlist\fR of the last element to be replaced. If \fIlast\fR is less than \fIfirst\fR then no elements are deleted; the new elements are simply inserted before \fIfirst\fR. \fIFirst\fR or \fIlast\fR may be \fBend\fR (or any abbreviation of it) to refer to the last element of the list. The \fIelement\fR arguments specify zero or more new arguments to be added to the list in place of those that were deleted. Each \fIelement\fR argument will become a separate element of the list. If no \fIelement\fR arguments are specified, then the elements between \fIfirst\fR and \fIlast\fR are simply deleted. .SH KEYWORDS element, list, replace 0707010007908e000081a400004ccf0000000a0000000133f371e60000183c000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/mann/lsearch.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) lsearch.n 1.7 96/08/26 13:00:05 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH lsearch n 7.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME lsearch \- See if a list contains a particular element .SH SYNOPSIS \fBlsearch \fR?\fImode\fR? \fIlist pattern\fR .BE .SH DESCRIPTION .PP This command searches the elements of \fIlist\fR to see if one of them matches \fIpattern\fR. If so, the command returns the index of the first matching element. If not, the command returns \fB\-1\fR. The \fImode\fR argument indicates how the elements of the list are to be matched against \fIpattern\fR and it must have one of the following values: .TP \fB\-exact\fR The list element must contain exactly the same string as \fIpattern\fR. .TP \fB\-glob\fR \fIPattern\fR is a glob-style pattern which is matched against each list element using the same rules as the \fBstring match\fR command. .TP \fB\-regexp\fR \fIPattern\fR is treated as a regular expression and matched against each list element using the same rules as the \fBregexp\fR command. .PP If \fImode\fR is omitted then it defaults to \fB\-glob\fR. .SH KEYWORDS list, match, pattern, regular expression, search, string 0707010007908f000081a400004ccf0000000a0000000133f371e600001d65000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/lsort.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) lsort.n 1.9 97/03/24 20:51:09 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH lsort n 8.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME lsort \- Sort the elements of a list .SH SYNOPSIS \fBlsort \fR?\fIoptions\fR? \fIlist\fR .BE .SH DESCRIPTION .PP This command sorts the elements of \fIlist\fR, returning a new list in sorted order. By default ASCII sorting is used with the result returned in increasing order. However, any of the following options may be specified before \fIlist\fR to control the sorting process (unique abbreviations are accepted): .TP 20 \fB\-ascii\fR Use string comparison with ASCII collation order. This is the default. .VS br .TP 20 \fB\-dictionary\fR Use dictionary-style comparison. This is the same as \fB\-ascii\fR except (a) case is ignored except as a tie-breaker and (b) if two strings contain embedded numbers, the numbers compare as integers, not characters. For example, in \fB\-dictionary\fR mode, \fBbigBoy\fR sorts between \fBbigbang\fR and \fBbigboy\fR, and \fBx10y\fR sorts between \fBx9y\fR and \fBx11y\fR. .VE .TP 20 \fB\-integer\fR Convert list elements to integers and use integer comparison. .TP 20 \fB\-real\fR Convert list elements to floating-point values and use floating comparison. .TP 20 \fB\-command\0\fIcommand\fR Use \fIcommand\fR as a comparison command. To compare two elements, evaluate a Tcl script consisting of \fIcommand\fR with the two elements appended as additional arguments. The script should return an integer less than, equal to, or greater than zero if the first element is to be considered less than, equal to, or greater than the second, respectively. .TP 20 \fB\-increasing\fR Sort the list in increasing order (``smallest'' items first). This is the default. .TP 20 \fB\-decreasing\fR Sort the list in decreasing order (``largest'' items first). .VS br .TP 20 \fB\-index\0\fIindex\fR If this option is specified, each of the elements of \fIlist\fR must itself be a proper Tcl sublist. Instead of sorting based on whole sublists, \fBlsort\fR will extract the \fIindex\fR'th element from each sublist and sort based on the given element. The keyword \fBend\fP is allowed for the \fIindex\fP to sort on the last sublist element. For example, .RS .CS lsort -integer -index 1 {{First 24} {Second 18} {Third 30}} .CE returns \fB{Second 18} {First 24} {Third 30}\fR. This option is much more efficient than using \fB\-command\fR to achieve the same effect. .RE .VE .SH KEYWORDS element, list, order, sort 07070100079090000081a400004ccf0000000a0000000133f371e600006625000000a30000000400000000000000000000002700000004reloc/SUNWtcl/8.0/man/mann/namespace.n'\" '\" Copyright (c) 1993-1997 Bell Labs Innovations for Lucent Technologies '\" Copyright (c) 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. '\" '\" SCCS: @(#) namespace.n 1.9 97/08/13 17:08:25 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH namespace n 8.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME namespace \- create and manipulate contexts for commands and variables .SH SYNOPSIS \fBnamespace \fR?\fIoption\fR? ?\fIarg ...\fR? .BE .SH DESCRIPTION .PP The \fBnamespace\fR command lets you create, access, and destroy separate contexts for commands and variables. See the section \fBWHAT IS A NAMESPACE?\fR below for a brief overview of namespaces. The legal \fIoption\fR's are listed below. Note that you can abbreviate the \fIoption\fR's. .TP \fBnamespace children \fR?\fInamespace\fR? ?\fIpattern\fR? Returns a list of all child namespaces that belong to the namespace \fInamespace\fR. If \fInamespace\fR is not specified, then the children are returned for the current namespace. This command returns fully-qualified names, which start with \fB::\fR. If the optional \fIpattern\fR is given, then this command returns only the names that match the glob-style pattern. The actual pattern used is determined as follows: a pattern that starts with \fB::\fR is used directly, otherwise the namespace \fInamespace\fR (or the fully-qualified name of the current namespace) is prepended onto the the pattern. .TP \fBnamespace code \fIscript\fR Captures the current namespace context for later execution of the script \fIscript\fR. It returns a new script in which \fIscript\fR has been wrapped in a \fBnamespace code\fR command. The new script has two important properties. First, it can be evaluated in any namespace and will cause \fIscript\fR to be evaluated in the current namespace (the one where the \fBnamespace code\fR command was invoked). Second, additional arguments can be appended to the resulting script and they will be passed to \fIscript\fR as additional arguments. For example, suppose the command \fBset script [namespace code {foo bar}]\fR is invoked in namespace \fB::a::b\fR. Then \fBeval "$script x y"\fR can be executed in any namespace (assuming the value of \fBscript\fR has been passed in properly) and will have the same effect as the command \fBnamespace eval ::a::b {foo bar x y}\fR. This command is needed because extensions like Tk normally execute callback scripts in the global namespace. A scoped command captures a command together with its namespace context in a way that allows it to be executed properly later. See the section \fBSCOPED VALUES\fR for some examples of how this is used to create callback scripts. .TP \fBnamespace current\fR Returns the fully-qualified name for the current namespace. The actual name of the global namespace is ``'' (i.e., an empty string), but this command returns \fB::\fR for the global namespace as a convenience to programmers. .TP \fBnamespace delete \fR?\fInamespace namespace ...\fR? Each namespace \fInamespace\fR is deleted and all variables, procedures, and child namespaces contained in the namespace are deleted. If a procedure is currently executing inside the namespace, the namespace will be kept alive until the procedure returns; however, the namespace is marked to prevent other code from looking it up by name. If a namespace doesn't exist, this command returns an error. If no namespace names are given, this command does nothing. .TP \fBnamespace eval\fR \fInamespace arg\fR ?\fIarg ...\fR? Activates a namespace called \fInamespace\fR and evaluates some code in that context. If the namespace does not already exist, it is created. If more than one \fIarg\fR argument is specified, the arguments are concatenated together with a space between each one in the same fashion as the \fBeval\fR command, and the result is evaluated. .br .sp If \fInamespace\fR has leading namespace qualifiers and any leading namespaces do not exist, they are automatically created. .TP \fBnamespace export \fR?\-\fBclear\fR? ?\fIpattern pattern ...\fR? Specifies which commands are exported from a namespace. The exported commands are those that can be later imported into another namespace using a \fBnamespace import\fR command. Both commands defined in a namespace and commands the namespace has previously imported can be exported by a namespace. The commands do not have to be defined at the time the \fBnamespace export\fR command is executed. Each \fIpattern\fR may contain glob-style special characters, but it may not include any namespace qualifiers. That is, the pattern can only specify commands in the current (exporting) namespace. Each \fIpattern\fR is appended onto the namespace's list of export patterns. If the \-\fBclear\fR flag is given, the namespace's export pattern list is reset to empty before any \fIpattern\fR arguments are appended. If no \fIpattern\fRs are given and the \-\fBclear\fR flag isn't given, this command returns the namespace's current export list. .TP \fBnamespace forget \fR?\fIpattern pattern ...\fR? Removes previously imported commands from a namespace. Each \fIpattern\fR is a qualified name such as \fBfoo::x\fR or \fBa::b::p*\fR. Qualified names contain \fB::\fRs and qualify a name with the name of one or more namespaces. Each \fIpattern\fR is qualified with the name of an exporting namespace and may have glob-style special characters in the command name at the end of the qualified name. Glob characters may not appear in a namespace name. This command first finds the matching exported commands. It then checks whether any of those those commands were previously imported by the current namespace. If so, this command deletes the corresponding imported commands. In effect, this un-does the action of a \fBnamespace import\fR command. .TP \fBnamespace import \fR?\fB\-force\fR? ?\fIpattern\fR \fIpattern ...\fR? Imports commands into a namespace. Each \fIpattern\fR is a qualified name like \fBfoo::x\fR or \fBa::p*\fR. That is, it includes the name of an exporting namespace and may have glob-style special characters in the command name at the end of the qualified name. Glob characters may not appear in a namespace name. All the commands that match a \fIpattern\fR string and which are currently exported from their namespace are added to the current namespace. This is done by creating a new command in the current namespace that points to the exported command in its original namespace; when the new imported command is called, it invokes the exported command. This command normally returns an error if an imported command conflicts with an existing command. However, if the \-\fBforce\fR option is given, imported commands will silently replace existing commands. The \fBnamespace import\fR command has snapshot semantics: that is, only requested commands that are currently defined in the exporting namespace are imported. In other words, you can import only the commands that are in a namespace at the time when the \fBnamespace import\fR command is executed. If another command is defined and exported in this namespace later on, it will not be imported. .TP \fBnamespace inscope\fR \fInamespace arg\fR ?\fIarg ...\fR? Executes a script in the context of a particular namespace. This command is not expected to be used directly by programmers; calls to it are generated implicitly when applications use \fBnamespace code\fR commands to create callback scripts that the applications then register with, e.g., Tk widgets. The \fBnamespace inscope\fR command is much like the \fBnamespace eval\fR command except that it has \fBlappend\fR semantics and the namespace must already exist. It treats the first argument as a list, and appends any arguments after the first onto the end as proper list elements. \fBnamespace inscope ::foo a x y z\fR is equivalent to \fBnamespace eval ::foo [concat a [list x y z]]\fR This \fBlappend\fR semantics is important because many callback scripts are actually prefixes. .TP \fBnamespace origin \fIcommand\fR Returns the fully-qualified name of the original command to which the imported command \fIcommand\fR refers. When a command is imported into a namespace, a new command is created in that namespace that points to the actual command in the exporting namespace. If a command is imported into a sequence of namespaces \fIa, b,...,n\fR where each successive namespace just imports the command from the previous namespace, this command returns the fully-qualified name of the original command in the first namespace, \fIa\fR. If \fIcommand\fR does not refer to an imported command, the command's own fully-qualified name is returned. .TP \fBnamespace parent\fR ?\fInamespace\fR? Returns the fully-qualified name of the parent namespace for namespace \fInamespace\fR. If \fInamespace\fR is not specified, the fully-qualified name of the current namespace's parent is returned. .TP \fBnamespace qualifiers\fR \fIstring\fR Returns any leading namespace qualifiers for \fIstring\fR. Qualifiers are namespace names separated by \fB::\fRs. For the \fIstring\fR \fB::foo::bar::x\fR, this command returns \fB::foo::bar\fR, and for \fB::\fR it returns \fB``''\fR (an empty string). This command is the complement of the \fBnamespace tail\fR command. Note that it does not check whether the namespace names are, in fact, the names of currently defined namespaces. .TP \fBnamespace tail\fR \fIstring\fR Returns the simple name at the end of a qualified string. Qualifiers are namespace names separated by \fB::\fRs. For the \fIstring\fR \fB::foo::bar::x\fR, this command returns \fBx\fR, and for \fB::\fR it returns \fB``''\fR (an empty string). This command is the complement of the \fBnamespace qualifiers\fR command. It does not check whether the namespace names are, in fact, the names of currently defined namespaces. .TP \fBnamespace which\fR ?\-\fBcommand\fR? ?\-\fBvariable\fR? \fIname\fR Looks up \fIname\fR as either a command or variable and returns its fully-qualified name. For example, if \fIname\fR does not exist in the current namespace but does exist in the global namespace, this command returns a fully-qualified name in the global namespace. If the command or variable does not exist, this command returns an empty string. If no flag is given, \fIname\fR is treated as a command name. See the section \fBNAME RESOLUTION\fR below for an explanation of the rules regarding name resolution. .SH "WHAT IS A NAMESPACE?" .PP A namespace is a collection of commands and variables. It encapsulates the commands and variables to ensure that they won't interfere with the commands and variables of other namespaces. Tcl has always had one such collection, which we refer to as the \fIglobal namespace\fR. The global namespace holds all global variables and commands. The \fBnamespace eval\fR command lets you create new namespaces. For example, .CS \fBnamespace eval Counter { namespace export Bump variable num 0 proc Bump {} { variable num incr num } }\fR .CE creates a new namespace containing the variable \fBnum\fR and the procedure \fBBump\fR. The commands and variables in this namespace are separate from other commands and variables in the same program. If there is a command named \fBBump\fR in the global namespace, for example, it will be different from the command \fBBump\fR in the \fBCounter\fR namespace. .PP Namespace variables resemble global variables in Tcl. They exist outside of the procedures in a namespace but can be accessed in a procedure via the \fBvariable\fR command, as shown in the example above. .PP Namespaces are dynamic. You can add and delete commands and variables at any time, so you can build up the contents of a namespace over time using a series of \fBnamespace eval\fR commands. For example, the following series of commands has the same effect as the namespace definition shown above: .CS \fBnamespace eval Counter { variable num 0 proc Bump {} { variable num return [incr num] } } namespace eval Counter { proc test {args} { return $args } } namespace eval Counter { rename test "" }\fR .CE Note that the \fBtest\fR procedure is added to the \fBCounter\fR namespace, and later removed via the \fBrename\fR command. .PP Namespaces can have other namespaces within them, so they nest hierarchically. A nested namespace is encapsulated inside its parent namespace and can not interfere with other namespaces. .SH "QUALIFIED NAMES" .PP Each namespace has a textual name such as \fBhistory\fR or \fB::safe::interp\fR. Since namespaces may nest, qualified names are used to refer to commands, variables, and child namespaces contained inside namespaces. Qualified names are similar to the hierarchical path names for Unix files or Tk widgets, except that \fB::\fR is used as the separator instead of \fB/\fR or \fB.\fR. The topmost or global namespace has the name ``'' (i.e., an empty string), although \fB::\fR is a synonym. As an example, the name \fB::safe::interp::create\fR refers to the command \fBcreate\fR in the namespace \fBinterp\fR that is a child of of namespace \fB::safe\fR, which in turn is a child of the global namespace \fB::\fR. .PP If you want to access commands and variables from another namespace, you must use some extra syntax. Names must be qualified by the namespace that contains them. From the global namespace, we might access the \fBCounter\fR procedures like this: .CS \fBCounter::Bump 5 Counter::Reset\fR .CE We could access the current count like this: .CS \fBputs "count = $Counter::num"\fR .CE When one namespace contains another, you may need more than one qualifier to reach its elements. If we had a namespace \fBFoo\fR that contained the namespace \fBCounter\fR, you could invoke its \fBBump\fR procedure from the global namespace like this: .CS \fBFoo::Counter::Bump 3\fR .CE .PP You can also use qualified names when you create and rename commands. For example, you could add a procedure to the \fBFoo\fR namespace like this: .CS \fBproc Foo::Test {args} {return $args}\fR .CE And you could move the same procedure to another namespace like this: .CS \fBrename Foo::Test Bar::Test\fR .CE .PP There are a few remaining points about qualified names that we should cover. Namespaces have nonempty names except for the global namespace. \fB::\fR is disallowed in simple command, variable, and namespace names except as a namespace separator. Extra \fB:\fRs in a qualified name are ignored; that is, two or more \fB:\fRs are treated as a namespace separator. A trailing \fB::\fR in a qualified variable or command name refers to the variable or command named {}. However, a trailing \fB::\fR in a qualified namespace name is ignored. .SH "NAME RESOLUTION" .PP In general, all Tcl commands that take variable and command names support qualified names. This means you can give qualified names to such commands as \fBset\fR, \fBproc\fR, \fBrename\fR, and \fBinterp alias\fR. If you provide a fully-qualified name that starts with a \fB::\fR, there is no question about what command, variable, or namespace you mean. However, if the name does not start with a \fB::\fR (i.e., is \fIrelative\fR), Tcl follows a fixed rule for looking it up: Command and variable names are always resolved by looking first in the current namespace, and then in the global namespace. Namespace names, on the other hand, are always resolved by looking in only the current namespace. .PP In the following example, .CS \fBset traceLevel 0 namespace eval Debug { printTrace $traceLevel }\fR .CE Tcl looks for \fBtraceLevel\fR in the namespace \fBDebug\fR and then in the global namespace. It looks up the command \fBprintTrace\fR in the same way. If a variable or command name is not found in either context, the name is undefined. To make this point absolutely clear, consider the following example: .CS \fBset traceLevel 0 namespace eval Foo { variable traceLevel 3 namespace eval Debug { printTrace $traceLevel } }\fR .CE Here Tcl looks for \fBtraceLevel\fR first in the namespace \fBFoo::Debug\fR. Since it is not found there, Tcl then looks for it in the global namespace. The variable \fBFoo::traceLevel\fR is completely ignored during the name resolution process. .PP You can use the \fBnamespace which\fR command to clear up any question about name resolution. For example, the command: .CS \fBnamespace eval Foo::Debug {namespace which \-variable traceLevel}\fR .CE returns \fB::traceLevel\fR. On the other hand, the command, .CS \fBnamespace eval Foo {namespace which \-variable traceLevel}\fR .CE returns \fB::Foo::traceLevel\fR. .PP As mentioned above, namespace names are looked up differently than the names of variables and commands. Namespace names are always resolved in the current namespace. This means, for example, that a \fBnamespace eval\fR command that creates a new namespace always creates a child of the current namespace unless the new namespace name begins with a \fB::\fR. .PP Tcl has no access control to limit what variables, commands, or namespaces you can reference. If you provide a qualified name that resolves to an element by the name resolution rule above, you can access the element. .PP You can access a namespace variable from a procedure in the same namespace by using the \fBvariable\fR command. Much like the \fBglobal\fR command, this creates a local link to the namespace variable. If necessary, it also creates the variable in the current namespace and initializes it. Note that the \fBglobal\fR command only creates links to variables in the global namespace. It is not necessary to use a \fBvariable\fR command if you always refer to the namespace variable using an appropriate qualified name. .SH "IMPORTING COMMANDS" .PP Namespaces are often used to represent libraries. Some library commands are used so frequently that it is a nuisance to type their qualified names. For example, suppose that all of the commands in a package like BLT are contained in a namespace called \fBBlt\fR. Then you might access these commands like this: .CS \fBBlt::graph .g \-background red Blt::table . .g 0,0\fR .CE If you use the \fBgraph\fR and \fBtable\fR commands frequently, you may want to access them without the \fBBlt::\fR prefix. You can do this by importing the commands into the current namespace, like this: .CS \fBnamespace import Blt::*\fR .CE This adds all exported commands from the \fBBlt\fR namespace into the current namespace context, so you can write code like this: .CS \fBgraph .g \-background red table . .g 0,0\fR .CE The \fBnamespace import\fR command only imports commands from a namespace that that namespace exported with a \fBnamespace export\fR command. .PP Importing \fIevery\fR command from a namespace is generally a bad idea since you don't know what you will get. It is better to import just the specific commands you need. For example, the command .CS \fBnamespace import Blt::graph Blt::table\fR .CE imports only the \fBgraph\fR and \fBtable\fR commands into the current context. .PP If you try to import a command that already exists, you will get an error. This prevents you from importing the same command from two different packages. But from time to time (perhaps when debugging), you may want to get around this restriction. You may want to reissue the \fBnamespace import\fR command to pick up new commands that have appeared in a namespace. In that case, you can use the \fB\-force\fR option, and existing commands will be silently overwritten: .CS \fBnamespace import \-force Blt::graph Blt::table\fR .CE If for some reason, you want to stop using the imported commands, you can remove them with an \fBnamespace forget\fR command, like this: .CS \fBnamespace forget Blt::*\fR .CE This searches the current namespace for any commands imported from \fBBlt\fR. If it finds any, it removes them. Otherwise, it does nothing. After this, the \fBBlt\fR commands must be accessed with the \fBBlt::\fR prefix. .PP When you delete a command from the exporting namespace like this: .CS \fBrename Blt::graph ""\fR .CE the command is automatically removed from all namespaces that import it. .SH "EXPORTING COMMANDS" You can export commands from a namespace like this: .CS \fBnamespace eval Counter { namespace export Bump Reset variable num 0 variable max 100 proc Bump {{by 1}} { variable num incr num $by check return $num } proc Reset {} { variable num set num 0 } proc check {} { variable num variable max if {$num > $max} { error "too high!" } } }\fR .CE The procedures \fBBump\fR and \fBReset\fR are exported, so they are included when you import from the \fBCounter\fR namespace, like this: .CS \fBnamespace import Counter::*\fR .CE However, the \fBcheck\fR procedure is not exported, so it is ignored by the import operation. .PP The \fBnamespace import\fR command only imports commands that were declared as exported by their namespace. The \fBnamespace export\fR command specifies what commands may be imported by other namespaces. If a \fBnamespace import\fR command specifies a command that is not exported, the command is not imported. .SH "SEE ALSO" variable(n) .SH KEYWORDS exported, internal, variable 07070100079091000081a400004ccf0000000a0000000133f371e600003b82000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/open.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) open.n 1.16 97/01/14 18:00:35 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH open n 7.6 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME open \- Open a file-based or command pipeline channel .SH SYNOPSIS .sp \fBopen \fIfileName\fR .br \fBopen \fIfileName access\fR .br \fBopen \fIfileName access permissions\fR .BE .SH DESCRIPTION .PP .VS This command opens a file, serial port, or command pipeline and returns a .VE channel identifier that may be used in future invocations of commands like \fBread\fR, \fBputs\fR, and \fBclose\fR. If the first character of \fIfileName\fR is not \fB|\fR then the command opens a file: \fIfileName\fR gives the name of the file to open, and it must conform to the conventions described in the \fBfilename\fR manual entry. .PP The \fIaccess\fR argument, if present, indicates the way in which the file (or command pipeline) is to be accessed. In the first form \fIaccess\fR may have any of the following values: .TP 15 \fBr\fR Open the file for reading only; the file must already exist. This is the default value if \fIaccess\fR is not specified. .TP 15 \fBr+\fR Open the file for both reading and writing; the file must already exist. .TP 15 \fBw\fR Open the file for writing only. Truncate it if it exists. If it doesn't exist, create a new file. .TP 15 \fBw+\fR Open the file for reading and writing. Truncate it if it exists. If it doesn't exist, create a new file. .TP 15 \fBa\fR Open the file for writing only. The file must already exist, and the file is positioned so that new data is appended to the file. .TP 15 \fBa+\fR Open the file for reading and writing. If the file doesn't exist, create a new empty file. Set the initial access position to the end of the file. .PP In the second form, \fIaccess\fR consists of a list of any of the following flags, all of which have the standard POSIX meanings. One of the flags must be either \fBRDONLY\fR, \fBWRONLY\fR or \fBRDWR\fR. .TP 15 \fBRDONLY\fR Open the file for reading only. .TP 15 \fBWRONLY\fR Open the file for writing only. .TP 15 \fBRDWR\fR Open the file for both reading and writing. .TP 15 \fBAPPEND\fR Set the file pointer to the end of the file prior to each write. .TP 15 \fBCREAT\fR Create the file if it doesn't already exist (without this flag it is an error for the file not to exist). .TP 15 \fBEXCL\fR If \fBCREAT\fR is also specified, an error is returned if the file already exists. .TP 15 \fBNOCTTY\fR If the file is a terminal device, this flag prevents the file from becoming the controlling terminal of the process. .TP 15 \fBNONBLOCK\fR Prevents the process from blocking while opening the file, and possibly in subsequent I/O operations. The exact behavior of this flag is system- and device-dependent; its use is discouraged (it is better to use the \fBfconfigure\fR command to put a file in nonblocking mode). For details refer to your system documentation on the \fBopen\fR system call's \fBO_NONBLOCK\fR flag. .TP 15 \fBTRUNC\fR If the file exists it is truncated to zero length. .PP If a new file is created as part of opening it, \fIpermissions\fR (an integer) is used to set the permissions for the new file in conjunction with the process's file mode creation mask. \fIPermissions\fR defaults to 0666. .SH "COMMAND PIPELINES" .PP If the first character of \fIfileName\fR is ``|'' then the remaining characters of \fIfileName\fR are treated as a list of arguments that describe a command pipeline to invoke, in the same style as the arguments for \fBexec\fR. In this case, the channel identifier returned by \fBopen\fR may be used to write to the command's input pipe or read from its output pipe, depending on the value of \fIaccess\fR. If write-only access is used (e.g. \fIaccess\fR is \fBw\fR), then standard output for the pipeline is directed to the current standard output unless overridden by the command. If read-only access is used (e.g. \fIaccess\fR is \fBr\fR), standard input for the pipeline is taken from the current standard input unless overridden by the command. .SH "SERIAL COMMUNICATIONS" .VS .PP If \fIfileName\fR refers to a serial port, then the specified serial port is opened and initialized in a platform-dependent manner. Acceptable values for the \fIfileName\fR to use to open a serial port are described in the PORTABILITY ISSUES section. .SH "CONFIGURATION OPTIONS" The \fBfconfigure\fR command can be used to query and set the following configuration option for open serial ports: .TP \fB\-mode \fIbaud\fB,\fIparity\fB,\fIdata\fB,\fIstop\fR . This option is a set of 4 comma-separated values: the baud rate, parity, number of data bits, and number of stop bits for this serial port. The \fIbaud\fR rate is a simple integer that specifies the connection speed. \fIParity\fR is one of the following letters: \fBn\fR, \fBo\fR, \fBe\fR, \fBm\fR, \fBs\fR; respectively signifying the parity options of ``none'', ``odd'', ``even'', ``mark'', or ``space''. \fIData\fR is the number of data bits and should be an integer from 5 to 8, while \fIstop\fR is the number of stop bits and should be the integer 1 or 2. .VE .VS .SH "PORTABILITY ISSUES" .sp .TP \fBWindows \fR(all versions) . Valid values for \fIfileName\fR to open a serial port are of the form \fBcom\fIX\fB:\fR, where \fIX\fR is a number, generally from 1 to 4. An attempt to open a serial port that does not exist will fail. .TP \fBWindows NT\fR . When running Tcl interactively, there may be some strange interactions between the real console, if one is present, and a command pipeline that uses standard input or output. If a command pipeline is opened for reading, some of the lines entered at the console will be sent to the command pipeline and some will be sent to the Tcl evaluator. If a command pipeline is opened for writing, keystrokes entered into the console are not visible until the the pipe is closed. This behavior occurs whether the command pipeline is executing 16-bit or 32-bit applications. These problems only occur because both Tcl and the child application are competing for the console at the same time. If the command pipeline is started from a script, so that Tcl is not accessing the console, or if the command pipeline does not use standard input or output, but is redirected from or to a file, then the above problems do not occur. .TP \fBWindows 95\fR . A command pipeline that executes a 16-bit DOS application cannot be opened for both reading and writing, since 16-bit DOS applications that receive standard input from a pipe and send standard output to a pipe run synchronously. Command pipelines that do not execute 16-bit DOS applications run asynchronously and can be opened for both reading and writing. .sp When running Tcl interactively, there may be some strange interactions between the real console, if one is present, and a command pipeline that uses standard input or output. If a command pipeline is opened for reading from a 32-bit application, some of the keystrokes entered at the console will be sent to the command pipeline and some will be sent to the Tcl evaluator. If a command pipeline is opened for writing to a 32-bit application, no output is visible on the console until the the pipe is closed. These problems only occur because both Tcl and the child application are competing for the console at the same time. If the command pipeline is started from a script, so that Tcl is not accessing the console, or if the command pipeline does not use standard input or output, but is redirected from or to a file, then the above problems do not occur. .sp Whether or not Tcl is running interactively, if a command pipeline is opened for reading from a 16-bit DOS application, the call to \fBopen\fR will not return until end-of-file has been received from the command pipeline's standard output. If a command pipeline is opened for writing to a 16-bit DOS application, no data will be sent to the command pipeline's standard output until the pipe is actually closed. This problem occurs because 16-bit DOS applications are run synchronously, as described above. .TP \fBWindows 3.X\fR . A command pipeline can execute 16-bit or 32-bit DOS or Windows applications, but the call to \fBopen\fR will not return until the last program in the pipeline has finished executing; command pipelines run synchronously. If the pipeline is opened with write access (either just writing or both reading and writing) the first application in the pipeline will instead see an immediate end-of-file; any data the caller writes to the open pipe will instead be discarded. .sp Since Tcl cannot be run with a real console under Windows 3.X, there are no interactions between command pipelines and the console. .TP \fBMacintosh\fR . Opening a serial port is not currently implemented under Macintosh. .sp Opening a command pipeline is not supported under Macintosh, since applications do not support the concept of standard input or output. .TP \fBUnix\fR\0\0\0\0\0\0\0 . Valid values for \fIfileName\fR to open a serial port are generally of the form \fB/dev/tty\fIX\fR, where \fIX\fR is \fBa\fR or \fBb\fR, but the name of any pseudo-file that maps to a serial port may be used. .sp When running Tcl interactively, there may be some strange interactions between the console, if one is present, and a command pipeline that uses standard input. If a command pipeline is opened for reading, some of the lines entered at the console will be sent to the command pipeline and some will be sent to the Tcl evaluator. This problem only occurs because both Tcl and the child application are competing for the console at the same time. If the command pipeline is started from a script, so that Tcl is not accessing the console, or if the command pipeline does not use standard input, but is redirected from a file, then the above problem does not occur. .LP See the PORTABILITY ISSUES section of the \fBexec\fR command for additional information not specific to command pipelines about executing applications on the various platforms .SH "SEE ALSO" close(n), filename(n), gets(n), read(n), puts(n), exec(n) .VE .SH KEYWORDS access mode, append, create, file, non-blocking, open, permissions, pipeline, process, serial 07070100079092000081a400004ccf0000000a0000000133f371e7000034db000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/mann/package.n'\" '\" Copyright (c) 1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) package.n 1.5 96/03/18 14:17:31 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH package n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME package \- Facilities for package loading and version control .SH SYNOPSIS .nf \fBpackage forget \fIpackage\fR \fBpackage ifneeded \fIpackage version\fR ?\fIscript\fR? \fBpackage names\fR \fBpackage provide \fIpackage \fR?\fIversion\fR? \fBpackage require \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR? \fBpackage unknown \fR?\fIcommand\fR? \fBpackage vcompare \fIversion1 version2\fR \fBpackage versions \fIpackage\fR \fBpackage vsatisfies \fIversion1 version2\fR .fi .BE .SH DESCRIPTION .PP This command keeps a simple database of the packages available for use by the current interpreter and how to load them into the interpreter. It supports multiple versions of each package and arranges for the correct version of a package to be loaded based on what is needed by the application. This command also detects and reports version clashes. Typically, only the \fBpackage require\fR and \fBpackage provide\fR commands are invoked in normal Tcl scripts; the other commands are used primarily by system scripts that maintain the package database. .PP The behavior of the \fBpackage\fR command is determined by its first argument. The following forms are permitted: .TP \fBpackage forget \fIpackage\fR Removes all information about \fIpackage\fR from this interpreter, including information provided by both \fBpackage ifneeded\fR and \fBpackage provide\fR. .TP \fBpackage ifneeded \fIpackage version\fR ?\fIscript\fR? This command typically appears only in system configuration scripts to set up the package database. It indicates that a particular version of a particular package is available if needed, and that the package can be added to the interpreter by executing \fIscript\fR. The script is saved in a database for use by subsequent \fBpackage require\fR commands; typically, \fIscript\fR sets up auto-loading for the commands in the package (or calls \fBload\fR and/or \fBsource\fR directly), then invokes \fBpackage provide\fR to indicate that the package is present. There may be information in the database for several different versions of a single package. If the database already contains information for \fIpackage\fR and \fIversion\fR, the new \fIscript\fR replaces the existing one. If the \fIscript\fR argument is omitted, the current script for version \fIversion\fR of package \fIpackage\fR is returned, or an empty string if no \fBpackage ifneeded\fR command has been invoked for this \fIpackage\fR and \fIversion\fR. .TP \fBpackage names\fR Returns a list of the names of all packages in the interpreter for which a version has been provided (via \fBpackage provide\fR) or for which a \fBpackage ifneeded\fR script is available. The order of elements in the list is arbitrary. .TP \fBpackage provide \fIpackage \fR?\fIversion\fR? This command is invoked to indicate that version \fIversion\fR of package \fIpackage\fR is now present in the interpreter. It is typically invoked once as part of an \fBifneeded\fR script, and again by the package itself when it is finally loaded. An error occurs if a different version of \fIpackage\fR has been provided by a previous \fBpackage provide\fR command. If the \fIversion\fR argument is omitted, then the command returns the version number that is currently provided, or an empty string if no \fBpackage provide\fR command has been invoked for \fIpackage\fR in this interpreter. .TP \fBpackage require \fR?\fB\-exact\fR? \fIpackage \fR?\fIversion\fR? This command is typically invoked by Tcl code that wishes to use a particular version of a particular package. The arguments indicate which package is wanted, and the command ensures that a suitable version of the package is loaded into the interpreter. If the command succeeds, it returns the version number that is loaded; otherwise it generates an error. If both the \fB\-exact\fR switch and the \fIversion\fR argument are specified then only the given version is acceptable. If \fB\-exact\fR is omitted but \fIversion\fR is specified, then versions later than \fIversion\fR are also acceptable as long as they have the same major version number as \fIversion\fR. If both \fB\-exact\fR and \fIversion\fR are omitted then any version whatsoever is acceptable. If a version of \fIpackage\fR has already been provided (by invoking the \fBpackage provide\fR command), then its version number must satisfy the criteria given by \fB\-exact\fR and \fIversion\fR and the command returns immediately. Otherwise, the command searches the database of information provided by previous \fBpackage ifneeded\fR commands to see if an acceptable version of the package is available. If so, the script for the highest acceptable version number is invoked; it must do whatever is necessary to load the package, including calling \fBpackage provide\fR for the package. If the \fBpackage ifneeded\fR database does not contain an acceptable version of the package and a \fBpackage unknown\fR command has been specified for the interpreter then that command is invoked; when it completes, Tcl checks again to see if the package is now provided or if there is a \fBpackage ifneeded\fR script for it. If all of these steps fail to provide an acceptable version of the package, then the command returns an error. .TP \fBpackage unknown \fR?\fIcommand\fR? This command supplies a ``last resort'' command to invoke during \fBpackage require\fR if no suitable version of a package can be found in the \fBpackage ifneeded\fR database. If the \fIcommand\fR argument is supplied, it contains the first part of a command; when the command is invoked during a \fBpackage require\fR command, Tcl appends two additional arguments giving the desired package name and version. For example, if \fIcommand\fR is \fBfoo bar\fR and later the command \fBpackage require test 2.4\fR is invoked, then Tcl will execute the command \fBfoo bar test 2.4\fR to load the package. If no version number is supplied to the \fBpackage require\fR command, then the version argument for the invoked command will be an empty string. If the \fBpackage unknown\fR command is invoked without a \fIcommand\fR argument, then the current \fBpackage unknown\fR script is returned, or an empty string if there is none. If \fIcommand\fR is specified as an empty string, then the current \fBpackage unknown\fR script is removed, if there is one. .TP \fBpackage vcompare \fIversion1 version2\fR Compares the two version numbers given by \fIversion1\fR and \fIversion2\fR. Returns -1 if \fIversion1\fR is an earlier version than \fIversion2\fR, 0 if they are equal, and 1 if \fIversion1\fR is later than \fBversion2\fR. .TP \fBpackage versions \fIpackage\fR Returns a list of all the version numbers of \fIpackage\fR for which information has been provided by \fBpackage ifneeded\fR commands. .TP \fBpackage vsatisfies \fIversion1 version2\fR Returns 1 if scripts written for \fIversion2\fR will work unchanged with \fIversion1\fR (i.e. \fIversion1\fR is equal to or greater than \fIversion2\fR and they both have the same major version number), 0 otherwise. .SH "VERSION NUMBERS" .PP Version numbers consist of one or more decimal numbers separated by dots, such as 2 or 1.162 or 3.1.13.1. The first number is called the major version number. Larger numbers correspond to later versions of a package, with leftmost numbers having greater significance. For example, version 2.1 is later than 1.3 and version 3.4.6 is later than 3.3.5. Missing fields are equivalent to zeroes: version 1.3 is the same as version 1.3.0 and 1.3.0.0, so it is earlier than 1.3.1 or 1.3.0.2. A later version number is assumed to be upwards compatible with an earlier version number as long as both versions have the same major version number. For example, Tcl scripts written for version 2.3 of a package should work unchanged under versions 2.3.2, 2.4, and 2.5.1. Changes in the major version number signify incompatible changes: if code is written to use version 2.1 of a package, it is not guaranteed to work unmodified with either version 1.7.3 or version 3.1. .SH "PACKAGE INDICES" .PP The recommended way to use packages in Tcl is to invoke \fBpackage require\fR and \fBpackage provide\fR commands in scripts, and use the procedure \fBpkg_mkIndex\fR to create package index files. Once you've done this, packages will be loaded automatically in response to \fBpackage require\fR commands. See the documentation for \fBpkg_mkIndex\fR for details. .SH KEYWORDS package, version 07070100079093000081a400004ccf0000000a0000000133f371e7000016d4000000a30000000400000000000000000000002100000004reloc/SUNWtcl/8.0/man/mann/pid.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) pid.n 1.5 96/03/25 20:20:57 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH pid n 7.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME pid \- Retrieve process id(s) .SH SYNOPSIS \fBpid \fR?\fIfileId\fR? .BE .SH DESCRIPTION .PP If the \fIfileId\fR argument is given then it should normally refer to a process pipeline created with the \fBopen\fR command. In this case the \fBpid\fR command will return a list whose elements are the process identifiers of all the processes in the pipeline, in order. The list will be empty if \fIfileId\fR refers to an open file that isn't a process pipeline. If no \fIfileId\fR argument is given then \fBpid\fR returns the process identifier of the current process. All process identifiers are returned as decimal strings. .SH KEYWORDS file, pipeline, process identifier 07070100079095000081a400004ccf0000000a0000000133f371e700001f69000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/proc.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) proc.n 1.6 97/05/18 15:49:45 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH proc n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME proc \- Create a Tcl procedure .SH SYNOPSIS \fBproc \fIname args body\fR .BE .SH DESCRIPTION .PP The \fBproc\fR command creates a new Tcl procedure named \fIname\fR, replacing any existing command or procedure there may have been by that name. Whenever the new command is invoked, the contents of \fIbody\fR will be executed by the Tcl interpreter. Normally, \fIname\fR is unqualified (does not include the names of any containing namespaces), and the new procedure is created in the current namespace. If \fIname\fR includes any namespace qualifiers, the procedure is created in the specified namespace. \fIArgs\fR specifies the formal arguments to the procedure. It consists of a list, possibly empty, each of whose elements specifies one argument. Each argument specifier is also a list with either one or two fields. If there is only a single field in the specifier then it is the name of the argument; if there are two fields, then the first is the argument name and the second is its default value. .PP When \fIname\fR is invoked a local variable will be created for each of the formal arguments to the procedure; its value will be the value of corresponding argument in the invoking command or the argument's default value. Arguments with default values need not be specified in a procedure invocation. However, there must be enough actual arguments for all the formal arguments that don't have defaults, and there must not be any extra actual arguments. There is one special case to permit procedures with variable numbers of arguments. If the last formal argument has the name \fBargs\fR, then a call to the procedure may contain more actual arguments than the procedure has formals. In this case, all of the actual arguments starting at the one that would be assigned to \fBargs\fR are combined into a list (as if the \fBlist\fR command had been used); this combined value is assigned to the local variable \fBargs\fR. .PP When \fIbody\fR is being executed, variable names normally refer to local variables, which are created automatically when referenced and deleted when the procedure returns. One local variable is automatically created for each of the procedure's arguments. Global variables can only be accessed by invoking the \fBglobal\fR command or the \fBupvar\fR command. Namespace variables can only be accessed by invoking the \fBvariable\fR command or the \fBupvar\fR command. .PP The \fBproc\fR command returns an empty string. When a procedure is invoked, the procedure's return value is the value specified in a \fBreturn\fR command. If the procedure doesn't execute an explicit \fBreturn\fR, then its return value is the value of the last command executed in the procedure's body. If an error occurs while executing the procedure body, then the procedure-as-a-whole will return that same error. .SH KEYWORDS argument, procedure 07070100079094000081a400004ccf0000000a0000000133f371e700002a55000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/man/mann/pkgMkIndex.n'\" '\" Copyright (c) 1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) pkgMkIndex.n 1.6 96/10/04 11:31:53 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH pkg_mkIndex n 7.6 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME pkg_mkIndex \- Build an index for automatic loading of packages .SH SYNOPSIS .nf \fBpkg_mkIndex \fIdir \fIpattern \fR?\fIpattern pattern ...\fR? .fi .BE .SH DESCRIPTION .PP \fBPkg_mkIndex\fR is a utility procedure that is part of the standard Tcl library. It is used to create index files that allow packages to be loaded automatically when \fBpackage require\fR commands are executed. To use \fBpkg_mkIndex\fR, follow these steps: .IP [1] Create the package(s). Each package may consist of one or more Tcl script files or binary files. Binary files must be suitable for loading with the \fBload\fR command with a single argument; for example, if the file is \fBtest.so\fR it must be possible to load this file with the command \fBload test.so\fR. Each script file must contain a \fBpackage provide\fR command to declare the package and version number, and each binary file must contain a call to \fBTcl_PkgProvide\fR. .IP [2] Create the index by invoking \fBpkg_mkIndex\fR. The \fIdir\fR argument gives the name of a directory and each \fIpattern\fR argument is a \fBglob\fR-style pattern that selects script or binary files in \fIdir\fR. \fBPkg_mkIndex\fR will create a file \fBpkgIndex.tcl\fR in \fIdir\fR with package information about all the files given by the \fIpattern\fR arguments. It does this by loading each file and seeing what packages and new commands appear (this is why it is essential to have \fBpackage provide\fR commands or \fBTcl_PkgProvide\fR calls in the files, as described above). .VS br .IP [3] Install the package as a subdirectory of one of the directories given by the \fBtcl_pkgPath\fR variable. If \fB$tcl_pkgPath\fR contains more than one directory, machine-dependent packages (e.g., those that contain binary shared libraries) should normally be installed under the first directory and machine-independent packages (e.g., those that contain only Tcl scripts) should be installed under the second directory. The subdirectory should include the package's script and/or binary files as well as the \fBpkgIndex.tcl\fR file. As long as the package is installed as a subdirectory of a directory in \fB$tcl_pkgPath\fR it will automatically be found during \fBpackage require\fR commands. .RS .LP If you install the package anywhere else, then you must ensure that the directory contaiingn the package is in the \fBauto_path\fR global variable or an immediate subdirectory of one of the directories in \fBauto_path\fR. \fBAuto_path\fR contains a list of directories that are searched by both the auto-loader and the package loader; by default it includes \fB$tcl_pkgPath\fR. The package loader also checks all of the subdirectories of the directories in \fBauto_path\fR. .VE You can add a directory to \fBauto_path\fR explicitly in your application, or you can add the directory to your \fBTCLLIBPATH\fR environment variable: if this environment variable is present, Tcl initializes \fBauto_path\fR from it during application startup. .RE .IP [4] Once the above steps have been taken, all you need to do to use a package is to invoke \fBpackage require\fR. For example, if versions 2.1, 2.3, and 3.1 of package \fBTest\fR have been indexed by \fBpkg_mkIndex\fR, the command \fBpackage require Test\fR will make version 3.1 available and the command \fBpackage require \-exact Test 2.1\fR will make version 2.1 available. There may be many versions of a package in the various index files in \fBauto_path\fR, but only one will actually be loaded in a given interpreter, based on the first call to \fBpackage require\fR. Different versions of a package may be loaded in different interpreters. .SH "PACKAGES AND THE AUTO-LOADER" .PP The package management facilities overlap somewhat with the auto-loader, in that both arrange for files to be loaded on-demand. However, package management is a higher-level mechanism that uses the auto-loader for the last step in the loading process. It is generally better to index a package with \fBpkg_mkIndex\fR rather than \fBauto_mkindex\fR because the package mechanism provides version control: several versions of a package can be made available in the index files, with different applications using different versions based on \fBpackage require\fR commands. In contrast, \fBauto_mkindex\fR does not understand versions so it can only handle a single version of each package. It is probably not a good idea to index a given package with both \fBpkg_mkIndex\fR and \fBauto_mkindex\fR. If you use \fBpkg_mkIndex\fR to index a package, its commands cannot be invoked until \fBpackage require\fR has been used to select a version; in contrast, packages indexed with \fBauto_mkindex\fR can be used immediately since there is no version control. .SH "HOW IT WORKS" .PP \fBPkg_mkIndex\fR depends on the \fBpackage unknown\fR command, the \fBpackage ifneeded\fR command, and the auto-loader. The first time a \fBpackage require\fR command is invoked, the \fBpackage unknown\fR script is invoked. This is set by Tcl initialization to a script that evaluates all of the \fBpkgIndex.tcl\fR files in the \fBauto_path\fR. The \fBpkgIndex.tcl\fR files contain \fBpackage ifneeded\fR commands for each version of each available package; these commands invoke \fBpackage provide\fR commands to announce the availability of the package, and they setup auto-loader information to load the files of the package. A given file of a given version of a given package isn't actually loaded until the first time one of its commands is invoked. Thus, after invoking \fBpackage require\fR you won't see the package's commands in the interpreter, but you will be able to invoke the commands and they will be auto-loaded. .SH KEYWORDS auto-load, index, package, version 07070100079096000081a400004ccf0000000a0000000133f371e700001d86000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/puts.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) puts.n 1.11 96/08/26 13:00:09 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH puts n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME puts \- Write to a channel .SH SYNOPSIS \fBputs \fR?\fB\-nonewline\fR? ?\fIchannelId\fR? \fIstring\fR .BE .SH DESCRIPTION .PP Writes the characters given by \fIstring\fR to the channel given by \fIchannelId\fR. \fIChannelId\fR must be a channel identifier such as returned from a previous invocation of \fBopen\fR or \fBsocket\fR. It must have been opened for output. If no \fIchannelId\fR is specified then it defaults to \fBstdout\fR. \fBPuts\fR normally outputs a newline character after \fIstring\fR, but this feature may be suppressed by specifying the \fB\-nonewline\fR switch. .PP Newline characters in the output are translated by \fBputs\fR to platform-specific end-of-line sequences according to the current value of the \fB\-translation\fR option for the channel (for example, on PCs newlines are normally replaced with carriage-return-linefeed sequences; on Macintoshes newlines are normally replaced with carriage-returns). See the \fBfconfigure\fR manual entry for a discussion of end-of-line translations. .PP Tcl buffers output internally, so characters written with \fBputs\fR may not appear immediately on the output file or device; Tcl will normally delay output until the buffer is full or the channel is closed. You can force output to appear immediately with the \fBflush\fR command. .PP When the output buffer fills up, the \fBputs\fR command will normally block until all the buffered data has been accepted for output by the operating system. If \fIchannelId\fR is in nonblocking mode then the \fBputs\fR command will not block even if the operating system cannot accept the data. Instead, Tcl continues to buffer the data and writes it in the background as fast as the underlying file or device can accept it. The application must use the Tcl event loop for nonblocking output to work; otherwise Tcl never finds out that the file or device is ready for more output data. It is possible for an arbitrarily large amount of data to be buffered for a channel in nonblocking mode, which could consume a large amount of memory. To avoid wasting memory, nonblocking I/O should normally be used in an event-driven fashion with the \fBfileevent\fR command (don't invoke \fBputs\fR unless you have recently been notified via a file event that the channel is ready for more output data). .SH "SEE ALSO" fileevent(n) .SH KEYWORDS channel, newline, output, write 07070100079097000081a400004ccf0000000a0000000133f371e7000014e8000000a30000000400000000000000000000002100000004reloc/SUNWtcl/8.0/man/mann/pwd.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) pwd.n 1.5 96/03/25 20:21:30 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH pwd n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME pwd \- Return the current working directory .SH SYNOPSIS \fBpwd\fR .BE .SH DESCRIPTION .PP Returns the path name of the current working directory. .SH KEYWORDS working directory 07070100079098000081a400004ccf0000000a0000000133f371e80000195f000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/read.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) read.n 1.15 96/08/26 13:00:09 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH read n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME read \- Read from a channel .SH SYNOPSIS \fBread \fR?\fB\-nonewline\fR? \fIchannelId\fR .sp \fBread \fIchannelId numBytes\fR .BE .SH DESCRIPTION .PP In the first form, the \fBread\fR command reads all of the data from \fIchannelId\fR up to the end of the file. If the \fB\-nonewline\fR switch is specified then the last character of the file is discarded if it is a newline. In the second form, the extra argument specifies how many bytes to read. Exactly that many bytes will be read and returned, unless there are fewer than \fInumBytes\fR left in the file; in this case all the remaining bytes are returned. .PP If \fIchannelId\fR is in nonblocking mode, the command may not read as many bytes as requested: once all available input has been read, the command will return the data that is available rather than blocking for more input. The \fB\-nonewline\fR switch is ignored if the command returns before reaching the end of the file. .PP \fBRead\fR translates end-of-line sequences in the input into newline characters according to the \fB\-translation\fR option for the channel. See the manual entry for \fBfconfigure\fR for details on the \fB\-translation\fR option. .SH "SEE ALSO" eof(n), fblocked(n), fconfigure(n) .SH KEYWORDS blocking, channel, end of line, end of file, nonblocking, read, translation 07070100079099000081a400004ccf0000000a0000000133f371e800002b00000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/regexp.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) regexp.n 1.12 96/08/26 13:00:10 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH regexp n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME regexp \- Match a regular expression against a string .SH SYNOPSIS \fBregexp \fR?\fIswitches\fR? \fIexp string \fR?\fImatchVar\fR? ?\fIsubMatchVar subMatchVar ...\fR? .BE .SH DESCRIPTION .PP Determines whether the regular expression \fIexp\fR matches part or all of \fIstring\fR and returns 1 if it does, 0 if it doesn't. .LP If additional arguments are specified after \fIstring\fR then they are treated as the names of variables in which to return information about which part(s) of \fIstring\fR matched \fIexp\fR. \fIMatchVar\fR will be set to the range of \fIstring\fR that matched all of \fIexp\fR. The first \fIsubMatchVar\fR will contain the characters in \fIstring\fR that matched the leftmost parenthesized subexpression within \fIexp\fR, the next \fIsubMatchVar\fR will contain the characters that matched the next parenthesized subexpression to the right in \fIexp\fR, and so on. .LP If the initial arguments to \fBregexp\fR start with \fB\-\fR then they are treated as switches. The following switches are currently supported: .TP 10 \fB\-nocase\fR Causes upper-case characters in \fIstring\fR to be treated as lower case during the matching process. .TP 10 \fB\-indices\fR Changes what is stored in the \fIsubMatchVar\fRs. Instead of storing the matching characters from \fBstring\fR, each variable will contain a list of two decimal strings giving the indices in \fIstring\fR of the first and last characters in the matching range of characters. .TP 10 \fB\-\|\-\fR Marks the end of switches. The argument following this one will be treated as \fIexp\fR even if it starts with a \fB\-\fR. .LP If there are more \fIsubMatchVar\fR's than parenthesized subexpressions within \fIexp\fR, or if a particular subexpression in \fIexp\fR doesn't match the string (e.g. because it was in a portion of the expression that wasn't matched), then the corresponding \fIsubMatchVar\fR will be set to ``\fB\-1 \-1\fR'' if \fB\-indices\fR has been specified or to an empty string otherwise. .SH "REGULAR EXPRESSIONS" .PP Regular expressions are implemented using Henry Spencer's package (thanks, Henry!), and much of the description of regular expressions below is copied verbatim from his manual entry. .PP A regular expression is zero or more \fIbranches\fR, separated by ``|''. It matches anything that matches one of the branches. .PP A branch is zero or more \fIpieces\fR, concatenated. It matches a match for the first, followed by a match for the second, etc. .PP A piece is an \fIatom\fR possibly followed by ``*'', ``+'', or ``?''. An atom followed by ``*'' matches a sequence of 0 or more matches of the atom. An atom followed by ``+'' matches a sequence of 1 or more matches of the atom. An atom followed by ``?'' matches a match of the atom, or the null string. .PP An atom is a regular expression in parentheses (matching a match for the regular expression), a \fIrange\fR (see below), ``.'' (matching any single character), ``^'' (matching the null string at the beginning of the input string), ``$'' (matching the null string at the end of the input string), a ``\e'' followed by a single character (matching that character), or a single character with no other significance (matching that character). .PP A \fIrange\fR is a sequence of characters enclosed in ``[]''. It normally matches any single character from the sequence. If the sequence begins with ``^'', it matches any single character \fInot\fR from the rest of the sequence. If two characters in the sequence are separated by ``\-'', this is shorthand for the full list of ASCII characters between them (e.g. ``[0-9]'' matches any decimal digit). To include a literal ``]'' in the sequence, make it the first character (following a possible ``^''). To include a literal ``\-'', make it the first or last character. .SH "CHOOSING AMONG ALTERNATIVE MATCHES" .PP In general there may be more than one way to match a regular expression to an input string. For example, consider the command .CS \fBregexp (a*)b* aabaaabb x y\fR .CE Considering only the rules given so far, \fBx\fR and \fBy\fR could end up with the values \fBaabb\fR and \fBaa\fR, \fBaaab\fR and \fBaaa\fR, \fBab\fR and \fBa\fR, or any of several other combinations. To resolve this potential ambiguity \fBregexp\fR chooses among alternatives using the rule ``first then longest''. In other words, it considers the possible matches in order working from left to right across the input string and the pattern, and it attempts to match longer pieces of the input string before shorter ones. More specifically, the following rules apply in decreasing order of priority: .IP [1] If a regular expression could match two different parts of an input string then it will match the one that begins earliest. .IP [2] If a regular expression contains \fB|\fR operators then the leftmost matching sub-expression is chosen. .IP [3] In \fB*\fR, \fB+\fR, and \fB?\fR constructs, longer matches are chosen in preference to shorter ones. .IP [4] In sequences of expression components the components are considered from left to right. .LP In the example from above, \fB(a*)b*\fR matches \fBaab\fR: the \fB(a*)\fR portion of the pattern is matched first and it consumes the leading \fBaa\fR; then the \fBb*\fR portion of the pattern consumes the next \fBb\fR. Or, consider the following example: .CS \fBregexp (ab|a)(b*)c abc x y z\fR .CE After this command \fBx\fR will be \fBabc\fR, \fBy\fR will be \fBab\fR, and \fBz\fR will be an empty string. Rule 4 specifies that \fB(ab|a)\fR gets first shot at the input string and Rule 2 specifies that the \fBab\fR sub-expression is checked before the \fBa\fR sub-expression. Thus the \fBb\fR has already been claimed before the \fB(b*)\fR component is checked and \fB(b*)\fR must match an empty string. .SH KEYWORDS match, regular expression, string 0707010007909a000081a400004ccf0000000a0000000133f371e800002a2e000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/mann/registry.n'\" '\" Copyright (c) 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. '\" '\" SCCS: @(#) registry.n 1.5 97/08/11 19:33:27 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH registry n 8.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME registry \- Manipulate the Windows registry .SH SYNOPSIS .sp \fBpackage require registry 1.0\fR .sp \fBregistry \fIoption\fR \fIkeyName\fR ?\fIarg arg ...\fR? .BE .SH DESCRIPTION .PP The \fBregistry\fR package provides a general set of operations for manipulating the Windows registry. The package implements the \fBregistry\fR Tcl command. This command is only supported on the Windows platform. Warning: this command should be used with caution as a corrupted registry can leave your system in an unusable state. .PP \fIKeyName\fR is the name of a registry key. Registry keys must be one of the following forms: .IP \fB\e\e\fIhostname\fB\e\fIrootname\fB\e\fIkeypath\fR .IP \fIrootname\fB\e\fIkeypath\fR .IP \fIrootname\fR .PP \fIHostname\fR specifies the name of any valid Windows host that exports its registry. The \fIrootname\fR component must be one of \fBHKEY_LOCAL_MACHINE\fR, \fBHKEY_USERS\fR, \fBHKEY_CLASSES_ROOT\fR, \fBHKEY_CURRENT_USER\fR, or \fBHKEY_CURRENT_CONFIG\fR. The \fIkeypath\fR can be one or more registry key names separated by backslash (\fB\e\fR) characters. .PP \fIOption\fR indicates what to do with the registry key name. Any unique abbreviation for \fIoption\fR is acceptable. The valid options are: .TP \fBregistry delete \fIkeyName\fR ?\fIvalueName\fR? . If the optional \fIvalueName\fR argument is present, the specified value under \fIkeyName\fR will be deleted from the registry. If the optional \fIvalueName\fR is omitted, the specified key and any subkeys or values beneath it in the registry heirarchy will be deleted. If the key could not be deleted then an error is generated. If the key did not exist, the command has no effect. .TP \fBregistry get \fIkeyName valueName\fR . Returns the data associated with the value \fIvalueName\fR under the key \fIkeyName\fR. If either the key or the value does not exist, then an error is generated. For more details on the format of the returned data, see SUPPORTED TYPES, below. .TP \fBregistry keys \fIkeyName\fR ?\fIpattern\fR? . If \fIpattern\fR isn't specified, returns a list of names of all the subkeys of \fIkeyName\fR. If \fIpattern\fR is specified, only those names matching \fIpattern\fR are returned. Matching is determined using the same rules as for \fBstring\fR \fBmatch\fR. If the specified \fIkeyName\fR does not exist, then an error is generated. .TP \fBregistry set \fIkeyName\fR ?\fIvalueName data \fR?\fItype\fR?? . If \fIvalueName\fR isn't specified, creates the key \fIkeyName\fR if it doesn't already exist. If \fIvalueName\fR is specified, creates the key \fIkeyName\fR and value \fIvalueName\fR if necessary. The contents of \fIvalueName\fR are set to \fIdata\fR with the type indicated by \fItype\fR. If \fItype\fR isn't specified, the type \fBsz\fR is assumed. For more details on the data and type arguments, see SUPPORTED TYPES below. .TP \fBregistry type \fIkeyName valueName\fR . Returns the type of the value \fIvalueName\fR in the key \fIkeyName\fR. For more information on the possible types, see SUPPORTED TYPES, below. .TP \fBregistry values \fIkeyName\fR ?\fIpattern\fR? . If \fIpattern\fR isn't specified, returns a list of names of all the values of \fIkeyName\fR. If \fIpattern\fR is specified, only those names matching \fIpattern\fR are returned. Matching is determined using the same rules as for \fBstring\fR \fBmatch\fR. .SH "SUPPORTED TYPES" Each value under a key in the registry contains some data of a particular type in a type-specific representation. The \fBregistry\fR command converts between this internal representation and one that can be manipulated by Tcl scripts. In most cases, the data is simply returned as a Tcl string. The type indicates the intended use for the data, but does not actually change the representation. For some types, the \fBregistry\fR command returns the data in a different form to make it easier to manipulate. The following types are recognized by the registry command: .TP 17 \fBbinary\fR . The registry value contains arbitrary binary data. The data is represented exactly in Tcl, including any embedded nulls. Tcl .TP \fBnone\fR . The registry value contains arbitrary binary data with no defined type. The data is represented exactly in Tcl, including any embedded nulls. .TP \fBsz\fR . The registry value contains a null-terminated string. The data is represented in Tcl as a string. .TP \fBexpand_sz\fR . The registry value contains a null-terminated string that contains unexpanded references to environment variables in the normal Windows style (for example, "%PATH%"). The data is represented in Tcl as a string. .TP \fBdword\fR . The registry value contains a little-endian 32-bit number. The data is represented in Tcl as a decimal string. .TP \fBdword_big_endian\fR . The registry value contains a big-endian 32-bit number. The data is represented in Tcl as a decimal string. .TP \fBlink\fR . The registry value contains a symbolic link. The data is represented exactly in Tcl, including any embedded nulls. .TP \fBmulti_sz\fR . The registry value contains an array of null-terminated strings. The data is represented in Tcl as a list of strings. .TP \fBresource_list\fR . The registry value contains a device-driver resource list. The data is represented exactly in Tcl, including any embedded nulls. .PP In addition to the symbolically named types listed above, unknown types are identified using a 32-bit integer that corresponds to the type code returned by the system interfaces. In this case, the data is represented exactly in Tcl, including any embedded nulls. .SH "PORTABILITY ISSUES" The registry command is only available on Windows. .SH KEYWORDS registry 0707010007909b000081a400004ccf0000000a0000000133f371e800001d52000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/regsub.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) regsub.n 1.9 96/08/26 13:00:11 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH regsub n 7.4 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME regsub \- Perform substitutions based on regular expression pattern matching .SH SYNOPSIS \fBregsub \fR?\fIswitches\fR? \fIexp string subSpec varName\fR .BE .SH DESCRIPTION .PP This command matches the regular expression \fIexp\fR against \fIstring\fR, and it copies \fIstring\fR to the variable whose name is given by \fIvarName\fR. If there is a match, then while copying \fIstring\fR to \fIvarName\fR the portion of \fIstring\fR that matched \fIexp\fR is replaced with \fIsubSpec\fR. If \fIsubSpec\fR contains a ``&'' or ``\e0'', then it is replaced in the substitution with the portion of \fIstring\fR that matched \fIexp\fR. If \fIsubSpec\fR contains a ``\e\fIn\fR'', where \fIn\fR is a digit between 1 and 9, then it is replaced in the substitution with the portion of \fIstring\fR that matched the \fIn\fR-th parenthesized subexpression of \fIexp\fR. Additional backslashes may be used in \fIsubSpec\fR to prevent special interpretation of ``&'' or ``\e0'' or ``\e\fIn\fR'' or backslash. The use of backslashes in \fIsubSpec\fR tends to interact badly with the Tcl parser's use of backslashes, so it's generally safest to enclose \fIsubSpec\fR in braces if it includes backslashes. .LP If the initial arguments to \fBregexp\fR start with \fB\-\fR then they are treated as switches. The following switches are currently supported: .TP 10 \fB\-all\fR All ranges in \fIstring\fR that match \fIexp\fR are found and substitution is performed for each of these ranges. Without this switch only the first matching range is found and substituted. If \fB\-all\fR is specified, then ``&'' and ``\e\fIn\fR'' sequences are handled for each substitution using the information from the corresponding match. .TP 10 \fB\-nocase\fR Upper-case characters in \fIstring\fR will be converted to lower-case before matching against \fIexp\fR; however, substitutions specified by \fIsubSpec\fR use the original unconverted form of \fIstring\fR. .TP 10 \fB\-\|\-\fR Marks the end of switches. The argument following this one will be treated as \fIexp\fR even if it starts with a \fB\-\fR. .PP The command returns a count of the number of matching ranges that were found and replaced. See the manual entry for \fBregexp\fR for details on the interpretation of regular expressions. .SH KEYWORDS match, pattern, regular expression, substitute 0707010007909c000081a400004ccf0000000a0000000133f371e800001688000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/rename.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) rename.n 1.6 97/07/30 17:37:26 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH rename n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME rename \- Rename or delete a command .SH SYNOPSIS \fBrename \fIoldName newName\fR .BE .SH DESCRIPTION .PP Rename the command that used to be called \fIoldName\fR so that it is now called \fInewName\fR. If \fInewName\fR is an empty string then \fIoldName\fR is deleted. \fIoldName\fR and \fInewName\fR may include namespace qualifiers (names of containing namespaces). If a command is renamed into a different namespace, future invocations of it will execute in the new namespace. The \fBrename\fR command returns an empty string as result. .SH KEYWORDS command, delete, namespace, rename 0707010007909d000081a400004ccf0000000a0000000133f371e80000261f000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/mann/resource.n'\" '\" Copyright (c) 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. '\" SCCS: @(#) resource.n 1.3 97/07/25 10:24:23 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH resource n 8.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME resource \- Manipulate Macintosh resources .SH SYNOPSIS \fBresource \fIoption\fR ?\fIarg arg ...\fR? .BE .SH DESCRIPTION .PP The \fBresource\fR command provides some generic operations for dealing with Macintosh resources. This command is only supported on the Macintosh platform. Each Macintosh file consists of two \fIforks\fR: a \fIdata\fR fork and a \fIresource\fR fork. You use the normal open, puts, close, etc. commands to manipulate the data fork. You must use this command, however, to interact with the resource fork. \fIOption\fR indicates what resource command to perform. Any unique abbreviation for \fIoption\fR is acceptable. The valid options are: .TP \fBresource close \fIrsrcRef\fR Closes the given resource reference (obtained from \fBresource open\fR). Resources from that resource file will no longer be available. .TP \fBresource list \fIresourceType\fR ?\fIresourceRef\fR? List all of the resources ids of type \fIresourceType\fR (see RESOURCE TYPES below). If \fIresourceRef\fR is specified then the command will limit the search to that particular resource file. Otherwise, all resource files currently opened by the application will be searched. A Tcl list of either the resource name's or resource id's of the found resources will be returned. See the RESOURCE IDS section below for more details about what a resource id is. .TP \fBresource open \fIfileName\fR ?\fIpermissions\fR? Open the resource for the file \fIfileName\fR. Standard file permissions may also be specified (see the manual entry for \fBopen\fR for details). A resource reference (\fIresourceRef\fR) is returned that can be used by the other resource commands. An error can occur if the file doesn't exist or the file does not have a resource fork. However, if you open the file with write permissions the file and/or resource fork will be created instead of generating an error. .TP \fBresource read \fIresourceType\fR \fIresourceId\fR ?\fIresourceRef\fR? Read the entire resource of type \fIresourceType\fR (see RESOURCE TYPES below) and the name or id of \fIresourceId\fR (see RESOURCE IDS below) into memory and return the result. If \fIresourceRef\fR is specified we limit our search to that resource file, otherwise we search all open resource forks in the application. It is important to note that most Macintosh resource use a binary format and the data returned from this command may have embedded NULLs or other non-ASCII data. .TP \fBresource types ?\fIresourceRef\fR? This command returns a Tcl list of all resource types (see RESOURCE TYPES below) found in the resource file pointed to by \fIresourceRef\fR. If \fIresourceRef\fR is not specified it will return all the resource types found in every resource file currently opened by the application. .TP \fBresource write\fR ?\fIoptions\fR? \fIresourceType\fR \fIdata\fR This command will write the passed in \fIdata\fR as a new resource of type \fIresourceType\fR (see RESOURCE TYPES below). Several options are available that describe where and how the resource is stored. .RS .TP \fB\-id\fR \fIresourceId\fR If the \fB-id\fR option is given the id \fIresourceId\fR (see RESOURCE IDS below) is used for the new resource, otherwise a unique id will be generated that will not conflict with any existing resource. However, the id must be a number - to specify a name use the \fB\-name\fR option. .TP \fB\-name\fR \fIresourceName\fR If \fB-name\fR is specified the resource will be named \fIresourceName\fR, otherwise it will have the empty string as the name. .TP \fB\-file\fR \fIresourceRef\fR If the \fB-file\fR option is specified then the resource will be written in the file pointed to by \fIresourceRef\fR, otherwise the most resently open resource will be used. .RE .SH "RESOURCE TYPES" Resource types are defined as a four character string that is then mapped to an underlying id. For example, \fBTEXT\fR refers to the Macintosh resource type for text. The type \fBSTR#\fR is a list of counted strings. All Macintosh resources must be of some type. See Macintosh documentation for a more complete list of resource types that are commonly used. .SH "RESOURCE IDS" For this command the notion of a resource id actually refers to two ideas in Macintosh resources. Every place you can use a resource Id you can use either the resource name or a resource number. Names are always searched or returned in preference to numbers. For example, the \fBresource list\fR command will return names if they exist or numbers if the name is NULL. .SH "SEE ALSO" open .SH "PORTABILITY ISSUES" The resource command is only available on Macintosh. .SH KEYWORDS open, resource 0707010007909e000081a400004ccf0000000a0000000133f371e900001ef0000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/return.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) return.n 1.13 96/08/26 13:00:12 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH return n 7.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME return \- Return from a procedure .SH SYNOPSIS \fBreturn \fR?\fB\-code \fIcode\fR? ?\fB\-errorinfo \fIinfo\fR? ?\fB\-errorcode\fI code\fR? ?\fIstring\fR? .BE .SH DESCRIPTION .PP Return immediately from the current procedure (or top-level command or \fBsource\fR command), with \fIstring\fR as the return value. If \fIstring\fR is not specified then an empty string will be returned as result. .SH "EXCEPTIONAL RETURNS" .PP In the usual case where the \fB\-code\fR option isn't specified the procedure will return normally (its completion code will be TCL_OK). However, the \fB\-code\fR option may be used to generate an exceptional return from the procedure. \fICode\fR may have any of the following values: .TP 10 \fBok\fR Normal return: same as if the option is omitted. .TP 10 \fBerror\fR Error return: same as if the \fBerror\fR command were used to terminate the procedure, except for handling of \fBerrorInfo\fR and \fBerrorCode\fR variables (see below). .TP 10 \fBreturn\fR The current procedure will return with a completion code of TCL_RETURN, so that the procedure that invoked it will return also. .TP 10 \fBbreak\fR The current procedure will return with a completion code of TCL_BREAK, which will terminate the innermost nested loop in the code that invoked the current procedure. .TP 10 \fBcontinue\fR The current procedure will return with a completion code of TCL_CONTINUE, which will terminate the current iteration of the innermost nested loop in the code that invoked the current procedure. .TP 10 \fIvalue\fR \fIValue\fR must be an integer; it will be returned as the completion code for the current procedure. .LP The \fB\-code\fR option is rarely used. It is provided so that procedures that implement new control structures can reflect exceptional conditions back to their callers. .PP Two additional options, \fB\-errorinfo\fR and \fB\-errorcode\fR, may be used to provide additional information during error returns. These options are ignored unless \fIcode\fR is \fBerror\fR. .PP The \fB\-errorinfo\fR option specifies an initial stack trace for the \fBerrorInfo\fR variable; if it is not specified then the stack trace left in \fBerrorInfo\fR will include the call to the procedure and higher levels on the stack but it will not include any information about the context of the error within the procedure. Typically the \fIinfo\fR value is supplied from the value left in \fBerrorInfo\fR after a \fBcatch\fR command trapped an error within the procedure. .PP If the \fB\-errorcode\fR option is specified then \fIcode\fR provides a value for the \fBerrorCode\fR variable. If the option is not specified then \fBerrorCode\fR will default to \fBNONE\fR. .SH KEYWORDS break, continue, error, procedure, return 0707010007909f000081a400004ccf0000000a0000000133f371e9000047e7000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/safe.n'\" '\" Copyright (c) 1995-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) safe.n 1.3 97/08/13 12:44:45 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH "Safe Tcl" n 8.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME Safe Base \- A mechanism for creating and manipulating safe interpreters. .SH SYNOPSIS .PP \fB::safe::interpCreate\fR ?\fIslave\fR? ?\fIoptions...\fR? .sp \fB::safe::interpInit\fR \fIslave\fR ?\fIoptions...\fR? .sp \fB::safe::interpConfigure\fR \fIslave\fR ?\fIoptions...\fR? .sp \fB::safe::interpDelete\fR \fIslave\fR .sp \fB::safe::interpAddToAccessPath\fR \fIslave\fR \fIdirectory\fR .sp \fB::safe::interpFindInAccessPath\fR \fIslave\fR \fIdirectory\fR .sp \fB::safe::setLogCmd\fR ?\fIcmd arg...\fR? .SH OPTIONS .PP ?\fB\-accessPath\fR \fIpathList\fR? ?\fB\-noStatics\fR? ?\fB\-nestedLoadOk\fR? ?\fB\-deleteHook\fR \fIscript\fR? .BE .SH DESCRIPTION Safe Tcl is a mechanism for executing untrusted Tcl scripts safely and for providing mediated access by such scripts to potentially dangerous functionality. .PP The Safe Base ensures that untrusted Tcl scripts cannot harm the hosting application. The Safe Base prevents integrity and privacy attacks. Untrusted Tcl scripts are prevented from corrupting the state of the hosting application or computer. Untrusted scripts are also prevented from disclosing information stored on the hosting computer or in the hosting application to any party. .PP The Safe Base allows a master interpreter to create safe, restricted interpreters that contain a set of predefined aliases for the \fBsource\fR, \fBload\fR, \fBfile\fR and \fBexit\fR commands and are able to use the auto-loading and package mechanisms. .PP No knowledge of the file system structure is leaked to the safe interpreter, because it has access only to a virtualized path containing tokens. When the safe interpreter requests to source a file, it uses the token in the virtual path as part of the file name to source; the master interpreter translates the token into a real directory name and executes the requested operation. Different levels of security can be selected by using the optional flags of the commands described below. .PP All commands provided in the master interpreter by the Safe Base reside in the \fBsafe\fR namespace. \fB::safe::interpCreate\fR creates a new safe interpreter with options, described in the section \fBOPTIONS\fR. The return value is the name of the new safe interpreter created. \fB::safe::interpInit\fR is similar to \fB::safe::interpCreate\fR except that it requires as its first argument the name of a safe interpreter that was previously created directly using the \fBinterp\fR command. \fB::safe::interpDelete\fR deletes the interpreter named by its argument. \fB::safe::interpConfigure\fR can be used to set or get options for the named safe interpreters; the options are described in the section \fBOPTIONS\fR. .PP A virtual path is maintained in the master interpreter for each safe interpreter created by \fB::safe::interpCreate\fR or initialized by \fB::safe::interpInit\fR. The path maps tokens accessible in the safe interpreter into real path names on the local file system. This prevents safe interpreters from gaining knowledge about the structure of the file system of the host on which the interpeter is executing. When a token is used in a safe interpreter in a request to source or load a file, the token is translated to a real path name and the file to be sourced or loaded is located on the file system. The safe interpreter never gains knowledge of the actual path name under which the file is stored on the file system. Commands are provided in the master interpreter to manipulate the virtual path for a safe interpreter. \fB::safe::interpConfigure\fR can be used to set a new path for a safe interpreter. \fB::safe::interpAddToAccessPath\fR adds a directory to the virtual path for the named safe interpreter and returns the token by which that directory will be accessible in the safe interpreter. \fB::safe::interpFindInAccessPath\fR finds the requested directory in the virtual path for the named safe interpreter and returns the token by which that directory can be accessed in the safe interpreter. If the path is not found, an error is raised. .PP \fB::safe::setLogCommand\fR installs a script to be called when interesting life cycle events happen. This script will be called with one argument, a string describing the event. .SH ALIASES .PP The following aliases are provided in a safe interpreter: .TP \fBsource\fB \fIfileName\fR The requested file, a Tcl source file, is sourced into the safe interpreter if it is found. The \fBsource\fR alias can only source files from directories in the virtual path for the safe interpreter. The \fBsource\fR alias requires the safe interpreter to use one of the token names in its virtual path to denote the directory in which the file to be sourced can be found. See the section on \fBSECURITY\fR for more discussion of restrictions on valid filenames. .TP \fBload\fR \fIfileName\fR The requested file, a shared object file, in dynamically loaded into the safe interpreter if it is found. The filename must contain a token name mentioned in the virtual path for the safe interpreter for it to be found successfully. Additionally, the shared object file must contain a safe entry point; see the manual page for the \fBload\fR command for more details. .TP \fBfile\fR ?\fIoptions\fR? The \fBfile\fR alias provides access to a safe subset of the subcommands of the \fBfile\fR command; it allows only \fBdirname\fR, \fBjoin\fR, \fBextension\fR, \fBroot\fR, \fBtail\fR, \fBpathname\fR and \fBsplit\fR subcommands. For more details on what these subcommands do see the manual page for the \fBfile\fR command. .TP \fBexit\fR The calling interpreter is deleted and its computation is stopped, but the Tcl process in which this interpreter exists is not terminated. .PP .SH COMMANDS .PP The following commands are provided in the master interpreter: .TP \fB::safe::interpCreate\fR ?\fIslave\fR? ?\fIoptions...\fR? Creates a safe interpreter, installs the aliases described in the section \fBALIASES\fR and initializes the auto-loading and package mechanism as specified by the supplied \fBoptions\fR. See the \fBOPTIONS\fR section below for a description of the common optional arguments. If the \fIslave\fR argument is omitted, a name will be generated. \fB::safe::interpCreate\fR always returns the interpreter name. .TP \fB::safe::interpInit\fR \fIslave\fR ?\fIoptions...\fR? This command is similar to \fBinterpCreate\fR except it that does not create the safe interpreter. \fIslave\fR must have been created by some other means, like \fB::interp create \-safe\fR. .TP \fB::safe::interpConfigure\fR \fIslave\fR ?\fIoptions...\fR? If no \fIoptions\fR are given, returns the settings for all options for the named safe interpreter. If \fIoptions\fR are supplied, sets the options for the named safe interpreter. See the section on \fBOPTIONS\fR below. .TP \fB::safe::interpDelete\fR \fIslave\fR Deletes the safe interpreter and cleans up the corresponding master interpreter data structures. If a \fIdeletehook\fR script was specified for this interpreter it is evaluated before the interpreter is deleted, with the name of the interpreter as an additional argument. .TP \fB::safe::interpFindInAccessPath\fR \fIslave\fR \fIdirectory\fR This command finds and returns the token for the real directory \fIdirectory\fR in the safe interpreter's current virtual access path. It generates an error if the directory is not found. Example of use: .CS $slave eval [list set tk_library [::safe::interpFindInAccessPath $name $tk_library]] .CE .TP \fB::safe::interpAddToAccessPath\fR \fIslave\fR \fIdirectory\fR This command adds \fIdirectory\fR to the virtual path maintained for the safe interpreter in the master, and returns the token that can be used in the safe interpreter to obtain access to files in that directory. If the directory is already in the virtual path, it only returns the token without adding the directory to the virtual path again. Example of use: .CS $slave eval [list set tk_library [::safe::interpAddToAccessPath $name $tk_library]] .CE .TP \fB::safe::setLogCmd\fR ?\fIcmd arg...\fR? This command installs a script that will be called when interesting lifecycle events occur for a safe interpreter. When called with no arguments, it returns the currently installed script. When called with one argument, an empty string, the currently installed script is removed and logging is turned off. The script will be invoked with one additional argument, a string describing the event of interest. The main purpose is to help in debugging safe interpreters. Using this facility you can get complete error messages while the safe interpreter gets only generic error messages. This prevents a safe interpreter from seeing messages about failures and other events that might contain sensitive information such as real directory names. .RS Example of use: .CS ::safe::setLogCmd puts stderr .CE Below is the output of a sample session in which a safe interpreter attempted to source a file not found in its virtual access path. Note that the safe interpreter only received an error message saying that the file was not found: .CS NOTICE for slave interp10 : Created NOTICE for slave interp10 : Setting accessPath=(/foo/bar) staticsok=1 nestedok=0 deletehook=() NOTICE for slave interp10 : auto_path in interp10 has been set to {$p(:0:)} ERROR for slave interp10 : /foo/bar/init.tcl: no such file or directory .CE .RE .SH OPTIONS The following options are common to \fB::safe::interpCreate\fR, \fB::safe::interpInit\fR, and \fB::safe::interpConfigure\fR. Any option name can be abbreviated to its minimal non-ambiguous name. Option names are not case sensitive. .TP \fB\-accessPath\fR ?\fIdirectoryList\fR? This option sets the list of directories from which the safe interpreter can \fBsource\fR and \fBload\fR files, and returns a list of tokens that will allow the safe interpreter access to these directories. If a value for \fBdirectoryList\fR is not given, or if it is given as the empty list, the safe interpreter will use the same directories than its master for auto-loading. See the section \fBSECURITY\fR below for more detail about virtual paths, tokens and access control. .TP \fB\-noStatics\fR This option specifies that the safe interpreter will not be allowed to load statically linked packages (like \fBload {} Tk\fR). The default is that safe interpreters are allowed to load statically linked packages. .TP \fB\-nestedLoadOk\fR This option specifies that the safe interpreter will be allowed to load packages into its own subinterpreters. The default is that safe interpreters are not allowed to load packages into their own subinterpreters. .TP \fB\-deleteHook\fR ?\fIscript\fR? If \fIscript\fR is given, it is evaluated in the master with the name of the safe interpreter as an additional argument just before deleting the safe interpreter. If no value is given for \fIscript\fR any currently installed deletion hook script for that safe interpreter is removed; it will no longer be called when the interpreter is deleted. There is no deletion hook script installed by default. .SH SECURITY .PP The Safe Base does not attempt to completely prevent annoyance and denial of service attacks. These forms of attack prevent the application or user from temporarily using the computer to perform useful work, for example by consuming all available CPU time or all available screen real estate. These attacks, while agravating, are deemed to be of lesser importance in general than integrity and privacy attacks that the Safe Base is to prevent. The commands available in a safe interpreter, in addition to the safe set as defined in \fBinterp\fR manual page, are mediated aliases for \fBsource\fR, \fBload\fR, \fBexit\fR, and a safe subset of \fBfile\fR. The safe interpreter can also auto-load code and it can request to load packages. Because some of these commands access the local file system, there is a potential for information leakage about its directory structure. To prevent this, commands which take file names as arguments in a safe interpreter use tokens instead of the real directory names. These tokens are translated to the real directory name while a request to, e.g., source a file is mediated by the master interpreter. .PP To further prevent potential information leakage from sensitive files that are accidentally included in the set of files that can be sourced by a safe interpreter, the \fBsource\fR alias is restricted so that it can only source files with names that have the extension \fB.tcl\fR, that contain only one dot and that are forteen characters long or shorter. .PP The default value of the Tcl variable \fBauto_path\fR in a safe interpreter is a virtualized token list for the directories in the value of its master's \fBauto_path\fR variable and their immediate subdirectories. The first token in this list is also assigned to the Tcl varibale \fBtcl_library\fR in the safe interpreter. You can always specify a more restrictive path for which sub directories will never be searched by explicitly specifying your directory list with the \fB\-accessPath\fR flag instead of relying on this default mechanism. .SH "SEE ALSO" interp(n), library(n), load(n), package(n), source(n), unknown(n) .SH KEYWORDS alias, auto\-loading, auto_mkindex, load, master interpreter, safe interpreter, slave interpreter, source 070701000790a0000081a400004ccf0000000a0000000133f371e900002812000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/scan.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) scan.n 1.12 96/08/26 13:00:13 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH scan n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME scan \- Parse string using conversion specifiers in the style of sscanf .SH SYNOPSIS \fBscan \fIstring format varName \fR?\fIvarName ...\fR? .BE .SH INTRODUCTION .PP This command parses fields from an input string in the same fashion as the ANSI C \fBsscanf\fR procedure and returns a count of the number of conversions performed, or -1 if the end of the input string is reached before any conversions have been performed. \fIString\fR gives the input to be parsed and \fIformat\fR indicates how to parse it, using \fB%\fR conversion specifiers as in \fBsscanf\fR. Each \fIvarName\fR gives the name of a variable; when a field is scanned from \fIstring\fR the result is converted back into a string and assigned to the corresponding variable. .SH "DETAILS ON SCANNING" .PP \fBScan\fR operates by scanning \fIstring\fR and \fIformatString\fR together. If the next character in \fIformatString\fR is a blank or tab then it matches any number of white space characters in \fIstring\fR (including zero). Otherwise, if it isn't a \fB%\fR character then it must match the next character of \fIstring\fR. When a \fB%\fR is encountered in \fIformatString\fR, it indicates the start of a conversion specifier. A conversion specifier contains three fields after the \fB%\fR: a \fB*\fR, which indicates that the converted value is to be discarded instead of assigned to a variable; a number indicating a maximum field width; and a conversion character. All of these fields are optional except for the conversion character. .PP When \fBscan\fR finds a conversion specifier in \fIformatString\fR, it first skips any white-space characters in \fIstring\fR. Then it converts the next input characters according to the conversion specifier and stores the result in the variable given by the next argument to \fBscan\fR. The following conversion characters are supported: .TP 10 \fBd\fR The input field must be a decimal integer. It is read in and the value is stored in the variable as a decimal string. .TP 10 \fBo\fR The input field must be an octal integer. It is read in and the value is stored in the variable as a decimal string. .TP 10 \fBx\fR The input field must be a hexadecimal integer. It is read in and the value is stored in the variable as a decimal string. .TP 10 \fBc\fR A single character is read in and its binary value is stored in the variable as a decimal string. Initial white space is not skipped in this case, so the input field may be a white-space character. This conversion is different from the ANSI standard in that the input field always consists of a single character and no field width may be specified. .TP 10 \fBs\fR The input field consists of all the characters up to the next white-space character; the characters are copied to the variable. .TP 10 \fBe\fR or \fBf\fR or \fBg\fR The input field must be a floating-point number consisting of an optional sign, a string of decimal digits possibly containing a decimal point, and an optional exponent consisting of an \fBe\fR or \fBE\fR followed by an optional sign and a string of decimal digits. It is read in and stored in the variable as a floating-point string. .TP 10 \fB[\fIchars\fB]\fR The input field consists of any number of characters in \fIchars\fR. The matching string is stored in the variable. If the first character between the brackets is a \fB]\fR then it is treated as part of \fIchars\fR rather than the closing bracket for the set. .TP 10 \fB[^\fIchars\fB]\fR The input field consists of any number of characters not in \fIchars\fR. The matching string is stored in the variable. If the character immediately following the \fB^\fR is a \fB]\fR then it is treated as part of the set rather than the closing bracket for the set. .LP The number of characters read from the input for a conversion is the largest number that makes sense for that particular conversion (e.g. as many decimal digits as possible for \fB%d\fR, as many octal digits as possible for \fB%o\fR, and so on). The input field for a given conversion terminates either when a white-space character is encountered or when the maximum field width has been reached, whichever comes first. If a \fB*\fR is present in the conversion specifier then no variable is assigned and the next scan argument is not consumed. .SH "DIFFERENCES FROM ANSI SSCANF" .PP The behavior of the \fBscan\fR command is the same as the behavior of the ANSI C \fBsscanf\fR procedure except for the following differences: .IP [1] \fB%p\fR and \fB%n\fR conversion specifiers are not currently supported. .IP [2] For \fB%c\fR conversions a single character value is converted to a decimal string, which is then assigned to the corresponding \fIvarName\fR; no field width may be specified for this conversion. .IP [3] The \fBl\fR, \fBh\fR, and \fBL\fR modifiers are ignored; integer values are always converted as if there were no modifier present and real values are always converted as if the \fBl\fR modifier were present (i.e. type \fBdouble\fR is used for the internal representation). .SH KEYWORDS conversion specifier, parse, scan 070701000790a1000081a400004ccf0000000a0000000133f371e900001a49000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/seek.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) seek.n 1.10 96/08/26 13:00:14 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH seek n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME seek \- Change the access position for an open channel .SH SYNOPSIS \fBseek \fIchannelId offset \fR?\fIorigin\fR? .BE .SH DESCRIPTION .PP Changes the current access position for \fIchannelId\fR. \fIChannelId\fR must be a channel identifier such as returned from a previous invocation of \fBopen\fR or \fBsocket\fR. The \fIoffset\fR and \fIorigin\fR arguments specify the position at which the next read or write will occur for \fIchannelId\fR. \fIOffset\fR must be an integer (which may be negative) and \fIorigin\fR must be one of the following: .TP 10 \fBstart\fR The new access position will be \fIoffset\fR bytes from the start of the underlying file or device. .TP 10 \fBcurrent\fR The new access position will be \fIoffset\fR bytes from the current access position; a negative \fIoffset\fR moves the access position backwards in the underlying file or device. .TP 10 \fBend\fR The new access position will be \fIoffset\fR bytes from the end of the file or device. A negative \fIoffset\fR places the access position before the end of file, and a positive \fIoffset\fR places the access position after the end of file. .LP The \fIorigin\fR argument defaults to \fBstart\fR. .PP The command flushes all buffered output for the channel before the command returns, even if the channel is in nonblocking mode. It also discards any buffered and unread input. This command returns an empty string. An error occurs if this command is applied to channels whose underlying file or device does not support seeking. .SH KEYWORDS access position, file, seek 070701000790a2000081a400004ccf0000000a0000000133f371e9000019cd000000a30000000400000000000000000000002100000004reloc/SUNWtcl/8.0/man/mann/set.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) set.n 1.6 97/05/18 15:56:26 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH set n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME set \- Read and write variables .SH SYNOPSIS \fBset \fIvarName \fR?\fIvalue\fR? .BE .SH DESCRIPTION .PP Returns the value of variable \fIvarName\fR. If \fIvalue\fR is specified, then set the value of \fIvarName\fR to \fIvalue\fR, creating a new variable if one doesn't already exist, and return its value. If \fIvarName\fR contains an open parenthesis and ends with a close parenthesis, then it refers to an array element: the characters before the first open parenthesis are the name of the array, and the characters between the parentheses are the index within the array. Otherwise \fIvarName\fR refers to a scalar variable. Normally, \fIvarName\fR is unqualified (does not include the names of any containing namespaces), and the variable of that name in the current namespace is read or written. If \fIvarName\fR includes namespace qualifiers (in the array name if it refers to an array element), the variable in the specified namespace is read or written. .PP If no procedure is active, then \fIvarName\fR refers to a namespace variable (global variable if the current namespace is the global namespace). If a procedure is active, then \fIvarName\fR refers to a parameter or local variable of the procedure unless the \fBglobal\fR command was invoked to declare \fIvarName\fR to be global, or unless a \fBvariable\fR command was invoked to declare \fIvarName\fR to be a namespace variable. .SH KEYWORDS read, write, variable 070701000790a3000081a400004ccf0000000a0000000133f371ea0000276b000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/socket.n'\" '\" Copyright (c) 1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) socket.n 1.13 96/04/05 12:05:26 '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH socket n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME socket \- Open a TCP network connection .SH SYNOPSIS .sp \fBsocket \fR?\fIoptions\fR? \fIhost port\fR .sp \fBsocket \fB\-server \fIcommand\fR ?\fIoptions\fR? \fIport\fR .BE .SH DESCRIPTION .PP This command opens a network socket and returns a channel identifier that may be used in future invocations of commands like \fBread\fR, \fBputs\fR and \fBflush\fR. At present only the TCP network protocol is supported; future releases may include support for additional protocols. The \fBsocket\fR command may be used to open either the client or server side of a connection, depending on whether the \fB\-server\fR switch is specified. .SH "CLIENT SOCKETS" .PP If the \fB\-server\fR option is not specified, then the client side of a connection is opened and the command returns a channel identifier that can be used for both reading and writing. \fIPort\fR and \fIhost\fR specify a port to connect to; there must be a server accepting connections on this port. \fIPort\fR is an integer port number and \fIhost\fR is either a domain-style name such as \fBwww.sunlabs.com\fR or a numerical IP address such as \fB127.0.0.1\fR. Use \fIlocalhost\fR to refer to the host on which the command is invoked. .PP The following options may also be present before \fIhost\fR to specify additional information about the connection: .TP \fB\-myaddr\fI addr\fR \fIAddr\fR gives the domain-style name or numerical IP address of the client-side network interface to use for the connection. This option may be useful if the client machine has multiple network interfaces. If the option is omitted then the client-side interface will be chosen by the system software. .TP \fB\-myport\fI port\fR \fIPort\fR specifies an integer port number to use for the client's side of the connection. If this option is omitted, the client's port number will be chosen at random by the system software. .TP \fB\-async\fR The \fB\-async\fR option will cause the client socket to be connected asynchronously. This means that the socket will be created immediately but may not yet be connected to the server, when the call to \fBsocket\fR returns. When a \fBgets\fR or \fBflush\fR is done on the socket before the connection attempt succeeds or fails, if the socket is in blocking mode, the operation will wait until the connection is completed or fails. If the socket is in nonblocking mode and a \fBgets\fR or \fBflush\fR is done on the socket before the connection attempt succeeds or fails, the operation returns immediately and \fBfblocked\fR on the socket returns 1. .SH "SERVER SOCKETS" .PP If the \fB\-server\fR option is specified then the new socket will be a server for the port given by \fIport\fR. Tcl will automatically accept connections to the given port. For each connection Tcl will create a new channel that may be used to communicate with the client. Tcl then invokes \fIcommand\fR with three additional arguments: the name of the new channel, the address, in network address notation, of the client's host, and the client's port number. .PP The following additional option may also be specified before \fIhost\fR: .TP \fB\-myaddr\fI addr\fR \fIAddr\fR gives the domain-style name or numerical IP address of the server-side network interface to use for the connection. This option may be useful if the server machine has multiple network interfaces. If the option is omitted then the server socket is bound to the special address INADDR_ANY so that it can accept connections from any interface. .PP Server channels cannot be used for input or output; their sole use is to accept new client connections. The channels created for each incoming client connection are opened for input and output. Closing the server channel shuts down the server so that no new connections will be accepted; however, existing connections will be unaffected. .PP Server sockets depend on the Tcl event mechanism to find out when new connections are opened. If the application doesn't enter the event loop, for example by invoking the \fBvwait\fR command or calling the C procedure \fBTcl_DoOneEvent\fR, then no connections will be accepted. .SH CONFIGURATION OPTIONS The \fBfconfigure\fR command can be used to query several readonly configuration options for socket channels: .TP \fB\-sockname\fR This option returns a list of three elements, the address, the host name and the port number for the socket. If the host name cannot be computed, the second element is identical to the address, the first element of the list. .TP \fB\-peername\fR This option is not supported by server sockets. For client and accepted sockets, this option returns a list of three elements; these are the address, the host name and the port to which the peer socket is connected or bound. If the host name cannot be computed, the second element of the list is identical to the address, its first element. .PP .SH "SEE ALSO" flush(n), open(n), read(n) .SH KEYWORDS bind, channel, connection, domain name, host, network address, socket, tcp 070701000790a4000081a400004ccf0000000a0000000133f371ea0000193a000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/source.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) source.n 1.7 96/04/15 13:07:38 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH source n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME source \- Evaluate a file or resource as a Tcl script .SH SYNOPSIS \fBsource \fIfileName\fR .sp \fBsource \fB\-rsrc \fIresourceName \fR?\fIfileName\fR? .sp \fBsource \fB\-rsrcid \fIresourceId \fR?\fIfileName\fR? .BE .SH DESCRIPTION .PP This command takes the contents of the specified file or resource and passes it to the Tcl interpreter as a text script. The return value from \fBsource\fR is the return value of the last command executed in the script. If an error occurs in evaluating the contents of the script then the \fBsource\fR command will return that error. If a \fBreturn\fR command is invoked from within the script then the remainder of the file will be skipped and the \fBsource\fR command will return normally with the result from the \fBreturn\fR command. The \fI\-rsrc\fR and \fI\-rsrcid\fR forms of this command are only available on Macintosh computers. These versions of the command allow you to source a script from a \fBTEXT\fR resource. You may specify what \fBTEXT\fR resource to source by either name or id. By default Tcl searches all open resource files, which include the current application and any loaded C extensions. Alternatively, you may specify the \fIfileName\fR where the \fBTEXT\fR resource can be found. .SH KEYWORDS file, script 070701000790a5000081a400004ccf0000000a0000000133f371ea000017eb000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/split.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) split.n 1.6 96/03/25 20:23:53 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH split n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME split \- Split a string into a proper Tcl list .SH SYNOPSIS \fBsplit \fIstring \fR?\fIsplitChars\fR? .BE .SH DESCRIPTION .PP Returns a list created by splitting \fIstring\fR at each character that is in the \fIsplitChars\fR argument. Each element of the result list will consist of the characters from \fIstring\fR that lie between instances of the characters in \fIsplitChars\fR. Empty list elements will be generated if \fIstring\fR contains adjacent characters in \fIsplitChars\fR, or if the first or last character of \fIstring\fR is in \fIsplitChars\fR. If \fIsplitChars\fR is an empty string then each character of \fIstring\fR becomes a separate element of the result list. \fISplitChars\fR defaults to the standard white-space characters. For example, .CS \fBsplit "comp.unix.misc" .\fR .CE returns \fB"comp unix misc"\fR and .CS \fBsplit "Hello world" {}\fR .CE returns \fB"H e l l o { } w o r l d"\fR. .SH KEYWORDS list, split, string 070701000790a6000081a400004ccf0000000a0000000133f371ea00002701000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/string.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) string.n 1.9 96/08/26 13:00:14 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH string n 7.6 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME string \- Manipulate strings .SH SYNOPSIS \fBstring \fIoption arg \fR?\fIarg ...?\fR .BE .SH DESCRIPTION .PP Performs one of several string operations, depending on \fIoption\fR. The legal \fIoption\fRs (which may be abbreviated) are: .TP \fBstring compare \fIstring1 string2\fR Perform a character-by-character comparison of strings \fIstring1\fR and \fIstring2\fR in the same way as the C \fBstrcmp\fR procedure. Return \-1, 0, or 1, depending on whether \fIstring1\fR is lexicographically less than, equal to, or greater than \fIstring2\fR. .TP \fBstring first \fIstring1 string2\fR Search \fIstring2\fR for a sequence of characters that exactly match the characters in \fIstring1\fR. If found, return the index of the first character in the first such match within \fIstring2\fR. If not found, return \-1. .TP \fBstring index \fIstring charIndex\fR Returns the \fIcharIndex\fR'th character of the \fIstring\fR argument. A \fIcharIndex\fR of 0 corresponds to the first character of the string. If \fIcharIndex\fR is less than 0 or greater than or equal to the length of the string then an empty string is returned. .TP \fBstring last \fIstring1 string2\fR Search \fIstring2\fR for a sequence of characters that exactly match the characters in \fIstring1\fR. If found, return the index of the first character in the last such match within \fIstring2\fR. If there is no match, then return \-1. .TP \fBstring length \fIstring\fR Returns a decimal string giving the number of characters in \fIstring\fR. .TP \fBstring match \fIpattern\fR \fIstring\fR See if \fIpattern\fR matches \fIstring\fR; return 1 if it does, 0 if it doesn't. Matching is done in a fashion similar to that used by the C-shell. For the two strings to match, their contents must be identical except that the following special sequences may appear in \fIpattern\fR: .RS .IP \fB*\fR 10 Matches any sequence of characters in \fIstring\fR, including a null string. .IP \fB?\fR 10 Matches any single character in \fIstring\fR. .IP \fB[\fIchars\fB]\fR 10 Matches any character in the set given by \fIchars\fR. If a sequence of the form \fIx\fB\-\fIy\fR appears in \fIchars\fR, then any character between \fIx\fR and \fIy\fR, inclusive, will match. .IP \fB\e\fIx\fR 10 Matches the single character \fIx\fR. This provides a way of avoiding the special interpretation of the characters \fB*?[]\e\fR in \fIpattern\fR. .RE .TP \fBstring range \fIstring first last\fR Returns a range of consecutive characters from \fIstring\fR, starting with the character whose index is \fIfirst\fR and ending with the character whose index is \fIlast\fR. An index of 0 refers to the first character of the string. An index of \fBend\fR (or any abbreviation of it) refers to the last character of the string. If \fIfirst\fR is less than zero then it is treated as if it were zero, and if \fIlast\fR is greater than or equal to the length of the string then it is treated as if it were \fBend\fR. If \fIfirst\fR is greater than \fIlast\fR then an empty string is returned. .TP \fBstring tolower \fIstring\fR Returns a value equal to \fIstring\fR except that all upper case letters have been converted to lower case. .TP \fBstring toupper \fIstring\fR Returns a value equal to \fIstring\fR except that all lower case letters have been converted to upper case. .TP \fBstring trim \fIstring\fR ?\fIchars\fR? Returns a value equal to \fIstring\fR except that any leading or trailing characters from the set given by \fIchars\fR are removed. If \fIchars\fR is not specified then white space is removed (spaces, tabs, newlines, and carriage returns). .TP \fBstring trimleft \fIstring\fR ?\fIchars\fR? Returns a value equal to \fIstring\fR except that any leading characters from the set given by \fIchars\fR are removed. If \fIchars\fR is not specified then white space is removed (spaces, tabs, newlines, and carriage returns). .TP \fBstring trimright \fIstring\fR ?\fIchars\fR? Returns a value equal to \fIstring\fR except that any trailing characters from the set given by \fIchars\fR are removed. If \fIchars\fR is not specified then white space is removed (spaces, tabs, newlines, and carriage returns). .TP \fBstring wordend \fIstring index\fR Returns the index of the character just after the last one in the word containing character \fIindex\fR of \fIstring\fR. A word is considered to be any contiguous range of alphanumeric or underscore characters, or any single character other than these. .TP \fBstring wordstart \fIstring index\fR Returns the index of the first character in the word containing character \fIindex\fR of \fIstring\fR. A word is considered to be any contiguous range of alphanumeric or underscore characters, or any single character other than these. .SH KEYWORDS case conversion, compare, index, match, pattern, string, word 070701000790a7000081a400004ccf0000000a0000000133f371ea0000192f000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/subst.n'\" '\" Copyright (c) 1994 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) subst.n 1.9 96/03/25 20:24:17 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH subst n 7.4 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME subst \- Perform backslash, command, and variable substitutions .SH SYNOPSIS \fBsubst \fR?\fB\-nobackslashes\fR? ?\fB\-nocommands\fR? ?\fB\-novariables\fR? \fIstring\fR .BE .SH DESCRIPTION .PP This command performs variable substitutions, command substitutions, and backslash substitutions on its \fIstring\fR argument and returns the fully-substituted result. The substitutions are performed in exactly the same way as for Tcl commands. As a result, the \fIstring\fR argument is actually substituted twice, once by the Tcl parser in the usual fashion for Tcl commands, and again by the \fIsubst\fR command. .PP If any of the \fB\-nobackslashes\fR, \fB\-nocommands\fR, or \fB\-novariables\fR are specified, then the corresponding substitutions are not performed. For example, if \fB\-nocommands\fR is specified, no command substitution is performed: open and close brackets are treated as ordinary characters with no special interpretation. .PP Note: when it performs its substitutions, \fIsubst\fR does not give any special treatment to double quotes or curly braces. For example, the script .CS \fBset a 44 subst {xyz {$a}}\fR .CE returns ``\fBxyz {44}\fR'', not ``\fBxyz {$a}\fR''. .SH KEYWORDS backslash substitution, command substitution, variable substitution 070701000790a8000081a400004ccf0000000a0000000133f371ea0000207f000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/switch.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) switch.n 1.8 96/03/25 20:24:31 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH switch n 7.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME switch \- Evaluate one of several scripts, depending on a given value .SH SYNOPSIS \fBswitch\fI \fR?\fIoptions\fR?\fI string \fIpattern body \fR?\fIpattern body \fR...? .sp \fBswitch\fI \fR?\fIoptions\fR?\fI string \fR{\fIpattern body \fR?\fIpattern body \fR...?} .BE .SH DESCRIPTION .PP The \fBswitch\fR command matches its \fIstring\fR argument against each of the \fIpattern\fR arguments in order. As soon as it finds a \fIpattern\fR that matches \fIstring\fR it evaluates the following \fIbody\fR argument by passing it recursively to the Tcl interpreter and returns the result of that evaluation. If the last \fIpattern\fR argument is \fBdefault\fR then it matches anything. If no \fIpattern\fR argument matches \fIstring\fR and no default is given, then the \fBswitch\fR command returns an empty string. .PP If the initial arguments to \fBswitch\fR start with \fB\-\fR then they are treated as options. The following options are currently supported: .TP 10 \fB\-exact\fR Use exact matching when comparing \fIstring\fR to a pattern. This is the default. .TP 10 \fB\-glob\fR When matching \fIstring\fR to the patterns, use glob-style matching (i.e. the same as implemented by the \fBstring match\fR command). .TP 10 \fB\-regexp\fR When matching \fIstring\fR to the patterns, use regular expression matching (i.e. the same as implemented by the \fBregexp\fR command). .TP 10 \fB\-\|\-\fR Marks the end of options. The argument following this one will be treated as \fIstring\fR even if it starts with a \fB\-\fR. .PP Two syntaxes are provided for the \fIpattern\fR and \fIbody\fR arguments. The first uses a separate argument for each of the patterns and commands; this form is convenient if substitutions are desired on some of the patterns or commands. The second form places all of the patterns and commands together into a single argument; the argument must have proper list structure, with the elements of the list being the patterns and commands. The second form makes it easy to construct multi-line switch commands, since the braces around the whole list make it unnecessary to include a backslash at the end of each line. Since the \fIpattern\fR arguments are in braces in the second form, no command or variable substitutions are performed on them; this makes the behavior of the second form different than the first form in some cases. .PP If a \fIbody\fR is specified as ``\fB\-\fR'' it means that the \fIbody\fR for the next pattern should also be used as the body for this pattern (if the next pattern also has a body of ``\fB\-\fR'' then the body after that is used, and so on). This feature makes it possible to share a single \fIbody\fR among several patterns. .PP Below are some examples of \fBswitch\fR commands: .CS \fBswitch\0abc\0a\0\-\0b\0{format 1}\0abc\0{format 2}\0default\0{format 3}\fR .CE will return \fB2\fR, .CS \fBswitch\0\-regexp\0aaab { ^a.*b$\0\- b\0{format 1} a*\0{format 2} default\0{format 3} }\fR .CE will return \fB1\fR, and .CS \fBswitch\0xyz { a \- b {format 1} a* {format 2} default {format 3} }\fR .CE will return \fB3\fR. .SH KEYWORDS switch, match, regular expression 070701000790a9000081a400004ccf0000000a0000000133f371eb00004c68000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/mann/tclvars.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) tclvars.n 1.33 97/08/13 17:50:20 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH tclvars n 8.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME tclvars \- Variables used by Tcl .BE .SH DESCRIPTION .PP The following global variables are created and managed automatically by the Tcl library. Except where noted below, these variables should normally be treated as read-only by application-specific code and by users. .TP \fBenv\fR This variable is maintained by Tcl as an array whose elements are the environment variables for the process. Reading an element will return the value of the corresponding environment variable. Setting an element of the array will modify the corresponding environment variable or create a new one if it doesn't already exist. Unsetting an element of \fBenv\fR will remove the corresponding environment variable. Changes to the \fBenv\fR array will affect the environment passed to children by commands like \fBexec\fR. If the entire \fBenv\fR array is unset then Tcl will stop monitoring \fBenv\fR accesses and will not update environment variables. .RS Under Windows, the environment variables PATH, COMSPEC, and WINDIR in any capitalization are converted automatically to upper case. For instance, the PATH variable could be exported by the operating system as ``path'', ``Path'', ``PaTh'', etc., causing otherwise simple Tcl code to have to support many special cases. All other environment variables inherited by Tcl are left unmodified. .RE .RS On the Macintosh, the environment variable is constructed by Tcl as no global environment variable exists. The environment variables that are created for Tcl include: .TP \fBLOGIN\fR This holds the Chooser name of the Macintosh. .TP \fBUSER\fR This also holds the Chooser name of the Macintosh. .TP \fBSYS_FOLDER\fR The path to the system directory. .TP \fBAPPLE_M_FOLDER\fR The path to the Apple Menu directory. .TP \fBCP_FOLDER\fR The path to the control panels directory. .TP \fBDESK_FOLDER\fR The path to the desk top directory. .TP \fBEXT_FOLDER\fR The path to the system extensions directory. .TP \fBPREF_FOLDER\fR The path to the preferences directory. .TP \fBPRINT_MON_FOLDER\fR The path to the print monitor directory. .TP \fBSHARED_TRASH_FOLDER\fR The path to the network trash directory. .TP \fBTRASH_FOLDER\fR The path to the trash directory. .TP \fBSTART_UP_FOLDER\fR The path to the start up directory. .TP \fBPWD\fR The path to the application's default directory. .PP You can also create your own environment variables for the Macintosh. A file named \fITcl Environment Variables\fR may be placed in the preferences folder in the Mac system folder. Each line of this file should be of the form \fIVAR_NAME=var_data\fR. .PP The last alternative is to place environment variables in a 'STR#' resource named \fITcl Environment Variables\fR of the application. This is considered a little more ``Mac like'' than a Unix style Environment Variable file. Each entry in the 'STR#' resource has the same format as above. The source code file \fItclMacEnv.c\fR contains the implementation of the env mechanisms. This file contains many #define's that allow customization of the env mechanisms to fit your applications needs. .RE .TP \fBerrorCode\fR After an error has occurred, this variable will be set to hold additional information about the error in a form that is easy to process with programs. \fBerrorCode\fR consists of a Tcl list with one or more elements. The first element of the list identifies a general class of errors, and determines the format of the rest of the list. The following formats for \fBerrorCode\fR are used by the Tcl core; individual applications may define additional formats. .RS .TP \fBARITH\fI code msg\fR This format is used when an arithmetic error occurs (e.g. an attempt to divide by zero in the \fBexpr\fR command). \fICode\fR identifies the precise error and \fImsg\fR provides a human-readable description of the error. \fICode\fR will be either DIVZERO (for an attempt to divide by zero), DOMAIN (if an argument is outside the domain of a function, such as acos(\-3)), IOVERFLOW (for integer overflow), OVERFLOW (for a floating-point overflow), or UNKNOWN (if the cause of the error cannot be determined). .TP \fBCHILDKILLED\fI pid sigName msg\fR This format is used when a child process has been killed because of a signal. The second element of \fBerrorCode\fR will be the process's identifier (in decimal). The third element will be the symbolic name of the signal that caused the process to terminate; it will be one of the names from the include file signal.h, such as \fBSIGPIPE\fR. The fourth element will be a short human-readable message describing the signal, such as ``write on pipe with no readers'' for \fBSIGPIPE\fR. .TP \fBCHILDSTATUS\fI pid code\fR This format is used when a child process has exited with a non-zero exit status. The second element of \fBerrorCode\fR will be the process's identifier (in decimal) and the third element will be the exit code returned by the process (also in decimal). .TP \fBCHILDSUSP\fI pid sigName msg\fR This format is used when a child process has been suspended because of a signal. The second element of \fBerrorCode\fR will be the process's identifier, in decimal. The third element will be the symbolic name of the signal that caused the process to suspend; this will be one of the names from the include file signal.h, such as \fBSIGTTIN\fR. The fourth element will be a short human-readable message describing the signal, such as ``background tty read'' for \fBSIGTTIN\fR. .TP \fBNONE\fR This format is used for errors where no additional information is available for an error besides the message returned with the error. In these cases \fBerrorCode\fR will consist of a list containing a single element whose contents are \fBNONE\fR. .TP \fBPOSIX \fIerrName msg\fR If the first element of \fBerrorCode\fR is \fBPOSIX\fR, then the error occurred during a POSIX kernel call. The second element of the list will contain the symbolic name of the error that occurred, such as \fBENOENT\fR; this will be one of the values defined in the include file errno.h. The third element of the list will be a human-readable message corresponding to \fIerrName\fR, such as ``no such file or directory'' for the \fBENOENT\fR case. .PP To set \fBerrorCode\fR, applications should use library procedures such as \fBTcl_SetErrorCode\fR and \fBTcl_PosixError\fR, or they may invoke the \fBerror\fR command. If one of these methods hasn't been used, then the Tcl interpreter will reset the variable to \fBNONE\fR after the next error. .RE .TP \fBerrorInfo\fR After an error has occurred, this string will contain one or more lines identifying the Tcl commands and procedures that were being executed when the most recent error occurred. Its contents take the form of a stack trace showing the various nested Tcl commands that had been invoked at the time of the error. .TP \fBtcl_library\fR This variable holds the name of a directory containing the system library of Tcl scripts, such as those used for auto-loading. The value of this variable is returned by the \fBinfo library\fR command. See the \fBlibrary\fR manual entry for details of the facilities provided by the Tcl script library. Normally each application or package will have its own application-specific script library in addition to the Tcl script library; each application should set a global variable with a name like \fB$\fIapp\fB_library\fR (where \fIapp\fR is the application's name) to hold the network file name for that application's library directory. The initial value of \fBtcl_library\fR is set when an interpreter is created by searching several different directories until one is found that contains an appropriate Tcl startup script. If the \fBTCL_LIBRARY\fR environment variable exists, then the directory it names is checked first. If \fBTCL_LIBRARY\fR isn't set or doesn't refer to an appropriate directory, then Tcl checks several other directories based on a compiled-in default location, the location of the binary containing the application, and the current working directory. .TP \fBtcl_patchLevel\fR When an interpreter is created Tcl initializes this variable to hold a string giving the current patch level for Tcl, such as \fB7.3p2\fR for Tcl 7.3 with the first two official patches, or \fB7.4b4\fR for the fourth beta release of Tcl 7.4. The value of this variable is returned by the \fBinfo patchlevel\fR command. .VS br .TP \fBtcl_pkgPath\fR This variable holds a list of directories indicating where packages are normally installed. It typically contains either one or two entries; if it contains two entries, the first is normally a directory for platform-dependent packages (e.g., shared library binaries) and the second is normally a directory for platform-independent packages (e.g., script files). Typically a package is installed as a subdirectory of one of the entries in \fB$tcl_pkgPath\fR. The directories in \fB$tcl_pkgPath\fR are included by default in the \fBauto_path\fR variable, so they and their immediate subdirectories are automatically searched for packages during \fBpackage require\fR commands. Note: \fBtcl_pkgPath\fR it not intended to be modified by the application. Its value is added to \fBauto_path\fR at startup; changes to \fBtcl_pkgPath\fR are not reflected in \fBauto_path\fR. If you want Tcl to search additional directories for packages you should add the names of those directories to \fBauto_path\fR, not \fBtcl_pkgPath\fR. .VE .TP \fBtcl_platform\fR This is an associative array whose elements contain information about the platform on which the application is running, such as the name of the operating system, its current release number, and the machine's instruction set. The elements listed below will always be defined, but they may have empty strings as values if Tcl couldn't retrieve any relevant information. In addition, extensions and applications may add additional values to the array. The predefined elements are: .RS .VS .TP \fBbyteOrder\fR The native byte order of this machine: either \fBlittleEndian\fR or \fBbigEndian\fR. .VE .TP \fBmachine\fR The instruction set executed by this machine, such as \fBintel\fR, \fBPPC\fR, \fB68k\fR, or \fBsun4m\fR. On UNIX machines, this is the value returned by \fBuname -m\fR. .TP \fBos\fR The name of the operating system running on this machine, such as \fBWin32s\fR, \fBWindows NT\fR, \fBMacOS\fR, or \fBSunOS\fR. On UNIX machines, this is the value returned by \fBuname -s\fR. .TP \fBosVersion\fR The version number for the operating system running on this machine. On UNIX machines, this is the value returned by \fBuname -r\fR. .TP \fBplatform\fR Either \fBwindows\fR, \fBmacintosh\fR, or \fBunix\fR. This identifies the general operating environment of the machine. .RE .TP \fBtcl_precision\fR .VS This variable controls the number of digits to generate when converting floating-point values to strings. It defaults to 12. 17 digits is ``perfect'' for IEEE floating-point in that it allows double-precision values to be converted to strings and back to binary with no loss of information. However, using 17 digits prevents any rounding, which produces longer, less intuitive results. For example, \fBexpr 1.4\fR returns 1.3999999999999999 with \fBtcl_precision\fR set to 17, vs. 1.4 if \fBtcl_precision\fR is 12. .RS All interpreters in a process share a single \fBtcl_precision\fR value: changing it in one interpreter will affect all other interpreters as well. However, safe interpreters are not allowed to modify the variable. .RE .VE .TP \fBtcl_rcFileName\fR This variable is used during initialization to indicate the name of a user-specific startup file. If it is set by application-specific initialization, then the Tcl startup code will check for the existence of this file and \fBsource\fR it if it exists. For example, for \fBwish\fR the variable is set to \fB~/.wishrc\fR for Unix and \fB~/wishrc.tcl\fR for Windows. .TP \fBtcl_rcRsrcName\fR This variable is only used on Macintosh systems. The variable is used during initialization to indicate the name of a user-specific \fBTEXT\fR resource located in the application or extension resource forks. If it is set by application-specific initialization, then the Tcl startup code will check for the existence of this resource and \fBsource\fR it if it exists. For example, the Macintosh \fBwish\fR application has the variable is set to \fBtclshrc\fR. .TP \fBtcl_traceCompile\fR The value of this variable can be set to control how much tracing information is displayed during bytecode compilation. By default, tcl_traceCompile is zero and no information is displayed. Setting tcl_traceCompile to 1 generates a one line summary in stdout whenever a procedure or top level command is compiled. Setting it to 2 generates a detailed listing in stdout of the bytecode instructions emitted during every compilation. This variable is useful in tracking down suspected problems with the Tcl compiler. It is also occasionally useful when converting existing code to use Tcl8.0. .TP \fBtcl_traceExec\fR The value of this variable can be set to control how much tracing information is displayed during bytecode execution. By default, tcl_traceExec is zero and no information is displayed. Setting tcl_traceExec to 1 generates a one line trace in stdout on each call to a Tcl procedure. Setting it to 2 generates a line of output whenever any Tcl command is invoked that contains the name of the command and its arguments. Setting it to 3 produces a detailed trace showing the result of executing each bytecode instruction. Note that when tcl_traceExec is 2 or 3, commands such as set and incr that have been entirely replaced by a sequence of bytecode instructions are not shown. Setting this variable is useful in tracking down suspected problems with the bytecode compiler and interpreter. It is also occasionally useful when converting code to use Tcl8.0. .TP \fBtcl_version\fR When an interpreter is created Tcl initializes this variable to hold the version number for this version of Tcl in the form \fIx.y\fR. Changes to \fIx\fR represent major changes with probable incompatibilities and changes to \fIy\fR represent small enhancements and bug fixes that retain backward compatibility. The value of this variable is returned by the \fBinfo tclversion\fR command. .SH KEYWORDS arithmetic, bytecode, compiler, error, environment, POSIX, precision, subprocess, variables 070701000790aa000081a400004ccf0000000a0000000133f371eb00001573000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/tell.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) tell.n 1.9 96/08/26 13:00:17 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH tell n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME tell \- Return current access position for an open channel .SH SYNOPSIS \fBtell \fIchannelId\fR .BE .SH DESCRIPTION .PP Returns a decimal string giving the current access position in \fIchannelId\fR. The value returned is -1 for channels that do not support seeking. .SH KEYWORDS access position, channel, seeking 070701000790ab000081a400004ccf0000000a0000000133f371eb0000161c000000a30000000400000000000000000000002200000004reloc/SUNWtcl/8.0/man/mann/time.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) time.n 1.6 96/03/25 20:25:30 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH time n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME time \- Time the execution of a script .SH SYNOPSIS \fBtime \fIscript\fR ?\fIcount\fR? .BE .SH DESCRIPTION .PP This command will call the Tcl interpreter \fIcount\fR times to evaluate \fIscript\fR (or once if \fIcount\fR isn't specified). It will then return a string of the form .CS \fB503 microseconds per iteration\fR .CE which indicates the average amount of time required per iteration, in microseconds. Time is measured in elapsed time, not CPU time. .SH KEYWORDS script, time 070701000790ac000081a400004ccf0000000a0000000133f371eb00002c54000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/trace.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) trace.n 1.12 96/08/26 13:00:18 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH trace n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME trace \- Monitor variable accesses .SH SYNOPSIS \fBtrace \fIoption\fR ?\fIarg arg ...\fR? .BE .SH DESCRIPTION .PP This command causes Tcl commands to be executed whenever certain operations are invoked. At present, only variable tracing is implemented. The legal \fIoption\fR's (which may be abbreviated) are: .TP \fBtrace variable \fIname ops command\fR Arrange for \fIcommand\fR to be executed whenever variable \fIname\fR is accessed in one of the ways given by \fIops\fR. \fIName\fR may refer to a normal variable, an element of an array, or to an array as a whole (i.e. \fIname\fR may be just the name of an array, with no parenthesized index). If \fIname\fR refers to a whole array, then \fIcommand\fR is invoked whenever any element of the array is manipulated. .RS .PP \fIOps\fR indicates which operations are of interest, and consists of one or more of the following letters: .TP \fBr\fR Invoke \fIcommand\fR whenever the variable is read. .TP \fBw\fR Invoke \fIcommand\fR whenever the variable is written. .TP \fBu\fR Invoke \fIcommand\fR whenever the variable is unset. Variables can be unset explicitly with the \fBunset\fR command, or implicitly when procedures return (all of their local variables are unset). Variables are also unset when interpreters are deleted, but traces will not be invoked because there is no interpreter in which to execute them. .PP When the trace triggers, three arguments are appended to \fIcommand\fR so that the actual command is as follows: .CS \fIcommand name1 name2 op\fR .CE \fIName1\fR and \fIname2\fR give the name(s) for the variable being accessed: if the variable is a scalar then \fIname1\fR gives the variable's name and \fIname2\fR is an empty string; if the variable is an array element then \fIname1\fR gives the name of the array and name2 gives the index into the array; if an entire array is being deleted and the trace was registered on the overall array, rather than a single element, then \fIname1\fR gives the array name and \fIname2\fR is an empty string. \fIName1\fR and \fIname2\fR are not necessarily the same as the name used in the \fBtrace variable\fR command: the \fBupvar\fR command allows a procedure to reference a variable under a different name. \fIOp\fR indicates what operation is being performed on the variable, and is one of \fBr\fR, \fBw\fR, or \fBu\fR as defined above. .PP \fICommand\fR executes in the same context as the code that invoked the traced operation: if the variable was accessed as part of a Tcl procedure, then \fIcommand\fR will have access to the same local variables as code in the procedure. This context may be different than the context in which the trace was created. If \fIcommand\fR invokes a procedure (which it normally does) then the procedure will have to use \fBupvar\fR or \fBuplevel\fR if it wishes to access the traced variable. Note also that \fIname1\fR may not necessarily be the same as the name used to set the trace on the variable; differences can occur if the access is made through a variable defined with the \fBupvar\fR command. .PP For read and write traces, \fIcommand\fR can modify the variable to affect the result of the traced operation. If \fIcommand\fR modifies the value of a variable during a read or write trace, then the new value will be returned as the result of the traced operation. The return value from \fIcommand\fR is ignored except that if it returns an error of any sort then the traced operation also returns an error with the same error message returned by the trace command (this mechanism can be used to implement read-only variables, for example). For write traces, \fIcommand\fR is invoked after the variable's value has been changed; it can write a new value into the variable to override the original value specified in the write operation. To implement read-only variables, \fIcommand\fR will have to restore the old value of the variable. .PP While \fIcommand\fR is executing during a read or write trace, traces on the variable are temporarily disabled. This means that reads and writes invoked by \fIcommand\fR will occur directly, without invoking \fIcommand\fR (or any other traces) again. However, if \fIcommand\fR unsets the variable then unset traces will be invoked. .PP When an unset trace is invoked, the variable has already been deleted: it will appear to be undefined with no traces. If an unset occurs because of a procedure return, then the trace will be invoked in the variable context of the procedure being returned to: the stack frame of the returning procedure will no longer exist. Traces are not disabled during unset traces, so if an unset trace command creates a new trace and accesses the variable, the trace will be invoked. Any errors in unset traces are ignored. .PP If there are multiple traces on a variable they are invoked in order of creation, most-recent first. If one trace returns an error, then no further traces are invoked for the variable. If an array element has a trace set, and there is also a trace set on the array as a whole, the trace on the overall array is invoked before the one on the element. .PP Once created, the trace remains in effect either until the trace is removed with the \fBtrace vdelete\fR command described below, until the variable is unset, or until the interpreter is deleted. Unsetting an element of array will remove any traces on that element, but will not remove traces on the overall array. .PP This command returns an empty string. .RE .TP \fBtrace vdelete \fIname ops command\fR If there is a trace set on variable \fIname\fR with the operations and command given by \fIops\fR and \fIcommand\fR, then the trace is removed, so that \fIcommand\fR will never again be invoked. Returns an empty string. .TP \fBtrace vinfo \fIname\fR Returns a list containing one element for each trace currently set on variable \fIname\fR. Each element of the list is itself a list containing two elements, which are the \fIops\fR and \fIcommand\fR associated with the trace. If \fIname\fR doesn't exist or doesn't have any traces set, then the result of the command will be an empty string. .SH KEYWORDS read, variable, write, trace, unset 070701000790ad000081a400004ccf0000000a0000000133f371eb00001f83000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/mann/unknown.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) unknown.n 1.8 96/10/09 08:29:28 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH unknown n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME unknown \- Handle attempts to use non-existent commands .SH SYNOPSIS \fBunknown \fIcmdName \fR?\fIarg arg ...\fR? .BE .SH DESCRIPTION .PP This command is invoked by the Tcl interpreter whenever a script tries to invoke a command that doesn't exist. The implementation of \fBunknown\fR isn't part of the Tcl core; instead, it is a library procedure defined by default when Tcl starts up. You can override the default \fBunknown\fR to change its functionality. .PP If the Tcl interpreter encounters a command name for which there is not a defined command, then Tcl checks for the existence of a command named \fBunknown\fR. If there is no such command, then the interpreter returns an error. If the \fBunknown\fR command exists, then it is invoked with arguments consisting of the fully-substituted name and arguments for the original non-existent command. The \fBunknown\fR command typically does things like searching through library directories for a command procedure with the name \fIcmdName\fR, or expanding abbreviated command names to full-length, or automatically executing unknown commands as sub-processes. In some cases (such as expanding abbreviations) \fBunknown\fR will change the original command slightly and then (re-)execute it. The result of the \fBunknown\fR command is used as the result for the original non-existent command. .PP The default implementation of \fBunknown\fR behaves as follows. It first calls the \fBauto_load\fR library procedure to load the command. If this succeeds, then it executes the original command with its original arguments. If the auto-load fails then \fBunknown\fR calls \fBauto_execok\fR to see if there is an executable file by the name \fIcmd\fR. If so, it invokes the Tcl \fBexec\fR command with \fIcmd\fR and all the \fIargs\fR as arguments. If \fIcmd\fR can't be auto-executed, \fBunknown\fR checks to see if the command was invoked at top-level and outside of any script. If so, then \fBunknown\fR takes two additional steps. First, it sees if \fIcmd\fR has one of the following three forms: \fB!!\fR, \fB!\fIevent\fR, or \fB^\fIold\fB^\fInew\fR?\fB^\fR?. If so, then \fBunknown\fR carries out history substitution in the same way that \fBcsh\fR would for these constructs. Finally, \fBunknown\fR checks to see if \fIcmd\fR is a unique abbreviation for an existing Tcl command. If so, it expands the command name and executes the command with the original arguments. If none of the above efforts has been able to execute the command, \fBunknown\fR generates an error return. If the global variable \fBauto_noload\fR is defined, then the auto-load step is skipped. If the global variable \fBauto_noexec\fR is defined then the auto-exec step is skipped. Under normal circumstances the return value from \fBunknown\fR is the return value from the command that was eventually executed. .SH KEYWORDS error, non-existent command 070701000790ae000081a400004ccf0000000a0000000133f371eb000016e3000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/unset.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) unset.n 1.5 96/03/25 20:26:21 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH unset n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME unset \- Delete variables .SH SYNOPSIS \fBunset \fIname \fR?\fIname name ...\fR? .BE .SH DESCRIPTION .PP This command removes one or more variables. Each \fIname\fR is a variable name, specified in any of the ways acceptable to the \fBset\fR command. If a \fIname\fR refers to an element of an array then that element is removed without affecting the rest of the array. If a \fIname\fR consists of an array name with no parenthesized index, then the entire array is deleted. The \fBunset\fR command returns an empty string as result. An error occurs if any of the variables doesn't exist, and any variables after the non-existent one are not deleted. .SH KEYWORDS remove, variable 070701000790af000081a400004ccf0000000a0000000133f371ec000019f9000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/man/mann/update.n'\" '\" Copyright (c) 1990-1992 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) update.n 1.3 96/03/25 20:26:34 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH update n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME update \- Process pending events and idle callbacks .SH SYNOPSIS \fBupdate\fR ?\fBidletasks\fR? .BE .SH DESCRIPTION .PP This command is used to bring the application ``up to date'' by entering the event loop repeated until all pending events (including idle callbacks) have been processed. .PP If the \fBidletasks\fR keyword is specified as an argument to the command, then no new events or errors are processed; only idle callbacks are invoked. This causes operations that are normally deferred, such as display updates and window layout calculations, to be performed immediately. .PP The \fBupdate idletasks\fR command is useful in scripts where changes have been made to the application's state and you want those changes to appear on the display immediately, rather than waiting for the script to complete. Most display updates are performed as idle callbacks, so \fBupdate idletasks\fR will cause them to run. However, there are some kinds of updates that only happen in response to events, such as those triggered by window size changes; these updates will not occur in \fBupdate idletasks\fR. .PP The \fBupdate\fR command with no options is useful in scripts where you are performing a long-running computation but you still want the application to respond to events such as user interactions; if you occasionally call \fBupdate\fR then user input will be processed during the next call to \fBupdate\fR. .SH KEYWORDS event, flush, handler, idle, update 070701000790b0000081a400004ccf0000000a0000000133f371ec00001fa4000000a30000000400000000000000000000002500000004reloc/SUNWtcl/8.0/man/mann/uplevel.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) uplevel.n 1.8 97/08/13 13:41:36 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH uplevel n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME uplevel \- Execute a script in a different stack frame .SH SYNOPSIS \fBuplevel \fR?\fIlevel\fR?\fI arg \fR?\fIarg ...\fR? .BE .SH DESCRIPTION .PP All of the \fIarg\fR arguments are concatenated as if they had been passed to \fBconcat\fR; the result is then evaluated in the variable context indicated by \fIlevel\fR. \fBUplevel\fR returns the result of that evaluation. .PP If \fIlevel\fR is an integer then it gives a distance (up the procedure calling stack) to move before executing the command. If \fIlevel\fR consists of \fB#\fR followed by a number then the number gives an absolute level number. If \fIlevel\fR is omitted then it defaults to \fB1\fR. \fILevel\fR cannot be defaulted if the first \fIcommand\fR argument starts with a digit or \fB#\fR. .PP For example, suppose that procedure \fBa\fR was invoked from top-level, and that it called \fBb\fR, and that \fBb\fR called \fBc\fR. Suppose that \fBc\fR invokes the \fBuplevel\fR command. If \fIlevel\fR is \fB1\fR or \fB#2\fR or omitted, then the command will be executed in the variable context of \fBb\fR. If \fIlevel\fR is \fB2\fR or \fB#1\fR then the command will be executed in the variable context of \fBa\fR. If \fIlevel\fR is \fB3\fR or \fB#0\fR then the command will be executed at top-level (only global variables will be visible). .PP The \fBuplevel\fR command causes the invoking procedure to disappear from the procedure calling stack while the command is being executed. In the above example, suppose \fBc\fR invokes the command .CS \fBuplevel 1 {set x 43; d}\fR .CE where \fBd\fR is another Tcl procedure. The \fBset\fR command will modify the variable \fBx\fR in \fBb\fR's context, and \fBd\fR will execute at level 3, as if called from \fBb\fR. If it in turn executes the command .CS \fBuplevel {set x 42}\fR .CE then the \fBset\fR command will modify the same variable \fBx\fR in \fBb\fR's context: the procedure \fBc\fR does not appear to be on the call stack when \fBd\fR is executing. The command ``\fBinfo level\fR'' may be used to obtain the level of the current procedure. .PP \fBUplevel\fR makes it possible to implement new control constructs as Tcl procedures (for example, \fBuplevel\fR could be used to implement the \fBwhile\fR construct as a Tcl procedure). .PP \fBnamespace eval\fR is another way (besides procedure calls) that the Tcl naming context can change. It adds a call frame to the stack to represent the namespace context. This means each \fBnamespace eval\fR command counts as another call level for \fBuplevel\fR and \fBupvar\fR commands. For example, \fBinfo level 1\fR will return a list describing a command that is either the outermost procedure call or the outermost \fBnamespace eval\fR command. Also, \fBuplevel #0\fR evaluates a script at top-level in the outermost namespace (the global namespace). .SH "SEE ALSO" namespace(n) .SH KEYWORDS context, level, namespace, stack frame, variables 070701000790b1000081a400004ccf0000000a0000000133f371ec0000212d000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/upvar.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) upvar.n 1.16 97/08/13 13:43:34 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH upvar n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME upvar \- Create link to variable in a different stack frame .SH SYNOPSIS \fBupvar \fR?\fIlevel\fR? \fIotherVar myVar \fR?\fIotherVar myVar \fR...? .BE .SH DESCRIPTION .PP This command arranges for one or more local variables in the current procedure to refer to variables in an enclosing procedure call or to global variables. \fILevel\fR may have any of the forms permitted for the \fBuplevel\fR command, and may be omitted if the first letter of the first \fIotherVar\fR isn't \fB#\fR or a digit (it defaults to \fB1\fR). For each \fIotherVar\fR argument, \fBupvar\fR makes the variable by that name in the procedure frame given by \fIlevel\fR (or at global level, if \fIlevel\fR is \fB#0\fR) accessible in the current procedure by the name given in the corresponding \fImyVar\fR argument. The variable named by \fIotherVar\fR need not exist at the time of the call; it will be created the first time \fImyVar\fR is referenced, just like an ordinary variable. There must not exist a variable by the name \fImyVar\fR at the time \fBupvar\fR is invoked. \fIMyVar\fR is always treated as the name of a variable, not an array element. Even if the name looks like an array element, such as \fBa(b)\fR, a regular variable is created. \fIOtherVar\fR may refer to a scalar variable, an array, or an array element. \fBUpvar\fR returns an empty string. .PP The \fBupvar\fR command simplifies the implementation of call-by-name procedure calling and also makes it easier to build new control constructs as Tcl procedures. For example, consider the following procedure: .CS \fBproc add2 name { upvar $name x set x [expr $x+2] }\fR .CE \fBAdd2\fR is invoked with an argument giving the name of a variable, and it adds two to the value of that variable. Although \fBadd2\fR could have been implemented using \fBuplevel\fR instead of \fBupvar\fR, \fBupvar\fR makes it simpler for \fBadd2\fR to access the variable in the caller's procedure frame. .PP \fBnamespace eval\fR is another way (besides procedure calls) that the Tcl naming context can change. It adds a call frame to the stack to represent the namespace context. This means each \fBnamespace eval\fR command counts as another call level for \fBuplevel\fR and \fBupvar\fR commands. For example, \fBinfo level 1\fR will return a list describing a command that is either the outermost procedure call or the outermost \fBnamespace eval\fR command. Also, \fBuplevel #0\fR evaluates a script at top-level in the outermost namespace (the global namespace). .PP .VS If an upvar variable is unset (e.g. \fBx\fR in \fBadd2\fR above), the \fBunset\fR operation affects the variable it is linked to, not the upvar variable. There is no way to unset an upvar variable except by exiting the procedure in which it is defined. However, it is possible to retarget an upvar variable by executing another \fBupvar\fR command. .SH BUGS .PP If \fIotherVar\fR refers to an element of an array, then variable traces set for the entire array will not be invoked when \fImyVar\fR is accessed (but traces on the particular element will still be invoked). In particular, if the array is \fBenv\fR, then changes made to \fImyVar\fR will not be passed to subprocesses correctly. .VE .SH "SEE ALSO" namespace(n) .SH KEYWORDS context, frame, global, level, namespace, procedure, variable 070701000790b2000081a400004ccf0000000a0000000133f371ec00001b90000000a30000000400000000000000000000002600000004reloc/SUNWtcl/8.0/man/mann/variable.n'\" '\" Copyright (c) 1993-1997 Bell Labs Innovations for Lucent Technologies '\" Copyright (c) 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. '\" '\" SCCS: @(#) variable.n 1.4 97/08/13 16:57:57 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH variable n 8.0 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME variable \- create and initialize a namespace variable .SH SYNOPSIS \fBvariable \fR?\fIname value...\fR? \fIname \fR?\fIvalue\fR? .BE .SH DESCRIPTION .PP This command is normally used within a \fBnamespace eval\fR command to create one or more variables within a namespace. Each variable \fIname\fR is initialized with \fIvalue\fR. The \fIvalue\fR for the last variable is optional. .PP If a variable \fIname\fR does not exist, it is created. In this case, if \fIvalue\fR is specified, it is assigned to the newly created variable. If no \fIvalue\fR is specified, the new variable is left undefined. If the variable already exists, it is set to \fIvalue\fR if \fIvalue\fR is specified or left unchanged if no \fIvalue\fR is given. Normally, \fIname\fR is unqualified (does not include the names of any containing namespaces), and the variable is created in the current namespace. If \fIname\fR includes any namespace qualifiers, the variable is created in the specified namespace. .PP If the \fBvariable\fR command is executed inside a Tcl procedure, it creates local variables linked to the corresponding namespace variables. In this way the \fBvariable\fR command resembles the \fBglobal\fR command, although the \fBglobal\fR command only links to variables in the global namespace. If any \fIvalue\fRs are given, they are used to modify the values of the associated namespace variables. If a namespace variable does not exist, it is created and optionally initialized. .PP A \fIname\fR argument cannot reference an element within an array. Instead, \fIname\fR should reference the entire array, and the initialization \fIvalue\fR should be left off. After the variable has been declared, elements within the array can be set using ordinary \fBset\fR or \fBarray\fR commands. .SH "SEE ALSO" global(n), namespace(n) .SH KEYWORDS global, namespace, procedure, variable 070701000790b3000081a400004ccf0000000a0000000133f371ec000017c4000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/vwait.n'\" '\" Copyright (c) 1995-1996 Sun Microsystems, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" '\" SCCS: @(#) vwait.n 1.3 96/03/25 20:27:21 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH vwait n 7.5 Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME vwait \- Process events until a variable is written .SH SYNOPSIS \fBvwait\fR ?\fIvarName\fR? .BE .SH DESCRIPTION .PP This command enters the Tcl event loop to process events, blocking the application if no events are ready. It continues processing events until some event handler sets the value of variable \fIvarName\fR. Once \fIvarName\fR has been set, the \fBvwait\fR command will return as soon as the event handler that modified \fIvarName\fR completes. .PP In some cases the \fBvwait\fR command may not return immediately after \fIvarName\fR is set. This can happen if the event handler that sets \fIvarName\fR does not complete immediately. For example, if an event handler sets \fIvarName\fR and then itself calls \fBvwait\fR to wait for a different variable, then it may not return for a long time. During this time the top-level \fBvwait\fR is blocked waiting for the event handler to complete, so it cannot return either. .SH KEYWORDS event, variable, wait 070701000790b4000081a400004ccf0000000a0000000133f371ec00001a20000000a30000000400000000000000000000002300000004reloc/SUNWtcl/8.0/man/mann/while.n'\" '\" Copyright (c) 1993 The Regents of the University of California. '\" Copyright (c) 1994-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. '\" '\" SCCS: @(#) while.n 1.7 97/04/08 17:13:50 '\" '\" The definitions below are for supplemental macros used in Tcl/Tk '\" manual entries. '\" '\" .AP type name in/out ?indent? '\" Start paragraph describing an argument to a library procedure. '\" type is type of argument (int, etc.), in/out is either "in", "out", '\" or "in/out" to describe whether procedure reads or modifies arg, '\" and indent is equivalent to second arg of .IP (shouldn't ever be '\" needed; use .AS below instead) '\" '\" .AS ?type? ?name? '\" Give maximum sizes of arguments for setting tab stops. Type and '\" name are examples of largest possible arguments that will be passed '\" to .AP later. If args are omitted, default tab stops are used. '\" '\" .BS '\" Start box enclosure. From here until next .BE, everything will be '\" enclosed in one large box. '\" '\" .BE '\" End of box enclosure. '\" '\" .CS '\" Begin code excerpt. '\" '\" .CE '\" End code excerpt. '\" '\" .VS ?br? '\" Begin vertical sidebar, for use in marking newly-changed parts '\" of man pages. If an argument is present, then a line break is '\" forced before starting the sidebar. '\" '\" .VE '\" End of vertical sidebar. '\" '\" .DS '\" Begin an indented unfilled display. '\" '\" .DE '\" End of indented unfilled display. '\" '\" .SO '\" Start of list of standard options for a Tk widget. The '\" options follow on successive lines, in four columns separated '\" by tabs. '\" '\" .SE '\" End of list of standard options for a Tk widget. '\" '\" .OP cmdName dbName dbClass '\" Start of description of a specific option. cmdName gives the '\" option's name as specified in the class command, dbName gives '\" the option's name in the option database, and dbClass gives '\" the option's class in the option database. '\" '\" .UL arg1 arg2 '\" Print arg1 underlined, then print arg2 normally. '\" '\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24 '\" '\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b '\" # Start an argument description .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ie !"\\$3"" \{\ .ta \\n()Au \\n()Bu \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. '\" # define tabbing values for .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out '\" # BS - start boxed text '\" # ^y = starting y location '\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. '\" # BE - end boxed text (draw box now) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" Draw four-sided box normally, but don't draw top of .\" box if the box started on an earlier page. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. '\" # VS - start vertical sidebar '\" # ^Y = starting y location '\" # ^v = 1 (for troff; for nroff this doesn't matter) .de VS .if !"\\$1"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. '\" # VE - end of vertical sidebar .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. '\" # Special macro to handle page bottom: finish off current '\" # box/sidebar if in box/sidebar mode, then invoked standard '\" # page bottom macro. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" Draw three-sided box if this is the box's first page, .\" draw two sides but no top otherwise. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. '\" # DS - begin display .de DS .RS .nf .sp .. '\" # DE - end display .de DE .fi .RE .sp .. '\" # SO - start of list of standard options .de SO .SH "STANDARD OPTIONS" .LP .nf .ta 4c 8c 12c .ft B .. '\" # SE - end of list of standard options .de SE .fi .ft R .LP See the \\fBoptions\\fR manual entry for details on the standard options. .. '\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c Command-Line Name: \\fB\\$1\\fR Database Name: \\fB\\$2\\fR Database Class: \\fB\\$3\\fR .fi .IP .. '\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. '\" # CE - end code excerpt .de CE .fi .RE .. .de UL \\$1\l'|0\(ul'\\$2 .. .TH while n "" Tcl "Tcl Built-In Commands" .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME while \- Execute script repeatedly as long as a condition is met .SH SYNOPSIS \fBwhile \fItest body\fR .BE .SH DESCRIPTION .PP The \fBwhile\fR command evaluates \fItest\fR as an expression (in the same way that \fBexpr\fR evaluates its argument). The value of the expression must a proper boolean value; if it is a true value then \fIbody\fR is executed by passing it to the Tcl interpreter. Once \fIbody\fR has been executed then \fItest\fR is evaluated again, and the process repeats until eventually \fItest\fR evaluates to a false boolean value. \fBContinue\fR commands may be executed inside \fIbody\fR to terminate the current iteration of the loop, and \fBbreak\fR commands may be executed inside \fIbody\fR to cause immediate termination of the \fBwhile\fR command. The \fBwhile\fR command always returns an empty string. .PP Note: \fItest\fR should almost always be enclosed in braces. If not, variable substitutions will be made before the \fBwhile\fR command starts executing, which means that variable changes made by the loop body will not be considered in the expression. This is likely to result in an infinite loop. If \fItest\fR is enclosed in braces, variable substitutions are delayed until the expression is evaluated (before each loop iteration), so changes in the variables will be visible. For an example, try the following script with and without the braces around \fB$x<10\fR: .CS set x 0 while {$x<10} { puts "x is $x" incr x } .CE .SH KEYWORDS boolean value, loop, test, while 070701000a6e35000041ed00004ccf0000000a0000000433f3720500000000000000a30000000400000000000000000000001700000004reloc/SUNWtcl/8.0/sun4070701000043a2000041ed00004ccf0000000a0000000233f3720400000000000000a30000000400000000000000000000001b00000004reloc/SUNWtcl/8.0/sun4/bin070701000043a3000081a400004ccf0000000a0000000133f371f100010c38000000a30000000400000000000000000000002400000004reloc/SUNWtcl/8.0/sun4/bin/tclsh8.0ELFx44 (44ܡܡܤܤ`ܴܴ/usr/lib/ld.so.1ecrkf<:8ULBgP{H,pZD=/?&OCN%ao }n^'0R[71ed\EVx|XmSqys#4!Ylj5"zv6@]_.$*9)A>MGI23K;+QFT(Wh`-tibwJu~ x   D H  ܤܴd<ސ߸=`X K#G)x0|"4<|B<KP@X@!]OdLd qܤX (ݔݠ{DLd"˘X F"4)@"Ld8& <"8 X :H")@0$K") <>"A0 TPX fDm@"s=`"x""~S#`X @XܴK"@ OdL"L ~x8"ݬ%X 7H@"; J<!RX\d\pH@v\ݸ4""0"߶dhX |X )0 <@X Nܡ UH biרX {D"F|4 d:H& <K@> 8 {"" "{G"__sqrt__libm_TBL_log2_hi__floor__cos_starttanmatherr__tan_environ_end__expm1_iob__fmod_ex_register_GLOBAL_OFFSET_TABLE___libm_TBL_log_hi__libm__k_tanatexitexit__libm_errnolog__libm_TBL_cos_loceil__asinpow__log__atan2log10_init__libm_TBL_sin_hisinh__pow__acosfabs__libm_TBL_atan_hitanh__libm_TBL_exp2_hi__libm_TBL_tan_hi__atanexpm1sqrthypot__libm_SVID_libm_err___Argv__libm_TBL_log2_lo__libm__rem_pio2mTcl_AppInit_DYNAMICfloor__iob__coshfmod__libm_TBL_ipio2_inf__libm__k_sinatan2Tcl_Init_exit__libm_TBL_log_loexp_ex_deregisterenvironerrno__cg89_used__cg92_used__exp__fnonstd_usedTcl_SetVarTcl_Mainasin___errnoacos_write_edata_PROCEDURE_LINKAGE_TABLE___libm_TBL_sin_lo__libm__k_cos__fsr_init_value__libm_TBL_atan_lo__libm__rem_pio2__libm_TBL_exp2_lo__libm_TBL_cos_hi_etext_lib_versionfflush__libm_TBL_tan_loatan__ceilmain.divtclDummyMathPtr__sinh__log10__fabs__environ_lock__tanh_finisin__hypotcosh__sincoslibtcl8.0.solibdl.so.1libsocket.so.1libnsl.so.1libc.so.1/opt/SUNWtcl/8.0/sun4/lib V(Lݔ,ݠ-ݬSݸ^R]n!b` s @D"b`, @'$<+`-` `?-)"X-/  % +` `?`5+b\ %@# @rg@rؐ @"f@ @r@r㿠@#rb$@! @r 㿠@#ra@@r  `@!  @r@ @?㿈'Dg'H P:``HD+ ?>@ +@ 6?* ?"  `D#D# DBg H?@??.  > ?@ؘ  ā1D^H@h F8 L`0FXL(P F LFL F LFL F LFL FF F ̉Dĉāā`1^D#(HH@h8J`P0XFDJ(PP ?J# PJPJPJPHPHPHHHĉ VމD Lā$DH%#( @8* Dh F`X( H0 NPD HN? H" N P HNޑ H NPHN̍ F NFN FF F Ή RLD J?@㿈'Dg'H D>H? :``+?@+@ - ?" *   D FFg H?@??.  > ?@  ā1 @=P @PFHpL@FhL80F`LX(FLFHFHFHFHFFFȍ FF. ?6E;``?"ȕPHp̒c3H@h8 L` R0EXDL(R?"Й L RLR L HLH L HLH LL L `FFJƐ ?* E"  HHСN ʑ N F̑ȕNʍʍȁ$?@?H'L'PLP'D'HBD$H!% @F"F66 @ _g!X ^@ & ^@/      "     D ā^ `  ā D   " J  " #   " ;  "F4  #F "D " D  "  "  >??  D ā  "  `  ā D.*4 4;`;h`#h %2 "###x#| x F ;p#pp 2 2"$5 2 "###x#| xF ;p#pp 2 2"$5"@ < (F"(D B ?F6 "0 ;p@ np   " ?  " ( @' (  ā@?-V?@6?@㿈. 3 'D;`'H `$ H" G^" 9 @  ^^3"B @ȅ^"# g@    BD! g@    B g! FgF!ȽƁ @ ə ;h@ h#;pp#T 2;H*+ SH#PP6 B$6 "6;HH 222;H*+ >H :8@ >+ !)4' 5$  6+ * ;H$#PPH# B&*!) ;HH10 +HH "  #P;HPH B#H H ;HHp'Dg'L 'H'P!D LHP;h;`?? ,`#1 @' @> ? @ @ '@  ?" @F?VT ? * +DD0* @ #D D2   *`  &!"`蕧șH F HLʍF^@ &@*@  #?&F""`衢ΝJ H JHȍƁF"D?? * +DD0* @ #D D2  5??H<"!g^#g!3aB ^3]B FF??Ya@?!?" @$'$'@,`&D$ 聡@? 9h;hh`@ ??` *  "> ? @#$%`*  " ^D#>$%?㿀'D'H  D H" g" @I"  2 "###p#t p F ;h#hh 2 2"$5 &` * +DD0* @ #D D2  #xx ;p#T 2;H*+ SH#PP6 B$6 "6;HH 222;H*+ >H :8@ >+ !)4' 5$  6+ * ;H$#PPH# B&*!) ;HH10 +HH "  #P;HPH B#H H ;HH;h@h!g#gp"8F%gb( @`0JHJ;`"` * +DD0* @ #D D2  ` ^@ @ ?@P?`'L'D#'P'H#`LgPDH?"h@ m  @:   l@ ^ * _   @ 2X^  4T^  @ K. 2 ;h6 h!#\'6! <"#   4>*@ `   $ <*@ `$ N '  ށ `g>?"`g?"``g"` B@  g"h @``'  `\ `@`8  ""1g"`#g "h 2 \@  \ !g"` @ ?g\`"`    @ z? @~!> ƕ^(ȅ @@J@^V$ ?耢&`s쀢 q'Ѝ'нVJ ?#T 2;H*+ SH#PP6 B$6 "6;HH 222;H*+ >H :8@ >+ !)4' 5$  6+ * ;H$#PPH# B&*!) ;HH10 +HH "  #P;HPH B#H H ;HH@ ' #T 2;H*+ SH#PP6 B$6 "6;HH 222;H*+ >H :8@ >+ !)4' 5$  6+ * ;H$#PPH# B&*!) ;HH10 +HH "  #P;HPH B#H H ;HH@  $3 J0$3t80쀢 p8080V J ?#T 2;H*+ SH#PP6 B$6 "6;HH 222;H*+ >H :8@ >+ !)4' 5$  6+ * ;H$#PPH# B&*!) ;HH10 +HH "  #P;HPH B#H H ;HH@  #T 2;H*+ SH#PP6 B$6 "6;HH 222;H*+ >H :8@ >+ !)4' 5$  6+ * ;H$#PPH# B&*!) ;HH10 +HH "  #P;HPH B#H H ;HH@ ' !p F 8J!`J!hDJ 0!xgc0 (ha0F  #pp ?: J* •ʑHJHHHHHHH HH^c??#T 2;H*+ SH#PP6 B$6 "6;HH 222;H*+ >H :8@ >+ !)4' 5$  6+ * ;H$#PPH# B&*!) ;HH10 +HH "  #P;HPH B#H H ;HH\* '\耢  ^㿐'D'H#gD Hbh?? ";&>B,phH̽ZڕJ6JVLJƹ\J̩TJܭXJ FxJXJJFFʁ*֍>?8 D??-  ? @ '' ':"#@D:` Ē `#\*` \h X@ iX`HPX FNȹ H: P \ZBLDTJġPʅޑ P̅BʅRTHJBʁ*܅>??@@@h'D7'HD  H!" @. j2;``!!N##N @Q;"(F b0  ƍFH;*  ;hh';N!N"8#j"@!j9;xcx F#Fȍ;@8;  *  ;pp!;x#x#T 2;H*+ SH#PP6 B$6 "6;HH 222;H*+ >H :8@ >+ !)4' 5$  6+ * ;H$#PPH# B&*!) ;HH10 +HH "  #P;HPH B#H H ;HHx;  " ;x x@㿠'Dg'H`H?DH^ ?.    O !X@o @6?㿀'D'H@D"?H#. @. O2!j;``# +6 # =  ^;p@Yp D ā= ?;p@Ip F! ƀ`,D?  "  O ! * ;hh` jjc D#Djj#Bc?@@@㿈'Dj'H#:  DH-  ?  ! @ڍ!-@`z@ 4!"B@ !@  ?* ? -@ @ @O#ȁ  B ^O#Ёā"B@+("@   ((? H' O0@#O0@#B(F#\\ H Jȭލ $@: @āāO#XP 蕥@H@J8 F`F FF FF FF FFJʥJʥҍ FB؁ƁĀ?F؍@H ``@ƁH`HF?+ 8( :?荠  $ 荢Ɛ. ? $ #* $ 葠H. ȍ^? $֐. ? $ށ㿀7 ?!k 0.606 @6 @ `B B F F FF  FF 0F (FF FF FF FF F@ F~FM H @ 0F (FF FF FF FF FF F X F)Ā @ HF @FF 8FF F X FĀ  X  X &@ 6 P&20  ? B& Fk ƶ' 6 kc @"  8 HH @HH 8HH H H@&́LJʁ㿀!l"# .)&? B6  ?Bª D D'-@'@! .%H@@ C!@?@  , %RĀ@ .@ 灠@ &だ@ xP?!l"5 .  .@ r)  &  4E @8A 4 $ ( 0  (B 0J? @ pD hDD `DD XD 8D PDDĀ  DΝ΁ @r DĝΝ @ȁ΀"h@ He@4  &  4  @( V T  B H4FƉD' H J>ʀ) B @5D H FF F/F  @/  ЉD ȉD#lcD%m 8 H'mࠉ @Ā|& `6/`'@' /`'@' @@ +@@/+3 "@''偠@ * ;HH㿀!m"# .)&? B6  ?B D '-@'㿀?!m" #c%B4)B##[# .@  ( D??P@ #?6 @ &  # d#1@ * #2 &@"v D D ȑHnȑD c&"@ H6  ` pJ hJJ `JJ XJJʕ JT'4"#@#?.#'#?  ?'荠B4  m#8F P J HJ J @J J JJ 8 NNN 0 J$J?  ?B& Ƒ2 * p`XnXF P J HJ J @J J JJ@JJ㿀# ..% ? @ 9%5'** 54@ & @ @  @ qB@ & @ @  @ eB@ & @ @  @ YB@ & @ @  MB4К@ *@ & @ @  <B@ & @ @  .B@ & @ @  @  B@   2?@ B%@@*@?''!r X ? B?I @?C 恠 B  @E?? BՁ ?4\h 0 \ XL@,H<L8 !$!"##G?'DT'L"'Hg'P H`!DLHP????``,`#\"`2@bs#' T?"`+?И*`@@ ''Ē1T "@?g H;`  ?@ Ƞ !" @bPg H!v"  @bF @  !"  T' ' ?@g H ;`@  !|" @b'xg H!v"  @b @  !i" ?Ȑ  ?  'T'Đ"?.  ?;hh Fr T *    ;pTp";` g H ?@ a !>" @a:g H!v"(  @aߔ @ N !+" g H   'r pT'Đ";` ??@ 4 "" @a g@ + ""  ' T'Đ"?@ g H T`;``" ??@  "" @ag@  ""  ' (T'Đ"?@ g H T`;``" ??@ "" @ang@ݠ ""  ' ,'1T "@?g H;`  ?@Ǡ "" @aOg@ ""  ' 0T'Ĕ @g H T`;``" ??@ !|" @a'xg H!v"@  @a @ !i"  ' 4T'Đ"?@r g H T`;``" ??@m !J" @`Fg H!v"T  @` @Z !7"  ' 8T'Ĕ @@g H T`;``" ??@; !" @`Ðg H!v"h  @` @( !"  ' <T'Đ"?@ g H T`;``" ??@  !" @`g H!v"|  @` @ !"  ' @T'Ĕ @g H T`;``" ??@נ !" @`_g H!v"  @`U @Ġ !"  ' DT'Đ"?@ g H T`;``" ??@ !" @`-~g H!v"  @`# @ !o"  ' HT'Đ"?@x g H T`;``" ??@t "Q" @_Mg@k "H"  ' PT'Đ"?@Q g H T`;``" ??@M !*" @_Ր&g H!v"  @_˔ @: !"  ' XT'Ĕ @ g H T`;``" ??@ "" @_g H  !v"̐ @_ @  !" @ ""  ' \T'Đ"?@ g H T`;``" ??@ !" @_ng H!v"  @_d @Ӡ !"  ' `T'Ĕ @g H T`;``" ??@ "" @_<g H  !v" @_3 @ !" @ "{"  ' hT'Đ"?@ g H T`;``" ??@ !\" @_Xg H!v#  @^ @l !I"  'Tg H p'  ?;`8?@^4g!v#  @^ޔ @M !*"  ' tT'Đ"?@3 6 R;` . #x; #|##&^ ^ ??6x^ B,gT"# ЉF #;+ ; ##&^^ FB` Fg?;`g H T`" T#&?T#&?T" ?འ'?؀`@Š "" @^Mg@ ""  ' xT'Đ"?@ 6 R;` . #; ###&^ ^ ??6^ B,gT"# ЉF #;+ ; ##&^^ FB` Fg?;`g H` ?@S "0" @]ې,g@J "'"  ' |T'Đ"? @/ \,`) ;`,# @ " `:"#   4:* `    `  :* `  `g gg;` H T``" ??@ !" @]zg H!v#8  @]p @ߠ !"  ' T'Đ"?@Ő g H T`;``" ??@  !" @]Jg H!v#T  @]@ @ !" r  p * g H   ' 'Ā`;`T" T#&?T#&?ؐ" ?འ'?؀`@{ "X" @]Tg@r "O"  ' T'Đ"?@X g H T`;``" ??@U !2" @\ݐ.g H!v#x  @\Ӕ @B !"  '  .'" & ?."  2   r h ;`T"?@  ;`g H ?`?@  !" @\g H!v#  @\ @ !"  ' . '" & ?."  2   r h ;`T"?@ ;`g`Hr`` h?@à !" @\Kg H!v#  @\A @ !"  ' T'Đ"?@ g H!r ;`` h?@ !v" @\!rg H!v#  @\ @ !c"  ' T'Đ"?@l g H!r ;`` h?@o !L" @[Hg H!v#  @[ @\ !9"  '  @D'g H;` ?@I "&" @[ѐ"g H  !v# @[Ȕ @7 !" @3 ""  '  @'T";` gའ' H ?@ "" @[g@  ""  ' Ȑ @'g H;` ?@ "" @[g@ ""  'T";`  'g H ?@ݠ "" @[eg H !w   @[[Ē  @[W @Ơ ""  'T";`  'g H ?@ "" @[<g H !w   @[2Ē  @[. @ "z"  'T";`  'g H ?@ "h" @[dg H !w   @[ Ē $ @[ @t "Q"  'T";`  'g H ?@b "?" @Z;g H !w   @ZĒ 4 @Zܔ @K "("  'T"  'g H;` ?@9 "" @Zg H !w   @ZĒ D @Z @" ""  'T"  'g H;` ?@ "" @Zg H !w   @ZĒ T @Z @ ""  ' T'Đ"?@ߐ g H T`;``" ??@۠ "" @Zcg@Ҡ ""  ' T'Đ"?@ g H T`;``" ??@ !" @Z<g H!w d  @Z2 @ !~"  'g H ' T?ؐ"?;`n?@Zjg H  cg@ !^"  ' T'Ĕ @gg H T`;``" ??@b "?" @Y;g H  !w x @Y @P !-" @L ")"  '!T'Đ"?@2 g H;` ?@7 !" @Yg H!w   @Y @$ !" g H   2`؁?` * +DD* @ #H H2  !]7]  * +DD* @ #H H2   * +DD0* @ #D D2    * +DD0* @ #D D2     "< g "2##p *`+DD*#@ #D D2    *`+DD*#@ #D D2  !r  p@ ,  ;``x @;* ;hh'# "r *`+DD*#@ #D D2    *`+DD*#@ #D D2  x @ *  ;ppr  @ *   ;xx B% !r#r *`+DD*#@ #D D2   *`+DD*#@ #D D2   p @ ,  ;r x @ *   ; x B#r *`+DD*#@ #D D2    *`+DD*#@ #D D2  !r  h@ ,  ; pab^cbc`2 cbb^c#c#cc@@! .%H@@{!@?@ , %_xĀ@f@ @^だ@߁@?+ .!r %@%@6 @@E %@&   0J (JJ JJ J?𕠉J 2J@ @''" 2`  ?6Dą @r@ @J 8Jr㘕J N Ns"N N N J N ʁJ@?+ .!r %@@%@6 @N@%@&   0J (JJ JJ J?𕠉J J":JJ6J@ @''" 2`  ?6Dą @s @J 8JthJ N Nr!@N N N J NJ J6Jʁ@! .%H@ @]!@?@ @M@ !t".H!@>4 &&& !@8&&&  !|@  0H@ " H 8ƅƉ PʅNH!@4L  B DB4` 0 J' 8 L&2 "@ 1#  H*+ PЙʙ P N$̡ P P N&2 "@ 1D  X*+ PНʙ ` D ̡ P ` N̙ L̡<̀@4`>>; "*$@ &@   F?Jā F?聨 V   V ? '  tcL@&  @  & & >>?Ap>p?@ ?#u`'H* `|c &&` #x#|;;;@V;؀   #`, $@, "& + @` ::|   #|`# F  ?蕠  9! `*   '  `H"`  ^ @?`?`J"` ` N` RF?` NLP ^ @`J"` F `H` "`@F$ :?c#d&`c #h* p  #l`;`#t.#p@;;`$N;@$` 9p R`$`"`F^`"` ^`"` N`ơPF"  PP HơPF"?PP JơPF"?PPΝ RJN"?^ƥ^F"   R"`"`FFʥFJ"  ;;;;#T 2;H*+ SH#PP6 B$6 "6;HH 222;H*+ >H :8@ >+ !)4' 5$  6+ * ;H$#PPH# B&*!) ;HH10 +HH "  #P;HPH B#H H ;HH ^ #;*  ; # H ##ȁL+#* @#F#FHޤ `,`lpF#\ \ : *" "  :,`l : 7 $ `   p  @ @     #@ #@ ````" ,`,`l h " ld " 2qؽ"k;;;;;#T 2;H*+ SH#PP6 B$6 "6;HH 222;H*+ >H :8@ >+ !)4' 5$  6+ * ;H$#PPH# B&*!) ;HH10 +HH "  #P;HPH B#H H ;HHн@ p$`  * $`#$``#``  ` `# `#`#`#` flp &  *  "`` ``* @ @@ * K (` ` 676;@ * @'```H"`  `^ J"` ?` N?F` R?` NLP `^ J"` F  `H"`F`; `@ $  *@*p  &` 2ؒ "`$`` &`|;t;;#T 2;H*+ SH#PP6 B$6 "6;HH 222;H*+ >H :8@ >+ !)4' 5$  6+ * ;H$#PPH# B&*!) ;HH10 +HH "  #P;HPH B#H H ;HH p,` @`,``FFFȑH" " ؍@p" ;ؔ;#T 2;H*+ SH#PP6 B$6 "6;HH 222;H*+ >H :8@ >+ !)4' 5$  6+ * ;H$#PPH# B&*!) ;HH10 +HH "  #P;HPH B#H H ;HH`?,`,`p  `,-`"`$` ` F D"`: ` " ` &  F`  D` :  H D:  J D L D: : " "`  F D: " `"`  F D: " <```# &&H?聠>u? @ * *   H`  @F@ $ *$@ *Д: Hx    "5` /  "~``# `?,`Ѐ`   F" "  H JL<  F" < 2 ; `# `?,`Ѐ`   F" "  H JL<  F" < ! ; ;  ` ؀4``F` 耢HJL$` `F`$`2 ; D,`Ȓ Ж$` /`$` @ހ`#`F: " :`"`  `FʍH: :` `FʍH: :` `FʍH: :` `ὠ@ހ`F: " :`"`` D#``ƅB: " :`"`4``D,`Ȓ Ж$` /`$` @ހ`#`F: " :`"`  `FʍH: :` `FʍH: :` `FʍH: :` `ὠ@ހ`F: " :`"`` D#``ƅB: " :`"`4``# `?$`,`Ѐ  F" "  H JL6   F"" 6  а ; ; ;  ?; ؉; ; @?+ .!u %@:%@6 @@ X'?L#$JF JH HuH%@& 0 PJ HJJ @JJ 8JJ 0JJ (J?𕠉J J !"[JJWJ@ @''" 2`  ?6Dą @uP J Ju㨕J N NN N N" N JT T Nʑ T։ 9 ƝDT9FƑH֑ȑ HHʭ TV  ҥR6Rҁ X# ƑJ#$FFHH H큣H㿠@BL?㿠@B??@ !TD-?!TD-<&3\?UUUUUUo}?UDU(h;?Iu?= :'-K@*YȿlY?ű.?~7<u?!TD-<&3\?!TD-?UUUUUUo}?UDU(h;?Iu?= :'-K@*YȿlY?ű.@(#)atan2.c 1.16 93/09/07 SMI5zJԸ?!TD-?!TD-@ !TD-<&3\@(#)cosh.c 1.13 93/09/07 SMI?.B9?.B=95yd c@Ge+? 9KS?wrB@G`>d ]߇@Ge+? :?wlP?av?ԇP&CA@(#)_TBL_exp2.c 1.8 93/09/07 SMI??,>wa?Yt?Eu?Xl?2Ѣ?[Q?B-?r<}Q{?[ou?ԇ1h?;b?8znub8?kEe|??҅ ? 1?<d?q7:?4?ަL4"? !.*?N`a-?􆢵%]?kUy?蟙Zӭ?3O?v^G?K?݅R?g.WK? i?-J|?X?2?3{_?P.???aZ'?Pv[nE@?qS[]?K?炽??2?( ?^????6?k??? ~?>?s???A?A?t?i?? m?>?p?X????6c?gS??ș??)?Y??U???E?t?N?Ѿ>6 />@ZE1M>Zf])>McaM>W!Ukޟ>cSVy>k8[>oY"bϙ>[֫>P+j>1>qOrokԋ>|OC>>0~'>\C>zO8>zv_E>-| :>VvI>y)N>c [=->|I>>w MDu>v-c>Zana.>R> Q>a0H>Uo>ԙ2&>m$z>rF⿒K>o>lC>tܤO>>Og|>xŇ >|,i->#W>l]>D:>~_8i>T><h>+j>GK+>]A>Fɉc>|8G>z2L>PW9>r/r>OKh>TJ>*yOc>TRI>n >a$H,>>F/<>޴<>zɅ >')>m,H>T,ٙV>{ϸ 5qT>Y>@>F⿒K>|>)>q6>sLN>Yj(iU~>5c>  K>y>AA3>Rv_|>b|>xܯ>y>&\=W>pgg>[{>Od>>}ٴE>fC>h*˧2>U>v Ү>l̫>I%&>q2>>o>9Z*>s^d5w>zTE]>[Iin>s,>l~m>tضj>\4 m1><8>&bƿ>Q Ho>I%&>O:/>]A>Y0>g>pCW%>wU>~Dg+ >lMNUD4>Qal>lT[p>;nd2>yʩɫ>7>aw3b>ʾP@(#)sinh.c 1.14 93/09/07 SMI?.B=95yʆR9n -?UUUUT?ə_*I$ʹ,?qrmA?n?=UUUU;]?ə#GG`Y?!TD-<&3\GCWi?պ/n??7&?ܽ?bl?ЇO?Ɂ>j?ԉ3?ǹ{K[?Ȱn⇜(?ɦl&?ʜ#@2y?ːR`?̄t.n?w W6?jM?[u,?Нŗcb?ы x?x7 WF?bw7?J6¯ ?0QJ? ?A?`Kc?زM9J%?ٌEMk?d#?:\l? N?SC,P?ݬgaO?@ T?e~0?%]ҩ? ?╎Y01?E7???䗏&?8{?Չ?mf9#?xF4?k]1^?зM?W?!TD-?%%?O8d?pC?|Wo?nWO ?$DU?|A?s ҁ?.4?Ng'z?GS?ӏ,[?9?K ?_@0?D?b6?pU:%?Am? myjM?O ?jl3S?PG?kz`?-pA?[TsQ?L?e?x ?g&?D?6?oo3?PRN`?ڽ?s%HW?Ʃ+?AMD L|?`,sj?}c?!:PS?0p?nj~ޱ?{e?C_? @1?^ ?$j!Lvv mq <|d'UlzcA<46WoG};fl?Vj%,Ak>f7ir?Ge+<F)>Y9?.B9?.B=95y>0?UUUU)ffJ7 ??Yt?Xl?[Q?r<}Q{?ԇ1h?8znub8?? 1?q7:?ަL4"?N`a-?6*'?4+VO?HT)?$~:U?f;?u_t?s?%L?B*?77?đ?U>%]?蟙Zӭ?v^G?݅R? i?X?3{_??Pv[nE@%]@ 蟙Zӭ@ v^G@ ݅R@ i@ X@ 3{_@@Pv[nE@C00??UUUUUU??@C0?.B=95y+?g\?1?a^?ѽX ?9?ؚ3B[?#쿘L?D{̏c?܏ǚ"?jġ?_?%R?r%*?T?_^p@?y^?3O?V*?Fr?]>?*-&[ū?@L5-@(#)_TBL_log.c 1.8 93/09/07 SMIށbFŤDsb[KY$UŰEO =u+'^)zWͨlM2&uIJ$i&D*@㷵cH$?;sc  &|;eWU2bsXB~pbdl*eNApˏ!Smc+Ͽ-?6TtvbלPțGpԿt&3!f^IF忿,2+ng+ dQ4?6u2~YxΈ{tAڿ6TO7MItnX\P.B98Y#5xڿ5K:K҈ۘ;Kn\Gu[D櫿7Nr*kPlt PAs"?ӏ$7}_KEIYb @,-'&οrP>Nh73XNI\*t&3'jÿTʥc ȥ*Iſ>0緍D5#2Xט3EԱ.B92.&xW=#ſP(ib4ے@j"8ؿRw31ib4ے'|ϙly7e^{ʓ<#eQ¿ſ@kT=e'|'cF3^]YI] ~:CA]DD VXXG?x3? 0b?ҊkL?'n*?•R#?0p?RZV?̏ǚ"?Ϲm^>+?g\?1?a^?ѽX ?9?ؚ3B[?#쿘L?D{̏c?܏ǚ"?jġ?_?%R?r%*?T?_^p@?y^?3O?V*?Fr?]>?*-&[ū?@L5-?.B9?*Wm? P? ]PVY?#쿘L?ӗ78?$?٦7O?R@x?Qz?T ?\jȈ?/p4?Sj?},?=a-m?z ?_^p@?;qcÀ?< ?Wh޳?)Pw?vZ9?h? Q.=`?SЈ? $W?(2?%sVO?iU%t@ӿ@Ӟ}@ Q.=`@48.@]?@+1Q@@ND@3@׻@A @d o@t5@9MH@V"@=Ҝ@RI?@.B9@mH5*U@kz@ɓQeJ@{:k@W.|9A@6,@hZ@B{s@)ԅ@[.o@_VV]@tw=@z;(@ }ѳ@ Aob;<7eN<>1E;־񫼍w\<<< wx;.`< :^}+9}iмAW;9?"CƼCjW?#7x͹^<B\Xּ9)9@c(?UQ_z ?UUUQ(?b̝UUUUT?*uK>㦗'c(?UQ_z @(#)_TBL_cos.c 1.7 93/09/07 SMI?4 |(?)pp?@7M?}6?L.?Wo2?|$?vS*w?pkߞ?je$\?d>*?]t5 ?Wg?QM?Jl:y?C? Ň;? /8\~?T}?A0 /&??ϧD?!Ov? aO?ç̓?)?s>=@?_T6?JK*D?6֥? I? Z?>^?P(?ƷY? k?/q?~N{J?e?>@@?K?1|?Pr}?lR??J.? } ?[?o9 ;?Q^?3݁?([}P?1?X?U:A N?Ab?̵&?Cs-?=}R?h/?駵je?Zg ? xM?Z]?iw?1m]? O?iU!?ovx?渘]<[k;tb<-F;g?M:L>(e$̘e3+z!r(x[u@|¶a> 6ܴ<$Լg$70<=WyBb:Ҋ4<ͤ?e&K<<9zXB5F</ȼ.h3rwR7V`ck<_w漎-~g6ļn+tR6?Ҹ>?3?ӭi?&?Ԡ = ?hz?Ց? )u?ւ8?:U?qUvB?mN?^ziI?Ԥt/?JkF?ٿ?4 ?ک[cw?2?ۑ>0۬C?@?wgў?ԥ?[4va?L2?>VX*i?ޮtK?ߎj?6)9ƙU??Ķ;?|_.?426WL?Px?B? THO?YtV(+?%l:?N8k?Fa?{5?qmY? ?,!y?戊NK/h?X<zB˙~8/l?5.Dp&_~A99S9_(;/Z mm6~' OF?f_-u'{=9Rk_]V0F{kϼ 6a^e_h@؀Ms'1Vs`{k@(#)__rem_pio2m.c 1.14 93/09/07 SMI?!@>tD-hA8EpHOWY_fjou0{8(@XH`Php 8  h p x Ȁ  Ȉ w /h%6߸B{ U{$efgmuy}8@ (08@ (0    0HX ` P(805=(B G@P](" deftX$ {| Ԑ@ X (08@HP0  D 4=`X K!G'x.|"2:|@<IN@V@![OdLb oܤX (ݔݠ{DLd"˘X F"4)@"Ld8& <"8 X :H")@0"K"' :>"?0 RPX dDk@"q=`"v""|S#`X @XܴK"@ OdL"L ~x8"ݬ#X 5H@"9 H<!PV\b\nH@t\ݸ4""0"߶dhX |X   '0 :@X Lܡ SH ` gרX yD" ~F |4   d :H & < K @ >  8 {" "  " { G"tclshcrti.s_ex_text0_ex_range0_ex_shared0crt1.s__crt_scratchvalues-Xa.ctclAppInit.c.L357.L358acos.cxxxasin.cxxxatan2.csccsidzerotinyPIo4PIo2PIPI_locosh.csccsidln2xln2hixln2loxlnovftxhypot.csccsidonetwo1022twon1022log10.csccsidInfxivln10log10_2hilog10_2lopow.csccsidzeroonetwoE1E2E3E4E5two53A1_hiA1_loA1A2A3B0_hiB0_loB0B1B2B3B4log2_x_TBL_exp2.csccsid_TBL_log2.csccsidsinh.csccsidln2hixln2loxlnovftxsqrt.ctanh.csccsidonetwosmallbigexpm1.cxxxatan.Sxpio2hipio2lobigtmponeq1p1q2p2q3p3p4p5p6_TBL_atan.cceil.Sxtwo52mtwo52onezerocos.Sexp.Sln2_32hiln2_32lohugeln2_2ln2hiln2lokxinvln2_32threshold1threshold2invln2ln2_64halftmpln2onezerotwom54twom28twom18t1p1t2p2p3ln2_onehalfp4twop5fabs.Sfloor.Sxtwo52mtwo52onezerolog.Sln2hiln2loone_thirdtwo52halfonezeroA1B1A2B2A3B3B4two_TBL_log.csccsidfmod.Sxytwo110twom110_SVID_error.cNaNxInfxfmaxxfminxPI_RZxsetexception__libx_errno.csccsiderrno_funcpdefault_errno_funcget_errno_funcpsin.S__cos.Sonepp1pp2qq1qq2q1q2q3q4__sin.Sonepp1pp2qq1qq2p1p2p3p4_TBL_cos.csccsid_TBL_sin.csccsidtan.S__rem_pio2.Spio2_1pio2_2pio2_3two24halfpio2_3tpio2_2tpio2_1tzeroinvpio2pio2pio4pio2_1t5_TBL_ipio2.csccsid__rem_pio2m.csccsidinit_jkpio2_inf__tan.Snegoneonepp1pp2qq1qq2t1t2t3t4t5t6_TBL_tan.csccsidcrtn.s_ex_text1_ex_range1_ex_shared1__sqrt__libm_TBL_log2_hi__floor__cos_starttanmatherr__tan_environ_end__expm1_iob__fmod_ex_register_GLOBAL_OFFSET_TABLE___libm_TBL_log_hi__libm__k_tanatexitexit__libm_errnolog__libm_TBL_cos_loceil__asinpow__log__atan2log10_init__libm_TBL_sin_hisinh__pow__acosfabs__libm_TBL_atan_hitanh__libm_TBL_exp2_hi__libm_TBL_tan_hi__atanexpm1sqrthypot__libm_SVID_libm_err___Argv__libm_TBL_log2_lo__libm__rem_pio2mTcl_AppInit_DYNAMICfloor__iob__coshfmod__libm_TBL_ipio2_inf__libm__k_sinatan2Tcl_Init_exit__libm_TBL_log_loexp_ex_deregisterenvironerrno__cg89_used__cg92_used__exp__fnonstd_usedTcl_SetVarTcl_Mainasin___errnoacos_write_edata_PROCEDURE_LINKAGE_TABLE___libm_TBL_sin_lo__libm__k_cos__fsr_init_value__libm_TBL_atan_lo__libm__rem_pio2__libm_TBL_exp2_lo__libm_TBL_cos_hi_etext_lib_versionfflush__libm_TBL_tan_loatan__ceilmain.divtclDummyMathPtr__sinh__log10__fabs__environ_lock__tanh_finisin__hypotcosh__sincos<<N47*cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2ld: (SGU) SunOS/ELF (LK-2.0 (S/I) - versioning).interp.hash.dynsym.dynstr.rela.ex_shared.rela.bss.rela.plt.text.init.fini.exception_ranges.rodata.rodata1.got.dynamic.plt.ex_shared.data.data1.bss.symtab.strtab.stab.index.comment.shstrtab.stab.indexstrtclAppInit.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../tclAppInit.c -W0,-xpmain   E /  9 Cxx\I8O 8UDDgHH=oxܤܤ}ܴܴdd  <<Qސސ&߸߸L߸ = 0 <0707010009d247000041ed00004ccf0000000a0000000233f3720600000000000000a30000000400000000000000000000001b00000004reloc/SUNWtcl/8.0/sun4/lib0707010009d29f000081a400004ccf0000000a0000000133f371f0000a9cb0000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/sun4/lib/libtcl8.0.soELF4 4 (Pzkw;~Oe'5|0u FMxoCV|Ms&h G8B{-.-(FBg,):QjznqWtQG\wy` ?}y <37LUMh!TCP^R>cXK#dTAc_ 0t &fd@VV;wUO bRZ&p)@"u>^{0vD~rRI`%rm#lDnNv"6:5XWEK8u~(7EY"LaS$}D3+36'44\7k/ sH<pyNSa>2-%a9=@o=/t}9x1.[Ye?^dY]mGFj{_U+lphK$AH*TQ1 iX2/;n+$Hq!vB(*:#5xkz|.Z8i_JLoe%P\<f E)]ScZ!JCrl,9f=,I'b 6?W* 21`O4I[mj s]ibJNqAgBjpDt8   l d DP(%+@!J3PW^k8n}02`8L*, @`x  ސ' 6tI`s!<xbHd^ x<-<D=[L[Ufx8Ld0t$lN l#R400C8P(Zo c pxc<80< H2*PBd& 27@FHR4`dxoOl{)@Zxh7#DlNT w$,10tF0S` f s}T \hztlP:0H$ )"*(?@DIv`<W m |ZlhĬD48 ,D@?4'|6I3\R^A4nP"Tm4x4t (T=4H  @0FXLTb`mslt4 P     $l /8T @d J` ^}  p@ L  l ! %_@ 9 K Q" iH s9 Q B 4  h YL   P  P8  (l`  7ox L ^@X m     o    \   HD | ` ' - 9׈ G:( Z _/8 j4  0 0   L  h D, / \ h ,,ʔT1?x<ADQ$ej<v3U ) B #\D h"6cObdx\`N0\>h0`ltSp  pX*< <mHFe4@[nw% t$h `00`?%\ 48CS<HT[i<lzBPo`$X|X @ج0#a*1D>FW<n'\8xlH|> @ p  -4ڐtIM8DY_H PoŸ<8 t\vLK|`-Dl @\'8>x8N[xou>.XP<4PzT t$") 9 `K4Xg_$v h K(`!| 8< h %BLUZ`ct$yPd@x O,4 +;H0JVplk 8cd!0` 0X3x{t `D'07DtlXO j|1/\XE4Ǥ@ Tu t*x5d HPqtT_nx4~j9dv\PP(y0'HB/%AO'hZcjLhx`H|xLppl F$\]tD$  1d<{Udp`1D \tTl (THHH|'6L|X`a`qP$,ۜ Tdtt0   J| 2\4$4Y/@E@T3`,f`xv Hp p\5J /p05JCYmo<zWnX LpL&h}t  "q07l Q_fsz6L XnTH E(PB8  , #$ 1 >%p IT X _/  r8 ݀X   P 9  <  Lp x! H0!!#4 !9 0!DpD!Ul!i{!x!|!o!!!8 !y0!Kt!"\"8"+"7l"Dnd"T'x"e<"y"~H""I"P "" "8""%H"B#c #/#$#, #=<#NP #`#`#qd#~x#9x#####x#P$@$ $=(0$':\$6 $B"L$M1 t$`$fH$z$md$$T$X$$<$p$7,% %T%*%,p%9%= %K+p%bH%r\% %<%%M|%0%X%%%| &` &H&'&,4&:=&J&\&l]&w &@&u4&*&&t|&&-lP&|`&&' ''BX8'2:TclTeardownNamespaceTcl_ObjSetVar2panicTclIncrIndexedScalarTcl_UpVarTcl_GetAliassocketTclpListVolumesTclDateerrflagTclRegErrorTcl_CreateAliasObjTcl_SignalMsgTcl_GetBooleanFromObjTcl_GetVarTcl_TraceVar2Tcl_AsyncDeleteTclCompileSetCmdTclCompileExprTcl_DStringInitTcl_HashStatstclFreeObjListTclExpandCodeArrayTcl_CreateTimerHandlerTcl_LreplaceObjCmdTclGetIntForIndexTclTestChannelEventCmdTcl_ExecCmdTclCreateExecEnvTcl_MergeTcl_EofgmtimereadTclGetLonggetpeernameTcl_SeekTclCopyChannelTcl_NextHashEntryTclObjIndexForStringTcl_FcopyObjCmdTclpRenameFileTcl_GetsTclPrecTraceProcTcl_LinsertObjCmdTcl_SetMaxBlockTimeTcl_NewLongObjTclGetElementOfIndexedArrayTcl_AppendToObjatoiTcl_GetCommandInfoTcl_AppendAllObjTypesgetcwdTcl_AddErrorInfoTcl_TranslateFileNameTclCompileStringTcl_AsyncReadyTcl_CreateCloseHandlerTcl_FreetclIndexTypestrtoulTcl_InputBufferedtanTcl_DeleteHashTableTclpGetClicksTcl_UnsetVar2strtodTcl_DeleteCommandFromTokenrealpathTclInvokeStringCommandstrtolTcl_GetInterpPathTclObjInvokeTclDatepactrecvgetpwuidrmdirTcl_IncrCmdTcl_GetIntFromObjTclGetDateTcl_VarEvalTcl_NewBooleanObjTcl_OpenCommandChanneltimezoneTclPreventAliasLoopTcl_ListObjGetElementsmatherrTcl_RegisterObjTypeTcl_EvalFileTcl_FlushTcl_CreateChannelHandlertoupper_endTcl_GetDoubleFromObjTcl_GetErrnotclDummyLinkVarPtrTcl_UnsetVarTcl_IfCmdtclMemDumpFileNameTcl_GetsObjTcl_ErrorObjCmdTcl_PutEnvTcl_OpenTcpClientTcl_DbIsSharedforkgetpidTcl_ExprObjTclFormatIntTcl_FlushObjCmdTcl_CreateObjCommandreaddirTcl_AppendExportListTclInvokeTclpCloseFile_GLOBAL_OFFSET_TABLE_Tcl_UntraceVarTcl_ReadTcl_StringMatchTclCopyAndCollapsepipeTcl_SetObjResultTcl_DStringEndSublistTcl_VarTraceInfoTcl_CreateExitHandlerTclGetLoadedPackagesTcl_GetChannel__ctypeTcl_DoOneEventTcl_FirstHashEntryTcl_EvalTcl_LinkVarTclGlobalInvokeTcl_MakeTcpClientChannelabortTcl_DeleteInterpgethostbynameTclGetCwdTcl_ForCmdTcl_GetAliasObjtclIntTypeTcl_SetServiceModeTclParseBracestclListTypeTclDatedebugTcl_ListObjAppendElementTcl_GetCommandFromObjTcl_DStringAppendfixstrtodTcl_ImportmkdirTcl_CreateEventSourcegeteuidsignalTcl_SetListObjTcl_DeleteFileHandlerTcl_SetResultacceptTclPrintByteCodeObjtclTypeTableTcl_SetObjLengthexitTcl_GetVar2strerrorTcl_FormatObjCmdTcl_ForgetImportpanicProcTclpRemoveDirectoryTclTestChannelCmdTclParseNestedCmdTcl_InitHashTableTclSetElementOfIndexedArrayTcl_CreateNamespaceTcl_SignalIdTclDateactTcl_DbNewObjTclFindProcTclEmitForwardJumplogTcl_LrangeObjCmdtoloweraccessTcl_LindexObjCmdTcl_ResetResultmallocTcl_NotifyChannelTclUnsetEnvsprintfTcl_InterpDeletedceilTcl_AllowExceptionsTcl_ObjGetVar2Tcl_DStringGetResultsymlinkTcl_WrongNumArgsTclPrintInstructionTcl_ReadObjCmdTcl_EventuallyFreeTclChdirpowTclpCreateDirectorytclEmptyStringRepunameTcl_GetVariableFullNameTclIsProcTcl_SetLongObjTcl_OpenTcpServerTclObjInvokeGlobalopendirTcl_ReleaseTcl_SleepsendbindTcl_SwitchObjCmdlog10TclCompileExprCmdTcl_InterpObjCmdTcl_GetStringFromObjTcl_DStringAppendElementTcl_DumpActiveMemoryTclExprFloatErrorTcl_PosixErrorTcl_ForeachObjCmdsinhTclFindElementTcl_ClockObjCmdTclLookupVarinstructionTableTclpCopyFilesetsockoptcfgetospeedTclObjCommandCompleteTcl_ConvertCountedElementTcl_RecordAndEvalumaskTcl_TellCmdTcl_GetDoubleTcl_DbDecrRefCountfabsTcl_IsSafeTclCompileForeachCmdTcl_PrintDoubleTcl_LoadCmd.multanhTcl_FileObjCmdTcl_UpdateCmdTclDatepgoTcl_SetDoubleObjTcl_AsyncMarktclMatherrPtrTcl_PidObjCmdTcl_JoinPathTclDoGlobTcl_RegExpCompileTclWordEndtimeTcl_SplitObjCmdTcl_UpdateLinkedVar.remTclLoadFileTcl_CreateMathFuncTcl_GetOpenFileTcl_DbNewBooleanObjTcl_GetChannelModeTcl_HideCommandcfsetospeedTcl_PkgProvideTcl_MakeFileChannelTclCompileBreakCmdTcl_GetHostNameTclSetIndexedScalarTcl_GetChannelBufferSizeTcl_CancelIdleCallTcl_CreateFileHandlerTcl_GetAssocDataTcl_AddObjErrorInfoTcl_RegisterChannelTcl_GetSlaveTcl_RegexpCmdTclFixupForwardJumpsscanfTclGetDefaultStdChannelTclDatetmpTcl_TimeObjCmdTcl_SourceObjCmdtclExecutableNameTcl_AllocTcl_GetChannelOptionTclFileMakeDirsCmdstrftimeTcl_ConvertToTypeTcl_AfterObjCmdTcl_GetCurrentNamespacetclNsNameTypesqrtTcl_GetIndexFromObjhypotTclInExitTcl_SetErrnogetpwnamTcl_DeleteNamespaceTcl_ExprBooleanObjTcl_QueueEventTcl_GetsObjCmdTcl_BinaryObjCmdgetenvTclCompileQuotesgetservbynameTcl_GetChannelTypedup2Tcl_InitMemoryTclDate_TclDatesTclDate_TclDatevTclSetupEnvTcl_RegExpMatchTclDatepstcsetattrTclDatepvTclFinalizeCompExecEnvTcl_TellTcl_SetTimerselectTcl_TraceCmdwaitpidTcl_AppendObjCmdTcl_ScanCountedElementTcl_CreateCommandgethostbyaddrTcl_DeleteCloseHandlerTclCreateAuxDataTclGetAndDetachPidsTclCompileForCmdTclExpandParseValue_DYNAMICTcl_SetErrorCodeTclDater1TclDater2Tcl_ScanElementrenameTcl_DStringSetLengthTcl_CreateTracefloorTcl_ArrayObjCmdTcl_LsearchObjCmdTcl_ExprBooleanTcl_ServiceAllTclpOpenFileTclpCreateProcesstzsetTclSetEnvTcl_ReapDetachedProcsstrncmpTcl_ExitObjCmdTclDeleteVarsTcl_CreateChannelgetsockoptTclFileRenameCmdchdirTcl_CatchObjCmdTclDateparseTcl_DeleteHashEntry__iobTcl_ExprDoubleObjTclInterpInitchownTclCompileCatchCmdTclCompileWhileCmdTcl_DeleteExitHandlerTclInitNamespacesTcl_FblockedObjCmdTcl_ContinueCmdTclFreeJumpFixupArraymkfifotclTraceCompileTclCompileIncrCmdTcl_VwaitCmdTclGetOpenModeTclpDeleteFileTcl_UntraceVar2Tcl_DeleteEventSourceTcl_PopCallFrametclByteCodeTypeTcl_DetachPidsTclDeleteExecEnvTclDatesTcl_SetStringObjTclGetIndexedScalarTcl_RenameObjCmdTclDatevTclIncrElementOfIndexedArrayinet_addrgetgrnamfmodwriteTcl_SetChannelBufferSizereallocstrrchrstrpbrkTclDatelvalTclGetExtensionatan2TclResetShadowedCmdRefsTcl_PwdCmdtclpFileAttrStringsTclGetExceptionRangeForPcTcl_GlobalEvalTcl_InitTcl_JoinObjCmdTcl_AsyncInvokeTclGetRegErrorTclDatecharTclGetOriginalCommandTcl_SetChannelOptionTcl_BadChannelOptionTcl_OpenCmdTclFinalizeExecEnvtclTraceExecfdopenTcl_GetMasterTcl_NewIntObj_exitTcl_FileEventCmdTclCompileDollarVarTclFinalizeEnvironmentTclCompileIfCmdTcl_WhileCmdTcl_GetStringResultTclCreatePipelineTcl_FindNamespaceTcl_GetCommandFullNameTcl_NewDoubleObjTcl_StaticPackageTcl_ParseVarTcl_GetObjResultexpTcl_LsortObjCmdTcl_GetBooleanTclpCreateTempFileTcl_SetObjErrorCodeTcl_SeekCmdTcl_Concattcl_MathInProgressenvironTclGetUserHomeTclServiceIdleTcl_RegExpRangeTclFreePackageInfoTcl_GetLongFromObjTclpCreatePipeerrnoTcl_SetRecursionLimitTclpGetTimeTcl_ConcatObjCmdTcl_UpvarObjCmdTcl_DontCallWhenDeletedunlinkTcl_OpenFileChannelTcl_ExposeCommandTcl_SplitPathTclFreeObjgetgrgidstrchrTcl_RegsubCmdTclpCopyDirectoryTcl_LlengthObjCmdTcl_VarTraceInfo2TclInitByteCodeObjlstatinet_ntoaTcl_ErrnoIdutimetclBooleanTypeTcl_ProcObjCmdTcl_ExprStringTcl_PkgRequirefreeTcl_TraceVarTclRegCompTclpCreateCommandChannelTclSockGetPortgetsocknameTclExpandJumpFixupArrayTcl_CreateAliasTcl_DeleteTimerHandlerTcl_BreakCmdcloseTcl_SetVartclCmdNameTypeTcl_AsyncCreateTcl_InvalidateStringRepTcl_CommandCompleteTcl_RegExpExecTclFileCopyCmdTclInitJumpFixupArrayTclIncrVar2Tcl_MainTcl_FindCommandTcl_GlobalEvalObjTcl_BackslashTcl_ServiceEventTclpMakeFilecfsetispeedtclpFileAttrProcsTcl_DbNewStringObjclosedirasinTcl_AppendElementTcl_WriteTcl_DeleteCommandTclExecuteByteCodeTcl_SourceRCFileopenTcl_FreeResultTclCleanupCommandTcl_ListObjLengthTclDatevalTcl_ErrnoMsgTcl_ScanCmdTcl_AppendStringsToObjTcl_RecordAndEvalObjtclDoubleTypestrcmpTclGetFrametcgetattrTcl_PutsObjCmdTcl_EvalObjTclInitCompileEnvTcl_CreateSlaveacosTcl_FindNamespaceVarTclPrintSourceTclGuessPackageNameTcl_DbCkfreeTclUnixWaitForFileTclGetNamespaceForQualNameTcl_FindExecutableTclCleanupChildrenTcl_GlobCmdTclAllocateFreeObjectsTcl_ExprObjCmdgettimeofdaydlsymTclpGetSecondsTclMatchFiles_edata_PROCEDURE_LINKAGE_TABLE_Tcl_EofObjCmdmemsetTclDatenerrsdlopenTcl_SetStdChannelTclDatechkTcl_GetPathTypefcntltmpnamTcl_ReallocTclDateexcaTclCleanupByteCodeTcl_CallWhenDeletedexecvpTcl_GetChannelNamestrcpyTcl_ListObjCmdTcl_ConcatObjTcl_MakeSafeTcl_NewObjTcl_DoWhenIdle_etextTcl_DbNewDoubleObjTcl_SocketCmdTcl_DStringStartSublistfflushTclNeedSpaceTcl_DStringResultTcl_DbIncrRefCountmknodTcl_InfoObjCmdmemcmpTclGetEnvTcl_ListObjAppendListTcl_SetPanicProcatanTclCompileContinueCmdTclRegExecTcl_CreateInterpTcl_DeleteAssocDataTcl_EvalObjCmdendpwentTclHideUnsafeCommandsTcl_ValidateAllMemoryTcl_ConvertElementTcl_NewListObjTcl_DbNewLongObjTcl_CdObjCmdTclFreeCompileEnvreadlinkTcl_FconfigureCmdTcl_ListObjIndexTcl_SetVar2Tcl_PreserveTcl_DbCkreallocTcl_DuplicateObjTcl_NamespaceObjCmd.divTcl_ExportchmodTcl_CloseTcl_StringObjCmdmemcpybuiltinFuncTableTcl_ExitstrlenTcl_VariableObjCmdTcl_GetChannelInstanceDataTcl_InputBlockedTcl_SetCommandInfostrcspnTcl_DbNewListObjTcl_ReturnObjCmdTcl_UplevelObjCmdTcl_GlobalObjCmdTcl_SubstCmdTcl_DeleteChannelHandlerTcl_ExprLongTcl_WaitForEventTcl_GetGlobalNamespacestrstrlocaltimeTcl_DeleteEventsTcl_GetServiceModeTcl_GetIntstatTcl_UnregisterChannelTclParseQuotestclPlatformTcl_UpVar2Tcl_GetCommandNamelseekTclUpdateReturnInfodlerrorTcl_DbCkallocTcl_BackgroundErrorTclFileDeleteCmdTcl_WaitPidTcl_CloseObjCmdTcl_ListObjReplaceTcl_UnlinkVarTcl_GetStdChannelTclLooksLikeIntTclSockMinimumBuffersTcl_GetObjTypesintclStringTypeTclInvokeObjectCommandTclFileAttrsCmdTcl_FinalizeTclPlatformInitTcl_DStringFreelistenTcl_DeleteTraceTclDeleteCompiledLocalVarsTclObjInterpProcfprintfTcl_LappendObjCmdTclDatedefTcl_PackageCmdTcl_AppendResultcoshTcl_SetIntObjTcl_ExprLongObjTcl_PushCallFrameTcl_UnsetObjCmdTcl_UngetsTcl_NewStringObjTcl_SplitListTcl_CaseObjCmdTcl_SetBooleanObjisattyTcl_SetAssocDatacosTclRenameCommandTclpGetTimeZoneTcl_SetCmdTclDatestateendgrentconnectTcl_GetChannelHandleTcl_ExprDoublelibdl.so.1libsocket.so.1libnsl.so.1libm.so.1libc.so.1,Zxy'tڰ݀(<ڜڈPdxی ۠۴$,48@,H@PTXh`|hܐpܤxܸ0DXlݔlݨݼ`   4H$\,p4ބ@ޘHެPT\xPߜ$8L`t߈߰(<|YڐkڤEڴڼ!{ސ [0yD_Xul0pۀ=ېۤ۬`ۼvb U4H\p܄AܘGܬܼ.l$o4L\+p݈ݜݬt$W<Pdވޠ8޴f7i  ,@DP.d|ߐ!ߠ߸N0,@1X1t@|8hkx(,,404<$H $P \|thPX(4`dhlptx@T|(\0XT8PLLHH@Dp""""""""## $""$" $$"tJ`lEDpFxHpp+\+H+4+ + ++++++++l+|X+x0+l+d+`+\+X, +T+P+L+D|+<h+4T+,@+(,+h,@,0 )L4)TH)\\)dp)h)l)t))))))$)8),+L)`)*t)***$*0*<*L*X*d(*t<*P*d*x**+***,$*D+t`48`8X@8dL8hX8ld8pp8t|8x8|8888888888 88$808<8H8T8`8l8x88888889999 999$ 9,,90894D9<P9D\9Lt9P9T9X9\9`9d9h9l9p9t9x9|999(949@9L9X9d9p9|9998D7H7X8<7888@848,7 8(8H8 t88Lh88P\8 P8 7( 76666(8\66677 D7$7@77T7`747l7t07H7<7P87x7`7l77777778T|LM(Dph @@lxtH$pHLl|8$<<<<<p<L<(<<<<<t<P<,<<|>>>X>>? ?H?t??? ?? H$T(,0?4?8?<?@?D@H@$L@(P@\T@X@\@`@dAhA(lA\pAtAxA|AAB(BPBXBdBBBBBBBC<CpCCCCCCDD $D,D4D<"`~(  ČĐDlDD D$D(D,D0D4D8E<E@E0DE4HEPLEdPE|TEXFh\P`XdFhFlFpG Ĩ tx|G0\`dhGlGlptx|HHHHH HHI $(,048<I@IDIHJLPT X\`dh,lJpJ tJ$xJL|JTJ`J|JJJJJ $(08<JKK@dKDKp8DhKKKK L LLLtL M$M(M ,M40MT48N<@DNHN,LPN@TNXXN\\N``NtdNhNlNpNtNxN|OO$O0O8O@OPO\OlOOOOPPP$P8PLPXP\PhPtPPPPPQQTQdQpQxQQQQ QRR(R4 R8$RD(RP,R\0Rd4Rh8R<R@RDRHRLRPRTRXS\S `S(dS8hSDlSTpS`tSlxS|SSSSSST TT T(T4TdTTTTVVVVVWWWHWXW\WhWtWWWWX(X8XP XXXX X$X(Y,Y0Y4Y$8<Y@YDYHYLYPZTZ XZ0\Zd`d[h[0l[@p[Pt[`x[|[[[[\\(\X\h\\\\\\'\$|&.,-h $(,048\]]$](]0]8]@ ]l08@] ]$](],^0^D4^t8^<^@_D_,H_\L_|PHT|X_\`d_h`lptx|(04<@HLT`Xdpx`@`\```` a a($aT(,048<@DadHaLaPaTaX \`adbhb(lb8pbDtbPxbl|$b,c<@cccccHcPcXchldd d$xd(d0dHd`dhdxddd de e($e<(,e\0ex4e8e<e@eDeHLfPf4TfHXfT\`f`df|hflfpftfxf|ffgggg,8;{@w<8g0gPg`g|gggggggggh hh$h0hLh\h`hxh hhhh h$i(i,i 048 <i<@iLDipHiLiPiTiXi\i`jd$h4lj pj0tjPxjl|jjjjjjk k$kDk\ktkkkk8kk@l$HlLltPlxlllm m0mhm<mmm nn n(t $n0(n\,nt0nx4n8X<`@hDpHxLPTX\n`ndnholo4poPtohxol|opooooooop0pTptppppppq q<qpq\qqr r<rdrhrprrrrr rs s8 s<$sP(s\,sh0st4s|8s<s@sDHHLsPTXd\|`tdthtltpttu(xuD|uXudupu|uuuuv vv<v@vTvxvvvvvw4wHwLw`wdwxwx xx(xHx\ x`xlxtxx x|$x(x,x04x84<x@y D<Hy,Ly@PyTTDXyt\y|`ydyhylypytyxy|xz 0T:zzDzpzz{{8+Ĝ,{<{P{x8`a{|{{ {{{{{ {${({,|0`4d8}<}<@}LD}hH}L}P}T~X~0\~P`~pd~h~l~ptx|h4l8Xlpt|4<Xt$@T p $,(p,l048<@DH4LTPlT|X\`dhlptx8|Tx0Dhx DTpHh <Th $(,048 < @4DHHdLPTX\`dh(l@pPtdx|$DP`x$@P`p(< l 0@\t $(,$0(448P<\@xDHLPTX\`dhlptxL|`Tdhl Lt(T(,04$4`l  p$t(x,|048,<X@LDxHLLDPNTX\`dhl(p<tHxT|,048@DX\`dhlpH (08Tlptx|  $(,$0,448<<T@pDtHLPLTX\`@dLh`llptx|48PT\`dhP|X`ht HX\  $(,048<@DHLP$TX0\@`dhLl\phtpxx|€„ˆŒ”˜œ ¤¨ ¬<°@´D¸¼hRd  ,0H Llx $(,048<<@@Dd8HdLPTXD\l`pdh lp(tx|À,ÄkÈl0ÌÐÔ0Ø`Üàäè0ì0ð ô4hø8üpl|@HŜŨPŴ x}t J,8DP2\Nhtƀƌ%ƘkƤưƼ};TA(4@LXdp|Lj'ǔǠ+ǬXǸ/uiE "$c0<BHMT`l(xȄȐ#ȜȨrȴ])h#( <,8,DP\ghtɀɌ<ɘjɤɰɼ8pQc(4@UL3Xddp5|ʈ6ʔʠʬʸKH w$0<H=T`dlyx5˄ː˜f˨˴hmJ ,$8DP\9ht̀̌"̘̤̰̼/nVOj(4@LXdFp-|m͈p͔ͬ͠R͸ ,$0<HGTL`lx΄'ΐΜΨ7δ^|VrKl 3,8DP\hntπ%όϘϤSϰϼlD#(4@LCX dp|Ј>ДРЬи\W 4$0a<uHT]`lIxфѐGќѨѴ)\?.s ,;8DRPO\htҀFҌ-ҘҤoҰҼTE4x{$94(g4_@LXdep|ӈNӔ{Ӡ:ӬHӸx Z$*0(<H,T`lxvԄԐԜԨԴq&U ,8DP \oht"ՀՌ՘դհsռp[(4@BLCX|dpf|cֈQָ֔֠֬>6> & $Q0<H T`wl*x_ׄא8לר\״  ,I8DVPg\Yht؀ ،ؘؤTذؼar``(4@@LzXIdFp?|و}ٔJ٠[٬ٸDz-X~ 1$q0W<:HT2@ᔆP@ `㿈@aT@bPd` \#\#`#d "#\ #`#d#h@`@ @@㿈@`x @` @ ' ``' '@R' @h  #@`@ @``@ ' ' @.' @D 2.ࠁ .ࡐ&@&J 0Nఀ N. Nఀ 2Nࡐ * : .쀊   O   @@@2O &&ਁ㿘@bp @ &` `@   @& @y` "@ 2` ?&`` @&`J |   @W&"R @ 2` ?&`` @&`J |" 2 (@k@ɒ` @@   &J ) `@ J J )` @  `$@ 㿘 @.& `L 3 `J |/`J ))@3"*  @ &  @& `@j`J `J | `J )ݐ @㿘@#b@@2` J `* `+" `?&   `?  `(@  `+`*  &   `* @_``* @ @@6@3 @@ @@B``+   `+ @Ȕ6``+ @@ @@ @{@ڐ @u@Ԑ``?2` @ @f@Ő @`@@` &``J *`J + `J ?`,@ 㿘@& `8@``&`J` . ) ƀ $( ("` ) * +"` \ . ? ["`` \ ^ |"` @ @ @  & J ^  @` &`` @`J ]"``J -2 `` &`@J `J L `J ]G `J -22`` &``J ]& -`J ! -` ? ` `@ @ 4 `/`: @Ȓ`@/`` &```0@j @` &`@L `J  `J ]2` @`L ]`4@J ` &`  n&  2  @a& `8@0 `<@* `J `@@   @N` &`@eJ  @b  :& $ &```D@`H@ ` J$  * +"'  ?2 '    &   &  @  ` &`@-L '  4` @&@P``(`` `"` 8`* *  * "`@؆`@`" ` ``"`* 8(``"` @h`@2 `"  `"  `H (`* 8`*`*`*`㿠@`` @O"N@IN &@&:  `*` * :`.: . @`@ J ` 㿐@ ]`[ ``P@   "' J @   @    @J`2 2' N @2N @( 2# N @N " @ 2 `@N  `L@  㿠&& P&  ""`" ` 4" @A  & &Px<Xt<|hh㿠@a@ @P@?O  1 *  ``@ɀ` `J €` `J "° ` &`` J O @2 @8 $ `@9` "` &``J " `J @%  " ` &``J " `J @  2 ` }&`O` "`w   2y @&`"s J "` O`  O`O   @e`&[ `J 2 ' d 2M ' &`  O $O O (6O O " J` "3 `.@`2- `"@  (O <O " (0` " ` .@`2 ` "@ `T@ `#`X@ 㿠@`N      L`\ 0 " O D@dC&`N @2?&` O N @7&`O "3&`@SO "-&` O &@GO 2&`O "&`@;O 2&` O @/O "&``\@@ &`@``@2J  J `(`@2J  "@Ԇ@ `@㔆@`㿠@#cT@@̐ " " " `p"  2"  l "  l" @Ć " h@d @ `㿠@bX@`d `'"  h  " " `p  `` ``2`` "`` ` h"  @|`p`2`  ````l `@Q@" @2  `l`" `@<@ଆd@`㿘@#`l@@$@!!" @ " &     "  @& & H#& L& P & T?& X& \& `& d& h& l& p"t"`"`&"t`x  @& & & & & & & &!&!&! @&!&!!    " .!@& &   @`@&!`t J"4 " 2   2   2 @Ő`4  \   %@ 4"  " " "  "  " " "`"`  2"`"`"`$"`"`"`$"`("`,"`0$`  2@@@``@ ``@ `  q !",@ 7O ````@ aa @㿠@a @ `t` ` 2``@e``` 2` @#`@@ `! |@L  `$ ! 2 ! @ 4&!  @! !  0|! &&" 㿐! @0 ` `@ @#@"2 㿘! 2 ! @ѐ 4&!  @! !  0!   " @ " " & 㿠! !  ,!   @@㿠! 2!   ,! 2  "``&`㿐@ Hb @$!`@@! `@@@  @  @p@2 @! %! @&!  @ @P@}2 @@F! 2! @ @&   $`$ `4& @y &  ` " d@- `& ` d " h@& d& d h  @ h& ht  @t@&``&t@U! " !! @!&!! 2!! "!@E!! "``" @7!@&!!`  @P! !"!x@@㿐@%  , "&,@&$ " ($@  &  @@@Ր2 @ܐ@㿘@!b,@  `@ܐ @ڐ`  @   @Җ"2  @@`  @  `@ @G 4@\ `!|@`0 2@`  @   " &@a&  & &&`    &  㿘@!8` ` ` @]  (@[@Z  @[ 2  ,@M8T@K  €2  @?Xt@=    @"  @1x@1  ``\ 2  @ ഖȔ@   "' @ ' ' &`     &  㿀@!b@  `@ #\#` @(2D  "@  2  ''``\쀢 ` @ג`\`쀢 @a@P 4&` " &  & & "4& & & & & & $& (& ,@& 0㿀@!`Ԣ@  `@ #\#` @(2L  "H  2  ''``\쀢  "4 @& & & $& (@a`\`쀢 @ @ڐ 4& " "  " " b" " "  " " " $" (" ," 0P @*   @3 '` `&.'  @P@bl@ @* 7  @b(` 2`@``` &`b\&  & & &  & &   @c`&  @ *&   & &` @&.&  @  @ @@ @  ` "`" ``@~ &`@/㿀@`p@ @|  N ``@d В` #\@Z  c N _#\#` @T*"@`=\€ "`@2`  @,  `\`" '`'`@/@:@`'`'`@`  '` ` "  & @`  @  @ 㿠@b@ @ 2  " " `b4 " " " " " $" ( 㿠@ah@ @ 2  4 @  " & & & &  & $& (& & `@ฆ````(`2````@㿠@`8`'@` "`` @? `@" ``@~ ` `  ( ` ` @m?㿠 @D ?@I㿠`, "`@ `&`    &  &`,`$ "` `(`$@`  &` `0 " `  @$2 ` @`@&`   `"  `@㿠@b@@@Ib( 2 @  ` & b\& &&&  && @f`&@*& &@@  @ @@ǒ @̔ "   &@@͐ 㾠@`Զ@@  H & H L H@$! H" & H@`?@   @@t`?@ `  @  H" & H b` 2` ` @2   "`  @`  & €"`H" &H`&` ` '`@``" '`` 4 @Y@L 耦@2 H@Q "H@NH" &HH 5   @D , *  ' @'  @a?@   @a?@    a@ @ܐ@?  23& 2/&a @Ȁ6'Ȑ'Ȁ $ 'a  a @ a @Ȓ@?& ?&㿘@`ܸ@@1R @Ӑ  &`@Β*bD  2  &b 2  B& ! @ `" "` 4`@K`@Y  @S @O@e @j `"  &`@0&㿘@cL@@͐T @p  &`@k,bD  2  &&b 2  && !  @" `" "` 4`@`@  @ @@ @ `"   &`@ːa &&㿘@a@@cZ @  &`@0 bD` 2` `@ &"!`` D # & &@ݔ`"  "`@w "`@  @~ @z@ @ `"  &`@[&㿘@`@@'bD` 2` `&"``B&@ `"  "`@ 㿘@c @@k)bD` 2` `&&"``&&@T `"  "`@㿘@b,@@.1bD` 2` `@ &"!`` D # & & @  `"  "`@P` @C* ` @>@'` `` `" &.`'@@  @ @@ @ `  "`" `@Z&@ 㿠 T@& T' T㿠 T@& T' T@cx@   `ՀӒ @G a(@/  ,€2\ @H@0a,  @   @  2 A- a4 @ 2  `@. a8?@.'` `` ` "  "` `&  @@ΐ@a<  @  @` $`   Pa M`@ ,a  ,aD?@ `aH?@ `( &`@(,@( ,aL?@ 0 d & ,,@ܒ daP,?@ ,aT?@ ?@,@͐,a ?$a`@ @^a$?@  8@c@@ b( 2@Z` &b\& &&&  && @Đ`&@C*& &@c<bD    aX@ @)  b     @a @  ` @ @  `" "` 4@@ܐ  @֐ @Ґ@ @ "   &@a\@ޔ  @aL@  2   2`  @" `@$  @d@@d@ 2rЀ 2Q`d   @*  @&D`& В Ԁ@ @ِd * В 'В`* А ''Ԓ Ԁ@ @Őd * В 'Г6` `* В 'Г6` `* В 'Г6` `* В 'В`* А 'Ѐ@2@d* dА '@  @@d+    "`" ` @&    @  &@ld@' `"    d' '@  ' '& @ѐ  &  ' @ " '   `@`2 '`  `"  @ `" "` 4& @ &  "  &@@`"  "`@}㿠  & ! &!@ " " " !" &!㿠!2!` &!@! "! @ 2 !` " @ ! ! ?&!?@㿠@c@ah?@  ' ! '! &! J    @  !al @ !  ap !t@ " @X  &` @ `" &` 4 @ "  ' @'H,'L'P'T@J'X` L,@F?```@f,@B,㿠 T@[& T&T㿠 T@& T&T L`4 `L `" `````````````````````````````````````````  h h P  h h h h h d |t$ l|t`@ba@@  #d @  ! !@w@ "   "߀  d  @`  @' 'J   @Ԕ쀢 O" @@?   8*  @a쀢?@@?2 'O a` A b B  2  : n :  ` : ea      @)쀢?` '@@ 2r 쀢'쀢@4d@6B <쀢? ?2 '(d3 l쀢?2 '쀢?2'4'&4'쀦??"dJ \@NO/@/d@  4'  @@@  @ @`''J d   #h` @쀢 쀣  O @"O O@?`@ "@ 䀢`8Ɠ*`@@ a * @@ݒ쀢?>  ?'2 '􀢀  @ @$@9 '@@쀢? ?'2 ' :` @ ܓ:`   'O B'쀢 F  L@ +` 1 `:L@ 0ԑ: *    `ܑ*  : *`ܐ '쀣%;  !  L@ 1;``:L@ 0: *    `ܑ*  : *`ܐ '쀣;  * # "O B  +@ ;@ ܑ* : *`ܐ '܀ : * ܐ '܀ *@@ 쀢? ?'2 ' 2`@ ܓ:`  4'O Hh)쀢 ^ *`@{ @" a "`0"`W  A 5`@* @ `*`ܑ: *` ܐ '쀥@*`;5` 7 :`@T @" a "`0"`W*   *  5`@* @ ` `ܑ* : *`ܒ  '쀥@ޱ:`5`@@d0#\@ 5`@* @"O H:`*`ܑ* : *`ܐ '܀:h* ܐ '܀*^? '' 'Ԗؐ@@쀤?2'   $E O@ 2J  &2?  '@'$܀?2 '쀢"'ܐ"@4'ܐ"@ '܀? ''J    d Ȑ @ @#` @  ' 'J  a @@쀢 O@?`@ "@!Ȁ`8Ǔ*`@@~쀢??"' `2 '"@`쀢A  J ""`J "`` @ @ @#&`y " $ 4 @ :쀢??"* ' `2 '"* @x`@&@@ O b쀢 5 : * "M >    1 0* : *`쀢`@  : * "M .    1 0* : *`쀢`@ @&`  :  ` : `" $` 4# @  쀢??"* ' `2 '"* @`@@@ O h쀢 * 2* > M   J*`쀢`@  2* . M  >  J*`쀢`@ @E&`  2  : `" $` 4 @       O쀢??"`@ ,@$@)'@$@1`  @O @`@@@ @&`2>`" $` 4_ @E d9!d쀢?2 '쀢"&"@4! 쀢?2 '쀢?" 4 &쀢@ J 8d!<@F@@;? @=O/@ /dҒ @  @.@@& 㿠@ bH@J 2    &  J "  J 2  J .`  &  J *2   & ?&b@J  `  @f &?& G8㿐@.`>`a(`d@`f@G `c  `s & `*`:`* `S & `*`:`*  &:` `*`:`* `i &:` `*`:`*  & `*`:`* &`I & `*`:`*  &:` `*`:`*  &:` `*`:`*  &:` `*`:`d* b &:` `*`:`*  &:` `*`:`*  &:` `*`:`*  & `*`:`>* @h `d  " "  ,&@a     " @   " "  & 㿘.`8fcI>S"$N  cd"K  f?is" N  N `4 a@eN (`@(`> @\N (`@(`> @SN (N N N `((`@DN (N N N `((`@5 ";``d@1`@.㿠@#`T@@ a@!㿠@#c@@b@ a@㿠@#c@@a@㿠@#c0@@ܒb@ a@@㿠@  㿈@#b4@a@'  T @c a h @[ "    "&ΰ  [ "ǰ  @<  @h@P > p@ & ( `  @  2   " `@` @` ` `&4`@ p @ & Y  %   Ԛ@ 2`   "    @     &4 . @ " @' ? @@8@쀢   ܖ!@  @   @  @  @@ @#'Hb4@@ @H@HN  J` %` ( J` 2J`@',,@*@, N a@! !@@ ?@{,@, 㿠@a @  a! !@d (@` @aĐ @ @@a@E ? " & *`'  2 @  o b@  " Z@i@J J`  2 J`J` \"J``J` 2J`J` N d aА@ "@ '7@M   @    &@&@&@a̔?@ ,`@?@ @aԖ`@@? 㿠@a@   aؐ @B @@ @*$  @ѐ@aܔ?@ @Ɛ@@p @` @a @ @a(@Q @M@̐(㿠&@D@D 㿠@c̖@  a! !@ 㿘@ch& @/@HJ @ka &aa?@c  @ a &a $  & @@ a @ `@b\ @a @t @&@ƒ@$  &@Đ  a@`Đ@ ?㿘@a|@ b @9  '@P  @ 㿘@`@b  @ @@e $``$ @d@@   "  @ @z@`@@2 @7 $`$ `4 @5 "  ' @.08(l Th \ @b @   @{ !` "@t "   ` @b @Đ `$ @U @$(@Ȑ@? $   * & @ $`4@ @ 2 N ~2 @F(@w ö @(@   (" @~(@P,  @v ?@B  `D`H@4 @ $<`L@u@L 2N ~2@(@)u @7(@   @1  , ?@@?@X $`X@:@@G@$$@ݒ> $`h@ @2@@ɒ* $Ӗ`x@ @   ``@?`@? @? $`@@  @ʒ     ?@@\ `& @^ @& @G.`    @$$?`  @& (@(@a,@<@(@'.   @$' ` @&@{@@ .   @$' ` @&@c@@.   @f$' ` @&@K@m@֑.   @K$' ` @&@3@ΐR$@8(@F @?B$@((@ 0" ) " Җ`" Ζ`̀ "  ɖ`܀  Ė`쀢  @ @Ɛ @ ?" @ @?bD@  `ē*@@ `@Ґ ?$@W " a " a a$ @)϶ @ ?$@@a8aL@  @ @ \aP@ ?c$@ "q Ma\ Hah @$?$@z@|axa@[  *@~ 'a@_ ?.$@o a @f @K ?$@G @bX  aĐ @N @7 ?$@/@1aa@ : @@є?2@ ?@ (   "<@  < @       @ 2 @@4(㿀@#a@b@b"@  b@b"@s  b @rb$"@a  b(@`b,"@O  b0@Nb4"@=  b8@< b<"@+  b@@*0bD"@ 28 bH@bL"@ 2@ bP@bT"@ 2H bX@b\"@  @b`"@ " @d< d@h@l@p@(t@0x@|@@`@a\@b "@y @)> @Đ> *@" "  b @]`@ @  " b@ "  @b@㾐@Ԑ####\#p#h #tc#6* ] @ґ.#  `"`&`&2  : `#l.`@#@#\@#p@#h@#t `$#x\phtl#`# "`""`` &#`#xl >  `\p@z\ #ht@m`h\@u@@@ x `#xl`&`@Ðb @ @?l*  x?##|b @#d"H@#`l  \pth `@"\p@"@@d `@"\ht@"\d L@,\ C   $  `* @ @   @٘$ `` &#  "  %@2@o@@p.`  -  @O d@3 9l l`@` `&@I"|   |   b(@ @ (@G? x #|@&Y 2l@%l  @@\@h@p@t "@"   @_@#t!@ #h#d #l"t  @@ @ @_ #`"@t#\  a"#p' 'L % L %  $L %*$' CL % %' 9/L  @ J $l#d ` v6udLd #lL -"LL #"LL 0" LL "LL +2LL- L  -"LL #"LL 0"LL "LL +"LL   @ʔ 'L *2-, @ B p@`'&' "L@0M "L M 2 L .2L .-  L   @ 'L *2, @  `"L@M "L M 2 L l2L L h2L h- #\ L- - L f c G  ENP GI X"+, P c7 d# e"?, P s i f5 g"4, P i o", P s u x", P d- , @  ( "', @~, @   ', x@ !@'  !@'  '`@d5h@ @"@ِ@ǐ #h x@| \ @W @@?@0`*e#\E"t @ +bt@ @LP@ d  "t @ "t @  "t @ @"`@v` "`" `4 @ @`@ @b㿘@a<@4 bȠ @"@@Ɛc  @i  G > 6N  J e.  @R  &,?b@! "@<@ . b@6@  bܐ @(@ * @ ,@,?b@! "@ @ x@cH@b! "@ "@N @J b@7  '@7 b@$  '@!ؐ"@ @  ,Hd (D`|$㿘@a@ b @E b! "@<" @?  *  @@̖@x@q@j@c@D\@sU@N@ƖG@"@@E9@_2@і+@$@@H@Z@n@ 㿠@b @b @  @@0 @c !#@ @  " @ ?@v2 @ 㿠@a @c @C  @@2 @c  !#@ @ 㿠 @  @@l` x@#`@@@ ' !' @#\ "@w#`"   @/@G` @W  "b \@)䶐* ``@ ` @ @t@t?@ɔ@䶐20`- \@䒐' ```"@  \   @B?@@֐䒐2 @ؒ c @p 㿠@~a @c @\  @@ @ɐ@ @Ð@  㿠@~a\ @c @4  @ @ @ؒ2 @c  !#$@ `K` "D``@X 2>``   @` @u@N  @  @"  &@L @s@Xc( !#,@R @K@$  `2` @Bc0!#4#\!#8@8 㿐@}c, @c< @  @4#`c@#\ $ @W   @@ @@ڒ  㿐@#}bT@@-  4 @ @  @"`    ``@  @ ?@a@2` @ cD @9 㿠 @/  @@@j? 㿘@}`Ѐ@`T @@d  @`T@]  >@" " `4 `T`T `T @'`T  22@X @lcH !#L@M @E @* cP @ 㿠@|cD@ @  cT @T @@? @cX?@ 㿠@|b@ c\ @   @@;㿐@|b@  `Tb @`T 2`T   @ `T  $`T  (  2`` @ " `@?@R` @& ,@& ` ` ( `@f  @В?@&@d2 @f c` @ 㿠@|`4 @ @  bl @Z?@#  㿠@{c@ @̖  cd"@p @9@?  㿐@#{c(@@e  4 @4 @  \@" ``@Y` @֒  @@?@@Ԑ2 @֒ ch @n 㿠 @d  ` @Ր?@` 㿠@{a @ @G  @cl?@ 㿠@{a4@ @,  cp"@ @@b?  x@#{`@@@ ' '" @#\ "@y#`"  "@1@G`   @T `T W`T  "S`2P`T  $ `T (` 2 ``@  "  @v?@̒ ` &`@`   ( ```@  @L?@@䒐2` v @ђ䒐"5`   "  & ````@ ` @@$@?@g@䒐2` 9`6 @䔐0 ` " ` ! `"@u     @ג?@-@k䔐2 @m ct @ 㿐@z`P@cx  '1@}@  $&  @i  @L@K @D@h & c| @ 㿐@yc @ c @ @"$ @c"`@bH @ @", @@  㿘@yb @c @^@ #@$" - @@  @-   "`b\@ $ $@>`$@,$   @/   &  @  @` 㿠@q&@ʔ 㿘@y`@ c @ @@N@' 㿐@xc@ c @ @"$ @}" '$ @o " &"`'@ bH @ @"@$ , @@H 㿐@xb @c @_ `  @1 @(F$ @?`$ @ 6` &' &@ @c @   "`'􀢀"  &@ @ߚ  ``"   $`@f@[ 㿈@x`$ @'c! #@ .  .c @ @@S? 3  @H    "`` @ `?@ @{` ` ն@@ے 08t|㾨@#wb8@@ c @h  ''?'&'  `\'c &#@M 2 @?  6*  1'@ ' (` @ʔ?  ' ''@?@ 2n   ` D@? ' '` @&  .@͐ @ @ɔ? @? :'  @~*    $   "" `& , @ $? @g@8 @В2@~Ԑ 2@ ( " ` `&" #  "   @#& 2 . "    @  & 㿠 `2 @,` `  `  @` $' ' `  `2 "' ' X@v'a4 @ ܀?`@  & ܀?" ܒ@  &  2"'@  & ܀?" ܒ@  &  2!'c@~2@~Z @~nc#\!#!#@~K &  @~V@~R@ ' @~F@~B@'~  ̒@~ Ȓ@~ ̀@  'f$d?'` &  "@~L @~F   'D=@?'< & А@} @D@}@>@~Q&@~)䀤 c@~ @}@~a "@}@}cĔ?@} & 2 '㿠@u`b@@  N`  ">N N  "8N N` 0 `N` 0"`N 0 N 0`"  `2`N N``" N`    N  `?N  2E `"N` N` "2N N  "N`N`  "N`@}N N`2* 2N ?N  " N  " N`@} N 2 2N  N  `N``" 㿠@tb@c! #@} @~g @}  㽸@tb@  A &:cJ -3 @} 2   c@} 2  &  J -" c@}   &c ! #@}t `c!#Ԛ !#@}b "D @|,,?@| ,N b@ L`  " `L`@} * < ,``L` 2L`@|ǐXX?@| XL b@ L`  " `L`@| * < ,``L` 2L` @} `@}``@|X@|,``  c?Ԑ@|J  &`S TP@}T ?ؖ @{0 ? @{* P$"$ c@{ @{  "@P "? @{ N .@{. -``@  ? @|   @{  @sa@#`=#\J -4& `@|   #` `@|{   #\ & J -"  `@|i   &`  !  @|W "`c! #@|H  "D @{̐,,?@{ ,N` b@ N  " N@{ * < .N 2N@{XX?@{ XM` b@ N  " N@{Ր * < .N 2N @{@|2  `M`  \@|& w|@|  &$@{i `J`I & \  2>M$ 0 + \@ xM?@{N--xt@|ex`"Mt "M "@@ "L?@{6,,M \2 &2 -?@{%---M &@"|@{?|  @{  | \\ " NN NN `2   &@z?  @zX ` !  @{T  `L@{L@z  ` @zאX@zՐ,@zӐ㿠@r`@ ` @z  @zn @zj@{͕㿐@q``c @"`d@y``&```d @y`d&`d&'` `@zG@zC`@z aL` o `$@z  et' e `(@z  r g' r `,@z  b Z' b `0@z  c M' c `4@z  @' @z`":`@z@yؐ @y``8 ! <! @@y`D@z  @yY@yT &``@{6````H@z @yH@yC &`d@{%`d`&4q`@y`L ! P@y 2@zr`&`\ H   @q#`@  `T!  X@z @x*    #@x#M` b@ M`- M` % `M` %2M`M`-   * M` -  `M`  "M` M`- `M`   2M`M` l" `M` h"`M` L2M``M`- `w `lM`@?" [  ` `R*   d, $< u, $6 s,@xp $.  c, $&`` @x   l-? f- , $  s,@xN $`M` M`- M` ]   ?$`d @x `h@xfM`Ԑ@x ֲ `\ @xβ `M` 2NM`" - @ `l @x @x  `  "@ 6 @" &"@#\L#`X#dd#hp#l|#p#t#x#|#######(@y4 `mL s c- d f"B[ s3 u"T@y?  @w ";/`F `x@w @w "+/`6L @y  @w "/`'  @w "/`  @x>  @w /` `p!  t@x ` @&L@x@wה @wZ@@wS 㿠@oa@ `| @x  @w@y㿘@o`@`  '[@w@w @xn   C @w @w 6  $  O`J@  &O` `'@ @w @wڒ``  @ "$@@wo @wŒ@x  ` @w HL< |`㿈@nb`@@ @w !   @wx@  @v@?0  ,   @wX @v@v 6@x% "  ? @w&  0 @w* @v@wA " `@ @wU   D @w @v@v ?`"  @w 2 `$  @w4 T @vה @vc@w# \ @vƔ @vR@vN @w @wEi l @v @v;$ @wr " $ @wh "  &'" 耢 6'耢@9"@ @vƐ2  @vx @v@v@ub@@ N  " N@vl * < .*N  @vJ @u@v@uϐb@@ N  " N@w. * < .*N      @u  L  @u$'@u`@@@  K @ : J *J `" '  *K `@ "J@ : K   *K  " ' "@vz @uÔ   @u @uF@u "  &' b@@ N 2`_2`@&N @" @uސ;  @u @u @u "  &"`'  &b@@ N 2`_2` 2    "   "     " '`$ '`@s` $ J -"`  ` @t @s`$ `  '@t`    " @t@sgM @saM d "  ``@t  ` `` `" @s`?@s @t    `&N@/` @to'@s 2J -`@@r`Ĕ ! @r @s耢 `̐@r`@s?@r@rʐ`?@r   @jaT@ ' G@sP"@t5 $ @rĒ:&@t($, $@,`$,`, $@#\ \a0 `;``@rEd@r@rk@r? `В @r 㿘@icԸ@`!  @s L @q`aS`@q K`d` H`d `!  @r  J`  J` r2J`  w2J` u@`J` 2J`@q@q " " @"  @s{``!!4@s " @q `d`@q `    n `!  @r  J`  J` r2J` ` w2J`` uA`@`J` 2J``9!!4@qH  @s?`"    @q;` `@@s*`  @q/ @q-  @s`2  a ! ! @r= ``iU`! @q M` J   @r"` !!4  @r`"> 4 r w u "/ "*`` @*``*`@q @rɐ @rƐ0@q  @r`ؒ a`! !@q @hb @ "@p$ ! a@@qA,, @q@,@rN,@rK  ,a @q2@  ,a @q(@  @a, @q@@pm'T `" `  a 'L@H 'H@p``'L`'H&`@p  " @q","L@p6`@p1 $@r`@pL @pH` &`  $ " 4T@pkT "``" @pcT,@p'T    @p@p`@gc􀦠*@@q|. @p" "  a,@p`@qe " @paa$! !(@p x@g!b@ . ! &!b@ $       @q  @   $"  2   a8@@o   'ܠ?' ''''''@'2-ܐ@52%܀ "@oːa< @!!@@o@ 耢 2  p l@2 l@p* l ' l @*  "' d' ' \' `㿀@#g`@@ 2&` 2&@n2{&@q) &`&`&` 2l&4` @olaD` !!H@of &` pl@2l@oɐl &l @* @02=&@p &`lh$2-&4` 2lpl@2l@ol &l @* lh$$@pĖ   '@p  &`&` &@#fb@@3(` $ &`&`P@p` aL (@"D @ @ÔT 2p@@p{    @o=x* @o:$  $ lp  (l@o1l &l* l &l %* lp  (l@ol &l* l &l6  `* l &l6  `* l &l6  `* l &l * 0@p2 l@h$D$@p+  `,`@n3`,   @nx* @n $  $ lp  (l@nאl &l* l &l * &llp  (l@nĐl &l* l &l6  `* l &l6  `* l &l6  `* l &l * lh0$4$@oԖ  "p`0@mܒpl@2l@nl &l * XT@2T@oPT 'TP, @@o @9-P  p l@2l@nfl &l*   T$Pl" h, $P`$@o  P@o% &@#ea@@/(` $ &`&`P@o`` aP )@"D @ @T 2p@@o@    @nx* @m$  $ lp  (l@ml &l* l &l %* lp  (l@ml &l* l &l6  `* l &l6  `* l &l6  `* l &l * 0@n l@h$D$@n  `,`@l`,   @mx* @m $  $ lp  (l@ml &l* l &l * &llp  (l@ml &l* l &l6  `* l &l6  `* l &l6  `* l &l * lh0$4$@n  "p`0@lpl@2l@mWl &l * XT@2T@nPT 'TP, @@nt @5-P  p l@2l@m+l &l*   T$Pl" h, $P`$@nH  P@nK% &㿠@9 22&` 2-&  *&`@b&`!@ 2&  p l@2l@lِl &l* &` ` "&`&㿠@9 22&` 2-&  +&`@%&`!@ 2&  p l@2l@ll &l* &` ` "&`&㿠@9 22&` 2-&  ,&`@&`!@ 2&  p l@2l@l_l &l* &` ` "&`&㿠@M 2F&`2?&  - .&`@&`2@1+   pl@2l@ll &l* `pl@2l@ll &l* `&` "&`"&`&㿠@w 2p& /`  2 1 0 " &` " &` "&` 2]&&`@N&`S@RL      "p:`  "*p3`pl@2l@kl &l* &`l@2l@kl &l* `pl@2l@kl &l*  `l@2l@kl &l* `&` &㿠@M 2F&`2?&  3 4&`@&`2@1+   pl@2l@kRl &l* `pl@2l@kEl &l* `&` "&`"&`&㿠@M 2F&`2?&  5 6&`@&`2@1+   pl@2l@kl &l* `pl@2l@jl &l* `&` "&`"&`&㿠@c 2\&`   7 2R& 7  9 8&`@6&`D@C=    pl@2l@jl &l* ` 2ppl@2l@jl &l*  `l@2l@jl &l* `&` "&` "&` "&`&㿠`` ` `  ` @p2_&& &`@&`2Q&ٖ2I&`` `"p>&` `.` "p7&` pl@2l@j:l &l :* )&` l@2l@j-l &l ;* &` l@2l@j l &l <* &` pl@2l@jl &l =* &` &$xx㿠@a``@  `&`@?c@ `,`@@` 4llp   @iِl &l * l &l` `* p  (l@iƐl &l * l &l`2` `* l &l`2` `* l &l`2` `* l &l` `* p ` $  &P@j`2l&d^&` `  &P "@j`2Z&dL&` `  &P@j`2I&dO@ ]@ &` 7`@i@haT?@i 0&aX@hO@ !@82"&@2&*&` 2&`  `"&@&@ha\` !!`@h 㿠@``a@b@L  ` L _L L _"@e&` 2&` ` @Z2&` L , @2 @hgad !!h@ha, &`  6D,?  @h lp  (l@hl &l * l &l `&* lp  (l@hl &l * l &l4` `* l &l4` `* l &l4` `* l &l `*  ,  I k&` 2&`  " @"(`` @w`S&` " l&` ` Z@h@gap?@h \&` "`` G@h@gѐal?@g I&` ` 7@2>&`  &llp  (l@h'l &l >* l &l `* %&` p  (l@hl &l ?* l &l ` `* &` @gat` !!x@g &` &   H t  $ 4 T d | 㿐@^ &`?&`b&`@` O ` bLO  `  2`bL 2  O  2` O O `2O    뀢` &`&`  O +"O O -"O b@O  ` F@h Ab @ga$  "a|@f@f@fՔ?a# a@f   L , $@g, `x* @g' bD' &`&`&`  O . O nO N23O b@h2&@"(O  ;``@h)d J`*` $ @f;``, `x* b$ $ $ &`&`&`  { bL   `u`2O    2O  ` { ` }Q \2`' $ O@;/@$9@e @(M ,  \M  % @g* < ,$ @g  M , " ' 4M (M $  @fQ, /@  @fI/@&`&`&`  2`O '  @gW$ `@e@ea?@e  @?&` O " !  ]*   &`  &`  &`  &`  &`  &`  &`  &`  &`  &`  &`  &`  &`  &` O  < =  &` &`  &`  &`  &`  O  = >  &`  &`  &`  &`  &` O  = &`  &`  &` O  = &`  &`  &` O  & &`  &`  &`  &` O  | &`  &`  &`  &` b@O  `  &`&`O 2 O _2&`  O O _" &`  &`  &` 㿘 D  "@do $&`  ` ` &`  & 􀦀?  & ?"`  "`$ "` "&"`"` A0@\``  K@ < #  $#. " *    @ ` `@& @b   #\! ! @c a@c  F F @f+    c  H  $ ,c , #\ 8#d#`!#h!  @c (, $@, #\ ,, $@, #` 0 \#da @c   "` ( a !! #@c `$N (? #Đ?#Ȣ  ??   ?     #\ #\#`#da@ch a@c`a@cY`@& ( $Ma ( !#!!#!@c? 4 ( $9 ? D  $ #\@c&  " a@c  a@c  @c5  (`@& D a@b@e1 a̐@b L  P  T  X $na#!#!# 2MM * *` *`  @ ` 2M`M` `* *` `*` ``  ` 2LL * *` *`  ` 2O`O``* *` `*` ` ``2*  $`#`@ #\$`@bv&  $ L2 @* @" Laܐ@bb L T   X #$ia !#!# 2LL * *` *`  @ ` 2L`L` `* *` `*` ` ``` O``* *` `*` ` `O``6@b@dJ& #@b F F& @d4@a#& a@a@d  㿘@#Y `c <@b&@#% b`- , @a       "&@ D "@@`J  " $ & a@ @aa@aJ ` *`*@ *@ @ # % ' a@ @aqɤb@aj¤@`  ` @-@ab@aT ( (&@c`7  "  " . ! $`` &``  b @a'b@a `@cV (tb@a? b@a d   *`*@ * @ @ @-@ab@` ( (&@c#A`7  "  " . ! $`` &``  b @`b$@``@b (b@` b(@` `@& b,@` P4l㿠@Xb,@` b0@`pb4@`kN` LJO`" @?  /*  b8@`P,`b<@`I%`b@@`B`bD@`;`bH@`4`bL@`- `bP@`%O``O`  &O`bT@`㿠 `" "`` 4& @` & & 㿠@X @ $`L@ / , "  #$ "  b\@ @" @`       b(@ $" ``@&  H ` @&@_ց㿠@#W c@  $` (. , $@  ,  ,  ,` ?$`\,` 0@_@`#`\'`<'`@'`D'`H L $@'`L  T$@'`T X$@'`X$ H `@  `" &`@ H`H ,  `  ``'``'` ,` ` &`&`b&` @Wal@ !"X !"@aw  \@_Z & @_d@`d@aM찐Ѐ@2@_d, dА @_'(   `" "`  @_] `@&  `  `` ` &`@_Ԑd   @_Ē@V|`@@^㿠&` &` &``&` &`&`@^&` &`P&`T`&`X&`\&``&`d&`h`h&`l`h &`p&`ta&`x (&`|&`bP&`&` &`&`b&`&` (&`e\&`&` &`&`&`㿠@^  t " @^ h " @^ x " @^  " @^   @^㿐@VȐ#h`d#d`l`h`|" `|* `*`" * `*`" * @  ? ?#``\#\@`-  "@*`   `x `@  &`x@^3 `$`d $ $`$ `$$` $$$ \$$`$(`$,$0`$4`$8$<@^`h`$@@^`x\`$D@^``$H@^|`@z"@" ` "dh @^` " %``   "%``  @%`"h %` 㿠@U  cH@      ?  bh@]@  4    bl@]@   4  ""? 8``   bp@]@  4   `@& 㿠@U  a@  '&`L `@bt@]` 4, ,  `2  `, 2  `, 2  `,  ,  ```@&` %&`P ` bx@]Z` 4, ,  2  `, 2  `, 2  `,  ,  ``@&`  !&`T # " 8, ,  2 , 2 , 2 ,  ,  `@& $&`X  b|@] 4, ,  2  `, 2  `, 2  `,  ,   & 0@TP###`#\ J ] "#*  #?#: l '?'  P#'#h 'bL@ ##"D@#|"@#x #L #  h ` ;2h`2L 2#hL L   #h ;ꀢ`h #| \@^L Lk#hL$% de#h #L #  h ]V` R 2# p l@2 l@] l % l` * 2# l h" "@ "`*` @ "`# l  h"   %  "  $##@"` Kb@ C  ?@2J`   2`J` ]` "@`"@ #<# <##& J` 2J {"###"b  @[ h ]`` ` #d`2L L L   ( ]_` ]`(D% P  "@]\  d@W\ d 2L`\L` . 2L   % " @[L " @[`@[ߔ? @[`4@[ה?  @\ d 2a T ꀤ` XL#pl,a h       @[ 2`'` #p,a ?%a`@\ 21 , d #$  # l  @[ɘ`"`p x.x #t @"Wpt  "Rp@Z @\%% H% % ` % %tx   ` $`9p@\#l "(l@\@\O@[ 2l #l  @[ x. @[~$`|$` l@[1l 2 p  @[ip, l  p@( l@[b l`% l *` l % l&*  l  p@( l@[O l`% l *` l % l6 `*  l % l6 `*  l % l6 `*  l % l* d$     @@ @L L d  `#d ]` `$= l`4 l l  p@( l@[ l % l *  l % l `* & l  p@( l@Z l % l *  l % l4` `*  l % l4` `*  l % l4` `*  l % l `*  l h" $"@@ #$% dL#h h P  X' L l@2  \  @Z  l  p@( l@Z l % l *  l % l *   l  p@( l@Z l % l *  l % l6  `*  l % l6  `*  l % l6  `*  l % l *  p %`@  J ` %`2JJ "@   @`2JJ`;2J` ``%`J ` @`2JJ`;"J"L  2J  2J ]` 2" ` 'J  J { h'b@ @Y`@YȔ?$% d d%`% % P㿠@Q`P@@  bLN`@ `   bL@ 2L 2L   R&(D  "@Z  d @ d`9@N@\N "1 2N@ bL@  2$ @YDL " @Yb?@Y3@  @Yb?@Y*@    @ d &' d'  p@P(#d#|N`##t #p #p P  ##\@   "LN`  "L    #x 逢 ] d@Zft#\ d@ @@@ @M` M` 7 逤:` % Pd@ZJx#\ dN`]\N 2\d@X@X|b@ @X? #\\ D @@ @L L  逌 ``   l  p@'`@XÐ l` % l*  l % l* 4 l`$p l  p@( l@X l % l *  l % l`* p  |% T%@% X% d% T|% X%@% d% % P\ @YM`  @@ `@M` M`  ] 䀤`%@%@%@ #p P  %@ |% T%@% X X% d% P N #`#h-."+@Wm #lM \@YT* : /`M  `M/``*Ml '@/` @X h  @X`h``. l  p@( l@X l`% l *` l % l`&*  l  p@( l@W l`% l *` l % l7` `*  l % l7` `*  l % l7` `*  l % l`* 4  `(@N#\N`#|#h P#t   @#x  #l#p `$\@Xl d @  L`[/ % P\@Xp dN ]`t @" \   J`@W1@Wb| @ @W"?Zh  `\@X}  L $  [`\  3$`0$-$@*$ #h P $$"b|@ @V\@V@V@Vߔ?  t% T$" % X% dx% PO #d*/`(@V: #`M \ @X!* : -``M-``*M` %@-` @V d  @Vd`/ l  p@( l@Vߐ l`% l *` l % l `&*  l  p@( l@V̐ l`% l *` l % l5` `*  l % l5` `*  l % l5` `*  l % l `* @4`@`$ b| @ @U\@VL@V@VA?yh H"|    @V{  l  p@( l@Vv l % l *  l % l * Vh l  p@( l@Vb l % l *  l % l6  `*  l % l6  `*  l % l6  `*  l % l * 0h     l  p@$ @V7 l  % l*  l % l* 4 l $h l  p@( l@V! l % l *  l % l * h   t% T$" % X% d% Tt% X$% d% x% P㿘@M`@    LbL `2L   @`"  { }  \  `$ `P    $`T$" $`X$`d $ L;,`"9@T (M /`  \`M  % @VĒ* : /" @V  M /` `" ' 4M (M '@  @U/`   @U~,`l `p@(`l@Ux`l $`l * `l $`lA* `l `p@(`l@Ue`l $`l * `l $`l6 `* `l $`l6 `* `l $`l6 `* `l $`l* 2  L   @VV"  OL @T@Tb?@T  ` $`T$" $`X$`d$`T$$`X$`d $`@L'PPaM @  ?  {1 M  }@ `L`}@$@@T@T~b?@T ~ $@:`J:2 J: `*J~`b@M    _ :$@ :2`L`:@` L`:2 L``L`:"`L`L`  _ :" @E"   @T l p@ @Tl $l * l $l* l p@(l@T~l $l * l $l6 `* l $l6 `* l $l6 `* l $l*   $@(2 2 `  @_< 4ll p@ @T@l $l * l $l*  p@(l@T.l $l * l $l6 `* l $l6 `* l $l6 `* l $l*  L  @T, ,l p@(l@Sl $l * l $l* 'pl p@(l@Sl $l * l $l6 `* l $l6 `* l $l6 `* l $l* pl@ @SŐl $l Q* L  @S, ,l p@(l@Sl $l * l $l* 'pl p@(l@Sl $l * l $l6 `* l $l6 `* l $l6 `* l $l* pl@ @Stl $l * Q`O  @v6`L  @SS, ,l p@ @SMl $l * l $l`l* l p@(l@S:l $l * l $l6` `* l $l6` `* l $l6` `* l $l`* F L  @S, ,l p@(l@Sl $l * l $l`&* l p@(l@Rl $l * l $l6` `* l $l6` `* l $l6` `* l $l`*  ` $P )@TPd@`d8 db@R! 8@R?M$@ @pl@2l@Rl $l ;* 4ll p@(l@Rl $l * l $l %*  p@(l@Rl $l * l $l7  `* l $l7  `* l $l7  `* l $l * $@$d$T$X$$P㿠@Ib,@  bLL @ ` @d2L bL@ ` "p@Q@QĐb?@Q@  pl@2l@R+l &l A* '&d&@Ia@ Ħ@# PĐ@(IJ ??   @Q@Qb?@Q@ آ ` Ң  A `J `{"J`}  @Q@Qgb?@Q@  ""`` bL@ @ 2K`  2 K` (2`J )` @ 퀣@    @  '   @$  ' '  @ l  p@( l@Q l ' l E*  l ' l6 `*  l ' l6 `*  l ' l6 `*  l ' l*  l. h""@  * #\"   `M`@2-`-` BbĐ@ @P@Q ?6  \  l h? " "@  " "= p 4 l l  p@( l@Q2 l ' l *  l ' l * & p  p@( l@Q l ' l *  l ' l4  `*  l ' l4  `*  l ' l4  `*  l ' l *  p l@2 l@P l ' l * bȒ   @P@ x, @P%`bD@%`  l  p@( l@Pڐ l ' l *  l ' l &*  l  p@( l@Pǐ l ' l *  l ' l4 `*  l ' l4 `*  l ' l4 `*  l ' l * x @Q֒  l? h " \" "U p p l@2 l@P l ' l G *  l  p@( l@P l ' l *  l ' l * ' p l  p@( l@Pp l ' l *  l ' l4  `*  l ' l4  `*  l ' l4  `*  l ' l *  p l@2 l@PM l ' l *  p l@2 l@PA l ' l H*  l h" |" x@Qg  " pb̒@Om@ p l@2 l@P# l ' l F*  ' d̓. ? "' d"' P " ' ' P@ ' 㿠@G`@  bLL @ ` @Pd2L bL@ ` "p@O@OcbД?@O@  pl@2l@Oʐl &l B* '&d&X@F#l P#` \#d ` #|?#h@ĐĔ@Ā  @OP@O!bl@ @OB?Ţ ! `J `{2N`}2 @Oq.| }."@& d`@r& P"l  #@OJ ,  M` {2M`N }" `M` " N "`&  @O, & @O$ &Ȑ #\ "`#pJ` [ \`@(J`\#\\   l h" #t #x  &   @$  & &  @ l  p@( l@O l & l E*  l & l6` `*  l & l6` `*  l & l6` `*  l & l`* .`"*  l h"  " N.@Np.  l h"  @`"  -"  \ 2* h ` 2& h p l@2 l@N l & l F* @Oߒ  l h " "  p l@2 l@N l & l F *  ht@& lx& #\ o  $   `M`-`& P\-`N"l    @Nl  l  p@( l@Ng l & l*  l & l `* '  l  p@( l@NT l`& l *` l & l5` `*  l & l5` `*  l & l5` `*  l & l `*   @$    @4  &Ȁ`2>\, "      l  p@' @N l  & l*  l & l* 4 l $ p l  p@( l@M l & l *  l & l *  p l@2 l@M l & l * \  l h" " @O    .`"*    `" @M  & d̓,  |? "@& d"` " & `& Pd& \h& `@& @DcD@Ī@ PĐ@#\ 2\ "@MF@Mb?@M9@  \ J " \  '   @$  ' '  @} @yȖ   @/ 2\b@@M"?y\  p l@2 l@MK l ' l *  l h"  ' P   @ј 2Y\b@@L?Q\  @NT . "*  l h"  "    @ޘ 20\bx@ @Lex@L͔?$\ 4  l h"  @`"  "  p l@2 l@L l ' l *  l h"  " ."*  l h"  "    @ 2\b@@L?\ 4  l h"  @`"  "  p l@2 l@L l ' l *  l h" $ x$) l l  p@( l@L l ' l #*  l ' l 2` *  l ' l2` *  l ' l2` * ` l ' l*  l  p@( l@Ll l ' l "*  l ' l  `*  l h" " @M  "- l x `"   `"   `"  h@  #* 2  `*2  `*2  `* * l "* * l h"   "   " b @L@  l  p@( l@L l ' l *  l ' l &*  l  p@( l@K l ' l *  l ' l6  `*  l ' l6  `*  l ' l6  `*  l ' l * " \ * ' d ' P̐ ? "' d' P'  " ' @̐ā㾠@B# #?#p  P ##\ @#t#x@## 2  *`" " 2  :   ,`@J#@J#\,`#`  \"`" ` &"``#h"L  \  M {"M`M "2(M`M` }"" M` "" @K M " @Jِb@ @J?  @Jϐc @ @J?* %`M`\@-`@K@-`@ 1   K`"&``@ 2K`   K`(2K  J`2J)2K  ^*  `V* &h #h`& D*   &   @$  & &  @ `#    @``#p@     @٘@I " p`"`"`#|/#d \#l@.@Iؐ #` " $l @Iϐ  @$` @&l``"` `#ld #d&@#   @K|`f#   & PxtU @4 p4 l l  p@( l@J_ l`& l *` l & l* & p  p@( l@JL l`& l *` l & l6 `*  l & l6 `*  l & l6 `*  l & l*  p l@`@J) l`& l *`& lr*  l  p@( l@J l & l C*  l& l0 `* l#& l0 `* l#& l0 `*# l`& l*`(#"@ l*  h"@  #"  l  p@( l@Iߐ l & l D*  l`& l*` l`& l*` l`& l*` l`& l*`@J * ??N. l h " " @ {t. `cX@ @I X@Ih?`   l h " "@  "  p l@2 l@I l & l *  l h"  # "@x$) l l  p@( l@Ih l & l #*  l & l 2` *  l & l2` *  l & l2` * ` l & l*  l  p@( l@IB l & l "*  l & l  `*  l h" " @Jc  "% l x@ `"  h@ #* 2  `*2  `*2  `* * l "* * l h  "  " #  @H  l  p@( l@H l & l *  l & l&*  l  p@( l@Hې l & l *  l & l6 `*  l & l6 `*  l & l6 `*  l & l* ` @Hp@HAb @ @Ha?* * `  \ @G&@"@Gː@G\? "@& d& P&  " & @㿠 .@G " ` & `&  `, @G "  $ &` `"```&`&`  `& 㿠 `   @G& @G|X@? P#d#`@IoP@ImbL  @  d@@2M`    & P@  T  d@X@&T@IBPT 'T* P@I0 @ ` d@2L  @`" d2N bL@ ` "`@B@BQcD?@Bs@  #d`&' d' ' PdX@9d#p #h P #l@ĔĐ@#`#\ ??2\"  rĀ  Ȳ  L` {"s L` ""o ' P̖  莘2d\ T #d  X   ` J(  &J @"J)"" `$h J :2 6 J : h &Jh U`S ` @? &L@   @B,@ ,@ l  p@ @B l ' l *  l ' l l*  l  p@( l@B l ' l *  l ' l4  `*  l ' l4  `*  l ' l4  `*  l ' l * F L@  @A,@ ,@ l  p@( l@AА l ' l *  l ' l &*  l  p@( l@A l ' l *  l ' l4  `*  l ' l4  `*  l ' l4  `*  l ' l *  `$`O@ /@@' P @B֚/@ d`dcTp@ @@@AM?l\ ` ' P  焘2Z\ T 2N  d "N {2 X  XM  X-@B )`@B@B@A `  @A7 X x,   @A3$p"D $ @@`2  X  @A X X - l  p@( l@A l ' l *  l ' l &*  l  p@( l@A l ' l *  l ' l4  `*  l ' l4  `*  l ' l4  `*  l ' l * d `YE4 l l  p@( l@@Ԑ l ' l `2  `*  l ' l* \  p@( l@@ l ' l `2  `*  l ' l6 `*  l ' l6 `*  l ' l6 `*  l ' l* \ p l@2 l@@ l ' l `2  `* w\E4 l l  p@( l@@} l ' l `2  `*  l ' l* [\  p@( l@@f l ' l `2  `*  l ' l6 `*  l ' l6 `*  l ' l6 `*  l ' l* 2\ p l@2 l@@= l ' l `2  `*  \ p l@2 l@@+ l ' l `2  `* \@?֐@?cPp @ @?ǔ?\ * ' d l̐ `? "@' dl' P@' P@7 P` @ '   @  '  '  @* "@*  l h"  " @; d@2M bL@  @ `IM " M ' P@S B$@c\@@?|?:$@  d@@@ؒ @ d@2L bL@ `  l h"  " @W $@c`@ @>@?F?$@ 4  d@ l h"  @`"  "  p l@2 l@?^ l ' l *  l h"   %`x$) l l  p@( l@?G l ' l #*  l ' l 2` *  l ' l2` *  l ' l2` * ` l ' l*  l  p@( l@?! l ' l "*  l ' l  `*  l h" " @@B  "# l `x `"  h@` #* 2  `*2  `*2  `* * l "* * l h"   " cd  @>@  l  p@( l@>ѐ l ' l *  l ' l &*  l  p@( l@> l ' l *  l ' l6  `*  l ' l6  `*  l ' l6  `*  l ' l * @ 2L` bL@ ` $@@ d@@2L` bL@ `  $@@>6@>cX?@>)@  $@' d' P'  " ' 㿀@5 P@ \#h `#\@ d ?@#l  L"Lh  @ .lL { @? `J  O` }'`" N@>..` @? J 2l@=ΐ@=chh@ @=?΢ L " M "@ @J` [ \`@(J`   l h" #` #d  '   @$  ' '  @ l  p@( l@=Ґ l ' l E*  l ' l6 `*  l ' l6 `*  l ' l6 `*  l ' l* ."*  l h"  " % @O@@=/@/@ l h"  @`"  !"  \ 2 h ` 2 h p l@2 l@= l ' l F* @>  l h "  "  h` @' ld'  ' P} d@  p l@2 l@=\ l ' l * '@ l h" " @>   '@."*    `" '@' d' ' P' \\' `㿠@4ah@  @ P bLN`@ ` (f `' P  "@>S $ dL`\N`` "* T@2L bL@ ` " T " T@<L` " @.. p l@2 l@< l ' l *  b@N`@ `  `_ @`M` ` `_"`@@ bLM`@ `   M`  @<-`  2` `-` ?$@z$ d @ `s$%@  @ =" : xJ J " ." \+ b@ @ ` "!N N N" 0 *  : N* "0 N*  :   ` N* "`0 *  >  `2&`㿘@:"   L 8` @9@9`" $  $$ @9א`$ @:V  *$  " @9ؐ  |@& |@. | x. `"   $  | ' |2'` 㿠 l h"  p h" * @9@:) h t "& h@9 h& h& l& p & t㿠 |*  * @9.@: x "& x@9 x& x&  & 㿠@1a`@ @& ct@9 @` * * @9b, @9  "& @9g & &  & `.` ?6  cx@9e  &@ @" ?" ?" 㿠@1`䀦`@ @& c|@9E @$ c@9< .` " " "  "  ("  " " @10#\L'    h7̐@ 2M@   2 M@ M@ ]2İ `2 M@ "(@; M``"" `p M``; M`" e @9X@9)c\@ @9J? M@ `{4@: !M``}" `F M``; M`} ; @9.@8c\@ @9 ? @9"@8c\@ @9? @: @N" M``;  `@" L "  L ]2 `"    @2#  *  * .@8Y@8V@8 @8   "' @8V @8T ' '  ' '  *  `"  *  "   ;'  @8@8c\ @ @8?㿠  @8,  @8)㿠``&``*`" * `* ."@8* @8`` "&`@8 `&`&` &`` &`/ `"*  "@ `" ?" ?" ?" ?" ?" 㿠଀&਑*`" * ଻* /`"@7ґ* @8Rఀ "&@7&&ଐ &ਐ &਑. "* ऐ " " "  " "  " " 㿠 *   * @7.@8(  "& @7 & &  &  ` @7㿠&` l h" & & & `" l' l l  p@( l@8Q l & l "*  l & l*   p@( l@8? l & l $*  l & l*   p@( l@8- l & l &*  l & l* 㿠@/a@ h``@  &*@ "*@*  $*@* *  l  p@( h@7 h`  l" " ` "(  l *" 2  l & l` ' *` #*`2  *`2  *`2  *` *`` %*`2  *`2  *`2  *` *``2  *`2  *`2  *` *`` "` 6` 4 ` *   "  $ `  "`)* "@*  @ " @c `"  " ` "  `" @6@$  㿠`;89?;5 20? 8-?. "* *`" * &  8 ?@7 * "@* *`" * &  8?@7  *`" * *`" * ?㿘@.> * a,@@7͒ d 2  @7ǒ!    c" & ` q&n`m`j& *`@ d&`'`    '  &  ':  ` *`" `?am @ ':  ` *`" `?am "@ ''*` * " *` c* ' `*"@ *` 'K\6?@'` 2 @6 "".'d"  ?㿠'DD@6'H  @7? @6֐H  @78 &D* "@*` * H"  㿘@6' & @7$ * @*`"@*` * ` 4&`.`"@*"@ *@ *` '㿀`'D& @6D 'l *`"  *  @6e * "#\* &@ #d#`       `  " ' #d#\#`     `4 "D?z& 㿠@-N `@ b@@ N  " N@6 * : .N 2Nc@@6< 2c@@65 +c@@6. c@@6'  @4  @4   N  .  . c@ % @4 2 b@" @5 "   耦 b@" c@ @5    2 b@" c@ @5    2 b@" @4w" N`s.c@ @5    2 b@" c@ "N @5    2 N b@"  (b@N @ `   #@  @5V    2  b@"  N J." J*``J2J*` "+!c@ "$!@5"    2!b@"  b@" !b!@" 㿈@+c @b@  J "  "J 2J `I -H - +D @ ` ( `"J`v ( ) ""  $ "J  "J @ 쀢`.2+  :+  `"J` @ `.+ " "9 -  +  -"?  "J  """` "J b@  @"`+* "0"`"J @2`"  "` "`! ! 㿀@+`d@c'H #p" @42H gl%`c  `#t%c  ?ϒ` % # " `  "`"   " #c#$#$` $  '`##'  & & &` & #h"  #l@4" h l } y` u h 2`` H ' 2= t * " + "  ** "@'- ` 6`` %`` d6`` E&``'l%``'%``#\` #`#d `` 6 ? ' 6? `'`"`2`  `@'p"  ?  ( t X T | ( T , X  @t$Llt㿀@*`@b@ " "|@" "@ " "x@" "?@" "h@" "@" "$@" "@" "d@#`"8@?ڴ!"T@"@"@#x"@b|@ "x@ "@ "@#t"@#|`c@ * @` @*f%``%@\:  ` : #d"@ $:  `  : #h :  ` : #l  * `* @1y#p@1v`"# "  p@1`'`@1 &  @2y`'`@2u & ` "  2   ' `d* @ h(@l (@#\%`c@ ̓-@@x @$ $4`@ 6  ]& &&  ,#` 6 `* * @ 2`?& b@ b̐"$@ "`@ `$U` "`P" ?`@ 6 (& && ? ```?`2```& @ `@ "   ` @ ` 2  `` P "$@   " E   "3> c@"@ `"  & "@ @*( `* !,%` 6 %`* *`@a2%`"$@ @:` "@ `?" @   "h@|"*`#\@ !: * "̤$ %@ @t" @`*@`    * - "``@* * b̚$`%@@ `""@ @ + @   *  * @@ "`@* b@ "`"x@" "|@" @?#"  % J*   @ `@"  @ `9"  @ `2"  @ `+"  @ `$" #@" #@" #@" #@" #@" #@" #@" #@" c@" #@" # @"   @"  d@14 d@0* "@*  #@" #@" #@" #@" #@" c@" #@" #@" # @"   @"  d@0 d@0a* "@*  #@" #@"  @" #@"   @" #@"  @z"   @"  @o"   @"  @d"  @"  @Y" #@" #@N" #@" #@" #@>" #@" #@3" #@" #@" #@#" #@" #@" # @" # @" #'@" #@" #@" #@" #@ " #@ " @/* "@* #@ @ " @/* "@* #@ @ " *`" * #@ @ " #@ @ " #@ @ " #@ `" @/^c@ `"`@/Tc@ `"`#@ @ "  @ ``@ ``" `@ ``2  #@y"  `"  d #@" #@"  d@/$c@ "` d@/c@ "`# @" #@Q"  N"K"@#&`@b,! 4@.@- " `$  " $ @0+ ` `& O` = $@L` `L` =2L`$@,@. ,@.` @-,` `!  a  L@-@.~,㿘@#%bĒ@@?-`0  $@-, b, @. "&@-& &, b  @-~$ * b @. /`8 $   @-   2 @-U@@-O @/2 =. @/,b @$㿠 @-> =@--`@-@/k.@-2 㿘@#%`|@@?,b* @ ``@"   ``#` ` @ `$@  `< @//@2㿘@#$c@@ʒ?* b@ J =    㿠@$c*@ `@@,`$` "` 2`D@,"&@,  @`H @.@.̐ @@.͐ 㿠@$a`(@  $  "  `&(. `@,a`""" 6 "@ " &* @"? @,0,  " &, @,@,4&* "@* @"  &@$P@``!  K`J 2 K``K` I "`K``=2 I `!"```?"`㿠@#|`,  @+ & 㿠@##c(`X@@-M@@,"  @, @,@,. @+ " @+@+ &@-`\ @-5@"@+@+ &@-x`` @-$@`d@@+@+ & @-d `h& @+@2@+r " " `l@! @+@  !& @-@&@+" &@+㿘@##aL@@- `p`  `"   @+d   @+^ '   @-'@-@-w@-}@+.```@-x $`@+ "d `t ,"[ ' @+ @+' @,  @+ @+H @-T "C ``x@,#   ?@-H ` @-D?`$@-??`P@-;? ?@-6 `h@-2?`l@-.??@-*``@-&?@-' 2  `"  `""```2` ` @*  @*  @*   @* & `" @- 2V @,& 㿠@" b8 @  & @* @* @* @* 2 ! @,@@*˓ 㿠@#"a@@*c " " `P " $ @"\P@ 2 2  P@ ` @*@2㿠@,@,㿠@"`P  &`` &`  @@*`2 @,x@,y&`&`@!T@`㿘@!c@`|  @+    a@+ "' ?@,A ?  a@+@*F  `   @* "  㿠@!bt@?'@)`@)  `  @*  &@+ @+ @) `  @* 㿠@#!at@b@+b @*G$b``  `&```` 2``! "@+g `@)J㿠@#!`@@) !@)#@& ?& '& `  &㿠@) @)@ @ `㿠  * * @(.@)h @( & &`& <x ThX$,d0t"\$`&')@&+P+,-+../.11`33???8\8\8\8\8\8\??CCCC?JK\N8K\OPXPSSTTW|WWW9D9T9d9p99;l;;;;< 9::4:T:t:@4@L@d@t@t@t@t@t@t??@t@t@t@t?(@ !a`@b` @ #l#@#"<@'`  2 '#` &4@b`@ @(0`@(14 $84@(3* #8@`@ =`8@`@@(a0b@#"D@#h"@ @#t" '@ ; ; !,;@'"@@ #?## "`@ @' H@*l@'@?$ `#Ԟ H*  /`@) '  '``" "` 4(  `"  b\ @ ` " @'   `"   ``"  `@ b(@ "` "  l` <&@'@ `Ȑ@'@  @) `@'@`*  /`' "  `" `* *` *`  *  /`' "  `" j/`'`' `" "` 4_  `"  \ @ ` " @'W   `"   ``"  `@ "(@ "` " 8/``@(' /`'  `" +( @##d" '@#\'* '  ` ' @' " '$ 2@'v  #|" \"`@ "`"`W"` @& |\" " '4b,* '  ` ' @'J`" @'I `" "` 4&  `"  \ @ ` " @&   `"   ``"  `@  "` "  '$,d\'* ' `" "` 4@&  '$d'@ |/`"@` w* *` *`  # # # # #! $ @&@&`Д?@&@ `@ @ @@&֘  #h'@*  #0  0 #x @&0#x@(06#` @@& #@&@&~`@  @ @&xx] `  '*`@"@`'<`?@&@$  `" #h! H@4 @l"  $`Đ#\@`` 2@&eb@ &[  l@`# @ @#<&@% H@&y?`@%@ 2'* `` `' @&  @'@%  @%ܐ@&F? '&a@%k@ @%l@&<  & $```@& "`@&`` J "h@%h'@;'b\@#"(@#* ' `" "` 4$ ` "  ` " @%A`  `"   ``"  `@  "` "  '$'@`_@%r` /`"@ `"  N @'~l"  a2   #?6 #@@$ l  <@/`'`$`@%a`4`@%1`/`"@ `" " $ 4Ǵ "  \@ @" @$       @(@ $"   " #,"  $@$ހ#, @' l"<  #a2   #,?2  "  $@$#, "  $@$@@$w " $ 4l@$l, <@T" $ 4<@$8/`'`@$А @$$`` ` "  $ @$| `/`" " $ 4)  "  \@  @" @$"        @(@ $ " N* *` *`   # # @&q$`' ``2 `/`"@  `" /` '`$`@&Y"' ` ` " $ 4 @$ `/`"@  `"  " $ 4  "  \@  @" @#        @(@ $ " * *` *`   #H #H/`'`$`@& ' ` ` " $ 4 @# `/`"@  `"  " $ 4$H  "  \@  @" @#[        @(@ $ " H>/`'`* #'`$`@%"' `` " $ 4@#p "`" `4e @#ga `/`"@  `"  " $ 4$  "  \@  @" @#        @(@ $ "  "`" `4  "\@  @"      `@(@` "`/` '`$`@%5&' ` ` " $ 4 @" `/`"@  `"  " $ 4  "  \@  @" @"        @(@ $ " s* *` *`   # #/` ' '`$`@$ ` ` `" "` 4 @"  `/`"@ `"  `" "` 4(  `"  \ @ ` " @"5   `"   ``"  `@ (@ "` " /` "' '`* '`$`@" `` " $ 4 @"F `" "` 4; @"= 7 `/`"@ `"  " $ 4$   "  \@  @" @!        @(@ $ "  `" "` 4  `"  \ @ ` " @!   `"   ``"  `@ (@ "` " * *` *`   #L #L/`"' '`* '`$`@$ `` " $ 4 @! `" "` 4 @!  `/`"@ `"  " $ 4$   "  \@  @" @!L        @(@ $ "  `" "` 4(L  `"  \ @ ` " @!#   `"   ``"  `@ (@ "` " L/`"' '`* '`* #'`$`@! `` " $ 4@!1 "`" `4 @!( `" "` 4 @!  `/`"@ `"  " $ 4$  "  \@  @" @         @(@ $ "  "`" `4)   "\@  @       `@(@` "` `" "` 4p  `"  \ @ ` " @ h   `"   ``"  `@ (@ "` " I/` &' '`* '`$`@! `` " $ 4 @ z `" "` 4 o @ q  k `/`"@ `"  " $ 4$   "  \@  @" @         @(@ $ "  `" "` 4  `"  \ @ ` " @   `"   ``"  `@ (@ "` " #/`' ` h'`bD@ €"   `"   "`@    '$`@"1` ` `" "` 4 ߶ @  ۶ `/`"@ `"  `" "` 4  `"  \ @ ` " @~   `"   ``"  `@ (@ "` " _/`h'`' * ` #̀'`bD@ €"  "`" `4 @ `"   "`@     '$` ̘  @!`` "`" `4 @g `" "` 4 \ @^  X `/`"@ `"  "`" `4 @M `" "` 4@D #/`'`' * ` h#Ȁ'`bD@ €"  "`" `4 @! `"   "`@    '$`@!W`` "`" `4 @ `" "` 4  @   `/`"@ `"  "`" `4 @ `" "` 4@ /`h'`' * #'`* ` #''`bD@ €"  "`" `4@ "`" `4 @ `"   "`@     '$`@ `` "`" `4@ "`" `4 @ `" "` 4 { @}  w `/`"@ `"  "`" `4@l "`" `4 @c `" "` 4@Z  N'$`@ `` F `/`"@ `" /`'`N!' $`  @ w` `  "   #$ @% `/`"@ `"  " $ 4˴  "  \@  @" @        @(@ $ " N'/`'`$`# @ 1` `  "`" `4 ٶ @ ն `/`"@ `"   "`" `4@|N '/`'`* #'`$`#@`` "`" `4@ "`" `4  @  `/`"@ `"  "`" `4@ "`" `4>@:N6N* *` *`  )N* *` *`  #4 #@N#4 #@/`' ` h'``@ '"` t ``^ #'Ȑ 'Ȕ@"  `"   5"`@7  2Ȁ 1 `" "` 4(4  `"  \ @ ` " @   `"   ``"  `@ (@ "` " 4`" "` 4(@  `"  \ @ ` " @   `"   ``"  `@ (@ "` " @N* *` *`  #8 #DN#8 #D/`' ` h'``@ '"` t ``^ #'Đ 'Ĕ@"  `"   "`@  Ā 1 `" "` 4(D  `"  \ @ ` " @6   `"   ``"  `@ (@ "` " D`" "` 4(8  `"  \ @ ` " @   `"   ``"  `@ (@ "` " 8/`h'`* '   #X'` @ 'EXt    ^ #:' '7X@9 @   @g @  '@a ^ 3 '"X@ =  `" "` 4@ "  $@ߐڀXh@2t@ C'@ ^ #:' 7'@ @   @@  '@^ 3 ' (@  `" "` 4@ "  $@ (  2  2           8@ `/`'  `"  `" "` 4,  `"  \ @ ` " @   `"   ``"  `@ (@ "` " @`" $ 4 "  \@ @" @       @(@ $" /` '??'`* h'`' #` #`@ ##"t@"@!@  @O  @M   #h@"t@"@@  @3 @1 #h@t@2  h@"Mt@"I  ` ' #l@ؒ#l '@͐@l@?Ḗ  a<$ -`ȓ*`@ @ d D 2   4    $   2   t@I@F@?   ''# al$ -`*`@ @   "     2  ~   &y  v   4q  n   $i  f   6a  ^ @   h@?2 ?? ??@?x  !T$ - 8*  H 30  - H #'  $ Ȧ )   Ȧ -   Ȧ ;     Ȧ '   `9` @/`'  `"  `" "` 4.  `"  \ @ ` " @e   `"   ``"  `@ (@ "` " @D` " $ 4< "  \@ @" @5       @(@ $" #/`'`* ' ` h'``' @ " @  `" "` 4@A "  8$@:5h@' @@u `" "` 4@ "  $@@?  !$ * X*  `2#t `" "` 4@ "  $@6  ' ' #t@"6t@t "*# #' * #!  : : : # : #  #   #  #  `8@`/`'  `"  `" "` 4-  `"  \ @ ` " @K   `"   ``"  `@ (@ "` " @*`" $ 4# "  \@ @" @       @(@ $" /`##<;'`* h'  #$@ ##'`$ '8t@$  ?/@Q$@  @ @} @a  `" "` 4@  "  $@  #h@2t'5쀢@?-@@  @C@A@% `" "` 4@ "  $@ǐ€ #t@T@Q 7Ԁ 5 6"   # " # 7Ԁ 8"  @># ` `" "` 4@ "  n$@j6 ' '@(#p@ 6pp" #pp#^  #<h@ ?@ 7? 7Ԁ 5 6" 5H;/;* 7Ԁ 8" "H;@ `" "` 4@+ "   $@$;^    `$G<< `;@/`'  `"   @F/`'  `"  `" "` 46  `"  \ @ ` " @   `"   ``"  `@ (@ "` " `;@`@p`" $ 4i "  \@ @" @b       @(@ $" F; @b `" "` 4@ "  y$@{v/`h'  "%t "!@ @:  @ x@ "@ Q/`h'  ('`t "% @p @  @ p@ @  `"  ("`@* %    \h ;'  `" @_` ?p?;@ `@  @H`/`'  `"  `" "` 4  `"  \ @ ` " @   `"   ``"  `@ (@ "` " | ;'  " @m ` ?p ?;@ `@  @U `R/`' ` h'`@ " @  `"  "`@ ~  ' 9@Đ:``/`'  `"  `" "` 4  `"  \ @ ` " @   `"   ``"  `@ (@ "` " @:``#( $(a @@((* @*  $`b@  `'    " ' ``"'@* $`b@  ' @ " ' ``/`#' h # "t "@ @  @D  h@B    #h@t@2쇴  `Hh 2  @'#P P ?hh@l#PP `"  `" "` 4(P  `"  \ @ ` " @_   `"   ``"  `@ (@ "` " P'  # @  t"22   ^ ?h 9!h@@lc @ @l"   a l @@ l <  @ @sl"     a ?0 l @@ l <  * *` *`  l*`" * H@ *  T# (@ #T #  @S?"   `" T@?T  `"   " * *` *`  l*`" * H#@ T*`#x (#  `@#| '*  *  d  @5@a|d@  #x '@& "Z`x'6T` #Б*`#pГ*  # p#`@ #d 'd@4| $0p* d@ @G d  @$`` `` `p "f " % 4` @b\  #px '@&`@/`"@ `"  #"@# " # #@G`/`"@ `" @v`/`"@ `" a@@@Y@*a?@L@ a  @!$@!(@@H Z! V`@l L& l @ " J`J` `  & @ 2J`J`   2J`J` ;2`J` `  & J`   2J`J` ;"J`` $! '`!  a4@ @`a8@ @`@?! &! @l"G(@#@@$7l/`' &`'`" "` 4&  `"  \ @ ` " @;   `"   ``"  `@  "` "  @4l <  @/` ' & `'`" "` 4@O @4  "@$`A㿀@   c $@/ "*  $   @  ` @& @  #\b a<   @ a@@  F@   b   H  $ ,b  ,#\ 8aD#d#`#h  @z  (*`" * #\ , \*`" * #` 0aH#d  @e   aL  @Z㿠@ a@@ ( $b @!\!`@`#\.` X@ d haX @ @`.` X !P!T@ 㿐`@* ` \`@$`&`/`$@ @,@#\#`` H `@@㿠`< ?? r`` n `L `P `T`Z X 2NN+ ((  2NN+ ((` # N``(/``/```N`` N  (/` /`  N   4 `# 4` `@ &c@   2'    D(<"4# $ @2    6  ` `2   &   㿈@``/ a@@bD   ' -?b #?@ @@   @ɒ?@Ē`@@kal?@ /b% ƀ  @b -   ;``@d&@ `" ;` `@d" $ 4$@$㿀@``c@* @" / @bD" `   `?$ b ``? @ @   @C`?@> ) ,?b #?@ @   @?@ @@ap?@ 1`b&`@`  @b -   ;``@Ed'@ `" `;` `@Nd`" $` 4@o" $ 4$@g$㿈@```/ @bD   ' *'b 2 ?@b @  @@`"  @d@5at?@W U( @P@!ax?@C a| !!@? 4@E& `" ,b ^ -  ;``@d& `"  ;` `@d" $ 4$@$㿐@``a/ @bD ` @' `.?"` @``#?@’ @g   @`?@ "@@a?@  `@8& `" `" $` 4&`@i&`A㿐@'```@/ bD   ' *'b 2 ?@_ @  @@`"  @a@2a?@T P=b     @>@a?@1 a !!@-  ^ -  ^#\\@#& `" @ " $ 4$@ Đ$?A㿘@!a@ @2`! @@t&!&!``! |!$&!c@L!* "@*` *@ *`"@*` !"@ *`" * *@ *"@ * "*" *" " "@&!! !c &!b$!`  ąB;``@.d. "@ `" '  ?A㿈@'`c`@/ bD   ' *'b 2 ?@ Y @  @ @ `"  @ [@ ,a?@ N YEb(    F  ^F#  F '^@ 2@ a?@ % a !!@ ! #F^ (- 0 ^#\\@& `"  ;` `@d" $ 4$@ $㿘@'`ap`@* " @ bD @ '- @ "&@ ͐b@!!@ a  @   " $ 4$`@ o$` @&& "  $ @ a$`  @c@#h@ #\`  @ j``@`€2 @ Ha  @ B  \#`& #d  `a̔ @ `\] bD "`h  '2  ?@ ' @   @ U@ S) 2  %%% %%  %B%%%% ` @&h @ ՐaД?@  \\b`  & ` ` " & 2H\d&'*  "`" `4@  '$  &@ ."@ `" $\^?b, -  @ 3."@ `" \@ ; \" 8@'H` 'L@@ b@ ![H^X "$"0@ -  a@ @ @ <@ `?a@"@@ _ "0@ D!@@ !@ E?a@!@@ D !@@ @ 1?a@!@@ 0 !@@ @ ?aؖ@!@@  㿠@b `  €"` ` T ` T   ` H`  `  `` @2  €"` 2 " 㿠    " &   @  @ 8@ "`"` @"` 㿠@`4@``@ }  @ f   T "  T  &@  " "  H'  '  '  ' ` ` " &``   "&``  @&`&`b&`  @@@ ՞ @  @㼈@b@&`@ǐ  &@b4#\"8"<@  .`(@ &  @  4< @/&`@&,`@Đ `''@ Ĕ@  @]@ @  `@&@ (! b" @ bD#\bH#\b@"L"P@ Y  ,`   @#@ (h@`L@(@ '@ ǐT  `P  %#<@(@ >EP@ NP 8 *  T@ F@ dȀ  ܐ b (" b 2!@ v 2@ TP ڐ@(@ ' `&@ b" , @  @ 1bT"X @ ך @ i(@ gT @h@bP@&`@  &@ b\#\"`"d@  @ -(@ +T  @U9/`1<T@ & T@ "X @ ג̀  b 52  *(@ ( 2(b 2(/`"h"l@ ` @ &@ \ @ ɐ `@&@ bp"t@ 8 @ʐ(@ȐT@c@,@ 4X @ )@, bx @@@ V  tǦ@ N  b@ N  b@"  `  <@ <t@< < @ b @?D?X" ?,@#\@ @ @b ?x@?" ?\@#\q@ $jb@ ` ??#\??@#`X 9<Q9<7 @ @ @y  @ 2,) @ Ғ @Z  @ ǐ2 @??@A  " @4  $@,  ,@$ @p 4@ @@,@X㿠@cx@ `. b|@J -%@  ` @&&,`@b@@ `&b @"@@@?&@  @Y-N` ~@$@ϒ @ݔ@K$@@  @  *  ?@/?@y@a@@`6`@ *`@  b @@  @(@ 2( `D @ b'$@  3"@$* ?@'  @($ *` @ $ '$*  2$ " & 4V @V @JJb@" @$ @ "$ bȕ*` @   @$ $! "ȴ@ `$@ 2 $*`  2  `@&@z( 㿠@bb@ " @ &   "&?@ & &?㿠@b<@b !"@5&  ! #@. &@+ @,   @    "4b @,  !b @  \` $@ b @ ``$@ b @ P㿠@`@b    "?N`N` /nN` ~j N` :2N`  ~_" !"@&b  ! #@ &@ ">   9  ~4" !"@z&b  ! #@p &@m "   2       @#b\@@N,b    " ,0,@N 0@0,@ݐ0  &`J@ ` &`&J@ ` , @]&`, @ @,` $ " NN2N``&*,@$㿠@N `̺ /@2 O`b @ O` O` / '@`O` O` /2`'@$O`O ~  b @@bĐ @O`Һ``㿠@#c@U " O`bȐ @O` O` /'@O` \'@`O`  '@O` /'@O` \2`'@$O`O ~  b̐ @o@kbА @eO`ʺ``㿠@bdb@  !"@?&   ! #@8 & @4 I  bؐ @, P`$ @#`  "    "   ( "   0 /   /  P@$@bܐ @ P@3 :@ `QO O / ' O O /2 ' $7O  N . b @(O 2NN .2NN .2 Nb @O ~ b @@b @O  [` @ے :5$@ bL` :'@ O` :`O` ~ `@ / ' @mb @g`@ :ϸ$@O` @2`O` ~O`  `@ / "@F?b @@`@#a@@/,b    Z W   /@M /@b @M /2"M  M /" M M ~@M "M M .2 M M  /2M M  ~" M "> @J? / c @`@@@ؐM "M /2M M  /2M  M  /" M  " *``*`` M 2M "@@ `@&@ݸ   /@S@2 M @"M J .2M M  /"M M  \2 M M  ~2M   M ~2M @M "L`@ J? /"  : c @h@@e@M "*M /" M M \"M M *`` /" M  \2 M  M  /M  \" M  " *`` M 2M "@@4` &@`  \  ,@% ,@J :"M J "M @Y : "M @@K@  M "2`M :2 M M  2M "  M :      c @ `:" @@֔ M 2M `@ @А,@'HN`` ~5@@Lb  @  ,?@$$  @$  @$@ @@&@$@ @H @b 2J "  \J /"*J 2J㿠@bb@    "(@K /"@ : @A /@= :#  N`  @yN 2N @& .  8 N? . & N? ."& 㿘@N`a @c@ ' ", @Ðc !#@\  @}@ 2 " @c! # @? 㾰@`@   4#\c$J --@! 2/`` @ J -"c(\@ @ `\c, !#0@ \c4@ @ @` @s,\b #p #`,#d(#l$#h/`p   "h , ` :@@d "l ,@Q @L ~2L@@M "M M \ @M  2M  @}M 2M  M 2M M - @ c8\@-@,@  `  @0L@  ` - `"I @ڐ,@,,@?,,@"`1@ &p`J %`"dh@M @/`@ @B   & @8  @ɐ,  H # ` 2 HJ`H@2H"   {2H  }2H  \" H †`"  @`cH@   `J?N N \ @N @N  N 2Nb y  "ch@~(&(@}`,,*' '@n(@j"(@a(?@\(@`2 },@Q(J ` J * cl@E*`cp@=  @;"@'J @)b   "+` :@S` 2 `ct@ `@ N  @< : @4@/} 2!`L` \2 L`L` / L` \L` / #x@Д `#|@ɔ `'J "` \J /"*  'J  2`@e 'N d ` /J \"*  'J  2`.@ے)` 2`L` \2L`L` /L` / #@ `#@x `@( @ 㿘@b@bb@" N` ` " O  O 2 O -  @ O +  @ @| @<b " "D ! #@c !#@  J` "J`b@  ` "`'J` J` 2J "& " c! #@Z  㿘@`x@bb@" N` ` " O  O 2 O -  @ O +  @ @ @<b " "D ! #@\c !#@a  J` "J`b@  ` "`'J` J` 2J "& " c! #@  㿐@#bTb@@&@B   "L ;``@d@ܐ  @֐ @Ґ@ @  J` "J`b@  ` "`'J` J` 2J "& " c! #@l  &㿐@`@ N@ "A  * :*@`` &N@ *@@O0 O 1& 1 O y & yc@ n & n c@ t& tcĔ@ f & f cȔ@ o& o `  c̐@  & cА@  &  cԐ! #@ `@P "  " "  " "  "  " "  "  " $ " (" ," 0` " ," 0" , " 0㿠@ d`@  "  c   2@]" &  "`" @A㿠@ `@     "  @+ 2  &   @@  @& , @& 0"` "`"`@?   6   ("  "  "    `??h@cL@ز " ` ` &" `   ;`)       * `" #h#h `h` Ȁ@ ^H@F;`ސ @#c`@`@ c @`@|@ `c` @;`@mc@` @d J   (`@H㿠 $  *` N N`  J` `J J` "J`   㿠Ő $ *   N N`  J`".& `J J` "J`   &@?@ "  &   &  @&  "   '   @@.*` @ (`@(`@(` @ (@(` @  (`@8@ $@(` @ "   @  2  㿠.`"@*`@ *`@ *`"@*@ *`"@ *`@ :@  $ @ *` @    @"!"  2  " @ " &   & & &  "  &@@ʐ (   !   4( ((( ) ( ( 8 $(   `(     2    㿠 (  `" `4`* "@*` *` *`"@*@ *`"@*`  :  $ *   ( ">" `@   `2 "   "(* @ " &   &  & ($  `" "` 4` "  &@@"㿠@Xc@  㿠@c@  㿠   * &  @* &   `$  " "` `4"  * &  " &  $*  Y& $ "Q& & ( 2 (-  $ 8   * "@*` *` *`"@*@ *`"@*`  :  $    (  `" `4`* "@*` *` *`"@*@ *`"@*`  :  $  * @'   '  "  2 &4 @@J㿠@#`ܺ@@1Jb(@ 2 @  ` & b\' @`' ' ' `' '   @ `' @  ,'   @' @a  @[ @W@m @r  $   ' @8@s 㿐@#cl@`?@z` '?@t' @)'  " @ $  & @ @ .&@~@4㿐@b|@b0` @@ ``'` @?   K L@K` "  `K K`@"K`K`K`      ` " &``   "&``  &`&`b0@&` '` `$ +@@ ` #\`` @#`  `$ @`, @ 2 @T "` "`0@"` 㿠@`@@^`(?@@  @㼆,@@㿠@cx@`0@8@ @[?`( b0 @&`    `*` @!  @@2@ @ @ `@& $ @ @ 㿠@bd"Զ@" @(   @ "" @`2 `@   @ @ @ϐ`8  ! <@ !"! 㿠@X`@ @#! &!@ @ А@| ܔ@w @  @ @ @@ @@} @ 㿘@`L@&@B " 0 `D `,€    @W  & `@ &@ @ @ @㿐@c @'H@ "  .+ " @H@L`H@  @@ @@ @*  ?@`P@H 0  @ڐ@ؘ @| @K`\@` `\@ϔ " " " "@"@@7$ @f "`l@@`|` @n& ` @$  `@  `@? @s @` @k ` @O @@d@@ 㾰@`8@@c&   i@  @uJ -1`"0L s`\@    ``@   @4h`d  @.  `&`l  T4@``4 &`@ 44ݖ " @F?@ `X @| 㿘@b(@'H@ "@ݐt`p  @    `x+H 'H" @HF@`|  @ @T@R @N*  ?H ,€2 @@@`  @   @ @+@`  @z  @ 㿘 @w 2   &  㿘@c@`@O 2\`@\`O`  @͐ @͐@Ȑ &@Ȑ@Ð &@@&&&   @*  &` `@"  "&"Ԓ"@z&@ + " " $" (@ $ `" "`  @`& @{@y@w@u `4@ 2`  @ː & @K'` &&`4 `d `& `" " ?&@@ @ऒ`   @  @㿐@`X@  ` @ @{ @Y@m` ఘ @N  ` @L   @; @"8`2  @r?@Ȓ@28@ 㿐@b܀ @` @ @  @@`  @   @ @Ȓ@`@  @ @ `Ȓ @M @G@@`̔ И @  @ @&#\#`F㿘@ `  @  @ @   @ @ @N 㿘@c@ `ؒ @@ٔ @eӖ &@C@W`ܔ@  @8@  @   &`@@R`"  &`@A 7! 2!`@@:! ?$!@9`?@L@ @& @@=` @@ז ` @@ `"  &`@Ӑ@@ǐ@ @㿘@a'H@ ` @K @  @` @  @H8@@`  @  @@ @ @  "  @@e@  㿘@`<'H@ a @ @U  @Xa @V  @gHՒ@E@Ya   @:  @I@E @A @  "  @@@F  㿐@b'H @a @ @H @@a  @   @ܒ a @ߔ "@朗"`(`2  @ ?@a@2`(@ 㿘@a@'H@  a$ @@* @  @a( @@  @ a,@_@    a0 @@ @H@r@a4@ 8 @g@  @L &@ & @淪 C 9! 2!a<@@l! ?$!@ka@?@~@ @X "  &@@@@faH @@ aD @@ @@@;@㿘@b'H @aL @~ @ @@aPT  !X @  @H_@ϐ@a\ ` @  㿘@aL'H @ad @/ $@H(@@ah l @  @~@2@x@,@b 㿐@`D'H@  ap @ @uH  @S@gat x @H   @? @HH`(`2  @v?@̒@ 2H@  㿘@b쀦 @a| @ @$ @@a ᄘ @  @v @@a ጘ @  @ @d  " @ɐ@@ @W 㿘@T a  @2 @@ @T㿘@`Ѐ @a @ @  @{@a ᜘ @p  @ @_@sa ᤘ @T  @e @ݔ  "  @B@&@j @ϒ@ﮒ  "  @.@@V  㿠@b@a @ `a@``<€!  @ ?@D@횒   @퐒  &@ϒ 㿠@a@a@  @Ґa  @  `<€2 @쿐a  @   @K@L@G @*@/ @. a@Q@ a@G@6 㿠@`@@ ` a@} 2  @  2 aД @l 2`(a@`( 2  @ 㿘@aض @n@F @    \@. 8 X@,  @.  @ؐ l  <€2  @   @#\  @ @   @.@ ܖ !@#\ 8Tp4Pl㿘@a􀦠 @a @Z a@Ԕ a@|aܚ! @C" @?  u*  #$'\Qۖ* 㿐@&c4 @  aa @뤔 @0 @ a@@ @ &#\ #`㿐 @ @Ē" ?@) @@꽐2 @뿒 㿘@a@ a @J &@뢒   &@줐@ߒ"  &@ꛐ@A 7a 2ab@ǐa ?&a@Ɛb?@ @쳖 @ꤒ@b  @d b @F "  &@`@p@T@ꘐ@m㿘@c@ b @@ؔ @E  @Hb @F@  @U @Q @M @쿔   @,@@T 㿘@b@ b @@ꕔ @  @b @@  @ @ @  @   @@͐@ 㿐@a䀦 @ @X   @˒ b @Δ "@陒"`(`2  @?@P@鎐2`(@ꐒ 㿠 @&  @듐@G@} 㿘@`@  b$ @ @t  @wb( @u  @ b,@<    b0 @ b4@_ b8@@9 & @ז & @锖 @A 7a 2ab<@Ya ?&a@Xb@?@k @E @6@\bH @ bD @ؘ "  &@@@@*@㿘@bD @ @p  @ݐ @@ bLP  "T @   l ,Ll㿘@a` @b\ @5  @觐@b` d @  bh@蛔 bl@CbX"p @ " @?  M*  9o*e5 㿠@ߒb@bt @@ bx@@@ &  @ꨁ@ߒb @@7  @  b|  @瀑.@'?&?@# &   `"  `"     "` & `  * `" ` &`@顐@ `" "` 4@`"  "`@@E9/! 2!`@踐! ?$!@緐` @̒? @首 @痒@`$ @Y ` @=  "  & @W@g@K@珐@d ) H @.'`   `  "` &  `$ H* @`" ` &` H $ H@@X H" $ H H 2@@W)@&@@< `0@O?@  `T@E?@ b|@ |@7?@֐ @@撐9/! 2!`|@! ?$!@`@? @ @@ ` @視 ` @折  "  & @椐@洐@瘐@ܐ@豐㿠 @P @ @L @J   $   `" "` ` @~ @&   @. @_ @*㿐@V   @成@S2 @T 4@D  `@v`@:2 @A@㿐@ݔ 2 b@     @ & &$&(  @L @   @B@2 @ @ϐ㿠@ݒb@@峐 h@Ȓ `4@Œ b"@@墐 D" " " "  @岒 b"@ 2! `  㿠@ݒa@ `b@۔ b@ 㿠@ݒa|@ `b@弔 b@d5  㿠@ݔ  b @垔 2  㿘@ݒ`@ ;8`52b@} b@%@/  $#\`@姒?$``@ `" &`#\#`@ 㿘@ܒc| "@`b@7 2#\b@#\#` 㿘@ܒbȀ L@`Ib@ `b@``<€ b"@忘    &  &` ' "  @u* '`  $   @```"` &   㿠@ܒah 8@`5b@且 `b@```<€2 @䟐b  @   &  &` ' "  '`  㿠@` `X@   `  ``@ " @}c @(  ` ?w&`` &``@ۆ㌆``"          㿠@۔Ȓb@    "*`` 24@棐 & &` "+ @` 2!`@搐 &` &`` "` @w`` 2` @~ &`  &`` "`  @e` ` 㿠@^ " "  (" & ( ( 2 2 `2" (@Q2㿠@ے`b@`"4&`7 Lc# @0`"  $`" $`2 $ $" & $ $  @@o   € &  &  2 L&`&&`&`&` &`&`&`&`㿠@ڒc@c@O *@ې 4@ c !@A@+ @) @@" @幐@ @岐㿐@ڒbĴ@@7  P` ```' P'`!@奔@`@⛐ 2`@Ő $" ' $ $    @凒@ⱐ2 @⸐@z@چᜆ@`2 ``" ` $ " $ `2 `` " ` $" $ ` ` $" $ `㿠@ڔ c$ @⍔ 2`  ,€2  @ @L@ ǒ`$" &`$`$ `, " ``, `,`@$`` @&``!&``  @   㿘@`ct @c(@ "`$` 0 2 &  @ c,@& `$ &`$㿠@N`bĶ@ s+N` t'c0 @Ԑ @ c4@ɐ @  c8@⾐ `@ `2` ,€ c<#@@⡘     &㿠@ْa@@W `` @T@O & @1 cD@cb & & & & & & & & & $& (& ,& 0& 4& 8& <& @& D& H& P& T& X& \& L&` 2 ` &`! @` 2` ` 2 ` @)  @  2`` 2 `@  @  ` @   @ `  㿘  $ &  @Ԟ `"  <`2 8" <" @"``2 " 8 "``"   ,`2 " ,"`"`"` @ೞ㿠 0 " & 0 0` & 0Д  0 2 0& 0& 4㿠@ؒb<@` " @㊐  "  cH@᭔  㿘@ؒaȶ@' ?`, " ``, `,`@" `` @`0 ` ?&``," `0 2`,`,&`0`,`4" `,&`4&`,`0`   X  "   `  `68   '`,"` cL@2 `  &`@ @ᆐ@ [`,` 2'` &`@ '`0@&   @2`, &`0`0 &`4 |`,`0 2`` " `` ?&``  `€`H`!"`$ 4`0 2`,  `, `,`@2@ 㿘@גb@` @ `, "`0@ߤ`,&`,`0 "`cP@ߪ` "`` " ``/`   `` ?&`b @ 2 `L" `   L  L  L2 L 2`L#T@u`L& L`  €`` "`@X`` 2`  @F@V`X @ߔ&` 㿠@ג`̴@` `$ cX@;b "`D `"  `@""   2 `D " &`D @ 2 &`D@`\&`H`P " &`P @ @2 &`P`( "`,`( &`(  @@`( 2`(`, " ``, `,`@$`` @&``!&`X   㿠  " @ & ? 2 \@Ṑ ? @Ა ?@ަ@㿠@֒bx@      , 2 , T@އ & , ,"  ,"  T ,"  ,"  ," @4   B "C  " <@9@۔0J` "*``@*J`'!J  `  *` "$*`J*``@*J c\@Gc`@C&  @2-@@2   @#&    J  `@&J   "@  @ &   "@  @& @  @ % |  ? 4W ,㿠  " @ &   2 \@ڐ   " ,@Ӑ ?    ,    @&  K   㿠 <& <` & @` ߔ2` `  8 @ݪ 8& 8㿘@ՒbX@  " @  " 8 @  @`@6 8 @"   " T 8& 8&@n  T&&& @ 2 @& <& @" & @&  ""      "'& < " @J(&  '  @= cd@L@@& (&  㿠@ <   <``"      ːch  "02` @ @t`&` 2` @ @d` &`$  N` ". &N  " @@2ܰ  . * &   $ ``@6 ?c  `@ K ` ` &`  " . ' &  2   &  .@ " .  & .`# &` 6U ``@ &`N   $G ``@6B ?# `@ J`  &`.``  `@ J 2 `&`  &   &  2 .  2 .     & 6  `` &` ch@T@  "9`    *`N:`  & 6(` 'f& `"@ &````@ J` *`:` `"`&``` `@ J` *`:` 2```@2 ` & < < & @$ 㿠@`@ `@c @ :%.?#>`` `Aocl`*`"LO gO  "O   &_& O 2O  2 `T  % $  M&  `H F$O  "O   &;& O 27` 4`O  "O   &)& O 2%` "` "O   && O 2O  "`   `$$`cl@s`  `%㿘&`'  <    '  Q 2 `&`?㿘  @' & ?  2 \@ ? " @ ?$  =&  * & 4!``"2`( ` 2 `` 7&`Z ` &`? ? 7&`㿠  " @ & ? 2 \@Ԑ ? @͐ ?@㿠 $  =&   * && &2 "2 (   2  7& " 2 ?ߒ  7& 㿠^6`?@?`   @'T@@@`@J? "'`@@'㿘5?@ϐ@F@Ȓ    &% $J? "' @*㿠  " @1 & ? 2 \@) ? " @" ?$"  5& @ $ " N@  `*@&N@ " " "  <`" & < & @" <"  @"` & @" & <㿘 @&? 2\@ ?  @ސ ?F " ?  2<@ϐ ? `" 0``` "  `2`0 " , " @ 2, ,,   @&,," @ `@ܙ ?"&@ؒ ?a &   '    "    €' "@u? ?&   ?&  "  ? ?@V` &'   "    €' @>?㿘   @3 & ? " ? 2 \@$ ? " @ ?  2 <@ ?  "  0   "@ @ 2  0  "  ,   "@  2  , ` ,  ,`@ ` ` @&  ,  ,`" " @ߐ ?     ?`@?"㿠 $2   ""  @Ӑ    h   <`  ``` `2`` @$" T T@Вb P@cp@9,,@8?N  ct, @+ ,@'?cx($@ٚ, @u@(8@ل ( "  '( $PT@v (`&$$. X@i @,@?$@7  @`\`@  `\ @2`\`\  `   @'L  b#c|@ `c@ٽ`cc@ٲ 3L  b/c@ה &`c@ٔ`c@ٍ` c@لc@} "L  bc@ע c@_@`T@Y WL  eSc@~ J`c@; ``@ڀ``` c@( `c| @׈`|@` ` c@ cx @r`x@ @P (w` L  t2s` c@% 2j` `c@ ``@'`&`` c@ϐ`` c@Ő`` c@ػ`c@ش`& ` c@ة ` c@؟ ` c@ؕ c@؎ @א(`     `  ` @ 㿐@`\bX@   "A c@׶     @x $L  b! c@t  @ً 2  ' '@ Y L  bU c@O L @AN fc@@ 2N` ?&` N lc@/ 2 N` ?&`` &` N nc@  `` ?&`` &` `" ` @-   L  b `@  @&`T`T `T@$ &`T [ L  eW ` @ؔ N @ 2   &`&`6 ` "` J &`` ( J &`#` ` @͖ @ե ` "` J &``  J &` "; @Վ ($` L  t2 ` `@} 2` @֧ 2   `   `   瀧``   `   n N `'C``$@f '9``(@\  &`'.``,@P  '#``0@E  '``4@:  ' ``8@/ ` '` ! &``* &``* &`@  `< @ D@ @ bN ^`H @ ` `L @  K&`  H&` `P@  &`=&` `T@ڐ  3&` `X@А  )&` `\@Ɛ  &` ``@ռ ` &` `d h l@ե @} @y  ` @Ւ @j    `  `@p 㿠@`Pa@` ``&`P&!@?@7`@5 2`㿘@̒`l@@d  " '`"'  'b '"  D`" `" ``'` `€`2` @@Mb" 㿠@ H h`2``"  @ 2  <`"  <` < 6  X`2  a  @& X   㿠@˔ @ 2& X <`"& X <` < 6 & Xa  @ֻ& X@ֻ 㿠 D   @2   @2  @   2 2 " @l " " " "  D" & D" & H D   H @ & H  2 H㿠@ DL   2  2    2 *b@ `  `2` "```2`2  & D"@*& H D   H @ & H  2 H6㿠@`P   2 2`P 2&`P"`a @@@2㿠@ʺ`Pcl@2  2@&22&@һ !@`P&'`P&&@Ү& @ҩ &@ԋ㿠    @@  @Ɛ@㿠@ʒb$@"`p  t@ӧ J @o`r `x@o `w `wO`|@a F  @G2  ````@l  2 `P ",  @2   @2  @ҩ  2  J  9  `  @: @ʒ`@`  @  @`   @ O` i ` @ٔ 2O``  @ @  @  `@ӻ `@Ӷ  ` @Ӱ `(@ӫ  `,@ӥ `8@Ӡ  `D@Ӛ   `L@Ӓ `T@Ӎ  `\@Ӈ `h@ӂ "`l@| `p@w (`t@q `|@l  `@f  `@_1 `@Z,    `@R`@O!    `@G`@D   2 `@;  `@4 `@/ `@) < `@! < `@  < 2 <`@ <      " @ 2 @Ґ@ , " 0 ,  ,`"  0     " @ 2 @u@@@m@ܐ@g $@֐ O` i+`@Д 2$O`` `@   <      "@  2 `@ @ה  O` m4`@У 2-O`` `@    `@҉ `@҂  `@z `@s O` n`@m 2O`` `@ы   @х  O` o)`@Q 2"O``@Ы  @tt" `(`  @1@mt2`( O` o5`@& 2.O`` `@D   , " 0 ,  ,`"  0 "    "@  2 `@. @#  O` q$`@ 2O`` `@     ``@  O` r.`@ɔ 2'O``@#  @t"  `` `(`  @Ѥ@t2  O` r `@ϙ 2O`` a@з  a @϶ $@Ы  O` ta@w 2O`` a @Е    @Ў  O` w.a@Z 'a@ϴ  @}t"$  `` `(`  @5@qt2  a!! @O  㿘@ǐ&`T @J @2 @N aOa,@ 2HN a0 !4@   a8@ 2   a<@   @ϐ `P&'`P&&& @ @Đ &@Ц !@ a@ !D@  N dvaH@ί 2oN aL !P@  @) 2   aT !X@ϲ    `P`  ` ` ` a\ !`@ϖ  `P@2`P`'`P       2  2`ad@``& !@O@G`@E N l2ah@7 2+N al !p@Q  `P"c at!x  "@@ 2  N r/a|@ ( a !@  `P!`"'`P`@@`@2`'`P a!!@  a$  !(@㿠@ŒbĤ @ 2 `\ "\@@ܐa@ ᘘ @@   "`@@Ȑa@ ᠘ @@     ` @ @"`"   M ""  `  @  ? &`T@J (`T " " " " " " " "  `' " &`\&\@ 㿠@Ŧ ` @       $   2    2g  ?"    @4  L s<i S `` ` "@&  @&   2 j`2 !Ē @ 2 !@!Ē @ @  E2 !@є!Ē @ @Ϻ  " @@@*a!@ `@ϡ  " @̩@А@a!@ `, @F  &@A@Ȑ@͈@u`@o@ "@ϛ "  &@̮@@`@͜ @ސ@̯@͈ 㿠@Ē`쀦 P@     "        @"    "         "   `0 @ "   " aĔ@ @   @" @  `" "` 4 @>  " \ " \@㿘@Òc@   @Pa@ &  &@,@7 aи@˿ aԐ! !@@  &a ,@@Ί2 `" $` 4O @ِ  a! !@@ ,@@` a @@̦ @Δ@Րa! !@˰@̑ a̐ @( 㿘@Ò`؀ @a @  @˟@ @|  @ˍa! !@n @h  @;@|b! "@W 㿘@’c@  b @  @O@ƒ @ b  !"@!@ @%@ ?@ @˚ @ސ@b! "@@ے ?@ &@g `" $` 4 @ɐ @@Ր@ˮ @˶ 㿘@’a@ @b(@ˉ@     / b @-@@ʤ @ʸb  @!"$@ʙ@  @ʩ@ 2   @ʂb, @!"0@|@ #@3'*` @ʆb@J @ `  @  @ʆ!"4@%@  @Lb8 @!"<@F@ @@!@"@$@Ő 4 "4@ʹ@; @  &@ʤ @@)b@@! "D@@@   @  L? "&@@В 㿘@a@bH! "L@ʞ  @] @  : @U  L s  bP@S  c( c  bT@F  e  e  bX@8   b\ ! "`@S @j? @S@ʔbd! "h@; x@`@ bl !"p@#  @ @@tؒؐ@b  㿠@c\ @bt @ɴ  @@@˸  @˖  @ȵ`$  ` J? 2 ` *? @bP@6* & G @˃ @@,,@ϔ ,@?, @j  @,,,@˻ ,@+, @V $  @b 2  & bx! "|@t p@`耦 @b @  @ȣ@ @\ 2 @ɩԒԐ@ȗ  @`0@ 2 bJ -+ @- 2,`` @  J -" b@  `b! "@  b! "@ .J &  J   & .& ,` &@    @@ʯ "H  @ )1@Q,  ,@@Q,@Ԑ ,@D,@s@@,@b @ȣ @{@i`` ` J? ` *? x`*@ p@a@ @b @-  @ǹ@12  @Ǔ @ǧb !"@Lj @c  2 @ȪԒԐ@ǘ  㿐@&`4 @`!'b @ȏ    J |" `@B/ @  @5?     b   @@ @  @ɩ@@۔  b! "@ 㿐@Ӑ  @$ 2 @Ӑ@ƕ㿘@#b@b @@p 4@ƅ b!#8@0 2& b@t& 㿠@#aD@bȐ @Ƴ@  ,@{㿈@ `Ԁ 0@ @y @w@Ƿ@@\bԖ#d#\#`!"̒!"@q@?@@k@i @ 㿠     @J @㿘@c@     'bج O` -w@  `@Ob @ bܐ @ b@ `@1b @ b@ `@ b@  b @Ʒ b@ƴ    `@& b @Ɵ c! #@Ɠ    c @ƅ @6T#\-``&@2M#\-`c@ȥ   )@3 @3@. @&!&#<@ȍ@+@) !#@@ @z @@>@0  c !#!#@! 㿐@c&@ ~z @S@ː2   @- @Ac$ !#(@" @3@ǫ2  ?@  @!c, !#0@   -'c4  #@s 2+   "    @ł     &@c  @E 㿠@#aL@@ @Ǻ"  , 4 @& @Δ ? #@  cD @X@ 㿘5?#'H @Ǎ' H @Dž'@{'H@ H @r' 㿘@c@&b@N` ` 4 N` a r w   N`#N` &!N` +  N` 2 ذ N`   "а?!#H! #L@?@  "?cP@,@)cT@$?    L`R cX@ĺ `W ?e `W c\@ĭ `R ? W `R c`@ğ `A ? I `A cd@đ `C <&`C ch@Ą `E0!`E cl@x `N$$`N cp@l `N(`N ct@` `T  `Tcx@T  "`@`& c|!# !#@6@?@  "?c !#@"?x@#c@@p ,@Ù& ,@ , ,@Ñ ,@Ê?,@@?b@ @=c! #@]`c!@2@4@"c! #@B`@ @Ԑ6/@@ŗ@c! #@í&`@Ņ @X @  cܔ@™ @@f& @,`,@],@&  @@`@܆@ `㿠@`@b@Ŝ @ŝc@§ 㿀@#`4@@ " @@ '`@`'`'`  '`'`@k@" !@`@  q#@@`@㿠@#c8@c  @ÿ   q@ú@@㿀@#!b@# @à     @"  @`` ?&`㾰@b @@! @ @ " @ @  ! q#@b     "9    ,c  " $            D    " @ @V  c @ @F c @¨ c@ǐ?@`@   %mc̀ < "T e @‡ @ߐ@a @  c  F"` @Y @Ő@G @ c   " *"  @ @©@+ @ c  "` @ @@ & @x @‡ c㿠@ b @  6c܀  "( .  & @     & &  @)   &   cc cc㿠@`@b( 2@  &b\"` "`"`"` @ @. `"` `" &`@ " " bH" & & @\㿠@  cԀ @c@@  `  ` @& `@ԑ.` "` ``"&@Ð " " " & bH& 㿠@bH ` @ @"`` & & 㿘@`bd @c@bH` @ @"`` @i" @*㿠@`a @c@wbH` @ @"``     $. * @@, . @' @G' . & &  ' @ 㿠@bH ` @ @w `  .  && 㿠@bH ` @ @R"`` & 㿘@#d`c@ c@@bH` @@ @+b(@"\@```& & '` #\f) - "  $ "  `@" @ "     "   @ $& `@&' "$ "  * *` @`" "` 4` /  "`@`" ""`" 4` $\d- " ` @ "&\\'`* #`@G*  - @Œ) - "  % "  `@" @; "     "   @ %& `&' $  *`*  @* $\d- " ` @ "&\'``'`@'`@ǐ 㿠     "`" `@0 &@@㿠@ cH@   @ő.`  "` ` `"& @ " " " &`bH&` 㿈@` `b@ `'`@ b@J`@  `@*J`@z,d c @"(@"\@#\@;M@$@w@V 쀢  @.@' 2@`&" `" " " " " $@ `" % `` ` "`" ``@n&`@#@ " "  " " $  "$ @$bH@$  H   @/   &  @e@t   `& `@&@ &     @K`@\`*  ` @&" @ɐ 2$, , $& 8@&b @,@ @UX@S@Q  J   O`O`   ` @İ @  2#`` !  @ #`c ^"@   % `M  "MM@I M`M`  "M`M`@= 2  M `M@g``? ) (``O` "#``"`2`O` "` #\``! ! @;O ` `"``` @e ``": ``2```O`  ` !  $@"  X?@JXX@e 2DX@, @?J l2 JJ i2JJ b"Jb@  `  J _ J J _"  X@`( @ذ " @M @XN $b@  @ "N@g * < .N  @ "@i * < .N 2 @?@ X`, @?@X`0 @@  `4 @n c !  d@@) @)@$ $`@`\@ $``@X$`$`  $`& @n "`` ` `8`! <!  @@-A  % @" @~`D  @-@p`L  @#`H  @ @U` `P @4@ " " `T! h@)@~X@|@z@x,c ! @ 㿠@bc@@  2   2  @  <  2 c@ !  d@/@@r @o $``@m, @h $`@J`$` $`  $`' `X @@@T " " `\@! h@@㿠@a@```# "> @c @2@/@Y  @  4@H  8@} @H@; @  @ D@1 2 㿠   @ 2 㿠@cc@   & @ @ @ݐ 2 㻰@#c@t @@X`@     ' `J -`& `& l`@@ @ @@, @ `` @ @) ` $ $ @ @ `@Ӑ `(@Д? ?@ X@ǔ `@J ɀ @ "â \@ ` @ @?l@  @ @V  " p@?  " |@ޒ?  " @ @  <`  @ #`@ @v @s @p   @m @@e@a @ ` ``@U `@SV@, Q' @" ഀ`H ഐ@c @|    @ @) @& @# @  @ @3@ฐ@   @  @"z`x @༐@ p   "  % @ߐ "  $@Ր "  $@ːp@@@X 㿠@a`|@ !"t@ &  T` T`  㿠@a @@ܐ TP`" T@@А #\`  `@  `" T&`&`&`&`  P&` T&` T   T  &`&`&`&`&` &`$&`(& P& T 㿠 P& P& T!  " $@ @ & $ $!@!&! T"`" T P`" & T`2&@#&@ c@@   T 2 N``'@9'N`  @` @@  #\#` @*" J` 2@€ @`@  @@  `x@` &`@| ԰@|@w &  @Y& & & &  @ ` & H \& L& P& T@z& X @w & & & & ``D`" @@ D  @ ` @@ ?@`?@DD@ D?@@ ``倦@D@,@' & @  @@D㿠 L@ T  P & P  "(&    `@€ "& @D& @E   @ L@< @: \ X 2 P@ & P㿐@c L@@zF`@@i   @@ʐ @`@@W   @@ @  @Z@Ē  `@@ϖ @" `@@Ö @   @9@       `@€  @ @& "  \ @@2  \@  @ِ@2 @@n  Ā "  Ȁ     @Y ȴ`& @Q & & &  "&   @& & & H㿠@: @8 @6㿈@`@@``Ā `Ȁ    `@`ȶ`&`@`'`Đ'`'`#\#`@h""5@! 0``Ā`  @ߐ '`Đ '`'``̀ `̱* `ȷ* @Б. @P`@`'`'`@ɐ@Đ @`ȓ* `" `Ȑ '`ȁ @`  @  㿠`2`@I`Ȁ   `?@E@2 `ȸ &`  㾨@b@@ `"@w  @Ր`?@  #\#`@Ӗ""  @`  @  % \􀦀@`  @  @ #\ ``@  @a褐t!`\! @J \  Ȁ    @:  ` Ȁ&` `?`€ @I`  @C  @?@  `ؔ @ @? @ @%  @% " `0" $`0@褐2 x@b`@@B#\#`@""  \@`  @  @䐐&a`\ ``  @ `€  `$@ѐ@䐐2 @@ᬞ@ $  $$" ``@㿠@  0   @    2  2  "0# @@`@@!㾠  @\ \2 \ T "  T \\L``:`L``:2L```:2M``M``:"`M``' '`" &` "  @{,M`  M` M :2 M :2 M :2MM :"MM 2MM %  M :M :,"$ '`,@G&` ,@? ,@8, (  @ € @  @v @   @, @,   @ €  2 M 2 M$,'`@&` ~  ( &`M :2&`&`&`" $L` 2$2 $,@'` 㿈@#\#``<@@q" @@R`  @L  㿈@#\c|#`@@B     "``" `  € \2 `` @8@ `  @  㿈@#\bX#`@@     "``" `  € 2 `` @@a  @  㿈@`?  (  ` `` ``H쀤@E?  , @`  @€  $<  " `  \€"``в` $`Р 2'@/ @. / @쀧@"@'@``@2° 쀧@@㿠@c@@bt`  €"` `   @` `H  ` `P 2 `€"`  "& `P 2 & 4Pl0Lh㿘@P a   @q a   @g"` @?#0  e*`@ @ @c[@T@YM@|F@ϖ?@&8@w1@*@ٖ#@_@@ٖ@#@W㾸@`@@ @-  a @Ҕ  "  @; @Oa  @0  @(!  @; J :(L  :( ?@r (a  @j (@f?( @  @ڒ" @   ?@7 @@ː2 @͒@G( 㿘@a@ a$ @V @J n/ - a(@b $ N` ` ` 2J  J ` " J `i2  @ 8 a, @F  @  @ a0?@@*a4?@@!@@@?a8@@`@ @ @N 㿠@c􀦠 @ @ܖ  @@ @Ia<?@k @@?@d 㿠@cL @a@ @ *   @8  @k ` @& @/` @!aD H @     @  "@@"  @Ұ  &   h@a䀦 @aL @V " @ @o ' ̐ @ @ &@ @Ȓ"  &@ aP  @a`̐@ɔ?@Ӑ㿠@`l@@  aT @   @~aX@4   `  @S @@/ @/`@W  @ `&  㿠@  a\  @   @( @e  &  㿠@bX@  a` @r   @J `- ad@   /  @ @%  &  h@aL @ah @0 ["@ @al p @  @і @ < @w   @  ` @&   `"  1'`@K 'ȒȐ @9'̴@{" & 4`@6`"  '`@/ at  @ `Ȑ@t?@~㿠@c @ax @ @3@ @&a| ဘ @  @` @@8@@0 㿘@b@@'#-" 2@̐ @a መ @    " @?`@}` a @0 㿠@ a  @  @N `""  J `2 "  #J `:2" (" J?`:2" "  J `:"  J `:"" :J  " @Z@~ 㿠@ a  @ʔ  @VJ `J`2`"`N `:2& N?`:2&  8N  @@C? 㿠@bȀ$@ @$ J  -a@    a@      `a @m `, $, @ @Ӑ@ @ @( @@ 㿠   " &    X"`" X X` P`@G@І "`  t@"` 㿈@`t` @`` @  " #\#`@s "  @ X`" X@ '  H'  ' ' " &` "&`@&`bt&`  㿠@cD @a @  `H     P`2 2 @ b\@ & & @ & @'  *& 㿠@#bp@a  $`!!@ $$ !!@> @@ `㿠@aa@ @_ " " a"  ` " "` @H@   2 2 2 ! @ ` @7 2㿠@`a@ xa`&  `2 " " "`" ` ` &  `2" " "  `2  & " " `&  "`"  `"" 㿠@cda@ 1a  22   &  &&@    㿠@ba@@ @/  @-  a?@"?`8&"/&ƀ ")&`2`&` "&``&` @"  @2 " `"&``@"&`@^ 2 㿠@aa@ a 㿠@`a@ a " 㿠@`Pa@@ la@ `"   &    2    6   "  "  "  `  `@ @ 㿠@c`a@  /@d  @b  a 2  " `   "D @z N` &&&& &   "   € 2 &  @U&'  ` "` ``€` `2`@= 2 `  @;   &` & &㿠@aXa@@  a@` `  @&`   @ג  &`&`` "` "` ``€?` `2`` "` ``€?` `2`@ߐ  @ِ @ 2  @Ȑ &@Đ& &㿠@#cİ@a  $`!"@b@[b@WbD@Sb@ObH@Kb@G@Ɛ b\$  , 㿠@ba@`  !"@b\@ &`@ (@ `㿠@_㿘@ba@@ b @`,€"@ `0`2" 㿐@apa@ _b@"   ?@@? " @z2  㿠@`a@@ /b@ ,€  ` @ 2 @㿠@`b(@@ 2@u &b\& @ & & & @p@ct@в" .`"* @* @̐ @Ĕ  &``d&&b( "`㿠@bܲ@@   @b(@ & " 㿠@bdb(@  2@ &b\&  & & & ``2 & `@ `@n& $  @` *&   €㿠   `"  &`   @`"  &` 㿠@ ` b\   @"& @; & 㿠@`b(@ 2@` &b\&  &  & & & 2 & "& @k㿠@  cԀ @a@@    @ ` & b& 㿠@"`&@ "`@"` (@` `b@ `'`@  b@O  ` "@* :`/@`` @&O/@O 0O  1 1O  y  y a @n  nt  n a @a  tg t a @T  fZ  f a @G  oM oaԐ@7 = a @- G 3 @A쀢>  :b@J  ` "  '쀢 J  2@b D 3 " &` "&`@&`b&`  aܐ@  @b@3@W? 㿠@   02 1*`:`* * &  & 㿠@'D'Hbb(@@ 2@  &b\& @ & & "& & DH& & @& @㿠@'H'La  @a@@@D" H "H@H& b& @& 㿠@\b ` @``&& @#``&& @ Ԇ"`"`@"` (@` ``@ `'`@b@/& 3` ` `"P ;``@#d  :b@J  ` "  ' J  2@`"# a@ @[@,@P? " &` "&`@;``&`b&` &` 㿀  @s @@ & @ & 㿠@bdb(@ 2@  &b\&  & & "D& & & & 㿠@  aȀ @a@@9" &  "& @& bD& 㿠@8bD ` @ @""```& @Ȇ "`D@"` 0@` `` @`'`@b" O "@  @`" O``O` ` @`2`O` - `@ O` + `@ @ Cb ``" "\ !@^@/@S?a!@R   :b@J  ` "  ' J  2@ "  a@ @@@? " &`  "&` @&`bD &` 㿀@ @m & @O & 㿠@ab(@ 2@ &b\&  & & "D& & & & @؞㿠@  `؀ @a@E@" &  "& @& bD& 㿠@HbD ` @`& `& `"  ``" @?  `$ x@#c@@#\bL`@ `2 M`'``  `M`@\`%`2M   =`$@"N @ `$'`` `@``[@n'`2/ ```\ `@x* < -`-`@ ܠb\@@ܐ@ &`'  - '`' 㿠@E&  @ &J ]2%  &  &@J   $  `$   @  @' !& .! 㿘@#`@@$bL@  M``2 -&  -%`@ M  "M`{}M` \2M`-%&& ,M`   @ْ* < -$ @M`@ϒ $M`2 M`&  M`-`" ' $M`퀥2M`b  @B&`& 㿠  "  6@  $@)   $&   "& @ & " &  & 㿘@b@@&b@ N 2 N \2 N N   2 N "  @z "2) N {$  N \2 N @HN \N }2N  '` {`S`2  b@ N [  @Ԕ "@ N N \2 N N  "5& @N $ @q"& N N ;N  2& N ]&  N "&  &㿘N "=& N \@א.N N [ N  ]"%`   @J "! J  ] `N N $ @J " N   N 2N & J @⬆  {J  }"4@ "1`H`}",@ 2`@J @ `  2J  _2HH  H _"H`(   )z 㿘@b@  ' N  "NN 'N  2NN #! N \2N @"NN "NN@W  J  ]2N2N@N``@ {!`N`` }O`  `O` }2O`b@j "} & a`b@ O` ` @`2 O`O``_"O`O``:@O``:2`O``:@`O``:2O``O``:` &"O` (-$'''"` ' ) @s' '@dX db@ X@  &@ 쀦&N`"@.`.`  $ @t㿠N  @] J @ 㿘@˒`   J @ @\` @`>"N` @2;N`N` ` = "@   2 @ b(@b,@@Ib @! "$@4@ d J"`@^FN` 2,  "bD@! "H@@ ,@ @@, b4@b8@@Hb0#\@!"<@#`!"@@@ ` "`㿠@b@  @ `" b` " $ 㿘@bDb@@ &  @f @? b@ 2 b @ "` &@u  2 㻈@al@L   `? #@+ ? w @ `4@e h` :  "a`P@^ ` "T :` T@P`XԐ@ E `@ ` ">`@ `@ ``d@ `p`@& )` ` @ "!`:`@ΐ <`@̐ ``@n ``@  ` "``@ `&.  @ % @#萐"   *@ޔ @#萐    @ `А@͖  @ `  `@ @@b'P@## ''' '''''#' #2'`\ 2"`@  ?# ' '# # ' L > 2 <"' >_ |2L  &" M 2# $2 #bX@  # "'@  2'L  <  ''L  2  ',b\!"`@0 #\#`#d     '##L   > 2M! # M &2 䀢 @' 쀢 "'쀤@ '@耢  '耤@ '#\#`#d m i' ">䀢 "@' "2'/L  >2+ ###L   >2!# #䀢 "@i' '#\#`#d .", " 6*"* &' $'`$ `&' >@2 '@bd@g  '( @  @bh@N '@s " @ ' " ' $ @  @|bl@& '@L  `@ǒ  ' '耤`$\  @̒ 2\@Wbp@ " @'  @  '@@* # $P /  #@@'@@ j  J |2` J  /` J  &2 ` J  ` `@& /`@&'@q 4 #\'@@i 21@1 `" #" @"@H'` `@`@< `'fP@ǐbt@q  "@&` `@`@ `" @"@ "  "@ &  " \ "\@ & \ "  "\@ &  ?    ? @ `& @?#" @  "@쀢 "@䀢 "@㿐@c @'''  #\ #\@7$  `bx !"|@&``" 2b !"@`@{2$b @``$@d@r "@M "@G  @A㿘@#a4@@u  @@@; ' @   @ 2#\ b#`!" !"@S @#`h@@B   b@"@    @ $ @ 2  "   怤 D4^ 䀤 "5@((@?(@(@ (@? b( @@@(@(  @F 2h b@9@ @ג  @@@  2J b@@ @@ b @@"0 b @@ @ " 2#\ #`b@!"@!"@@ p@a@b! "@f L @.`f;bȔ@. 3`i $K    ܟ"B @R  "@  $@  @[ @  2@` @& `itb̔@ m`nb! "@  @M    ܟ 2  @`` `  @d  ``2` @+`  @`` @ @ @ '``@s 2 `'`&`'`' @@ '``@b `n6bؔ@~ /`p b! "@  @"  ` 2 `   ؀ @Q@2  `p<b@G 5`rb! "@^  ܟ "M  ` "H  @` @ " @> `rLb@  E`u'J - b@'    `  ,`` @\  `,`b! "@ @` @B  `u<c@ 5`v  䀢 "װ  @*   䀢 "@ J &  @@ &  @o c! #@ `v3c @ ,`v` )`v c !#@ @ 2 @ 2  @ @ԒԐ@є  `v0c@L )`v` &`v c! # @c  ܟ "U   `"P `@$``2` `v24#\c$@ 2+#\`*(#\ c( !#,@1 @u 2% @o 2 @ @}ВԐ@k  c0!#4 !#8!#<@㿘    @Đ " " &`  㿐 @"  "@  &@  @ @ 2@@ې2 @ܐ 䀤 @ 㿠@b@b@N` ` !N` `J 2J . !J 2JJ .! #@! #D@   K   "H`K .) K ) "0  K K .) H`H`.(H`("0` H`H`.(K "H` H` H`"Ä `   $   ""  ?xP8H8H`h hX P(H`(@08@HH( `HHxHH Hp(0H@8H0XHHP0XpHHHHHHHHHHHHHHHHHHHHhx@HHHHHHHHp㿠@ap@@?cH"| "  *  <<ȁ<Ё<܁<<== == =(=0=8=@=H=P=X=`=h=p=x======ȁ=Ё=؁====> >> >(>0>4><>D>L>X>`>h>p>x>>>>>>>>>́>܁>>????? ?(?0?8?@?H?P?X?`?h?p?|????????ā?Ё?؁???    ( 8 D L T \ d p        ā ́ ԁ ܁   h d`$ D|H < t | @  $@ x l (L X\ l l 8L , ( l l l l l Pt 0lXD l l l 0  ` l l l l l l l l l l l l l l l l l l l l h x  4 <dp l l l l l l l l T P,8T 㿠@c @@?a@& `5*`@@cLcPcTcXc\c`cdchclcpctcxc|cccccccccccccccccccccccccccccccc```` ````` `$`(`,`0`4`8`<`@`D`H`L`P`T`X`\```d`h`l`p`t`x`|````````````````````````````````aaab @ Px0Xh8pH(`@㿠@a|@@?a c\@& `C*`@@ȁЁ؁  (08@HPX`hpxࠁଁก Px0Xh8pH(`@㿠@c@@?ac\@& `C*`@@ԁ (HTtँ༁ā 4Ld|ᔁᨁḁЁ㿠@bHa@`  !!$@ $ a$ &`㿠@a@a!$ `   ``@& "`@2'` ! !(@@C a$$  &`, @7, , a$@ @< $ , &`a$*  `@"  """ ` &` @T!$ `B  @    & 7 #`!  `-  "  + ($  @"      ` @@@Ҟ@؞㿠@$@ a@     &`  ! @@ && ` "@@@@㾠@a@ 'a, @Z  @#\ "@#`"2@a0 !!4@ `2`@a8 !!<@ " J` :2 @a@ !!D@  $  @@   @& "  " " " " " " @@A$$䀢    ܐ@/  o`J j@` 2@  J` (J` (2 ` J 2J )`@(#\ aX!!\!!`@@ J` 2J`@` $$%`" $%`%`%`%` %`%`  ܒ@= %`` `$ %`ܐ`@l @ &"@@ސaP !!T@A @z@ϐ-  @aH!!L@0 @`"  @?ad @?!@ !Ԑ!!ؖ#@Ib@$@@  " & 4@{  $ ` `"  "`@i @" 2@ @ 㿘@ T` @   N` T N` #`@ "? &4b@N` ` @p "?'@''`'   & T  22&ah! !l@?X@b@@@?   * ap @q `T &`T@  @ @$  &@ 2 &`Tat@`@?&`T㿠@#a\ @@  !@"  @Ԟ  "` P@`@ @*  @?$` `` `" &.'@@@`  @Z @V@l @q /  @ "  #$   "  b\  @" @        @b( $ " `&@@@Ð@b@ P@"b@T 2   @2 `  "  @$  ?b@ &`P!x2@!| 2@"a@ @a@ `%` €%`"  HaP@2! 2@a@ @`@?  $ @C,   @ "'܁''''  " "` "` "`"` "`"`"` "` ` 2"`  %  m a @#` ^ S@ L a @7`  ,`@]%  `"  ?G%$ % % ` " % % `" ` $ @$ ( @`@1 @Ea᠘@ @ #\a@"@  a@@ a@@  @  @a@ ᬘ @@ u a@"@ "@ &&%`\a@w@   @  &@@e` @& a@[@ @\%`\  ' @  " '    @I 1  @*a@ @~`@?  @ʐ@a?@@   @@aĔ?@@  @ԐT@)  `"  `@㿠 "   "`" `4 @T    "``" @C@`2@㿠@ \c@ #&`\`d  `daa@ a &a``  aД  @``a &a㿠@bж@`  @b( 2@` &b\& `& & & `& & @`& @  ,& @ 㿠@  à @a@@:@`b\ &  & @Q& @  *&  " &   "&  @& 㿠@ `耢 @a@Jb @" @ @$& @`  " &  @ @& & &    b\  @ *㿠@ c @a@ b @@|@  / @͐  @P&   * 㿠@'H'Lc'P'T'X @a@@b @@" @> H  L@ (  H  .@H @  J" J*`J`J`2*`& 㿠@ a @  2   @     @b@&   "&  & & @`"`@"`  @ਆ \@`" " 㿠@#`P@a  $`!"P$ !"L$ !"@$ !!$ !"D$ !"H$ !"T!"X@!"\@ 㿠@#c!@"T !"X@a$ 㿘@c(a@ @ @@#' * $, , &, $@,`, @' !В"@   " '   ' ' bP'  `"  ' !   @ @2  @ 2 ' !" " @6? @ဆ@  2 !@ ` @F㿘@̀`  bH ``2 '` `bL `'&'&a  @  "  ' " ' 6 "`'Вb@ ' ''@ 㿘@c`=@a` 6@Ր` " `' " ' 6 "`'Вb@ ' 6''  bL `  " @ b` " @Ȓ 㿘@` a bL "`bP  @`! 4  2       "`  @@}`2  7  㿘@aa@ B@P " " b@ `" " bD `H ""``" "`'@R'㿠@`bH@)  @2! @2 @' `&'  `@2 `@" bD"  2 㿘@~cbH@`  "@   " `"` @,` &`` 2 bD"   @@ؐ`"` < ` '@' P@~bԠ@ a @  !@ " " b"d@'"p'''''@ @@ b@J  ` Vؐ@|  "؁  '@؁ @] `" @ @R &@4'`@ @Ēܺ@B &@$ "  & @a & `" "h@Y& b&&` @[ !Ԙ " @  b "@;  Ԁ  S "   b @ݔ @h  &@. @_ܲ@ 2 @   "  & @  @ "h@@  b @ @ `" @ @ &@w'`@֒ @ܺ@ &@g "  & @ΐa & `" & &&"h@b` @K b "C 2 @@U2  b$ @, @ @& b(",@_   @, b0b4@  㿘@}Pb8 @  "` @  @" J``2   "   @  2  㿠@| c@ @2  "  `" ``2` "` @@  b<@@J@@!@ @㿠  @2   "  @"   @2  " @ @㿠@| bd @ &  @ "h@@@@  2 @@|aд@@  @ b@N`@ `   M 2 2M  {2M    "  \" M   g e "d`  ^ "]`  { U "[ \"K  { }" ` `" `%`2 % b@M @ `  " M    J  *"!"t@@@\  @Ð$ E`2C 2@ _%"; % Xb@M @ ` N "g M   4 4J  *4!"x"@!"|@@4@   *OM ` "5 b @@  "( b @@ %:&b@M @ ` " & M 2 &' `2'` 㿘 N` \@0* < .$ @& . &`N`.㿐@{'HN``@  b@ N` `N` 2N`H/`&@@@ @HH L G@ HH@z#\H$@3%J 2@&@  @_- `@_ H`J 2H-`@Ԑ " b @C @ǐ-`&@ && ?@:㿘@z   b @ N {" N " JO` $  + ) "9 8` "  "0 /` \ $ ; ["% $` \ { }"`<`  `" O`  @9" @  `@2O`'@ &*    ?@㿠  @( ` {. N *   2N  }*  s/ N {  \. { ."e/  f \ v t r nN $   H "?/ 7N E "5/ 0N 6 ! "" / 'N ] [ $ ;"/ N [ \"/ N ] { }" ` N /  N `"N /  N /  /  /   / /   / /  / /   2N / ' {. }.. P @.    @  `&@s  `@`,@@ ```&`@,`,@c㿠@ya@@    @C  @&@8 * 9 b@   @L   L  2@J? ` @` &$J? \$ @@,  &@@"/`/㿘@xc@   @ ` ' @T "  $ @ &@`" @Ð  \* S b@   @ ` ' @'`$J  "" ' J  2 @ J?  `&"`J? \""`' 4 `@  ,    &@",' ,b(` 2`@`` &`b\&  & & & & & 㿠J `N``2J J `*"J  `*a J `?"V J `[2AJ  J `]"q J `"m N`J "%J J `-2 J  "` N`J 4N`N`@ 6J N`J & N`@ $ J   J `]2J  `]" J `""  J `]2J  `\2 N` J `2N` J    J ``2N`N`J   @  2 N` " `@ "N` N` " 㿠@wb @` .!!& & 2& @ $!@ &  & & & @z `& `" ` "@@ @ ` $C``"  #&`` " ` b\ `@"` @w``  `   `  @b( &`" b(` 2`@```&`b\"  `" " "  `" &   b\ `@@=`b\ &`&`` " &` `   "&` `  @&` 㿠 J 2 @v  @p @l@ @  㿠@v & c`@ &`" & 4$  "  b\ @" @~       @b( &"   !  " @  @& @~ & !& .!㿠@v b@J "  ` $C``"  #&`` " ` b\ `@"` @~``  `   `  @b( &`" b(` 2`@~```&`b\"  `" " "  `" & #  b\ `@@~[`b\ &`&`` " &` `   "&` `  @&`  @~8  b\ &&  @~) &@~ *&  !  " @  @& @~ & !& .! 㿠'H'L'P'T'X J @~]  @~W @~S@~i @~n   L@}` `h@hpJ  pl@&H@_H`Lhp @@}p@&p  `2h㿘 J @~  @~  @~@~ @~! @ h   h pJ@ `2  p p  l & h p @ h p@ h   p  & p .@ p@& p㿠 h @"  l!@}m h& h& l@}] & p  p pJ " p@}S & p p l@  d*  @}C@&  h "& h@}I h& h & l h @ h@ @}~ h& 㿠@u `@ "   " @  @& @} &  ` $C``"  #&`` " ` b\ `@"` @}``  `   `  @b( &`" b(` 2`@}V```&`b\"  `" " "  `" &   b\ `@@|`b\ &`&`` " &` `   "&` `  @&` 㿠@t b|` B@`"  #&`` " ` b\ `@"` @|``  `   `  @b( &`" b(` 2`@|```&`b\"  `" " "  `" #& `  b\ `@@|V`b\ &`&`` " &` `   "&` `  @&` @|!& .!! ?&!㿠@t'H'L'P`'T@'X Lb @@|B! &!㿠@t b @|? @|ט ! &!"  &@|:㿠@sc@@{ܐ  2$ @} t   "N`. @  t ,'`t*@ t"x""ࠖ"<t'`t'`'``  & @{ @~_@װ " `@b@|Ζ   @{`@{` ` `t"`x `"``"`"`<`t@{'`t@}d`t'`'`㿠@sa@@{l @~)@ @{@b?@@| ` ""*`"`P"㿠@} ?@} " "  " * 㿠6 @{4   & * & @{&  @{   @"& @{* &    @@: *`N`*```@*N`*` &  㿘@*     & * & @z  @{v   @"& @z &   @   .   & @ @&  㿠`&  @&& `& @z  @{E   @"& @z & &  *㿠  "& @z & &  & . 㿠@{1`` "``&  & &` !&  @|r`&` @{ `&`&` &`.` 㿠@r`a` @"@z}`J @z͐  @zǐ @zÐ@zْ @zޔ @zX&` "#` "@"`@zC &``@|%@`&`` &`` &`&  &`&` ``@z% &`` &``@|&.㿠@r `\@  @~: b@@zǕ?b@@z•??@q@@z㿠@qcbp@@zN`b@J  `.J   J 2J  .*  0* * 㿘@qb @@ "d !2a ",@ q@y֚  bl @@y͔ @{ bl @@yb@ @{˖b@@z   dJ bl@z@bp@b@y@  bl@@yb@@@q, J{"`"& H{@H@``"  "@J@`` "  J`\   㿠@q@b @  b @y8@x`  . @y  * @*`& N .`  -.   NN .' . `@&N㿠@pcD@N `b@ ` " J  J 2 J `+" J `-2J  J `b@ `   J  " JJ 2J . J eJ E  㿘@pb@bD` @2``& `'`O`@xO` e b@xk ' @yc" "@xb  @x & p@p#l T`#d`@" #h   #'N` J ( J 2J  J 2J )" .   rd "p  lb@xW cd  `` (@w #p 2  JN`@2 p@2  @y  2 `@&`dl   @w 4@wӒ d"  0 " @' " "   , 2 hbВ@   @{T2`m`@x`U#\ @w#` 瀦@wҐ  @w̐ @wȐ@wޒ @w Ӏ ̀hb@s ` hb@a @' " "  hbВ@F "` (. `  `` 2` ` "'`` @"l "t hbВ@ h ` 4 ? %`` ?@v%`%` @v``` 2`"R hbؒ@ F " 2.\ #` 0`" ).쀢 "/ ` @|@& " "   ? @"  ` ,`  ).2 " hbܒ@   (. @xǞ㿠@nab(@@@vr  2 @v    ' b\&@&&& && @vP &@v*& )&@vD 2 @v  ` ' &`&`&`&` &`&` `@v'`&`@v``*&`` &`@x"  & "  @" @v "     "   @ &' #`"  $ "  @" @u "     "   @ $' `2`@v4  @v. @v*@v@ @vE  `@v2 㿐@m`bȸ@  `@v    @v #` #\b@w5 2    "  " @7"":b@1   "%   "   b  b b b@] @ 㿠@m T`@ (.`    "    2     @ К " ", b@&        "   b b c@  㿘@lcX T@ @uG(.` `` "``` 2`` e` `` 0` "` ` @n@&` " $   ? @$    `" ` " @ K " ; c@2     &   b b c @  c" @p    @,  㿠@l䀦 &@vt @t   &@tM @t  c   @u<   @t1㿠@kc@  @sb(@ @tcb\`@   $ '` '`'`'`  '`'` `@s͐`'`@tL``*'`` '`@sÐ 2 @t:  ` $ & &&&  && @s`&@t%*& `)&@s 2 @t   $ &` &`&`&`  &`&` `@s}&`@s``*&`` &`@tS"  & "   @" @sj "     "   @ &$ "$`" $ 4` "   @" @sF "     "   @ $$ `"  '`@st`2`@s  @s{ @sw@s @s  `@s 㿈@j`c@  `@sj   @s^ #` #\c@@t 2  " 2""P c@"@ @   "": c @"@ @˔    " $ 4&@r& 9b(@ 2 @s   & b\$@ $$$ & $ @t0&" $ 4@r $@s\" @r͐ @r& `"  1@t&" $ 4$ "  b\@ @" @r7       @b(@ $"  $@rX # "  $@rS@rz@v"@r @q&  @v& & `" 4"1& $"*" $ 4$ "  b\@ @" @q       @b(@ $"  ? & ?& "  "    "  "$ @ ["""c$@@   " a 2a @ d㿠@i Taĸ@ (.`     "    2   "  2 `" c(" @ m  "   `"v c," @ W   "1 $ ` &"* `" '` 4$ ` " ` b\ `@"` @q``  `   `  @b( '`"   ? $   ?$     @  " `" c0@         @p  @  㿘@hc T@ @q2(.`    "    2   "   @2   ? % @p 4%  @p   ?%  2 `c4@"@ @ ` 0  "`   @ 5@ &` " "   `@" ` ` v`c8@"@ @ wi``"1`$`` $"*``" &` 4$`` " ` b\@ `@"` @p<``  `   `  @b(@ &`" ` ? $`` ?$``  "`  "`@Ț "``c<@@ `  ` `@o` ` @ ˒ 㿘@gc`@" &@rS c@@@ph?   @q @pf " `" $` 4 @o @p@p 㿘@gb@@@r   cD@p%?   @q= @p#"  " ' 4 @o @pd@q  㿘@ga8@@qЖ  cH@o?   @p @o " `" '` 4 @os @p!@q   @qJp@g#``@cL#\@p 2        `@ @ "` '`` ? '`'`'`'`   "0  ",`ܐ '` ?' @@w "  X @n' 2 X " ` @""   2 `" '` "  2  @@  "0`܀`",``" &` 4$'` " ` b\ `@"` @n{``  `   `  @b( &`" '` ` ?'``" '` b b cP@ _@ "   @nY㿐@f#``@cT #\ @o  @n  " p" "  " &     @r0㿐#`  @o#\7 p 2  2*  2& 2" X` `2` "```2`2  &`" @m`  @   2    @q㿐#`  @oP#\`     @2  @2  2     @"  2  㿠@e쀦 cX  @nX    @m &@o 2    &   㿠@e0  c\  @n(   &@o    &@n "    &@ng 㿠@e`T@ c` @m  &@o@m  &@my " & 4v @m8  $@oi 2 @l   @n bH @"  €"  M "  H$ @m `&`@`. @l- .`@m)'`@l'` .`" ` @ "&@mc'` &@ml "  " $ 4  @lː @m tD@(\0P@dach@@l`  @m< cd @m4 "     @l#`    @m#\  ``" `@?"  *`@ @ `$ @l   @l @u  `  `   @m. ܰ @l.&`` 2`@m"  `8 @lŔ   @lN @A2` @2`  '``" ``2` "`@k `L @l  " @l `  ` X @l  `  @l @k`s  `R``(``  @l C@l?@lk20 b( 2 @k   & b\$ $$$ @lJ /"  *$@k"  "$@k@kp쐐2  `  ` l @l  `  @k @kJ`  ``%``(``  @l2 @k?@k "  &@k6@k#2 ʰ ` @k   @kH @;  ` 2 &`@j2   ``2```(`  @kؔ? ` @k ܖ@k "܁  @k @j@k? u   "@ka  ܴ&؁ `А @kR   @j`"    " @j̐2 @k< `ܐ @k1  (@j= `   &`@j &``  &`@k`@j &``@j]`&``&` '`@j}   x@b`4@ T$T#` #\cl"@k   $T2\  WTU Qcp@j> I   @i(    2 J`O`2  2  @j 2 ' `@& 2W  @i 4@i &  0耢 "B @& " &:#\#`"@i " 2'` ct#x@j  ``耢 "  @& " &耢 = c|@iה   "2  "`"  `"%@+ !  c#@jc   "c#@jS   ? & ?&&` &` 㿐@m?2N  'O` ( `O` 2O`#\`O` 2`O )`.`/#\  (.` )/#\  㿘@lߐ?2#\  㿠@`b`2@` @.` "`` @i5? `@" `c@i* ` "` `@i"? `   ( `  `  @i?㿠@` c  @i^ `T D `T  ?  $;  @hܒ J @ `K` 2`@ (K`K` :2#`K :"K`#`@ ( K`K` :2#`K :2#`K` :`   )#\` & 㿐@`q c    @h #` " @i#\"Z  `@ `"  `" 6 `T "@h 2`T  "7``T  "2`N `K` 2`@(K`K` :2#`K :"K`#`@( K`K` :2#`K :2#`K` :`   #\` ` &  㿐@_b@ @h@k?  &  * c @hr  C ) ( @g  @g J # L` ( `L` 2L` `L` 2`L ) `/`, #\K/` , #\  @ 2  '   4     d & &) N`%J `(  J `2J { J `2 " J? )2{@g͐,&@,@g̒ ",  /?,{ X '$ $$ X $' ` @` '(`"(``@"( , (2`  @ ' ````@` '(`"(``@"(  (2` " $"`@gu,` ?$``" $`$$ X㿠@f "  " " " " " " " 㿘@^Nb8@ sAN ->@g 4J `-/ @g c##\#@g `     2 c#@g{  c# @gn 㿠     @f=&   2 㿐@^`@@g `  @!A " B@fM ` "'`` " '   2`  "`  2`  "` 2 @e ` "`@f& @e` "7`@e  ' @g@fO    " ' 4`@f` "  X` @e'`` 2` X " ` @""   2 ` " ` ( @` "0'` ` ",'` `" & 4$'` "  b\ @" @e       @b( &" '`'` '`` '`` ? '`` " `` ?'``" '`` @ea@e2E @e㿠@]`$a`(@ ` "#`` " '   2`  "`  2`  "` @e,`@e[ @e&` ""`   @`` "  X` @e'`` 2` X " ` @""   2 ` " `` "` @@O`` "8'` ` "4'` ``" "` 4,'``  "`` b\ @"``@d ` "``   "``  @``b( "``" '`'` '```@ '`` ? '`` &h`㿐@\bp@^@ds`  "0&  ",& " & 4$& "  b\ @" @d{       @b( &" &&  "+ ?&` ( ``   "  X @dJ& 2 X "  @""   2  & ? & @d-@da2` @db`@d$`㿠  `  `  `   ` @d> @d `` ` ` `  ` @d#` @c㿠@[cl@@dec@#@@d   cĔ@#@@d c@@d @[Ć@2    !  "@ ` !@ ` 㿠@#[b( @@g `  ? @g  b  @g  㿠@#[a&@@g ?b &?㿠@#[a@&@@g ?b &?㿠@#[`ܴ@@gq`@gr ` ` `  @gc` b c` ` `  2`` "`@c 㿠@#Zcܒ@@g9  ?2&b &@Zx @  `X@g @g  @  " 㿐@Zb@@b c@b @A  @  c@ep@Zb, @c@dQ @b| c@bz  c@e@x c @b@d( @Z@Јb@c `  `, `  `` 6`(@@Zc`  ` @ ` ``6 (@ x@fO ''' ' ``2 ``P@`@aܐ`#`@c+`@`` @c' "` @`~ l#\@c\@`vl`T @^^l@`m`2 @a`( `\@a  @``X@_ `@V  `X@b @b  "x@Vap@@ ? `  @   @b ~ @bt @b 'ܐ '?#ܐ @a @b '܀?"Cܐ@b d'=܀ `"\ '?#ؐ @a @b '܀ &'\  @b:   @b5'''܀?$ܒ@bw '܀ 6 b 2'ܲ ܀   @_\``@_ "$ @b @]ɐ " `"&  & &  @b "  @_8`d@^  㿘@Ub@ @^  6 ?.* `2 6 '@b'?2@b    @^ b"  &  㿈@UaԠ@ #\2"  " `h @]`cܒ @a&``l p@`X`  @`V` `㿈@U`@@]4 " " `t"  @]f`cܒ @a&``x | @`(`  @`&` `㿈@U`4@   #\2"  " `@  @aA `@ @]' cܔ @aI@&  x@Tcx @'@ac 1 @a @\ɐ " " " `" ؔ@\@ cܒؔ @a@&`@ @ @_  #\@a\  㿠@Tbl @     .A`  @`є ? b 2   ` .  @` ? b 2   `   @` ? b 2   ` @\e@`ْ`  @_I` @_B㿘@T`@@_  ` @]D   ` @]2  @`c c    `@]! (  @_< ``@`l `Ȕ @\  '  `Д @\  㿈@Sb#d@ @]@\#@* "@*` * &* "@*` *  А"@& $ '' $`ܒ@[`ؒ !@\p#` `* Г6`"@#\*`!   d`    %'$ '`6" \'@'  ' '`$$"``$`` !@_Ҙ 22`d@]㿐@#S`8@@]'#@\'* $', , &, $,, @!в"@'"'`'` " &?" &  6 ? & ?" &??  ??  ?   @_] @\㷠@#Rbܐ@@_N  ` ]2` "`` E@_> ;@_9 7 @Z@Z . @_.") @_,! @[ @[   @_$` @_ 2 @_   "`@[   "` 㺐@#Ra x@@[ 7< 5   "` @[      "` @^ʐ   "  @  +"3x (,@[~$? *@^ 6"  @^ x @’@^ x @x@㿠 @^'  #@^6P@^ @Y@]?   @]?@Y@]@]  @w 2  @^? @^; 㿠@^1 2 㿠@^0 @^.!,!@^, 2 @#Qa@@Z,@ZX,@Z?X@Z?,X!!d@F@Z,@ZX@#Qa@@]  b` ]2` "`` `@Y,,@Y?,! !h@@Yߐ,@YД? @Q`$@  `  x@Zw < @  x @]xm @]` @!!@!#\ @Y@` `` @Y@@]b. @Y #@Y\ @Yh?@Ya?@YZ@YT@]6ֺ @]4$@YJ`% @YD `x `  @Y,?㿠 @[   @Z   @0   @Y? 㿠   @\    @\   @X? 㿘-@\ߐ  !@\ڐ "8 8'@@\' 2 @#P`x@@Yt @XX@Yra @!!@XM@ @\?@\@X?@YYa  @!!@X4@ @Xr @\& @#Ocx@@Y4 @X@Y2a @!!@X @ @\q?@\o@W@Ya @!! @W@ @X2 @\Y& @#Obx@@X !?@Wؐ@Xa$ @!!(@W@ ,@a,p@W@p@X?& 㿘@#OaL@@W @W @WӐ@\2 @\@Wa0@!!4#\@!!8@W@ @[? @[@W@Xa< @!!@@Wx@ @[ 㿘@#O`@@W @Wt @W@[ΐ2 @WRaD!!H#\!!L@WH @[?  @W:@XTaP !!T@W/ 㿘@#Nc@@Wj  @[s  @W@X)aX !!\@W 㿠@#NbX@@Va` @W@ 㿠@Nbal@`  @V`&`ap$ 㿠@Nabl@ @Vj & 㿠@NaXal@ @VU&@[#  " @Wax! !|@Wf  㻘@N`l@` 8!p`   "`! !@X@Z$  "$  " ! !@V @Wz @W% @U@U &`@W``@@#Mcbl@,@V` @U`&`N  J` /a`J` 2J`a@Z2LaL b@9 7< L  " LL  2L :L  ,L :L 2,@VR ,$@VIL /,a @V@,@V<? @V, 2@L@V, 2:L 25L,N /2 N@Ud@U_ &`@WA`- .N /"@W' &`@UL@UI@UC &`@W%`` /,@` @W  L 2L@U,at   " ! !@W㿠@Y@Y @U̐?@U @Y`@M#\`@ J xa@@Vg <  2 N .  N \2 N .  @Yx2%O @U_` J?/*?@VAa@! !@U@`$X *?  \" O  L` L`#`%,`9<@YC6` J .` @Uǒ @UL@UE?@Vx@U ܐ אa @U-@@W2#\`,`@Y \ 㿘@W   㿠@X!? @X| `"   @X   㿀@L`̀ @ @T)@Y @X#@X͐䀦b`&@XQ?  @XQ  @XN `@T?㿘@Xݐ    @X$  @X  &  &` 㿠    @X@X 㾰@#Kc0@#\;8'D'L'P?'T'X''@W' @U5\a@Tߖ e 2 @X'' 2+ $ '@P p @T l$  @X c$ r @Xr ?Z$  @W S$c?D@T\a@T "@WS$'$  @W'쀢 -$*$@XH \b@$ D@Tΐ @T{?"@W& @ "@W) " @W# '@W\$ '$\a\@!"@SW @S$$@WV@X  @L@X \ a@!\"$@S= @S$$@W<@W 㿠 @W  @W  @W  @W  @W  @W  @Wߒ  @Wܒ  @Wْ  @W֒  @WӒ  @WВ  @W͒  @Wʒ  @Wǒ  @WĒ  @W 㿠 ` ` `"          @U  @V &  @W?  @VД @V̔ @Vא 㿈@#Jb$@@R "  " " "  " " `  ` &  &`2&a@R@a@V@$``㿈@#JaP@@Va&@WD  $` `aĐ@Rq@T9`@V, ` &`` @R1`&`㿠@J `t @ $ @VI `  ?@VA  b @V6    $ @V- `  ?@V%  b  㿠@I ct @  "  @U  6 b   " @U  6   2 b   2 @U   "  $ @V;  @V   @U @U " @U   @Q @Q "㿠@#I&b  @@U$ ?b &?㿠@#I&a @@U$ ?b &?㿠@I a< @" `   $ !"X@U   @Ux$   ` "   $ !"X@Uv$ @Ug` ` ``  `"  `  `" 㿠@I`@@V? b ``"㿠@Hc @aȒ @Qɔ   @Q;@Uݰ@Qؐ/@QJ@S”  @UYa  @U@Q   @SK @Q`& 㺘@Hbt̲@@ !@@U?@U@@Rc` В@R]@ & @@.  @Uy㿐@Ux* "@*"@ *` *  㿠@Ha`a԰@` @U^ &`b< <@QB 㿐@UM& & 㿠@#H`@a!!@R a!!@Ra$ 㺘@#H`T@!"  $ !!@P,ܒؐ @P%@P% @T 8``@P @O .  O@  @ ``8`H@P `T`d`p@O `t`@O  ```,@O ``@O ```@O ``Ж`ܐ@Oܘ ```@O֘   ! "@RR @T  & @G8@@Pi@Ga@a@@Q -@P+,,@P"a@ @R @Rj @QA @Q  ?@Q a@@Q @P ,㿠@#G`@b  #$`!"@P(!" @Q @G@ `㿠@G`<b@ b`  @  2 2 " @N " " `" &`" "   " `6 *@ `* `  " * ` * " ``  " ` * " a  " c * " c &c㿠@FbȐb@@ hb@`]  2  * 6 "* ` + " "* ` + " "c* a + " c  $`  "c`* a`   " `< ` "  *  (`"c`2"`@NR#`@NO㿠@F` b   @2   " € 㿘@F`Hb@    '  'b#  ?b! @Nm!""@R#?2  @NՔ! 3`0"  2  ` *  *@  2  2` 2``"  '` 2 $ @M "  " @Q˒ $   `4  㿠@R`` `J? `" &`@#Eb,@@R!@Rb! "@N @R'  @N&,b, @N#,@N?@R{,' @N,@Ru'`` @N ,b , @N ,@N?@Ra,'`@N,  ^$.[()|?+*\Assoc Data Key #%d::::::::command returned bad code: %d while executing "%.*s%s" invoked from within "%.*s%s" while invoking " invoked from within " ..."%ldindefault ("%.*s" arm line %d) ("eval" body line %d)%ld%ld%ld%ld%ld%ld%lu%ld%ld%ld ("for" body line %d) ("foreach" body line %d)bad field specifier "%c"thenelseifelse%d-indices-nocase--%d %d-nocase-all---codeokerrorreturnbreakcontinue-errorinfo-errorcodebad scan conversion character "%c"%u-nobackslashes-nocommands-novariablesdefault ("%.50s" arm line %d)%.0f microseconds per iterationvariablevdeletevinfo r w u ("while" body line %d) ByteCode 0x%x, ref ct %u, epoch %u, interp 0x%x(epoch %u) Source Cmds %d, chars %d, inst %d, objs %u, aux %d, stk depth %u, code/src %.2f Code %d = %d(header)+%d(inst)+%d(objs)+%d(exc)+%d(aux)+%d(cmd map) Proc 0x%x, ref ct %d, args %d, compiled locals %d %d: slot %d%s%s%s%s%s , name="%s" Exception ranges %d, depth %d: %d: level %d, %s, pc %d-%d, continue %d, break %d catch %d Commands %d:%s%4d: pc %d-%d, source %d-%d Command %d: (%u) %s %d # pc %u%d%d # pc %u%d%u # %u # temp var %u%u # var %u %u # %u # temp var %u%u # var %u """\"\f\n\r\t\v%c"Compiling: %.*s%s while compiling "%.*s%s"missing %cmissing %c (parsing index for array "%.*s") ("catch" body line %d) ("for" body line %d) ("foreach" body line %d)wrong # args: no script following "%.20s" argumentthen ("if" then script line %d)elseifelse ("if" else script line %d) (parsing index for array "%.*s") (parsing index for array "%.*s") ("while" body line %d)ama.m.pmp.m.bgerror"bgerror" is an invalid command name or ambiguous abbreviationidletasks Starting stack top=%d %d: %d TclExecuteByteCode: done instruction at pc %u: stack top %d != entry stack top %d Source: %d: (%u) invoking %s "%.*s" while executing "%.*s%s" invoked from within "%.*s%s" Executing ByteCode 0x%x, ref ct %u, epoch %u, interp 0x%x(epoch %u) Source: Cmds %d, chars %d, inst %u, objs %u, aux %d, stk depth %u, code/src %.2fn Code %d = %d(header)+%d(inst)+%d(objs)+%d(exc)+%d(aux)+%d(cmd map) Proc 0x%x, ref ct %d, args %d, compiled locals %d unknown floating-point error, errno = %d-force--//////././::::::::///:/\:HOME-nocomplain--\[]*?{}::::////*[]?\*[]?\:\./.yesnotruefalseonoff%d entries in table, %d buckets number of buckets with %d entries: %d number of buckets with %d or more entries: %d average search distance for entry: %.1f-safe--interp%d-global-globalcommand returned bad code: %dstdinstdoutstderrblocking buffering buffersize eofchar translation -blocking-blocking-buffering-bufferinglinenonefull-buffersize-buffersize-eofchar-eofchar%c%c-translation-translationautocrcrlflfautocrcrlflf-blocking-bufferingfulllinenone-buffersize-eofchar-translationautobinarylfcrcrlfplatformautotcpbinarylfcrcrlfplatformreadablewritableinfoinputbuffered%dmodenameopenoutputbuffered%dqueuedcrreadablerefcount%dtypewritableaddreadablewritabledeletelistremoveall-nonewlinenonewline-nonewlinenonewlinestartcurrentend-keepnewline---server-myaddr-myport-asyncRDONLYWRONLYRDWRAPPENDCREATEXCLNOCTTYNONBLOCKTRUNC (file "%.150s" line %d)_Init_SafeInitexit %d::::::namespaceinscope (in namespace eval "%.200s" script line %d)-clear-force (in namespace inscope "%.200s" script line %d)-command-variableyesnotruefalseonoffexpected boolean value but got "%.50s"expected floating-point number but got "%.50s"expected integer but got "%.50s"missing %c (parsing index for array "%.*s")%ld%d -exactforgetifneedednamesproviderequire-exactunknownvcompareversionsvsatisfies:: ("uplevel" body line %d)Compiling body of proc "%.*s%s" (compiling body of proc "%.*s%s", line %d)argsCalling proc (procedure "%.50s" line %d)after#%dafter#%dafter#%dafter#list element in braces followed by "%.*s" instead of spacelist element in quotes followed by "%.*s" %s {{}%%.%dg%ldend::::-mode-mode-mode%d,%c,%d,%d%d,%c,%d,%d%nnoemsfile%dfile%d-peername-peername%d-sockname-sockname%dsock%dsock%dsock%dsock%dpipe...///...%0#5loPATH//%dforked process couldn't set up input/output: %dcouldn't execute "%.150s": file%d%ld/opt/SUNWtcl/8.0/lib/tcl8.0/opt/SUNWtcl/8.0/sun4/lib /opt/SUNWtcl/8.0/lib__'A'L'['g'qB '{ ltjp 00<0H0T0`0l0x00000000000000 0,080D0P0\0h0t0000000000000~0{0x(0u40r@0oL0lX0id0fp0c|0`0]0Z0W0T0Q0N0K0H0E0B0? 0<09$06003<00H0-T0*`0'l0$x0!0000000 0 00000 0,080D0P0\0h0t000000000000000(040@0L0X0d0p0|000000000000 0|0y$0v00s<0pH0mT0j`0gl0dx0a0^0[0X0U0R0O0L0I0F0C0@0=0: 07,04801D0.P0+\0(h0%t0"0000000 0 000000(040@0L0X0d0p0|00000000000 0 0 0 $0 00 <0 H0 T0 `0 l0 x0 0 0 0 0 0 0 0 0 0 0 0 0} 0z 0w ,0t 80q D0n P0k \0h h0e t0b 0_ 0\ 0Y 0V 0S 0P 0M 0J 0G 0D 0A 0> 0; 08 (05 402 @0/ L0, X0) d0& p0# |0  0 0 0 0 0 0 0  0 0 0 0 0 0 $0 00 <0 H0 T0 `0 l0 x0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ,0 80 D0 P0 \0 h0 t0 0 0 0 0 0 0 0 0 0 0 00~0{0x(0u40r@0oL0lX0id0fp0c|0`0]0Z0W0T0Q0N0K0H0E0B0? 0<09$06003<00H0-T0*`0'l0$x0!0000000 0 00000 0,080D0P0\0h0t000000000000000(040@0L0X0d0p0|000000000000 0|0y$0v00s<0pH0mT0j`0gl0dx0a0^0[0X0U0R0O0L0I0F0C0@0=0: 07,04801D0.P0+\0(h0%t0"0000000 0 000000(040@0L0X0d0p0|00000000000123456789abcdef @      N'`<  `        < x    ,, hh    XX X X         L .     \\ >      0 00 0 < x   , h    X     L    \    l 0    *.-,0)%$# "!+'&/*(gigigigigigigigigi gigigigigi gi gigigigigigigigigigigigigigigigigi'&%$#"!     gi     :/  ,    , :/    &"% !$ #' (' 12%.12g2Kn,X  `  % KK,X/opt/SUNWtcl/8.0/lib/tcl8.0/opt/SUNWtcl/8.0/sun4/lib /opt/SUNWtcl/8.0/libproc tclInit {} { global tcl_library tcl_version tcl_patchLevel env errorInfo global tcl_pkgPath rename tclInit {} set errors {} set dirs {} if [info exists env(TCL_LIBRARY)] { lappend dirs $env(TCL_LIBRARY) } lappend dirs [info library] set parentDir [file dirname [file dirname [info nameofexecutable]]] lappend dirs $parentDir/lib/tcl$tcl_version if [string match {*[ab]*} $tcl_patchLevel] { set lib tcl$tcl_patchLevel } else { set lib tcl$tcl_version } lappend dirs [file dirname $parentDir]/$lib/library lappend dirs $parentDir/library foreach i $dirs { set tcl_library $i set tclfile [file join $i init.tcl] if {[file exists $tclfile]} { lappend tcl_pkgPath [file dirname $i] if ![catch {uplevel #0 [list source $tclfile]} msg] { return } else { append errors "$tclfile: $msg $errorInfo " } } } set msg "Can't find a usable init.tcl in the following directories: " append msg " $dirs " append msg "$errors " append msg "This probably means that Tcl wasn't installed properly. " error $msg } tclInitNULL argumentregexp too bigout of spacetoo many ()unmatched ()unmatched ()junk on end*+ operand could be emptynested *?+invalid [] rangeunmatched []internal urp?+* follows nothingtrailing \internal disasterNULL parametercorrupted programmemory corruptioncorrupted pointersinternal foulupappendarraybinarybreakcasecatchclockconcatcontinueerrorevalexitexprfcopyfileeventforforeachformatglobalifincrinfointerpjoinlappendlindexlinsertlistllengthloadlrangelreplacelsearchlsortnamespacepackageprocregexpregsubrenamereturnscansetsplitstringsubstswitchtraceunsetuplevelupvarvariablewhileaftercdcloseeoffblockedfconfigurefileflushgetsglobopenpidputspwdreadseeksockettelltimeupdatevwaitexecsourceTcl_CallFrame and CallFrame are not the same sizeTcl_CreateInterp: can't create global namespaceTcl_CreateInterp: builtin command with NULL string and object command procs and a NULL compile proc tcl_patchLevel8.0tcl_version8.0tcl_precisiontcl_platformbyteOrderlittleEndianbigEndianTcl8.0DeleteInterpProc called with active evalsDeleteInterpProc called on interpreter not marked deletedcannot use namespace qualifiers as hidden commandtoken (rename)can only hide global namespace commands (use rename then hide)tclHiddenCmdstclHiddenCmdshidden command named "" already existscan not expose to a namespace (use expose to toplevel, then rename)tclHiddenCmdsunknown hidden command ""unknown hidden command ""trying to expose a non global command name space commandexposed command "" already existscan't deleterename "": command doesn't existcan't rename to "": bad command namecan't rename to "": command already exists::too many nested calls to Tcl_EvalObj (infinite loop?)too many nested calls to Tcl_EvalObj (infinite loop?)attempt to call eval in deleted interpreterCOREIDELETEattempt to call eval in deleted interpreterinvoked "break" outside of a loopinvoked "continue" outside of a loop ...expression didn't have numeric valueexpression didn't have numeric valueillegal argument vectortclHiddenCmdsinvalid hidden command name ""unknownunknowninvalid command name ""00errorInfoerrorInfoerrorCodeNONEformatscanoption ?arg arg ...?optionformatString ?arg arg ...?number of elements in list does not match countcannot use "*" in format string with "x"bad field specifier ""binaryhexadecimalvalue formatString ?varName varName ...?bad field specifier ""expected string but got "" insteadmissing count for "@" field specifiernot enough arguments for all format specifiersunable to alloc %d bytesunable to alloc %d bytes, %s line %dunable to realloc %d bytesunable to realloc %d bytes, %s line %d%a %b %d %X %Z %Yclicksformatscanseconds-format-gmt-base-gmtoption ?arg ...?optionclockval ?-format string? ?-gmt boolean?switchdateString ?-base clockValue? ?-gmt boolean?switchunable to convert date-time string ""bad format string ""wrong # args: should be ""string ?in? patList body ... ?default body?extra case pattern with no bodycommand ?varName?couldn't save command result in variabledirName~wrong # args: should be ""message ?errorInfo? ?errorCode?errorCodearg ?arg ...??returnCode?arg ?arg ...? atimeattributescopydeletedirnameexecutableexistsextensionisdirectoryisfilejoinlstatmtimemkdirnativenameownedpathtypereadablereadlinkrenamerootnamesizesplitstattailtypevolumeswritableoption ?arg ...?optionvolumesname ?arg ...?dirname name:.tail namerootname nameextension namepathtype nameabsoluterelativevolumerelativesplit namereadable namewritable nameexecutable nameexists nameatime nameisdirectory nameisfile namelstat name varNamecouldn't lstat "": mtime nameowned namereadlink namecouldn't readlink "": size namestat name varNamecouldn't stat "": type namedevinomodenlinkuidgidsizeatimemtimectimetypefiledirectorycharacterSpecialblockSpecialfifolinksocketunknownwrong # args: should be " start test next command" ("for" initial command) ("for" loop-end command)varList list ?varList list ...? commandforeach varlist is emptyTcl_ForeachObjCmd: could not reconvert variable list %d to a list object Tcl_ForeachObjCmd: could not reconvert value list %d to a list object couldn't set loop variable: ""formatString ?arg arg ...?format string ended in middle of field specifiercannot mix "%" and "%n$" conversion specifiers"%n$" argument index out of rangenot enough arguments for all format specifierswrong # args: no expression after "" argumentwrong # args: no script following "" argumentwrong # args: no script following "else" argumentwrong # args: should be " varName ?increment?" (reading value of variable to increment) (reading increment)argsbodycmdcountcommandscompletedefaultexistsglobalshostnamelevellibraryloadedlocalsnameofexecutablepatchlevelprocsscriptsharedlibextensiontclversionvarsoption ?arg arg ...?optionprocname"" isn't a procedureprocname"" isn't a procedure?pattern?commandprocname arg varname"" isn't a procedurecouldn't store default value in variable ""procedure "" doesn't have an argument ""varNameaccess?pattern?bad level ""?number?tcl_libraryno library has been specified for Tcl?interp??pattern?tcl_patchLevel?pattern?.sotcl_version?pattern? list ?joinString?list indexlist index element ?element ...?listlist first lastlist first last ?element element ...?list doesn't contain element -exact-glob-regexpsearch mode?mode? list pattern-ascii-command-decreasing-dictionary-increasing-index-integer-real?options? listoption"-command" option must be followed by comparison command"-index" option must be followed by list indexelement missing from sublist "" (-compare command)-compare command returned non-numeric resultwrong # args: should be ""wrong # args: should be " ?switches? exp string ?matchVar? ?subMatchVar subMatchVar ...?"bad switch "": must be -indices, -nocase, or --0-1 -1couldn't set variable ""1wrong # args: should be " ?switches? exp string subSpec varName"bad switch "": must be -all, -nocase, or --couldn't set variable ""oldName newNamebad completion code "": must be ok, error, return, break, continue, or an integerbad option "": must be -code, -errorcode, or -errorinfowrong # args: should be " string format ?varName varName ...?"too many fields to scanfield width may not be specified in %c conversionunmatched [ in format stringdifferent numbers of variable names and field specifierscouldn't set variable ""fileName string ?splitChars?comparefirstindexlastlengthmatchrangetolowertouppertrimtrimlefttrimrightwordendwordstartoption arg ?arg ...?optionstring1 string2string charIndexstring1 string2stringpattern stringstring first laststringstring string ?chars?string indexstring indexbad switch "": must be -nobackslashes, -nocommands, or -novariableswrong # args: should be " ?-nobackslashes? ?-nocommands? ?-novariables? string"-exact-glob-regexp--option?switches? string pattern body ... ?default body?extra switch pattern with no bodyno body specified for pattern ""command ?count?too few args: should be " option [arg arg ...]"wrong # args: should be " variable name ops command"wrong # args: should be " vdelete name ops command"{wrong # args: should be " vinfo name"} {bad option "": should be variable, vdelete, or vinfobad operations "": should be one or more of rwuwrong # args: should be " test command"TclCompileExpr: Tcl_CreateMathFunc incorrectly registered '%s'syntax error in expression ""syntax error in expression ""0CompileLorExpr: bad jump distance %d 1CompileLorExpr: bad jump distance %d 0CompileLandExpr: bad jump distance %d 1CompileLandExpr: bad jump distance %d missing close-bracketCompilePrimaryExpr: unexpected termination char '%c' for nested command syntax error in expression ""unknown math function ""too many arguments for math functiontoo few arguments for math functionsyntax error in expression ""integer value too large to representARITHIOVERFLOWmissing close-bracedonepush1push4popdupconcat1invokeStk1invokeStk4evalStkexprStkloadScalar1loadScalar4loadScalarStkloadArray1loadArray4loadArrayStkloadStkstoreScalar1storeScalar4storeScalarStkstoreArray1storeArray4storeArrayStkstoreStkincrScalar1incrScalarStkincrArray1incrArrayStkincrStkincrScalar1ImmincrScalarStkImmincrArray1ImmincrArrayStkImmincrStkImmjump1jump4jumpTrue1jumpTrue4jumpFalse1jumpFalse4lorlandbitorbitxorbitandeqneqltgtlegelshiftrshiftaddsubmultdivmoduplusuminusbitnotnotcallBuiltinFunc1callFunc1tryCvtToNumericbreakcontinueforeach_start4foreach_step4beginCatch4endCatchpushResultpushReturnCodebytecode, scalar, array, link, arg, temploopcatchTclPrintSource: unrecognized ExceptionRange type %d TclPrintInstruction: bad local var index %u (%u locals) TclPrintInstruction: bad local var index %u (%u locals) tcl_traceCompileSetByteCodeFromAny: unable to create link for tcl_traceCompile variableUpdateStringOfByteCode should never be called.TclInitByteCodeObj: encoded cmd location bytes %d != expected size %d GetCmdLocEncodingSize: bad code offsetGetCmdLocEncodingSize: bad code lengthGetCmdLocEncodingSize: bad source lengthEncodeCmdLocMap: bad code offsetEncodeCmdLocMap: bad code lengthEncodeCmdLocMap: bad source length ...extra characters after close-quoteextra characters after close-brace... ... ...extra characters after close-quoteextra characters after close-bracemissing close-bracketmissing close-bracketmissing close-bracemissing close-brace for variable name$wrong # args: should be "break"wrong # args: should be "catch command ?varName?"extra characters after close-brace0TclCompileCatchCmd: bad jump distance %d wrong # args: should be "continue"wrong # args: should be "expr arg ?arg ...?" wrong # args: should be "for start test next command" ("for" initial command) ("for" test expression) ("for" loop-end command)wrong # args: should be "foreach varList list ?varList list ...? command"extra characters after close-quoteextra characters after close-bracewrong # args: no expression after "if" argument ("if" test expression)wrong # args: no script following "then" argumentwrong # args: no expression after "elseif" argumentwrong # args: no script following "else" argumentwrong # args: extra words after "else" clause in "if" commandTclCompileIfCmd: unexpected opcode updating ifFalse jumpwrong # args: should be "incr varName ?increment?" (increment expression)wrong # args: should be "set varName ?newValue?"wrong # args: should be "while test command" ("while" test expression)malformed expression wordextra characters after close-quoteextra characters after close-braceEnterCmdStartData: bad command index %d EnterCmdStartData: cmd map table not sorted by code offsetEnterCmdStartData: bad command index %d EnterCmdStartData: no start data registered for command with index %d quoted string doesn't terminate properlymissing close-braceargument word in braces doesn't terminate properlymissing close-bracket or close-braceTclFixupForwardJump: unrecognized ExceptionRange type %d januaryfebruarymarchaprilmayjunejulyaugustseptemberseptoctobernovemberdecembersundaymondaytuesdaytueswednesdaywednesthursdaythurthursfridaysaturdayyearmonthfortnightweekdayhourminuteminsecondsectomorrowyesterdaytodaynowlastthisnextagoepochgmtututcwetbstwatatnftnstndtastadtestedtcstcdtmstmdtpstpdtystydthsthdtcatahstntidlwcetmetmewtmestswtsstfwtfsteetbtitzp4zp5istzp6wastwadtjtcctjstcastcadteasteadtgstnztnzstnzdtidledstabcdefghiklmnopqrstuvwxyzyacc stack overflowsyntax errorenvenvenvenvenvEnvTraceProc called with confusing argumentsEnvTraceProc couldn't find interpreterenverrorInfoerrorCodetclBgErrortclBgErrorerrorInfoerrorCodebgerrortclHiddenCmdsbgerror bgerror failed to handle background error. Original error: Error in bgerror: wrong # args: should be " name"can't wait for variable "": would wait foreverbad option "": must be idletaskswrong # args: should be " ?idletasks?"|^&==!=<><=>=<<>>+-*/%+-~!BUILTIN FUNCTIONFUNCTIONacosasinatanatan2ceilcoscoshexpfloorfmodhypotloglog10powsinsinhsqrttantanhabsdoubleintrandroundsrandcmdNametcl_traceExecInitByteCodeExecution: can't create link for tcl_traceExec variableTclExecuteByteCode execution failure: end stack top != start stack topattempt to call eval in deleted interpreterCOREIDELETEattempt to call eval in deleted interpreterunknowninvalid command name ""unknownTclExecuteByteCode: unrecognized ExceptionRange type %d TclExecuteByteCode: unrecognized ExceptionRange type %d TclExecuteByteCode: unrecognized builtin function code %dTclExecuteByteCode: unrecognized ExceptionRange type %d TclExecuteByteCode: unrecognized ExceptionRange type %d TclExecuteByteCode: unrecognized opCode %udivide by zeroARITHDIVZEROdivide by zero...can't use empty string as operand of ""can't use floating-point valuenon-numeric string as operand of ""argument to math function didn't have numeric valueargument to math function didn't have numeric valueargument to math function didn't have numeric valueinteger value too large to representARITHIOVERFLOWinteger value too large to representargument to math function didn't have numeric valueargument to math function didn't have numeric valueinteger value too large to representARITHIOVERFLOWinteger value too large to representargument to math function didn't have numeric valueinteger value too large to representARITHIOVERFLOWinteger value too large to representcan't use floating-point valuenon-numeric string as argument to srandunknown math function ""ExprCallMathFunc: expected number of args %d != actual number %dargument to math function didn't have numeric valuedomain error: argument not in valid rangeARITHDOMAINfloating-point value too small to representARITHUNDERFLOWfloating-point value too large to representARITHOVERFLOWARITHUNKNOWNUpdateStringOfCmdName should never be invokedwrong # args: should be " ?options? source ?source ...? target"error copyingrenaming: target "" is not a directorycan't create directory "": wrong # args: should be " ?options? file ?file ...?"error deleting "": directory not emptyerror deleting "": can't overwrite file "" with directory ""can't overwrite directory "" with file ""error renaming "" to "": trying to rename a volume or move a directory into itselfcan't unlink "": error copying "error renaming "" to "": "": bad option "": should be -force or --wrong # args: must be "file attributes name ?option? ?value? ?option value? ..."optionoption^(([a-zA-Z]:)|[/\][/\]+([^/\]+)[/\]+([^/\]+)|([/\]))([/\])*^((/+([.][.]?/+)*([.][.]?)?)|(~[^:/]*)(/[^:]*)?|(~[^:]*)(:.*)?|/+([.][.]?/+)*([^:/]+)(/[^:]*)?|([^:]+):.*)$^(([a-zA-Z]:)|[/\][/\]+([^/\]+)[/\]+([^/\]+)|([/\]))([/\])*^((/+([.][.]?/+)*([.][.]?)?)|(~[^:/]*)(/[^:]*)?|(~[^:]*)(:.*)?|/+([.][.]?/+)*([^:/]+)(/[^:]*)?|([^:]+):.*)$couldn't find HOME environment variable to expand pathuser "" doesn't existbad switch "": must be -nocomplain or --wrong # args: should be " ?switches? name ?name ...?"//\:/:globbing characters not supported in user namesno files matched glob pattern "s " "}unmatched open-brace in file nameunmatched close-brace in file name,expected integer but got ""integer value too large to representARITHIOVERFLOWexpected integer but got ""integer value too large to representARITHIOVERFLOWexpected floating-point number but got ""expected boolean value but got ""malformed bucket chain in Tcl_DeleteHashEntrycalled Tcl_FindHashEntry on deleted tablecalled Tcl_CreateHashEntry on deleted tablehistoryaddindexambiguous bad "": must be , or , can't convert value to index except via Tcl_GetIndexFromObj APIUpdateStringOfIndex should never be invokedwrong # args: should be " "cannot define or rename alias "": would create a loopenvtcl_platformostcl_platformosVersiontcl_platformmachinetcl_librarytcl_pkgPathtclMasterRecordinterpreter named "" not foundinterpreter named "" already exists, cannot createCreateSlave: out of memory while creating a new interpretertclSlaveRecordtclSlaveRecordtcl_interactive0errorInfoerrorCodeerrorCode?-safe? ?--? ?path?bad option "": should be -safebad interpreter path ""interpreter named "" not foundinterpreter named "" not foundinterpreter named "" not foundtclSlaveRecordAliasCreationHelper: could not find slave recordmalformed command: should be "alias {}"?path?interpreter "" not foundtclSlaveRecordslavePath slaveCmd masterPath masterCmd ?args ..?could not find interpreter ""slavePath slaveCmd masterPath masterCmd ?args ..?could not find interpreter ""?path?path arg ?arg ...?interpreter named "" not founderrorInfoerrorCodeerrorCodepath hiddenCmdName ?cmdName?permission denied: safe interpreter cannot expose commandsinterpreter "" not foundpath cmdName ?hiddenCmdName?permission denied: safe interpreter cannot hide commandsinterpreter "" not found?path?interpreter "" not foundtclHiddenCmdspath ?-global? cmd ?arg ..?not allowed to invoke hidden commands from safe interpreterpath ?-global? cmd ?arg ..?interpreter "" not founderrorInfoerrorCodeerrorCodepath" marktrusted" can only be invoked from a trusted interpreterinterpreter "" not found?path?interpreter "" not found?path?interpreter "" not foundsrcPath channelId destPathinterpreter "" not foundinterpreter "" not foundpath aliassrcPath channelId destPathinterpreter "" not foundinterpreter "" not foundtclSlaveRecordDescribeAlias: could not find slave recordtclSlaveRecordalias "" not foundalias "" not foundDeleteAlias: did not find alias to be deletedDeleteAlias: did not find alias to be deletedtclSlaveRecordtclMasterRecordTcl_GetInterpPath: could not find master recordtclMasterRecordGetTarget: could not find master recordcould not find interpreter ""tclSlaveRecordGetTarget: could not find slave recordalias "" in path "" not foundGetTarget: could not find alias recordtarget interpreter for alias "" in path "" is not my descendantaliasaliasescreatedeleteevalexistsexposehidehiddenissafeinvokehiddenmarktrustedslavessharetargettransfercmd ?arg ...?tclMasterRecordTcl_InterpCmd: could not find master recordoptionaliasName ?targetName? ?args..?tclMasterRecordSlaveObjectCmd: could not find master recordarg ?arg ...?errorInfoerrorCodeerrorCodehiddenCmdName ?cmdName?permission denied: safe interpreter cannot expose commandscmdName ?hiddenCmdName?permission denied: safe interpreter cannot hide commandstclHiddenCmds?-global? cmd ?arg ..?not allowed to invoke hidden commands from safe interpreterpath ?-global? cmd ?arg ..?tclMasterRecordSlaveObjectCmd: could not find master recorderrorInfoerrorCodeerrorCode" marktrusted" can only be invoked from a trusted interpreteraliasaliasesevalexposehidehiddenissafeinvokehiddenmarktrustedcmd ?arg ...?interpreter has been deletedtclSlaveRecordSlaveObjectCmd: could not find slave recordoptiontclSlaveRecordSlaveObjectDeleteProc: could not find slave recordunknownerrorInfoerrorCodeerrorCodeinvoked "break" outside of a loopinvoked "continue" outside of a looperrorInfoerrorCodeerrorCodeSlaveRecordDeleteProc: NULL slavePtrtclMasterRecordtclSlaveRecordtclMasterRecordCreatSlave: could not find master recordtclMasterRecordTcl_GetSlave: could not find master recordtclSlaveRecordtclMasterRecordTcl_CreateAlias: could not find master recordtclMasterRecordTcl_CreateAlias: could not find master recordtclSlaveRecordTcl_GetAlias: could not find slave recordalias "" not foundtclSlaveRecordTcl_GetAlias: could not find slave recordalias "" not founderror setting blocking mode: -blockingontclIOtclIOtclIOTcl_RegisterChannel: channel without nameTcl_RegisterChannel: duplicate channel namescan not find channel named ""Tcl_CreateChannel: NULL channel nameunable to access channel: invalid channelBlocking channel driver did not block on outputTclFlush, closed channel: queued output leftFlushChannel: damaged channel listcalled Tcl_Close on channel with refCount > 0Tcl_Write: AUTO output translation mode not supportedTcl_Write: unknown output translation modeBlocking channel driver did not block on inputunknown eol translation modeunknown eol translation modemalformed option list in channel driverbad option "": should be one of -, or -01unable to set channel options: background copy in progressbad value for -buffering: must be one of full, line, or nonebad value for -eofchar: should be a list of one or two elementsbad value for -translation: must be a one or two element listbad value for -translation: must be one of auto, binary, cr, lf, crlf, or platformbad value for -translation: must be one of auto, binary, cr, lf, crlf, or platformwrong # args: must be " channelId event ?script?bad event name "": must be readable or writablechannel is not readablewritablewrong # args: should be " subcommand ?additional args..?"wrong # args: should be " info channelName"readwritenonblockingblockinglinenonefullasync_flusheofblockedunblockedautosaw_crlfcrcrlfqueued_crautolfcrcrlfchannel name requiredchannel name requiredreadwritechannel name requiredtclIOchannel name requiredchannel name required10tclIOchannel name requiredchannel name requiredtclIObad option "": should be info, open, readable, or writablewrong # args: should be " channelName cmd ?arg1? ?arg2?"wrong # args: should be " channelName add eventSpec script"bad event name "": must be readable or writablewrong # args: should be " channelName delete index"bad event index: : must be nonnegativebad event index : out of rangeTclTestChannelEventCmd: damaged event script listwrong # args: should be " channelName list"readablewritablewrong # args: should be " channelName removeall"bad command , must be one of add, delete, list, or removeallchannel "" is busychannel "" is busyerror reading "": error writing "": ?-nonewline? ?channelId? stringbad argument "": should be "nonewline"stdoutchannel "" wasn't opened for writing error writing "": channelIdchannel "" wasn't opened for writingerror flushing "": channelId ?varName?channel "" wasn't opened for readingerror reading "": channelId ?numBytes? or " ?-nonewline? channelId"channel "" wasn't opened for readingbad argument "": should be "nonewline"error reading "": wrong # args: should be " channelId offset ?origin?"bad origin "": should be start, current, or enderror during seek on "": wrong # args: should be " channelId"channelIdwrong # args: should be " channelId ?optionName? ?value? ?optionName value?..."channelIdbad switch "": must be -keepnewline or --wrong # args: should be " ?switches? arg ?arg ...?"error reading output from command: channelIdchannel "" wasn't opened for readingwrong # args: should be " fileName ?access? ?permissions?"rTcl_OpenCmd: invalid mode valuetclTCPAcceptCallbackstclTCPAcceptCallbacksRegisterTcpServerCleanup: damaged accept record tabletclTCPAcceptCallbacks cannot set -async option for server socketsno argument given for -server optionno argument given for -myaddr optionno argument given for -myport optiontcpcannot set -async option for server socketsbad option "", must be -async, -myaddr, -myport, or -serverOption -myport is not valid for serverswrong # args: should be either: ?-myaddr addr? ?-myport myport? ?-async? host port -server command ?-myaddr addr? porttcp-size-commandinput output ?-size size? ?-command callback?channel "" wasn't opened for readingchannel "" wasn't opened for writingswitchcouldn't open socket: port number too highillegal access mode "" while processing open access modes ""invalid access mode "": must be RDONLY, WRONLY, RDWR, APPEND, CREAT EXCL, NOCTTY, NONBLOCK, or TRUNCaccess mode must include either RDONLY, WRONLY, or RDWRcouldn't read file "": rcouldn't read file "": couldn't read file "": POSIXinternal error: bad linked variable typelinked variable is read-onlyinternal error: linked variable couldn't be readvariable must have integer valuevariable must have real valuevariable must have boolean valueinternal error: bad linked variable type10NULL??listTcl_SetListObj called with shared objectTcl_ListObjAppendList called with shared objectTcl_ListObjAppendElement called with shared objectTcl_ListObjReplace called with shared objectSetListFromAny: bad size estimate for listwrong # args: should be " fileName ?packageName? ?interp?"must specify either file name or package namecouldn't find slave interpreter named ""file "" is already loaded for package ""tclLoadpackage "" isn't loaded staticallycouldn't figure out package name for couldn't find procedure can't use package in a safe interpreter: no _SafeInit procedureerrorInfoerrorCodeerrorCodetclLoadtclLoadtclLoadtclLoad{} {couldn't find slave interpreter named ""tclLoad{} {argvargcargv0tcl_interactive10application-specific initialization failed: errorInfo tcl_prompt1tcl_prompt2% (script that generates prompt) nsNamenamespace "" not found in context ""can't create namespace "": only global namespace can have empty namecan't create namespace "": already existserrorInfoerrorCodeerrorInfoerrorCodeinvalid export pattern "": pattern can't specify a namespaceempty import patternunknown namespace in import pattern ""no namespace specified in import pattern ""import pattern "" tries to import from namespace "" into itselfcan't import command "": already existsunknown namespace in namespace forget pattern ""DeleteImportedCmd: did not find cmd in real cmd's list of import referencesunknown namespace ""unknown command ""unknown variable ""childrencodecurrentdeleteevalexportforgetimportinscopeoriginparentqualifierstailwhichsubcommand ?arg ...?optionunknown namespace "" in namespace children command?name? ?pattern?argnamespaceinscope::::?name name...?unknown namespace "" in namespace delete commandname arg ?arg...??-clear? ?pattern pattern...??pattern pattern...??-force? ?pattern pattern...?name arg ?arg...?unknown namespace "" in inscope namespace commandnameinvalid command name ""unknown namespace "" in namespace parent command?name?stringstring?-command? ?-variable? namebooleandoubleintTcl_SetBooleanObj called with shared objectTcl_SetDoubleObj called with shared objectTcl_SetIntObj called with shared objectinteger value too large to represent as non-long integerinteger value too large to representARITHIOVERFLOWTcl_SetLongObj called with shared objectmissing close-bracemissing close-brace for variable name$channel "" wasn't opened for writingreadingcouldn't writeread file "": can't specify "" as last word in commandchild process lost (is SIGCHLD ignored or trapped?)error waiting for process to exit: CHILDSTATUSCHILDKILLEDchild killed: CHILDSUSPchild suspended: child wait status didn't make sense error reading stderr output file: child process exited abnormallyillegal use of | or |& in commandcan't specify "" as last word in commandcouldn't create input file for command: couldn't create input pipe for command: couldn't create output pipe for command: couldn't create error file for command: couldn't create pipe: can't read output from command: standard output was redirectedcan't write input to command: standard input was redirectedpipe for command could not be createdconflicting versions provided for package "": , then ("package ifneeded" script){} ("package unknown" script)can't find package version conflict for package "": have , need wrong # args: should be " option ?arg arg ...?"wrong # args: should be " ifneeded package version ?script?"wrong # args: should be " names"wrong # args: should be " provide package ?version?"wrong # args: should be " require ?-exact? package ?version?"wrong # args: should be " unknown ?command?"wrong # args: should be " vcompare version1 version2"wrong # args: should be " versions package"wrong # args: should be " vsatisfies version1 version2"bad option "": should be forget, ifneeded, names, provide, require, unknown, vcompare, versions, or vsatisfiesexpected version number but got ""E2BIGEACCESEADDRINUSEEADDRNOTAVAILEADVEAFNOSUPPORTEAGAINEALREADYEBADEEBADFEBADFDEBADMSGEBADREBADRQCEBADSLTEBFONTEBUSYECHILDECHRNGECOMMECONNABORTEDECONNREFUSEDECONNRESETEDEADLKEDEADLOCKEDESTADDRREQEDOMEDQUOTEEXISTEFAULTEFBIGEHOSTDOWNEHOSTUNREACHEIDRMEINPROGRESSEINTREINVALEIOEISCONNEISDIREL2HLTEL2NSYNCEL3HLTEL3RSTELIBACCELIBBADELIBEXECELIBMAXELIBSCNELNRNGELOOPEMFILEEMLINKEMSGSIZEEMULTIHOPENAMETOOLONGENETDOWNENETRESETENETUNREACHENFILEENOANOENOBUFSENOCSIENODATAENODEVENOENTENOEXECENOLCKENOLINKENOMEMENOMSGENONETENOPKGENOPROTOOPTENOSPCENOSRENOSTRENOSYSENOTBLKENOTCONNENOTDIRENOTEMPTYENOTSOCKENOTSUPENOTTYENOTUNIQENXIOEOPNOTSUPPEPERMEPFNOSUPPORTEPIPEEPROTOEPROTONOSUPPORTEPROTOTYPEERANGEEREMCHGEREMOTEEROFSESHUTDOWNESOCKTNOSUPPORTESPIPEESRCHESRMNTESTALEETIMEETIMEDOUTETOOMANYREFSETXTBSYEUNATCHEUSERSEXDEVEXFULLunknown errorargument list too longpermission deniedaddress already in usecan't assign requested addressadvertise erroraddress family not supported by protocol familyresource temporarily unavailableoperation already in progressbad exchange descriptorbad file numberfile descriptor in bad statenot a data messagebad request descriptorbad request codeinvalid slotbad font file formatfile busyno childrenchannel number out of rangecommunication error on sendsoftware caused connection abortconnection refusedconnection reset by peerresource deadlock avoidedresource deadlock avoideddestination address requiredmath argument out of rangedisk quota exceededfile already existsbad address in system call argumentfile too largehost is downhost is unreachableidentifier removedoperation now in progressinterrupted system callinvalid argumentI/O errorsocket is already connectedillegal operation on a directorylevel 2 haltedlevel 2 not synchronizedlevel 3 haltedlevel 3 resetcan not access a needed shared libraryaccessing a corrupted shared librarycan not exec a shared library directlyattempting to link in more shared libraries than system limit.lib section in a.out corruptedlink number out of rangetoo many levels of symbolic linkstoo many open filestoo many linksmessage too longmultihop attemptedfile name too longnetwork is downnetwork dropped connection on resetnetwork is unreachablefile table overflowanode table overflowno buffer space availableno CSI structure availableno data availableno such deviceno such file or directoryexec format errorno locks availablelink has be severednot enough memoryno message of desired typemachine is not on the networkpackage not installedbad proocol optionno space left on deviceout of stream resourcesnot a stream devicefunction not implementedblock device requiredsocket is not connectednot a directorydirectory not emptysocket operation on non-socketoperation not supportedinappropriate device for ioctlname not unique on networkno such device or addressoperation not supported on socketnot ownerprotocol family not supportedbroken pipeprotocol errorprotocol not supporedprotocol wrong type for socketmath result unrepresentableremote address changedpathname hit remote file systemread-only file systemcan't send afer socket shutdownsocket type not supportedinvalid seekno such processsrmount errorstale remote file handletimer expiredconnection timed outtoo many references: can't splicetext file or pseudo-device busyprotocol driver not attachedtoo many userscross-domain linkmessage tables fullSIGABRTSIGALRMSIGBUSSIGCHLDSIGCONTSIGEMTSIGFPESIGHUPSIGILLSIGINTSIGIOSIGKILLSIGPIPESIGPROFSIGPWRSIGQUITSIGSEGVSIGSTOPSIGSYSSIGTERMSIGTRAPSIGTSTPSIGTTINSIGTTOUSIGURGSIGUSR1SIGUSR2SIGVTALRMSIGWINCHSIGXCPUSIGXFSZunknown signalSIGABRTalarm clockbus errorchild status changedcontinue after stopEMT instructionfloating-point exceptionhangupillegal instructioninterruptinput/output possible on filekill signalwrite on pipe with no readersprofiling alarmpower-fail restartquit signalsegmentation violationstopbad argument to system callsoftware termination signaltrace trapstop signal from ttybackground tty readbackground tty writeurgent I/O conditionuser-defined signal 1user-defined signal 2virtual time alarmwindow changedexceeded CPU time limitexceeded file size limitunknown signalTcl_Release couldn't find reference for 0x%xTcl_EventuallyFree called twice for 0x%x name args bodycan't create procedure "": unknown namespacecan't create procedure "": bad procedure namecan't create procedure "" in non-global namespace with name starting with ":"too many fields in argument specifier ""procedure "" has argument with no nameprocedure "" has formal parameter "" that is an array elementbad level ""?level? command ?arg ...?......TclObjInterpProc: local variable %s is not argument but should beTclObjInterpProc: local variable %d is temporary but should be an argumentno value given for parameter "" to ""called "" with too many argumentsinvoked "break" outside of a loopinvoked "continue" outside of a looperrorCodeNONEerrorInfostringTcl_SetStringObj called with shared objectTcl_SetObjLength called with shared objectTcl_AppendToObj called with shared objectTcl_AppendStringsToObj called with shared objectcancelidleinfooption ?arg arg ...?tclAfteroptionbad argument "": must be cancel, idle, info, or a numberid|commandscript script ...?id?event "" doesn't existidletimer ("after" script)instead of spaceunmatched open brace in listunmatched open quote in listinternal error in Tcl_SplitListerrorCodeerrorCodecouldn't compile regular expression pattern: error while matching regular expression: can't modify precision from a safe interpreterimproper value for precision0123456789bad index "": must be integer or "end"no such variablevariable is arrayvariable isn't arrayno such element in arrayupvar refers to element in deleted arrayparent namespace doesn't existmissing variable namereadreadreadreadreadreadreadreadwrong # args: should be " varName ?newValue?"setsetsetsetsetsetsetsetsetset (reading value of variable to increment) (reading value of variable to increment) (reading value of variable to increment)unsetunsettracevarName ?varName ...?varName ?value value ...?varName ?value value ...?anymoredonesearchexistsgetnamesnextelementsetsizestartsearchoption arrayName ?arg ...?optionarrayName searchIdarrayName searchIdarrayNamearrayName ?pattern?arrayName ?pattern?arrayName searchIdarrayName listlist must have an even number of elementsarrayNamearrayNames-1-s--"" isn't an arrayaccessbad variable name "": unknown namespacecan't upvar from variable to itselfvariable "" already existsvariable "" has traces: can't use for upvar::varName ?varName ...?define?level? otherVar localVar ?otherVar localVar ...?illegal search identifier ""search identifier "" isn't for variable ""couldn't find search ""can't "()": filettytcpmodemodebad value for -mode: should be baud,parity,data,stop parity: should be n, o, e, m, or s data: should be 5, 6, 7, or 8 stop: should be 1 or 2Tcl_OpenFileChannel: invalid mode valuecouldn't open "": couldn't seek to end of file on "": -translationauto crlfcan't get peername: can't get sockname: peername socknamecouldn't open socket: couldn't open socket: -translationauto crlf-translationauto crlf-translationauto crlflinelinenoneTclGetDefaultStdChannel: Unexpected channel type-translationauto-buffering"" wasn't opened for writing"" wasn't opened for readingwrcannot get a FILE * for """" cannot be used to get a FILE *TclWaitForFile can't handle file id %d-group-owner-permissionscould not stat file "": could not get group for file "": could not stat file "": could not get owner for file "": could not stat file "": could not set group for file "": group "" does not existcould not set group for file "": could not set owner for file "": user "" does not existcould not set owner for file "": could not set permissions for file "": /couldn't change working directory to "": working directory name is too longerror getting working directory name: :/bin:/usr/bin.couldn't read directory "": pipecouldn't create pipe: couldn't fork child process: ?channelId?tcl_librarytcl_pkgPathtcl_platformplatformunixtcl_platformostcl_platformosVersiontcl_platformosVersiontcl_platformosVersion.tcl_platformosVersiontcl_platformmachinetcl_platformostcl_platformosVersiontcl_platformmachinetcl_rcFileNamer couldn't load file "": BjpDt8   l d D %h ,D3T:dAtHOV]dkry (<L`t `l\|| h  ` tp(2=l Hp T`mxt  ,x   < h(      ( 8 H `,  0 4  p  x   % , 3 : A H O V x] d k r y8 ,0X x 8`       !( /6$=0DU"j:x< ?| H ghDkh  ' .<5@dF LlSZsfqx   08<X\|  $  (  , '.0 5<4 CJ8 QX< _f@ mtD {H $,4PlL h  #*(1L8@(FxVa|ho v}  ,Dt@ `x  8%<,H3h:lAtH|OV]dkry (,@Lpx  \l  !( /0;DG@W@gw $P |@tp (| $ "T 0<\ A| S4H _ i t̨H 0  P l p          0  8  T     |   "  )  0  7 > E L S Z a  h  o! v$ }0 !0 !@ !l ! ! ! ! < " "X "p ` "t " "  # # # $ d t  %$, ,$H 3 :$ A$ H$ O V$ ]% d k%  r y%0 %L  %d %  % %  % &  & &H &\ &|    & & &  p *\| 7 E& L& S' Z' a'4 h'8 o' v' }( (L (l (p ( ( ( ( ( ( )$ ), )8 * X  P <  !  3 ED Y8 o$D hD  H !L| $   ED<F(J`4?HpR XT ^` d j p0 v,p|L P `  ,     ,,    $ , 8 D H T X  ,` t   ' .-5 < C J Q X _ f m t {    -X-l--.,.T.|.../  ////  /#0*010<8( ?0@F0`M0TP [0b0i0p1 wl ~1<1@1x1p 1112(2L 2p2t2  2  2  3( 3\&3-343;8 B4I4,P` W4`^4e l4s4z4455D5556 646h64NDOqH$c89LaXـ<l~x$tt D0Ϝ0<|\ *, 8 C8x N \t8 j q x   99+;KZiy Llh88t@ +D 5H BL N9U9\9c9j:q:Dx P X :H:L:X:d:h:t:  ; ;<;D;` $;x+;2;9;@xRaHn{\ lX h8TX@X|lTHHP54K ]<d<k r, y4  =@======>>     >>X>>?  ?H?t?!?(?/?6?= D K RH YT ` g n?u?|???@@$@(@\@@@@AA(A\AAAAAB(BPBXBdB$B+B2B9B@BGBNC<UCp\CcCjCqCxCCDD $ D,D4D< h"H"`~H \-TDU~(l  $.Dl5D<DCDJDQDXD_DfDmEtE{E0E4EPEdE|EFhP X FFFG (XddD" . @ RG0Y\ `` gd nh uGl|Gl p t x |  H               H$H+H2H9 @ GHNHUI\ c j q x     IIIJ       ,d08"xt/<GPJWJ ^J$eJLlJTsJ`zJ|JJJJJ $ ( 0 8 < JKK@ d   KD Kp8 (D4BLX,b,nhP8KK@ 48K K L  LL  " /Lt 6L =M DM KM  RM4 YMT ` gN n u |N N,  N@ NX N\ N` Nt N N N N N N O O$ O0 O8 O@!OP!O\!Ol!O!O!$ !+O!2O!9P!@P!GP$!NP8!UPL!\PX!cP\!jPh!qPt!xP!P!P!P!P!Q!QT!Qd!Qp!Qx!Q!Q!Q!Q! !Q!R!R(!R4!R8"RD" RP"R\"Rd" Rh"'R".R"5R"<R"CR"JR"QR"XR"_S"fS "mS("tS8"{SD"ST"S`"Sl"S"S"S"S"S"S"S"T "T"T "T("T4"Td"T"T#T#T# #V#V##V#*V#1V#8W#?W#FWH#MWX#TW\#[Wh#bWt#iW#pW#wW#~W#X(#X8#XP# #X#X#X#X#X#X#Y#Y#Y#Y$# #Y#Y#Y$Y$ Y$Z$Z $Z0$&Zd$- $4[$;[0$B[@$I[P$P[`$W[$^[$e[$l[$s[$z\$\($\X$\h$\$\$\$\$\$\$'\d$`$$$$|`$&`%.%&%9%Ol%b$P%v\%,%l%%%,%%|&|&,`&$&= T,&U &h H&{&t&<\& &&t&$&'''' L'9!,\'Q#'h-h'' ' '  '$ '( ', '0 '4 ( 8 (\($](+]$(2]((9]0(@]8(G]@(N]l(U0 (\8 (c@ (j](q](x](](^(^D(^t(^(^(_(_,(_\(_|(H (| (_( ( (_(`( ( ) )  ) ) )  )' ). )5 )< )C )J )Q )X )_( )f0 )m4 )t< ){@ )H )L )T )`)X )d )p )x ) )`@)`\) ) )`)`) )`)`* * * * * *# **a*1a(*8aT*? *F *M *T *[ *b *i *pad*wa*~a*a*a* * *a*b*b(*b8*bD*bP*bl*$ *b*, *c*< *@ *c+c+ c+c+c+H +&c+-P +4c+;X +Bc+Ih +Pl +Wd+^d +ed$+lx +sd(+z +d0+ + +dH+ +d`+dh+dx+d+d+d+ +d+e+ + +e(+e<+ ,e\, ex,e,e,"e,)e,0e,7 ,>f,Ef4,LfH,SfT,Z ,af`,hf|,of,vf,}f,f,f,f,f,g,g,g,g,,5,8 ,:$,;-{@h-<@-9t-PB-^CDL-rCd-D -vt-G0-O h-\-Kd-O-Q\-V<h.X.Y@,.Z."w<.3y.Fzp.Y .b .p.{ .g0. .gP.g`.g|.g.g.g.g.g.g.g.g.g.h .h.h$.h0/hL/h\/h`/hx/h/# /*h/1h/8 /?h/Fh/Mh/Ti/[i/bi /i /p /w /~i</iL/ip/i/i/i/i/i/i/j/$ /4 /j /j0/jP/jl/j/j/j0j0 j0j0k 0k$0&kD0-k\04kt0;k0Bk0Ik0Pk0W8 0^k0ek0l@ 0sl$0zH 0lL0lt0P 0lx0l0l0l0m 0m00mh0m0< 0m0m0m0n0n 0n(0tP11;`1`1s411n011n\1nt1nx1n1X 1` 1h 1p 1x 1 1 1 1 2n2n2n2o2o42#oP2*oh21ol28op2?o2Fo2Mo2T 2[o2b2lo2ro2xo2~p02pT2pt2p2p2p2p2p2222 d2Δ283D3p3$q 3*q<30qp36q3<3F\ 3Vq3\q3br 3hr<3nrd3trh3zrp3r3r3r3r3r3 3 3r3s 3s83s<3sP3s\3sh3st3s|3s3s3s3Hl3444s4 4%4,48d 4Ex4[ L4p4h 4| 4t4t4t4t4t4u(4uD4 4uX4ud4up4u|4u4u4u4u5v 5 v5v<5v@5vT5"vx5( 5.v54v5:v5@v5Fv5Mw45TwH5[wL5bw`5iwd5pwx5w 5~w5x 5x5x(5xH5 5x\5 5 5x`5xl5xt5xx5x|5x5x5x5 5x64 6 x6y 6< 6y,6&y@6-yT64D 6;yt6By|6Iy6Py6Wy6^y6ey6ly6sy6zx 6 6z66 606D6 667X7"h73 pP7F 7Y 7l $77 747(7p77 7$8l\808"8+ 8@*88V.D8l+(8~1@83 H81T85888885\8z8 8 9 9 9 9 9 9#zD9* 91zp98 9?z9Fz9M{9T{9[849e"9s"`9#\09+99, 9{<9{P9{x98 9B9DPd9C,9: :{|:{:{:#{:*{:1{:8{:?{:F{:M{:T{:[|:b` :id :p}:w}<:~}L:}h:}:}:}:~:~0:~P:~p:~:~:H4::~::::h ;4;l ;8;X;l; p;&;,;2;8;>t ;D| ;J;P;V ;\;b4;h ;n<;tX;z ;t;; ; ;;; ;;; ;$;@; ;T;p;;;;;;,<jT< lt<k<,<:p>>> > >$4>+H>2d>9>@>G>N>U>\>c>j(>q@>xP>d>>>>>>>$>D>P>`>x>>>>>>$>@?P? `?p?? ?'?.?5?<?C(?J<?Q?X?_?m  ?v ?|??l?d??0?@?\?t?????$?(?4?P?\?x@ @@ @@ @@$@* @0@6@< @B@H@NL @T`@Z@`@f@l@rT @xd @~h @l @@@@ @@L@t,@@@8@4HA A(A$TA*A0A6$AJAU( Aa, Av0 A}4 AAA AA$A4A`AlA A AAAAAA AApB tBxB|B,B8BB BQ,B`XLBnLBxBLBB`BBD  BN  B B BBCCC( C<CHC#TC*C1, C80 C?4 CFCMCTC[8 CbCi@ CpD CwC~C,CCX C\ C` Cd Ch Cl Cp CH CCDD DD D"(D)0D08D7TD>lDEpDLtDSxDZ|DaDhDoDvD}DDDD$D,D4D<DTDpDt DDDL DDDD@DLE`E lEEEE%E,E3E:EAEH4EO8EVPE]TEd\Ek`ErdEyhE6pE+\8E,<E(hE5E3lE+TEEEE F( F7tF#9F188TF?8TFN:TF[:d\Fi:(F{( F:F;F( FE|FHTXFG8FGtFH(GKXGLLG#P G*|G1X G8` G?h GFGM GT G[t GbGi GpGwG~G GHGXG G\GGGG G G G GG G G GGHH H HH$H& H-0H4@H; HB HILHP\HWhH^pHexHlHsHzHHHHHH HHH H<H@HDHHhH@XH?DI>,I<I=DI)=XI1FLI@LlIMO8IaRdIkIzIIeIh IfIiIgIjJ J  J J J" J) J0 J7J>JEJLJSJZJa Jh,Jo0JvHJ} JLJlJxJJJJJJJJJ<J@JeXpJ^JaKd8KdK$K2 K= KV KsDKzlKpKK KK( KKKK, KkTKl0DKK( L}hL~hXL XL.8XL=LKPdL]Ld0 Lk` LrLy L L0LzLyLL0 L LL4 LL8 M M  Mq M$ M+ M2pM9lM@|MGMNdMfMu@ MMTMH0MMMMMM M MPN(NNN/!N93PNFNMk8N]Nl0Nx2`N8LN*,NN @N`Nx NNOސO O%tO8OOObOtOO!<xOObHOOOdOO^ OOxP<P<DP,[P;[PDPUPgP{8LPdPPP0tP$lPPNPlQRQ#00Q28P(QIo QR Q_Qgc<8QyQ}Q0<Q HQQ2QQ*QQPRBdR R!R&R/R5HRA4`RSxR^OlRj)@R|ZRRxRhR7R#RDlRNTRwSSS 0tS50SB` SU SbSlT S\hSztSlSPS:0SSSHSS$S)TT(T.@DT8v`<TF T\ TkZlhTtĬDTTT4T8T T,DT@T?4UU|U%U83\UAUMA4U]PUvU|"TUUm4UxU4tU U(TU=4UH UV@VV5VGLTVQ`V\VblVxVVVVtVV4 PV VVVWW $lW8TW/d W9`WM} W_@XLXYlYY_@Y( Y:Y@"YXHYb9YqQYB 4YYhYYLYYYPYYP8YY(l`Z Z&oxZ;ZM@XZ\ ZnZs ZoZZ  Z\ZZZHDZ|[`[[[(׈[6:([I[N/8[Y4 [n0[~0[[[L [h[D, [/[\[h [,,[\ʔ\T\ ?x\+\0D\@$\T\Y<\e3\xU \) \B \#\\\\D\ ]h]]%c]>]Qd]g\`]xN0\]>h]0`l]t]]]Sp] ]p^X^< ^+mH^5e4@^J^]^f% ^xt^$^h ^^`^^0^0^^`_?_\ _#8_2S<H_C_Ji<_[_iBP_|_o`_$X_|X_ @_ج0____#`a` `` D`-`5`F<`]'\`o`}8xl`H`|``>` `@`p a a aa#ڐta8M8DaHaNH Pa^Ÿap<8a at\avLaaaKaa|`a-Dla@\b bb'b-x8b=bJxb^bd>bv.bbXbP<bb4PbbzTbt$cc c( `c:4cGcV_$ce cucch cK(`c!c| cc8<chd  dd1d;dDdIdOct$dhdpdxddPdddd@xd ddO,e4e  ee*H0e9eEpe[k 8epcdee!0e` ee0Xe3xee{et e`Df0f&f3tlfGO fYfk1f/f\XfEf4ffǤ@f Tfuftg gxg$d g7g?qtTgNg]x4gmjg9dgv\ggPPg(gy0g'Hghh Bh%h0h>'hhIhRhYLhhg`H|hyxhhLphhhplhh hhF$\h]tDii  i di+{iDiSi_`iw1D i\itTiiil ii(TiHHHj|jj%j;|jG`jP`j`P$,jrۜ jTdjtt0jjj jjj  jJ|j2\4k $4Ykk/k4@kC3`,kU`kgkrv kkHkpk kkpkk\k5kJl/pll$l9ClHl\o<liWl|lnX lLpLll&hl}tllm mqmm&l m@mNmUmbmi6Lm{ mXmmmnTHm mE(mPmmB8mn,n$n n-%pn8TnG nN/ na8no݀XnnnPn9nn<nnLpnxnH0o o4 o( 0o3pDoDloX{ogop|ooooo8 oy0oKtoo\p 8pp&lp3ndpC'xpT<phpmHpxp~IpP pp p8pp%HpBpc q/qq q,<q=P qO#`q`dqmxq9xqqqqqxqPq@qr=(0r:\r% r1"Lr<1 trOrUHrirqmdrrTrXrr<rpr7,r sTs%,ps(s, s:+psQHsa\sn s~<ssM|s0sXsss| s` tHtt4t)=t9tKt[]tf tw@tu4t*ttt|tt-lPt|`tttuu BX8u!:libtcl8.0.sopanic.c.L428regexp.cerrMsg.L1010.L1015.L1018.L1046.L1075.L1081.L1082.L1117.L1142.L1174.L1186.L1193.L1197.L1201.L1203.L1206.L1279.L1282.L1426.L1429.L1462regdummyregcregregnextregnoderegbranchregtailregoptailregpieceregatomreginsertregtryregmatchregrepeattclAsync.casyncReadyasyncActivelastHandlerfirstHandlertclBasic.cbuiltInCmds.L1109.L1162.L1163.L1215.L1218.L1295.L1297.L1298.L1303.L1304.L1305.L1308.L1311.L1312.L1324.L1327.L1355.L1374.L1435.L1440.L1442.L1443.L1444.L1455.L1456.L1459.L1460.L1488.L1502.L1560.L1565.L1566.L1567.L1568.L1597.L1601.L1603.L1607.L1613.L1616.L1618.L1633.L1657.L1780.L1783.L1787.L1788.L1798.L1803.L1811.L1812.L1818.L1820.L1827.L1831.L1833.L1851.L1868.L1885.L1914.L1958.L1964.L1967.L1968DeleteInterpProcHiddenCmdsDeleteProc.L_const_seg_900003101.L_const_seg_900003201.L_const_seg_900003501tclBinary.c.L1074.L1079.L1421GetFormatSpecFormatNumberScanNumber.L_const_seg_900000601tclCkalloc.c.L998.L1005.L1012.L1019tclClock.c.L997.L998.L1105.L1106FormatClocktclCmdAH.c.L1000.L1001.L1008.L1010.L1021.L1035.L1056.L1064.L1071.L1078.L1082.L1097.L1098.L1107.L1114.L1123.L1131.L1139.L1151.L1174.L1205.L1430.L1432.L1434.L1436.L1438.L1440.L1442.L1444.L1446.L1448.L1450.L1452.L1454.L1456.L1458.L1460.L1462.L1464.L1466.L1468.L1471.L1479.L1482.L1485.L1488.L1491.L1494.L1497.L1498.L1505.L1506.L1511.L1524.L1531.L1544.L1568.L1588.L1620.L1634.L1753.L1755.L1778.L1781.L1783StoreStatDataGetTypeFromModetclCmdIL.c.L1025.L1026.L1031.L1035.L1036.L1043.L1046.L1050.L1058.L1059.L1064.L1070.L1077.L1100.L1101.L1133.L1136.L1137.L1151.L1154.L1155.L1176.L1217.L1227.L1230.L1231.L1244.L1245.L1252.L1253.L1254.L1261.L1262.L1277.L1316.L1317.L1327.L1334.L1337.L1345.L1359.L1404.L1417.L1446.L1453.L1470.L1552.L1557.L1574.L1593.L1628.L1637.L1660.L1678.L1693.L1700.L1705.L1729.L1740.L1746.L1861.L1862.L1863.L1864.L1906.L1909InfoArgsCmdInfoBodyCmdInfoCmdCountCmdInfoCommandsCmdInfoCompleteCmdInfoDefaultCmdInfoExistsCmdInfoGlobalsCmdInfoHostnameCmdInfoLevelCmdInfoLibraryCmdInfoLoadedCmdInfoLocalsCmdInfoNameOfExecutableCmdInfoPatchLevelCmdInfoProcsCmdInfoScriptCmdInfoSharedlibCmdInfoTclVersionCmdInfoVarsCmdMergeSortMergeListsSortCompareDictionaryComparetclCmdMZ.c.L1026.L1027.L1037.L1038.L1039.L1046.L1050.L1054.L1056.L1057.L1105.L1114.L1124.L1125.L1131.L1135.L1139.L1141.L1142.L1214.L1215.L1225.L1239.L1243.L1248.L1253.L1258.L1263.L1268.L1269.L1270.L1273.L1277.L1280.L1281.L1291.L1292.L1321.L1334.L1344.L1347.L1352.L1375.L1376.L1378.L1402.L1409.L1414.L1441.L1458.L1643.L1644.L1645.L1648.L1653.L1658.L1664.L1665.L1703.L1714.L1729.L1740.L1750.L1768.L1769.L1781.L1795.L1803.L1813.L1814.L1817.L1822.L1823.L1847.L1854.L1855.L1886.L1889.L1908.L1909.L1910.L1911.L1923.L1926.L1930.L1934.L1937.L1958.L1959.L1972.L_const_seg_900001201TraceVarProctclCompExpr.c.L1046.L1055.L1056.L1079.L1080.L1115.L1171.L1497.L1498.L1516.L1517.L1540.L1541.L1564.L1569.L1583.L1584.L1619.L1620.L1621.L1639GetTokenCompileCondExprCompileLorExprCompileLandExprCompileBitOrExprCompileBitXorExprCompileBitAndExprCompileEqualityExprCompileRelationalExprCompileShiftExprCompileAddExprCompileMultiplyExprCompileUnaryExprCompilePrimaryExprCompileMathFuncCalltclCompile.ctraceInitializedFreeByteCodeInternalRepDupByteCodeInternalRepUpdateStringOfByteCodeSetByteCodeFromAny.L843.L844.L848.L852.L855.L862.L877.L890.L892.L896.L901.L906.L910.L912.L923.L925.L942.L945.L947.L952.L970.L972.L976.L984.L990.L1004.L1006.L1014.L1016.L1021.L1035.L1043.L1045.L1047.L1051.L1065.L1073.L1075.L1077.L1082.L1089.L1090.L1099.L1101.L1103.L1105.L1107.L1109.L1111.L1116.L1171.L1173.L1201.L1237.L1251.L1258.L1269.L1285.L1297.L1318.L1331.L1407.L1586.L1629.L1631.L1716.L1769.L1795.L1825.L1828.L1860.L1924.L1959.L2026.L2056.L2070.L2080.L2106.L2121.L2148.L2170.L2183.L2202.L2240.L2289.L2299.L2306.L2314.L2324.L2342.L2368.L2389.L2391.L2465.L2483.L2537.L2543.L2554.L2557.L2571.L2576.L2590.L2604.L2609.L2623.L2628.L2642.L2644.L2667.L2679.L2735.L2748.L2857.L2914.L3014.L3022.L3032.L3050.L3080.L3154.L3156.L3330.L3339.L3348.L3351.L3377.L3390.L3398.L3402.L3514.L_const_seg_900000104GetCmdLocEncodingSizeEncodeCmdLocMapEnterCmdStartDataCompileBracesCompileMultipartWordEnterCmdExtentDataCompileWordLookupCompiledLocalAdvanceToNextWordInitArgInfoCollectArgInfoCreateExceptionRangeCompileCmdWordInlineFreeArgInfoCompileExprWordDupForeachInfoFreeForeachInfoExpandObjectArraytclDate.cTclDatemaxdepthMonthDayTableUnitsTableOtherTableTimezoneTableMilitaryTable.L1196.L1276.L1278.L1282.L1284.L1496.L1539TclDateRelSecondsTclDateRelMonthTclDateMeridianTclDateYearTclDateSecondsTclDateMonthTclDateMinutesTclDateHourTclDateDayTclDateTimezoneTclDateHaveZoneTclDateHaveTimeTclDateHaveRelTclDateHaveDayTclDateHaveDateTclDateDayNumberTclDateDayOrdinalTclDateDSTmodeTclDateInputTclDateerrorToSecondsConvertDSTcorrectRelativeDateRelativeMonthLookupWordTclDatelextclEnv.cfirstInterpPtrcacheSizeenvironCacheenvironSize.L1005.L1038.L1065.L1082.L1091.L1096EnvTraceProcFindVariableReplaceStringtclEvent.cfirstExitPtrtclInExit.L1001.L1005.L1008.L1011.L1012.L1015.L1032.L1040.L1047.L1122.L1123.L1136.L1137.L1152.L1154.L1155.L1157.L1158BgErrorDeleteProcHandleBgErrorsVwaitVarProctclExecute.cexecInitializedoperatorStringsExprUnaryFuncExprBinaryFuncExprAbsFuncExprDoubleFuncExprIntFuncExprRandFuncExprRoundFuncExprSrandFuncFreeCmdNameInternalRepDupCmdNameInternalRepUpdateStringOfCmdNameSetCmdNameFromAny.L1176.L1178.L1203.L1216.L1230.L1231.L1232.L1298.L1299.L1300.L1301.L1308.L1311.L1312.L1318.L1330.L1331.L1345.L1346.L1351.L1388.L1427.L2236.L2286.L2298.L2344.L2346.L2347.L2348.L2349.L2353.L2375.L2378.L2380.L2416.L2417.L2418.L2422.L2425.L2434.L2435.L2437.L2440.L2442.L2443.L2444.L2527.L2554.L2593.L2601.L2602.L2603.L2604.L2633.L2652.L2662.L2663.L2664.L2665.L2702.L2712.L2713.L2714.L2715.L2736.L2739.L2741.L2742.L2753.L2754.L2758.L2774.L2811.L2812.L2813.L2823.L2824.L2825.L2827.L2828.L2829.L2831.L2832.L2833.L2893opNameInitByteCodeExecutionGrowEvaluationStack.L_const_seg_900000708PrintByteCodeInfoGetSrcInfoForPcCallTraceProcedureIllegalExprOperandTypeExprCallMathFunc.L_const_seg_900001301.L_const_seg_900001802.L_const_seg_900001901.L_const_seg_900002001.L_const_seg_900002201.L_const_seg_900002301.L_const_seg_900002401.L_const_seg_900002601.L_const_seg_900002701tclFCmd.c.L1012.L1013.L1014.L1023.L1026.L1028.L1029.L1030.L1071.L1072.L1083.L1084.L1085.L1105.L1106.L1115.L1116.L1197.L1218.L1222.L1224.L1225.L1252.L1270FileCopyRenameFileForceOptionCopyRenameOneFileFileBasenametclFileName.cinitializedwinRootPatternPtrmacRootPatternPtr.L1016.L1025.L1029.L1030.L1032.L1051.L1063.L1108.L1126.L1127.L1136.L1155.L1156.L1164.L1171.L1183.L1197.L1203.L1213.L1231.L1237.L1241.L1242.L1258.L1278.L1319.L1368.L1412.L1436.L1441.L1442.L1448.L1449.L1460.L1464.L1466.L1467.L1474.L1506.L1595.L1602.L1610.L1615.L1618.L1628.L1632.L1642.L1661.L1663.L1666.L1674.L1680.L1682.L1692.L1709.L1711.L1738.L1740FileNameCleanupExtractWinRootSplitUnixPathSplitWinPathSplitMacPathDoTildeSubstSkipToChartclGet.c.L1012.L1013.L1020.L1021.L1022.L1053.L1054.L1059.L1060.L1061.L1081.L1082.L1124.L1129.L1134.L1139.L1146.L1150.L1157.L1158tclHash.c.L738.L794.L799.L801.L802.L923.L928StringFindStringCreateOneWordFindOneWordCreateArrayFindArrayCreateBogusFindBogusCreate.L_const_seg_900000601HashStringRebuildTabletclHistory.c.L1013.L1014tclIndexObj.cDupIndexInternalRepUpdateStringOfIndexSetIndexFromAny.L745.L768.L773.L778tclInterp.caliasCounter.L1045.L1046.L1065.L1088.L1107.L1108.L1114.L1137.L1142.L1152.L1157.L1161.L1162.L1170.L1181.L1182.L1187.L1192.L1193.L1196.L1197.L1200.L1201.L1217.L1220.L1227.L1228.L1229.L1265.L1270.L1271.L1273.L1290.L1293.L1294.L1299.L1303.L1306.L1307.L1314.L1327.L1330.L1331.L1340.L1341.L1342.L1343.L1353.L1356.L1359.L1360.L1375.L1378.L1381.L1382.L1396.L1401.L1402.L1404.L1421.L1424.L1426.L1430.L1433.L1434.L1444.L1445.L1448.L1449.L1456.L1459.L1460.L1461.L1464.L1465.L1472.L1477.L1478.L1487.L1492.L1493.L1508.L1511.L1512.L1515.L1516.L1527.L1534.L1537.L1538.L1541.L1542.L1555.L1558.L1570.L1573.L1574.L1577.L1578.L1583.L1586.L1595.L1600.L1603.L1611.L1640.L1659.L1660.L1663.L1664.L1693.L1696.L1699.L1716.L1725.L1726.L1727.L1728.L1738.L1741.L1754.L1757.L1769.L1792.L1795.L1797.L1801.L1802.L1805.L1815.L1816.L1817.L1818.L1829.L1830.L1831.L1836.L1848.L1851.L1852.L1853.L1856.L1857.L1876.L1879.L1888.L1943.L1991.L2003.L2004.L2022.L2025.L2034.L2037.L2044.L2057.L2060.L2076.L2079.L2088.L2091.L2094.L2095.L2117.L2120.L2123.L2124AliasCmdMarkTrustedGetInterpCreateSlaveSlaveObjectCmdSlaveObjectDeleteProcSlaveRecordDeleteProcCreateInterpObjectDeleteOneInterpObjectDeleteInterpObjectAliasCreationHelperDeleteAliasAliasCmdDeleteProcInterpAliasesHelperInterpAliasHelperDescribeAliasInterpExistsHelperInterpEvalHelperInterpExposeHelperInterpHideHelperInterpHiddenHelperInterpInvokeHiddenHelperInterpMarkTrustedHelperInterpIsSafeHelperInterpSlavesHelperInterpShareHelperInterpTargetHelperGetTargetInterpTransferHelperSlaveAliasHelperSlaveAliasesHelperSlaveEvalHelperSlaveExposeHelperSlaveHideHelperSlaveHiddenHelperSlaveIsSafeHelperSlaveInvokeHiddenHelperSlaveMarkTrustedHelperMasterRecordDeleteProctclIO.cnestedHandlerPtrfirstChanPtrchannelExitHandlerCreatedstdinChannelstdinInitializedstdoutChannelstdoutInitializedstderrChannelstderrInitialized.L1038.L1100.L1101.L1115.L1118.L1178.L1200.L1207.L1216.L1220.L1224.L1230.L1231.L1241.L1311.L1348.L1380.L1397.L1414.L1491.L1493.L1580.L1657.L1736.L2000.L2004.L2007.L2038.L2042.L2045.L2047.L2055.L2059.L2062.L2066.L2068.L2076.L2080.L2088.L2092.L2100.L2102.L2107.L2109.L2120.L2124.L2132.L2136.L2140.L2142.L2147.L2151.L2155.L2157.L2175.L2181.L2191.L2195.L2200.L2205.L2210.L2211.L2215.L2224.L2242.L2243.L2253.L2277.L2278.L2285.L2289.L2293.L2297.L2301.L2305.L2310.L2311.L2312.L2321.L2324.L2329.L2333.L2337.L2341.L2345.L2350.L2351.L2352.L2504.L2505.L2508.L2513.L2516.L2517.L2522.L2525.L2527.L2546.L2547.L2554.L2559.L2655.L2659.L2665.L2668.L2672.L2675.L2677.L2680.L2682.L2685.L2689.L2692.L2694.L2707.L2711.L2719.L2722.L2726.L2729.L2731.L2734.L2736.L2751.L2755.L2756.L2759.L2763.L2766.L2768.L2781.L2782.L2783.L2792.L2793.L2798.L2802.L2803.L2805.L2809.L2812.L2813.L2816.L2820.L2821.L2826.L2827.L2838.L2839.L2853.L2856.L2860.L2861.L2868.L2870.L2874.L2878.L2879.L2885.L2886.L2887.L2897.L2898.L2901.L2902.L2947.L2948.L2959.L2960SetBlockModeCloseChannelsOnExitGetChannelTableDeleteChannelTableChannelEventScriptInvokerCheckForStdChannelsBeingClosedCleanupChannelHandlersRecycleBufferDiscardOutputQueuedCheckForDeadChannelFlushChannelUpdateInterestCloseChannelDiscardInputQueuedStopCopyDoWriteGetInputCopyAndTranslateBufferScanBufferForEOLScanInputForEOLGetEOLDoReadChannelTimerProcDeleteScriptRecordCreateScriptRecordCopyDataCopyEventProctclIOCmd.c.L1003.L1009.L1013.L1015.L1016.L1019.L1027.L1028.L1034.L1037.L1038.L1045.L1050.L1051.L1054.L1055.L1063.L1068.L1069.L1075.L1076.L1091.L1092.L1093.L1095.L1103.L1104.L1113.L1116.L1117.L1129.L1130.L1145.L1146.L1155.L1160.L1165.L1168.L1169.L1172.L1173.L1180.L1181.L1190.L1207.L1208.L1232.L1248.L1252.L1254.L1255.L1261.L1262.L1282.L1295.L1300.L1301.L1313.L1314.L1317.L1339.L1356.L1359.L1362.L1367.L1378.L1379.L1380.L1402.L1406.L1409.L1412.L1416.L1419.L1423.L1425.L1429.L1433.L1435.L1436.L1443.L1449.L1450.L1451.L1455.L1469.L1478.L1483.L1484.L1489.L1490.L1496TcpAcceptCallbacksDeleteProcRegisterTcpServerInterpCleanupUnregisterTcpServerInterpCleanupProcAcceptCallbackProcTcpServerCloseProctclIOSock.c.L1004tclIOUtil.c.L1007.L1008.L1021.L1022.L1029.L1034.L1039.L1044.L1049.L1054.L1059.L1064.L1069.L1074.L1075.L1076.L1082.L1083.L1095.L1096.L1097.L1100.L1101.L1104.L1105.L1113.L1128tclLink.c.L753.L759.L762.L768.L772.L776.L781.L794.L795.L799.L801StringValueLinkTraceProctclListObj.cFreeListInternalRepDupListInternalRepUpdateStringOfListSetListFromAny.L734.L759.L772.L806.L930tclLoad.cfirstPackagePtr.L717.L718.L728.L734.L735.L768.L769.L770.L776.L788.L789.L809.L821.L822.L827.L835.L836.L837.L842.L843.L844.L847.L848.L866.L867.L874LoadExitProcLoadCleanupProctclMain.c.L716.L805interptclNamesp.cnumNsCreatedFreeNsNameInternalRepDupNsNameInternalRepUpdateStringOfNsNameSetNsNameFromAnynsInitialized.L758.L759.L760.L782.L786.L793.L794.L803.L829.L833.L839.L842.L893.L894.L923.L928.L929.L934.L935.L937.L938.L939.L964.L966.L967.L980.L981.L1025.L1123.L1124.L1148.L1149.L1173.L1174.L1234.L1251.L1252.L1287.L1288.L1290.L1299.L1315.L1319.L1329.L1331.L1332.L1335.L1345.L1353.L1360.L1361.L1376.L1392.L1399.L1403.L1427.L1441.L1446.L1461.L1466.L1467.L1488.L1495.L1498.L1499.L1516.L1517.L1519.L1528.L1559.L1582.L1586.L1590.L1642NamespaceFreeInvokeImportedCmdDeleteImportedCmdGetNamespaceFromObjNamespaceChildrenCmdNamespaceCodeCmdNamespaceCurrentCmdNamespaceDeleteCmdNamespaceEvalCmdNamespaceExportCmdNamespaceForgetCmdNamespaceImportCmdNamespaceInscopeCmdNamespaceOriginCmdNamespaceParentCmdNamespaceQualifiersCmdNamespaceTailCmdNamespaceWhichCmdtclNotify.cinitializednotifierInitNotifierNotifierExitHandlertclObj.ctypeTableInitializedDupBooleanInternalRepUpdateStringOfBooleanSetBooleanFromAnyDupDoubleInternalRepUpdateStringOfDoubleSetDoubleFromAnyDupIntInternalRepUpdateStringOfIntSetIntFromAny.L1142.L1189.L1194.L1199.L1204.L1211.L1215.L1237.L1261.L1292.L1326.L1373.L1378.L1379.L1380.L1414typeTableInitTypeTableFinalizeTypeTableFinalizeFreeObjList.L_const_seg_900002102tclParse.c.L1026.L1074.L1260.L1287.L1294QuoteEndScriptEndVarNameEndtclPipe.cdetList.L1013.L1014.L1017.L1019.L1032.L1035.L1037.L1038.L1039.L1040.L1041.L1082.L1088.L1093.L1160.L1173.L1174.L1229.L1235.L1247.L1259.L1288.L1364.L1365.L1369.L1370.L1373FileForRedirecttclPkg.c.L717.L718.L719.L750.L755.L759.L762.L767.L770.L773.L782.L783.L784.L791.L792.L795.L814.L819.L820.L847.L851.L852.L868.L873.L874.L885.L890.L891.L894.L911.L926.L927.L931.L936.L937.L945.L950.L951.L962.L967.L968.L974.L975.L976.L977.L1020.L1021FindPackageComparePkgVersionsCheckVersiontclPosixStr.c.L1175.L1231.L1233.L1235.L1237.L1239.L1241.L1243.L1245.L1247.L1249.L1251.L1253.L1255.L1257.L1259.L1261.L1263.L1265.L1267.L1269.L1271.L1273.L1275.L1277.L1279.L1281.L1283.L1285.L1287.L1289.L1291.L1293.L1295.L1297.L1299.L1301.L1303.L1305.L1307.L1309.L1311.L1313.L1315.L1317.L1319.L1321.L1323.L1325.L1327.L1329.L1331.L1333.L1335.L1337.L1339.L1341.L1343.L1345.L1347.L1349.L1351.L1353.L1355.L1357.L1359.L1361.L1363.L1365.L1367.L1369.L1371.L1373.L1375.L1377.L1379.L1381.L1383.L1385.L1387.L1389.L1391.L1393.L1395.L1397.L1399.L1401.L1403.L1405.L1407.L1409.L1411.L1413.L1415.L1417.L1419.L1421.L1423.L1425.L1427.L1429.L1431.L1433.L1435.L1437.L1439.L1441.L1443.L1445.L1447.L1449.L1451.L1453.L1477.L1547tclPreserve.cspaceAvlinUse.L754.L767refArrayPreserveExitProctclProc.c.L742.L747.L748.L751.L752.L757.L758.L772.L773.L778.L779.L795.L796.L797.L808.L836.L837.L863.L875.L933.L936.L937.L942.L945.L946.L962.L965.L969.L977.L978.L979.L984.L985.L988.L996.L998.L1008.L1012.L1016.L1048.L1052.L1055InterpProcProcDeleteProcCleanupProctclStringObj.cDupStringInternalRepUpdateStringOfStringSetStringFromAny.L735.L750.L766.L783ConvertToStringTypetclTimer.cinitializedfirstTimerHandlerPtr.L1157.L1158.L1164.L1167.L1181.L1182.L1185.L1186.L1192.L1217.L1223.L1233.L1237.L1240.L1241.L1244.L1246.L1253.L1280idleGenerationlastIdlePtridleListtimerPendinglastTimerIdInitTimerTimerSetupProcTimerCheckProcTimerExitProcTimerHandlerEventProcAfterCleanupProcAfterProcGetAfterEventFreeAfterPtrtclUtil.cprecisionStringprecisionFormat.L1048.L1078.L1079.L1088.L1093.L1139.L1154.L1643.L1648.L1672.L1686.L1783.L1785.L1790.L1817.L1820.L1828.L1829.L1855.L1858.L1911.L1918.L1919SetupAppendBuffertclVar.cnoSuchVarisArrayneedArraynoSuchElementdanglingUpvarbadNamespacemissingName.L1039.L1194.L1206.L1221.L1239.L1249.L1265.L1281.L1290.L1306.L1307.L1376.L1384.L1390.L1456.L1477.L1483.L1502.L1526.L1536.L1558.L1574.L1591.L1608.L1627.L1673.L1685.L1752.L1766.L1785.L1825.L1837.L2026.L2036.L2044.L2045.L2072.L2082.L2083.L2086.L2087.L2126.L2141.L2179.L2219.L2313.L2314.L2321.L2322.L2323.L2331.L2332.L2514.L2515.L2518.L2519.L2520VarErrMsgNewVarDeleteSearchesCallTracesCleanupVarDeleteArrayParseSearchIdMakeUpvartclMtherr.ctclUnixChan.cfirstFilePtrfileChannelTypeFileBlockModeProcFileCloseProcFileInputProcFileOutputProcFileSeekProcFileWatchProcFileGetHandleProcttyChannelTypeTtySetOptionProcTtyGetOptionProctcpChannelTypeTcpBlockModeProcTcpCloseProcTcpInputProcTcpOutputProcTcpGetOptionProcTcpWatchProcTcpGetHandleProc.L1100.L1104.L1111.L1117.L1119.L1120speeds.L1204.L1206.L1213.L1215.L1219.L1226.L1233.L1246.L1254.L1255.L1256.L1266.L1267.L1271.L1272.L1280.L1353.L1359.L1363.L1372.L1378.L1384.L1388.L1395.L1398.L1449.L1458.L1477.L1479.L1480.L1486.L1488.L1489.L1497.L1504.L1505.L1506.L1519.L1524.L1529.L1531.L1533.L1534.L1535.L1545.L1546.L1550.L1551.L1556.L1565.L1567.L1570.L1571.L1572.L1573.L1578.L1589TtyParseModeTtySetAttributesTtyGetAttributesTtyGetSpeedTtyGetBaudTtyInitWaitForConnectCreateSocketCreateSocketAddressTcpAccepttclUnixEvent.c.L996tclUnixFCmd.cGetGroupAttributeSetGroupAttributeGetOwnerAttributeSetOwnerAttributeGetPermissionsAttributeSetPermissionsAttribute.L1039.L1041.L1045.L1148.L1151.L1158.L1160.L1227.L1228.L1231.L1232.L1239.L1240.L1243.L1244.L1251.L1252.L1253.L1262.L1263.L1264.L1268.L1269.L1278.L1279.L1280.L1284.L1285.L1294.L1295.L1300CopyFileAttsCopyFileTraverseUnixTreeTraversalCopyTraversalDeletetclUnixFile.ccurrentDircurrentDirExitHandlerSetexecutableNameExitHandlerSet.L1019.L1020.L1035.L1037.L1052.L1055.L1077.L1107.L1125.L1126.L1150FreeCurrentDirFreeExecutableNametclUnixPipe.cpipeChannelTypePipeBlockModeProcPipeCloseProcPipeInputProcPipeOutputProcPipeWatchProcPipeGetHandleProc.L1056.L1071.L1072.L1075.L1127.L1138.L1240SetupStdFileRestoreSignalstclUnixSock.chostnameInitedhostnametclUnixTime.c.L1004tclUnixInit.cdefaultLibraryDirpkgPathinitializedinitScript.L1001.L1002.L1011.L1053.L1059.L1066PlatformInitExitHandlertclUnixNotfy.cinitializednotifierInitNotifierNotifierExitHandlerFileHandlerEventProcfixstrtod.ctclLoadDl.c.L717.L718.L721.L724TclTeardownNamespaceTcl_ObjSetVar2panicTclIncrIndexedScalarTcl_UpVarTcl_GetAliassocketTclpListVolumesTclDateerrflagTclRegErrorTcl_CreateAliasObjTcl_SignalMsgTcl_GetBooleanFromObjTcl_GetVarTcl_TraceVar2Tcl_AsyncDeleteTclCompileSetCmdTclCompileExprTcl_DStringInitTcl_HashStatstclFreeObjListTclExpandCodeArrayTcl_CreateTimerHandlerTcl_LreplaceObjCmdTclGetIntForIndexTclTestChannelEventCmdTcl_ExecCmdTclCreateExecEnvTcl_MergeTcl_EofgmtimereadTclGetLonggetpeernameTcl_SeekTclCopyChannelTcl_NextHashEntryTclObjIndexForStringTcl_FcopyObjCmdTclpRenameFileTcl_GetsTclPrecTraceProcTcl_LinsertObjCmdTcl_SetMaxBlockTimeTcl_NewLongObjTclGetElementOfIndexedArrayTcl_AppendToObjatoiTcl_GetCommandInfoTcl_AppendAllObjTypesgetcwdTcl_AddErrorInfoTcl_TranslateFileNameTclCompileStringTcl_AsyncReadyTcl_CreateCloseHandlerTcl_FreetclIndexTypestrtoulTcl_InputBufferedtanTcl_DeleteHashTableTclpGetClicksTcl_UnsetVar2strtodTcl_DeleteCommandFromTokenrealpathTclInvokeStringCommandstrtolTcl_GetInterpPathTclObjInvokeTclDatepactrecvgetpwuidrmdirTcl_IncrCmdTcl_GetIntFromObjTclGetDateTcl_VarEvalTcl_NewBooleanObjTcl_OpenCommandChanneltimezoneTclPreventAliasLoopTcl_ListObjGetElementsmatherrTcl_RegisterObjTypeTcl_EvalFileTcl_FlushTcl_CreateChannelHandlertoupper_endTcl_GetDoubleFromObjTcl_GetErrnotclDummyLinkVarPtrTcl_UnsetVarTcl_IfCmdtclMemDumpFileNameTcl_GetsObjTcl_ErrorObjCmdTcl_PutEnvTcl_OpenTcpClientTcl_DbIsSharedforkgetpidTcl_ExprObjTclFormatIntTcl_FlushObjCmdTcl_CreateObjCommandreaddirTcl_AppendExportListTclInvokeTclpCloseFile_GLOBAL_OFFSET_TABLE_Tcl_UntraceVarTcl_ReadTcl_StringMatchTclCopyAndCollapsepipeTcl_SetObjResultTcl_DStringEndSublistTcl_VarTraceInfoTcl_CreateExitHandlerTclGetLoadedPackagesTcl_GetChannel__ctypeTcl_DoOneEventTcl_FirstHashEntryTcl_EvalTcl_LinkVarTclGlobalInvokeTcl_MakeTcpClientChannelabortTcl_DeleteInterpgethostbynameTclGetCwdTcl_ForCmdTcl_GetAliasObjtclIntTypeTcl_SetServiceModeTclParseBracestclListTypeTclDatedebugTcl_ListObjAppendElementTcl_GetCommandFromObjTcl_DStringAppendfixstrtodTcl_ImportmkdirTcl_CreateEventSourcegeteuidsignalTcl_SetListObjTcl_DeleteFileHandlerTcl_SetResultacceptTclPrintByteCodeObjtclTypeTableTcl_SetObjLengthexitTcl_GetVar2strerrorTcl_FormatObjCmdTcl_ForgetImportpanicProcTclpRemoveDirectoryTclTestChannelCmdTclParseNestedCmdTcl_InitHashTableTclSetElementOfIndexedArrayTcl_CreateNamespaceTcl_SignalIdTclDateactTcl_DbNewObjTclFindProcTclEmitForwardJumplogTcl_LrangeObjCmdtoloweraccessTcl_LindexObjCmdTcl_ResetResultmallocTcl_NotifyChannelTclUnsetEnvsprintfTcl_InterpDeletedceilTcl_AllowExceptionsTcl_ObjGetVar2Tcl_DStringGetResultsymlinkTcl_WrongNumArgsTclPrintInstructionTcl_ReadObjCmdTcl_EventuallyFreeTclChdirpowTclpCreateDirectorytclEmptyStringRepunameTcl_GetVariableFullNameTclIsProcTcl_SetLongObjTcl_OpenTcpServerTclObjInvokeGlobalopendirTcl_ReleaseTcl_SleepsendbindTcl_SwitchObjCmdlog10TclCompileExprCmdTcl_InterpObjCmdTcl_GetStringFromObjTcl_DStringAppendElementTcl_DumpActiveMemoryTclExprFloatErrorTcl_PosixErrorTcl_ForeachObjCmdsinhTclFindElementTcl_ClockObjCmdTclLookupVarinstructionTableTclpCopyFilesetsockoptcfgetospeedTclObjCommandCompleteTcl_ConvertCountedElementTcl_RecordAndEvalumaskTcl_TellCmdTcl_GetDoubleTcl_DbDecrRefCountfabsTcl_IsSafeTclCompileForeachCmdTcl_PrintDoubleTcl_LoadCmd.multanhTcl_FileObjCmdTcl_UpdateCmdTclDatepgoTcl_SetDoubleObjTcl_AsyncMarktclMatherrPtrTcl_PidObjCmdTcl_JoinPathTclDoGlobTcl_RegExpCompileTclWordEndtimeTcl_SplitObjCmdTcl_UpdateLinkedVar.remTclLoadFileTcl_CreateMathFuncTcl_GetOpenFileTcl_DbNewBooleanObjTcl_GetChannelModeTcl_HideCommandcfsetospeedTcl_PkgProvideTcl_MakeFileChannelTclCompileBreakCmdTcl_GetHostNameTclSetIndexedScalarTcl_GetChannelBufferSizeTcl_CancelIdleCallTcl_CreateFileHandlerTcl_GetAssocDataTcl_AddObjErrorInfoTcl_RegisterChannelTcl_GetSlaveTcl_RegexpCmdTclFixupForwardJumpsscanfTclGetDefaultStdChannelTclDatetmpTcl_TimeObjCmdTcl_SourceObjCmdtclExecutableNameTcl_AllocTcl_GetChannelOptionTclFileMakeDirsCmdstrftimeTcl_ConvertToTypeTcl_AfterObjCmdTcl_GetCurrentNamespacetclNsNameTypesqrtTcl_GetIndexFromObjhypotTclInExitTcl_SetErrnogetpwnamTcl_DeleteNamespaceTcl_ExprBooleanObjTcl_QueueEventTcl_GetsObjCmdTcl_BinaryObjCmdgetenvTclCompileQuotesgetservbynameTcl_GetChannelTypedup2Tcl_InitMemoryTclDate_TclDatesTclDate_TclDatevTclSetupEnvTcl_RegExpMatchTclDatepstcsetattrTclDatepvTclFinalizeCompExecEnvTcl_TellTcl_SetTimerselectTcl_TraceCmdwaitpidTcl_AppendObjCmdTcl_ScanCountedElementTcl_CreateCommandgethostbyaddrTcl_DeleteCloseHandlerTclCreateAuxDataTclGetAndDetachPidsTclCompileForCmdTclExpandParseValue_DYNAMICTcl_SetErrorCodeTclDater1TclDater2Tcl_ScanElementrenameTcl_DStringSetLengthTcl_CreateTracefloorTcl_ArrayObjCmdTcl_LsearchObjCmdTcl_ExprBooleanTcl_ServiceAllTclpOpenFileTclpCreateProcesstzsetTclSetEnvTcl_ReapDetachedProcsstrncmpTcl_ExitObjCmdTclDeleteVarsTcl_CreateChannelgetsockoptTclFileRenameCmdchdirTcl_CatchObjCmdTclDateparseTcl_DeleteHashEntry__iobTcl_ExprDoubleObjTclInterpInitchownTclCompileCatchCmdTclCompileWhileCmdTcl_DeleteExitHandlerTclInitNamespacesTcl_FblockedObjCmdTcl_ContinueCmdTclFreeJumpFixupArraymkfifotclTraceCompileTclCompileIncrCmdTcl_VwaitCmdTclGetOpenModeTclpDeleteFileTcl_UntraceVar2Tcl_DeleteEventSourceTcl_PopCallFrametclByteCodeTypeTcl_DetachPidsTclDeleteExecEnvTclDatesTcl_SetStringObjTclGetIndexedScalarTcl_RenameObjCmdTclDatevTclIncrElementOfIndexedArrayinet_addrgetgrnamfmodwriteTcl_SetChannelBufferSizereallocstrrchrstrpbrkTclDatelvalTclGetExtensionatan2TclResetShadowedCmdRefsTcl_PwdCmdtclpFileAttrStringsTclGetExceptionRangeForPcTcl_GlobalEvalTcl_InitTcl_JoinObjCmdTcl_AsyncInvokeTclGetRegErrorTclDatecharTclGetOriginalCommandTcl_SetChannelOptionTcl_BadChannelOptionTcl_OpenCmdTclFinalizeExecEnvtclTraceExecfdopenTcl_GetMasterTcl_NewIntObj_exitTcl_FileEventCmdTclCompileDollarVarTclFinalizeEnvironmentTclCompileIfCmdTcl_WhileCmdTcl_GetStringResultTclCreatePipelineTcl_FindNamespaceTcl_GetCommandFullNameTcl_NewDoubleObjTcl_StaticPackageTcl_ParseVarTcl_GetObjResultexpTcl_LsortObjCmdTcl_GetBooleanTclpCreateTempFileTcl_SetObjErrorCodeTcl_SeekCmdTcl_Concattcl_MathInProgressenvironTclGetUserHomeTclServiceIdleTcl_RegExpRangeTclFreePackageInfoTcl_GetLongFromObjTclpCreatePipeerrnoTcl_SetRecursionLimitTclpGetTimeTcl_ConcatObjCmdTcl_UpvarObjCmdTcl_DontCallWhenDeletedunlinkTcl_OpenFileChannelTcl_ExposeCommandTcl_SplitPathTclFreeObjgetgrgidstrchrTcl_RegsubCmdTclpCopyDirectoryTcl_LlengthObjCmdTcl_VarTraceInfo2TclInitByteCodeObjlstatinet_ntoaTcl_ErrnoIdutimetclBooleanTypeTcl_ProcObjCmdTcl_ExprStringTcl_PkgRequirefreeTcl_TraceVarTclRegCompTclpCreateCommandChannelTclSockGetPortgetsocknameTclExpandJumpFixupArrayTcl_CreateAliasTcl_DeleteTimerHandlerTcl_BreakCmdcloseTcl_SetVartclCmdNameTypeTcl_AsyncCreateTcl_InvalidateStringRepTcl_CommandCompleteTcl_RegExpExecTclFileCopyCmdTclInitJumpFixupArrayTclIncrVar2Tcl_MainTcl_FindCommandTcl_GlobalEvalObjTcl_BackslashTcl_ServiceEventTclpMakeFilecfsetispeedtclpFileAttrProcsTcl_DbNewStringObjclosedirasinTcl_AppendElementTcl_WriteTcl_DeleteCommandTclExecuteByteCodeTcl_SourceRCFileopenTcl_FreeResultTclCleanupCommandTcl_ListObjLengthTclDatevalTcl_ErrnoMsgTcl_ScanCmdTcl_AppendStringsToObjTcl_RecordAndEvalObjtclDoubleTypestrcmpTclGetFrametcgetattrTcl_PutsObjCmdTcl_EvalObjTclInitCompileEnvTcl_CreateSlaveacosTcl_FindNamespaceVarTclPrintSourceTclGuessPackageNameTcl_DbCkfreeTclUnixWaitForFileTclGetNamespaceForQualNameTcl_FindExecutableTclCleanupChildrenTcl_GlobCmdTclAllocateFreeObjectsTcl_ExprObjCmdgettimeofdaydlsymTclpGetSecondsTclMatchFiles_edata_PROCEDURE_LINKAGE_TABLE_Tcl_EofObjCmdmemsetTclDatenerrsdlopenTcl_SetStdChannelTclDatechkTcl_GetPathTypefcntltmpnamTcl_ReallocTclDateexcaTclCleanupByteCodeTcl_CallWhenDeletedexecvpTcl_GetChannelNamestrcpyTcl_ListObjCmdTcl_ConcatObjTcl_MakeSafeTcl_NewObjTcl_DoWhenIdle_etextTcl_DbNewDoubleObjTcl_SocketCmdTcl_DStringStartSublistfflushTclNeedSpaceTcl_DStringResultTcl_DbIncrRefCountmknodTcl_InfoObjCmdmemcmpTclGetEnvTcl_ListObjAppendListTcl_SetPanicProcatanTclCompileContinueCmdTclRegExecTcl_CreateInterpTcl_DeleteAssocDataTcl_EvalObjCmdendpwentTclHideUnsafeCommandsTcl_ValidateAllMemoryTcl_ConvertElementTcl_NewListObjTcl_DbNewLongObjTcl_CdObjCmdTclFreeCompileEnvreadlinkTcl_FconfigureCmdTcl_ListObjIndexTcl_SetVar2Tcl_PreserveTcl_DbCkreallocTcl_DuplicateObjTcl_NamespaceObjCmd.divTcl_ExportchmodTcl_CloseTcl_StringObjCmdmemcpybuiltinFuncTableTcl_ExitstrlenTcl_VariableObjCmdTcl_GetChannelInstanceDataTcl_InputBlockedTcl_SetCommandInfostrcspnTcl_DbNewListObjTcl_ReturnObjCmdTcl_UplevelObjCmdTcl_GlobalObjCmdTcl_SubstCmdTcl_DeleteChannelHandlerTcl_ExprLongTcl_WaitForEventTcl_GetGlobalNamespacestrstrlocaltimeTcl_DeleteEventsTcl_GetServiceModeTcl_GetIntstatTcl_UnregisterChannelTclParseQuotestclPlatformTcl_UpVar2Tcl_GetCommandNamelseekTclUpdateReturnInfodlerrorTcl_DbCkallocTcl_BackgroundErrorTclFileDeleteCmdTcl_WaitPidTcl_CloseObjCmdTcl_ListObjReplaceTcl_UnlinkVarTcl_GetStdChannelTclLooksLikeIntTclSockMinimumBuffersTcl_GetObjTypesintclStringTypeTclInvokeObjectCommandTclFileAttrsCmdTcl_FinalizeTclPlatformInitTcl_DStringFreelistenTcl_DeleteTraceTclDeleteCompiledLocalVarsTclObjInterpProcfprintfTcl_LappendObjCmdTclDatedefTcl_PackageCmdTcl_AppendResultcoshTcl_SetIntObjTcl_ExprLongObjTcl_PushCallFrameTcl_UnsetObjCmdTcl_UngetsTcl_NewStringObjTcl_SplitListTcl_CaseObjCmdTcl_SetBooleanObjisattyTcl_SetAssocDatacosTclRenameCommandTclpGetTimeZoneTcl_SetCmdTclDatestateendgrentconnectTcl_GetChannelHandleTcl_ExprDouble8 <I4: <J4> <L4> <L4@ <M4B<N4> <L4> <L4> <L4> <L4D<O4B<N4< <K4: <J4> <L4B<N4< <K4D<O4: <J4< <K4B<N4D<O4@ <M48 <I4> <L4@ <M4@ <M4< <K4B<N4< <K4< <K4@ <M4@ <M4: <J4> <L4< <K4: <J4D<O4D<O4< <K4F<P4> <L4< <K4: <J45 <M49<O4;<P49<O49<O49<O49<O49<O4<O4;<P4? <M45 <M4cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)stdlib.h 1.27 95/08/28 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)math.h 2.5 95/02/07@(#)floatingpoint.h 2.4 94/06/09@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ieeefp.h 2.7 94/11/09@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)float.h 1.13 94/07/29 SMI@(#)math.h 2.5 95/02/07@(#)floatingpoint.h 2.4 94/06/09@(#)ieeefp.h 2.7 94/11/09@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)math.h 2.5 95/02/07@(#)floatingpoint.h 2.4 94/06/09@(#)ieeefp.h 2.7 94/11/09@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMI@(#)termios.h 1.6 92/07/14 SMI@(#)termios.h 1.24 95/01/09 SMI@(#)ttydev.h 1.7 92/07/14 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMI@(#)utime.h 1.8 92/07/14 SMI@(#)utime.h 1.8 92/07/14 SMI@(#)grp.h 1.16 95/08/28 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)errno.h 1.13 95/09/10 SMI@(#)errno.h 1.15 95/01/22 SMI@(#)fcntl.h 1.9 93/10/12 SMI@(#)types.h 1.38 95/11/14 SMI@(#)machtypes.h 1.9 94/11/05 SMI@(#)select.h 1.10 92/07/14 SMI@(#)time.h 2.47 95/08/24 SMI@(#)time.h 1.23 95/08/28 SMI@(#)siginfo.h 1.36 95/08/24 SMI@(#)machsig.h 1.10 94/11/05 SMI@(#)fcntl.h 1.31 95/01/19 SMI@(#)pwd.h 1.17 95/08/28 SMI@(#)signal.h 1.27 95/08/30 SMI@(#)signal.h 1.44 95/03/16 SMI@(#)unistd.h 1.24 95/08/24 SMI@(#)procset.h 1.15 93/05/05 SMI@(#)param.h 1.34 95/11/05 SMI@(#)dirent.h 1.19 95/08/28 SMI@(#)dirent.h 1.15 94/07/26 SMI@(#)file.h 1.41 95/08/30 SMI@(#)t_lock.h 1.42 94/11/02 SMI@(#)machlock.h 1.14 94/10/20 SMI@(#)dki_lkinfo.h 1.8 93/05/03 SMI@(#)dl.h 1.13 93/08/18 SMI@(#)sleepq.h 1.17 94/07/29 SMI@(#)turnstile.h 1.27 94/10/27 SMI@(#)pirec.h 1.11 93/12/20 SMI@(#)mutex.h 1.14 94/07/29 SMI@(#)rwlock.h 1.3 94/07/29 SMI@(#)semaphore.h 1.4 94/07/29 SMI@(#)condvar.h 1.6 94/07/29 SMI@(#)stat.h 1.26 95/08/14 SMI@(#)wait.h 1.15 94/11/05 SMI@(#)unistd.h 1.33 95/08/28 SMI@(#)socket.h 1.15 95/02/24 SMI@(#)netconfig.h 1.13 95/02/24 SMI@(#)utsname.h 1.24 95/07/14 SMI@(#)in.h 1.4 93/07/06 SMI@(#)stream.h 1.56 94/09/28 SMI@(#)vnode.h 1.53 95/08/29 SMI@(#)cred.h 1.18 94/12/04 SMI@(#)uio.h 1.21 94/04/22 SMI@(#)seg_enum.h 1.1 93/04/03 SMI@(#)poll.h 1.19 94/08/31 SMI@(#)strmdep.h 1.8 92/07/14 SMI@(#)byteorder.h 1.9 94/01/04 SMI@(#)inet.h 1.8 92/07/14 SMI@(#)netdb.h 1.15 96/05/29 SMI@(#)float.h 1.13 94/07/29 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2cg: WorkShop Compilers 4.2 22 Oct 1996@(#)stdio.h 1.39 95/12/04 SMI@(#)feature_tests.h 1.7 94/12/06 SMI@(#)va_list.h 1.6 96/01/26 SMI@(#)ctype.h 1.19 95/01/28 SMI@(#)limits.h 1.29 96/01/11 SMI@(#)isa_defs.h 1.7 94/10/26 SMI@(#)stdlib.h 1.27 95/08/28 SMI@(#)string.h 1.17 95/08/28 SMI@(#)stdarg.h 1.38 96/01/26 SMI@(#)dlfcn.h 1.14 93/10/26 SMIacomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2.hash.dynsym.dynstr.rela.data.rela.picdata.rela.got.rela.plt.text.rodata1.got.dynamic.plt.data.data1.picdata.bss.symtab.strtab.stab.index.comment.shstrtab.stab.indexstrpanic.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/panic.c -W0,-xpregexp.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/regexp.c -W0,-xptclAsync.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclAsync.c -W0,-xptclBasic.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclBasic.c -W0,-xptclBinary.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclBinary.c -W0,-xptclCkalloc.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclCkalloc.c -W0,-xptclClock.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclClock.c -W0,-xptclCmdAH.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclCmdAH.c -W0,-xptclCmdIL.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclCmdIL.c -W0,-xptclCmdMZ.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclCmdMZ.c -W0,-xptclCompExpr.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclCompExpr.c -W0,-xptclCompile.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclCompile.c -W0,-xptclDate.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclDate.c -W0,-xptclEnv.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclEnv.c -W0,-xptclEvent.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclEvent.c -W0,-xptclExecute.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclExecute.c -W0,-xptclFCmd.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclFCmd.c -W0,-xptclFileName.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclFileName.c -W0,-xptclGet.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclGet.c -W0,-xptclHash.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclHash.c -W0,-xptclHistory.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclHistory.c -W0,-xptclIndexObj.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclIndexObj.c -W0,-xptclInterp.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclInterp.c -W0,-xptclIO.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclIO.c -W0,-xptclIOCmd.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclIOCmd.c -W0,-xptclIOSock.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclIOSock.c -W0,-xptclIOUtil.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclIOUtil.c -W0,-xptclLink.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclLink.c -W0,-xptclListObj.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclListObj.c -W0,-xptclLoad.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclLoad.c -W0,-xptclMain.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclMain.c -W0,-xptclNamesp.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclNamesp.c -W0,-xptclNotify.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclNotify.c -W0,-xptclObj.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclObj.c -W0,-xptclParse.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclParse.c -W0,-xptclPipe.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclPipe.c -W0,-xptclPkg.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclPkg.c -W0,-xptclPosixStr.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclPosixStr.c -W0,-xptclPreserve.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclPreserve.c -W0,-xptclProc.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclProc.c -W0,-xptclStringObj.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclStringObj.c -W0,-xptclTimer.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclTimer.c -W0,-xptclUtil.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclUtil.c -W0,-xptclVar.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../generic/tclVar.c -W0,-xptclMtherr.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../tclMtherr.c -W0,-xptclUnixChan.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../tclUnixChan.c -W0,-xptclUnixEvent.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../tclUnixEvent.c -W0,-xptclUnixFCmd.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../tclUnixFCmd.c -W0,-xptclUnixFile.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../tclUnixFile.c -W0,-xptclUnixPipe.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../tclUnixPipe.c -W0,-xptclUnixSock.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../tclUnixSock.c -W0,-xptclUnixTime.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../tclUnixTime.c -W0,-xptclUnixInit.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' -DTCL_LIBRARY='"/opt/SUNWtcl/8.0/lib/tcl8.0"' -DTCL_PACKAGE_PATH='"/opt/SUNWtcl/8.0/sun4/lib /opt/SUNWtcl/8.0/lib"' ../tclUnixInit.c -W0,-xptclUnixNotfy.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../tclUnixNotfy.c -W0,-xpfixstrtod.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../../compat/fixstrtod.c -W0,-xptclLoadDl.cXa ; O ; P ; V=3.1 ; R=WorkShop Compilers 4.2 30 Oct 1996 C 4.2/home/sstanton/projects/dist/tcl8.0/unix/sun4; /usr/dist/pkgs/devpro/5.x-sparc/bin/../SC4.2/bin/cc -c -O -KPIC -I../../generic -I.. -DHAVE_GETCWD='1' -DHAVE_UNISTD_H='1' -DUSE_TERMIOS='1' -DHAVE_SYS_TIME_H='1' -DTIME_WITH_SYS_TIME='1' -DHAVE_TZNAME='1' -DHAVE_TIMEZONE_VAR='1' -Dstrtod='fixstrtod' -DSTDC_HEADERS='1' -DNO_UNION_WAIT='1' -DNEED_MATHERR='1' -Dvfork='fork' -DHAVE_SIGNED_CHAR='1' -DHAVE_SYS_IOCTL_H='1' -DHAVE_SYS_FILIO_H='1' -DTCL_SHLIB_EXT='".so"' ../tclLoadDl.c -W0,-xp ,PBB'{jpjp  "DDH 0\  :tt  D88JSXall fdd*lDD\s|8 au0 ; } <}0707010009d321000081a400004ccf0000000a0000000133f371f100001200000000a30000000400000000000000000000002800000004reloc/SUNWtcl/8.0/sun4/lib/tclConfig.sh# tclConfig.sh -- # # This shell script (for sh) is generated automatically by Tcl's # configure script. It will create shell variables for most of # the configuration options discovered by the configure script. # This script is intended to be included by the configure scripts # for Tcl extensions so that they don't have to figure this all # out for themselves. # # The information in this file is specific to a single platform. # # SCCS: @(#) tclConfig.sh.in 1.20 97/07/01 11:40:19 # Tcl's version number. TCL_VERSION='8.0' TCL_MAJOR_VERSION='8' TCL_MINOR_VERSION='0' TCL_PATCH_LEVEL='' # C compiler to use for compilation. TCL_CC='cc' # -D flags for use with the C compiler. TCL_DEFS=' -DHAVE_GETCWD=1 -DHAVE_UNISTD_H=1 -DUSE_TERMIOS=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_TZNAME=1 -DHAVE_TIMEZONE_VAR=1 -Dstrtod=fixstrtod -DSTDC_HEADERS=1 -DNO_UNION_WAIT=1 -DNEED_MATHERR=1 -Dvfork=fork -DHAVE_SIGNED_CHAR=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1 ' # Flag, 1: we built a shared lib, 0 we didn't TCL_SHARED_BUILD=1 # The name of the Tcl library (may be either a .a file or a shared library): TCL_LIB_FILE=libtcl8.0.so # Additional libraries to use when linking Tcl. TCL_LIBS='-ldl -lsocket -lnsl -lm' # Top-level directory in which Tcl's platform-independent files are # installed. TCL_PREFIX='/opt/SUNWtcl/8.0' # Top-level directory in which Tcl's platform-specific files (e.g. # executables) are installed. TCL_EXEC_PREFIX='/opt/SUNWtcl/8.0/sun4' # Flags to pass to cc when compiling the components of a shared library: TCL_SHLIB_CFLAGS='-KPIC' # Base command to use for combining object files into a shared library: TCL_SHLIB_LD='/usr/ccs/bin/ld -G -z text' # Either '$LIBS' (if dependent libraries should be included when linking # shared libraries) or an empty string. See Tcl's configure.in for more # explanation. TCL_SHLIB_LD_LIBS='${LIBS}' # Suffix to use for the name of a shared library. TCL_SHLIB_SUFFIX='.so' # Library file(s) to include in tclsh and other base applications # in order to provide facilities needed by DLOBJ above. TCL_DL_LIBS='-ldl' # Flags to pass to the compiler when linking object files into # an executable tclsh or tcltest binary. TCL_LD_FLAGS='' # Flags to pass to ld, such as "-R /usr/local/tcl/lib", that tell the # run-time dynamic linker where to look for shared libraries such as # libtcl.so. Used when linking applications. Only works if there # is a variable "LIB_RUNTIME_DIR" defined in the Makefile. TCL_LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}' # Additional object files linked with Tcl to provide compatibility # with standard facilities from ANSI C or POSIX. TCL_COMPAT_OBJS=' fixstrtod.o' # Name of the ranlib program to use. TCL_RANLIB=':' # String to pass to linker to pick up the Tcl library from its # build directory. TCL_BUILD_LIB_SPEC='-L/home/sstanton/projects/dist/tcl8.0/unix/sun4 -ltcl8.0' # String to pass to linker to pick up the Tcl library from its # installed directory. TCL_LIB_SPEC='-L/opt/SUNWtcl/8.0/sun4/lib -ltcl8.0' # Indicates whether a version numbers should be used in -l switches # ("ok" means it's safe to use switches like -ltcl7.5; "nodots" means # use switches like -ltcl75). SunOS and FreeBSD require "nodots", for # example. TCL_LIB_VERSIONS_OK='ok' # String that can be evaluated to generate the part of a shared library # name that comes after the "libxxx" (includes version number, if any, # extension, and anything else needed). May depend on the variables # VERSION and SHLIB_SUFFIX. On most UNIX systems this is # ${VERSION}${SHLIB_SUFFIX}. TCL_SHARED_LIB_SUFFIX='${VERSION}${SHLIB_SUFFIX}' # String that can be evaluated to generate the part of an unshared library # name that comes after the "libxxx" (includes version number, if any, # extension, and anything else needed). May depend on the variable # VERSION. On most UNIX systems this is ${VERSION}.a. TCL_UNSHARED_LIB_SUFFIX='${VERSION}.a' # Location of the top-level source directory from which Tcl was built. # This is the directory that contains a README file as well as # subdirectories such as generic, unix, etc. If Tcl was compiled in a # different place than the directory containing the source files, this # points to the location of the sources, not the location where Tcl was # compiled. TCL_SRC_DIR='/home/sstanton/projects/dist/tcl8.0' # List of standard directories in which to look for packages during # "package require" commands. Contains the "prefix" directory plus also # the "exec_prefix" directory, if it is different. TCL_PACKAGE_PATH='/opt/SUNWtcl/8.0/sun4/lib /opt/SUNWtcl/8.0/lib' 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!