Attachment "958222.patch" to
ticket [958222ffff]
added by
dgp
2006-02-02 01:00:17.
0000: 49 6e 64 65 78 3a 20 64 6f 63 2f 4e 61 6d 65 73 Index: doc/Names
0010: 70 61 63 65 2e 33 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d pace.3.=========
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 ==========.RCS f
0060: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 ile: /cvsroot/tc
0070: 6c 2f 74 63 6c 2f 64 6f 63 2f 4e 61 6d 65 73 70 l/tcl/doc/Namesp
0080: 61 63 65 2e 33 2c 76 0a 72 65 74 72 69 65 76 69 ace.3,v.retrievi
0090: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 37 0a ng revision 1.7.
00a0: 64 69 66 66 20 2d 75 20 2d 72 31 2e 37 20 4e 61 diff -u -r1.7 Na
00b0: 6d 65 73 70 61 63 65 2e 33 0a 2d 2d 2d 20 64 6f mespace.3.--- do
00c0: 63 2f 4e 61 6d 65 73 70 61 63 65 2e 33 09 37 20 c/Namespace.3.7
00d0: 4f 63 74 20 32 30 30 34 20 31 35 3a 31 35 3a 33 Oct 2004 15:15:3
00e0: 38 20 2d 30 30 30 30 09 31 2e 37 0a 2b 2b 2b 20 8 -0000.1.7.+++
00f0: 64 6f 63 2f 4e 61 6d 65 73 70 61 63 65 2e 33 09 doc/Namespace.3.
0100: 31 20 46 65 62 20 32 30 30 36 20 31 37 3a 35 37 1 Feb 2006 17:57
0110: 3a 30 32 20 2d 30 30 30 30 0a 40 40 20 2d 31 33 :02 -0000.@@ -13
0120: 2c 37 20 2b 31 33 2c 37 20 40 40 0a 20 2e 54 48 ,7 +13,7 @@. .TH
0130: 20 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 20 33 Tcl_Namespace 3
0140: 20 38 2e 35 20 54 63 6c 20 22 54 63 6c 20 4c 69 8.5 Tcl "Tcl Li
0150: 62 72 61 72 79 20 50 72 6f 63 65 64 75 72 65 73 brary Procedures
0160: 22 0a 20 2e 42 53 0a 20 2e 53 48 20 4e 41 4d 45 ". .BS. .SH NAME
0170: 0a 2d 54 63 6c 5f 41 70 70 65 6e 64 45 78 70 6f .-Tcl_AppendExpo
0180: 72 74 4c 69 73 74 2c 20 54 63 6c 5f 43 72 65 61 rtList, Tcl_Crea
0190: 74 65 4e 61 6d 65 73 70 61 63 65 2c 20 54 63 6c teNamespace, Tcl
01a0: 5f 44 65 6c 65 74 65 4e 61 6d 65 73 70 61 63 65 _DeleteNamespace
01b0: 2c 20 54 63 6c 5f 45 78 70 6f 72 74 2c 20 54 63 , Tcl_Export, Tc
01c0: 6c 5f 46 69 6e 64 43 6f 6d 6d 61 6e 64 2c 20 54 l_FindCommand, T
01d0: 63 6c 5f 46 69 6e 64 4e 61 6d 65 73 70 61 63 65 cl_FindNamespace
01e0: 2c 20 54 63 6c 5f 46 6f 72 67 65 74 49 6d 70 6f , Tcl_ForgetImpo
01f0: 72 74 2c 20 54 63 6c 5f 47 65 74 43 75 72 72 65 rt, Tcl_GetCurre
0200: 6e 74 4e 61 6d 65 73 70 61 63 65 2c 20 54 63 6c ntNamespace, Tcl
0210: 5f 47 65 74 47 6c 6f 62 6c 61 4e 61 6d 65 73 70 _GetGloblaNamesp
0220: 61 63 65 2c 20 54 63 6c 5f 49 6d 70 6f 72 74 20 ace, Tcl_Import
0230: 5c 2d 20 6d 61 6e 69 70 75 6c 61 74 65 20 6e 61 \- manipulate na
0240: 6d 65 73 70 61 63 65 73 0a 2b 54 63 6c 5f 41 70 mespaces.+Tcl_Ap
0250: 70 65 6e 64 45 78 70 6f 72 74 4c 69 73 74 2c 20 pendExportList,
0260: 54 63 6c 5f 43 72 65 61 74 65 4e 61 6d 65 73 70 Tcl_CreateNamesp
0270: 61 63 65 2c 20 54 63 6c 5f 44 65 6c 65 74 65 4e ace, Tcl_DeleteN
0280: 61 6d 65 73 70 61 63 65 2c 20 54 63 6c 5f 45 78 amespace, Tcl_Ex
0290: 70 6f 72 74 2c 20 54 63 6c 5f 46 69 6e 64 43 6f port, Tcl_FindCo
02a0: 6d 6d 61 6e 64 2c 20 54 63 6c 5f 46 69 6e 64 4e mmand, Tcl_FindN
02b0: 61 6d 65 73 70 61 63 65 2c 20 54 63 6c 5f 46 6f amespace, Tcl_Fo
02c0: 72 67 65 74 49 6d 70 6f 72 74 2c 20 54 63 6c 5f rgetImport, Tcl_
02d0: 47 65 74 43 75 72 72 65 6e 74 4e 61 6d 65 73 70 GetCurrentNamesp
02e0: 61 63 65 2c 20 54 63 6c 5f 47 65 74 47 6c 6f 62 ace, Tcl_GetGlob
02f0: 6c 61 4e 61 6d 65 73 70 61 63 65 2c 20 54 63 6c laNamespace, Tcl
0300: 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b _GetNamespaceUnk
0310: 6e 6f 77 6e 48 61 6e 64 6c 65 72 2c 20 54 63 6c nownHandler, Tcl
0320: 5f 49 6d 70 6f 72 74 2c 20 54 63 6c 5f 53 65 74 _Import, Tcl_Set
0330: 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e NamespaceUnknown
0340: 48 61 6e 64 6c 65 72 20 5c 2d 20 6d 61 6e 69 70 Handler \- manip
0350: 75 6c 61 74 65 20 6e 61 6d 65 73 70 61 63 65 73 ulate namespaces
0360: 0a 20 2e 53 48 20 53 59 4e 4f 50 53 49 53 0a 20 . .SH SYNOPSIS.
0370: 2e 6e 66 0a 20 5c 66 42 23 69 6e 63 6c 75 64 65 .nf. \fB#include
0380: 20 3c 74 63 6c 2e 68 3e 5c 66 52 0a 40 40 20 2d <tcl.h>\fR.@@ -
0390: 34 36 2c 36 20 2b 34 36 2c 31 32 20 40 40 0a 20 46,6 +46,12 @@.
03a0: 2e 73 70 0a 20 54 63 6c 5f 43 6f 6d 6d 61 6e 64 .sp. Tcl_Command
03b0: 0a 20 5c 66 42 54 63 6c 5f 46 69 6e 64 43 6f 6d . \fBTcl_FindCom
03c0: 6d 61 6e 64 5c 66 52 28 5c 66 49 69 6e 74 65 72 mand\fR(\fIinter
03d0: 70 2c 20 6e 61 6d 65 2c 20 63 6f 6e 74 65 78 74 p, name, context
03e0: 4e 73 50 74 72 2c 20 66 6c 61 67 73 5c 66 52 29 NsPtr, flags\fR)
03f0: 0a 2b 2e 73 70 0a 2b 54 63 6c 5f 4f 62 6a 20 2a .+.sp.+Tcl_Obj *
0400: 0a 2b 5c 66 42 54 63 6c 5f 47 65 74 4e 61 6d 65 .+\fBTcl_GetName
0410: 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 spaceUnknownHand
0420: 6c 65 72 28 5c 66 49 69 6e 74 65 72 70 2c 20 6e ler(\fIinterp, n
0430: 73 50 74 72 5c 66 52 29 0a 2b 2e 73 70 0a 2b 69 sPtr\fR).+.sp.+i
0440: 6e 74 0a 2b 5c 66 42 54 63 6c 5f 53 65 74 4e 61 nt.+\fBTcl_SetNa
0450: 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 mespaceUnknownHa
0460: 6e 64 6c 65 72 28 5c 66 49 69 6e 74 65 72 70 2c ndler(\fIinterp,
0470: 20 6e 73 50 74 72 2c 20 68 61 6e 64 6c 65 72 50 nsPtr, handlerP
0480: 74 72 5c 66 52 29 0a 20 2e 53 48 20 41 52 47 55 tr\fR). .SH ARGU
0490: 4d 45 4e 54 53 0a 20 2e 41 53 20 54 63 6c 5f 4e MENTS. .AS Tcl_N
04a0: 61 6d 65 73 70 61 63 65 44 65 6c 65 74 65 50 72 amespaceDeletePr
04b0: 6f 63 20 61 6c 6c 6f 77 4f 76 65 72 77 72 69 74 oc allowOverwrit
04c0: 65 20 69 6e 2f 6f 75 74 0a 20 2e 41 50 20 54 63 e in/out. .AP Tc
04d0: 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 l_Interp *interp
04e0: 20 69 6e 2f 6f 75 74 0a 40 40 20 2d 38 37 2c 36 in/out.@@ -87,6
04f0: 20 2b 39 33 2c 39 20 40 40 0a 20 69 6e 64 69 63 +93,9 @@. indic
0500: 61 74 65 73 20 74 68 61 74 20 74 68 65 20 73 65 ates that the se
0510: 61 72 63 68 20 69 73 20 61 6c 77 61 79 73 20 74 arch is always t
0520: 6f 20 62 65 20 63 6f 6e 64 75 63 74 65 64 20 72 o be conducted r
0530: 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65 0a 20 elative to the.
0540: 63 6f 6e 74 65 78 74 20 6e 61 6d 65 73 70 61 63 context namespac
0550: 65 29 2c 20 61 6e 64 20 5c 66 42 54 43 4c 5f 4c e), and \fBTCL_L
0560: 45 41 56 45 5f 45 52 52 5f 4d 53 47 5c 66 52 20 EAVE_ERR_MSG\fR
0570: 28 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 (indicates that
0580: 61 6e 20 65 72 72 6f 72 0a 20 6d 65 73 73 61 67 an error. messag
0590: 65 20 73 68 6f 75 6c 64 20 62 65 20 6c 65 66 74 e should be left
05a0: 20 69 6e 20 74 68 65 20 69 6e 74 65 72 70 72 65 in the interpre
05b0: 74 65 72 20 69 66 20 74 68 65 20 73 65 61 72 63 ter if the searc
05c0: 68 20 66 61 69 6c 73 2e 29 0a 2b 2e 41 50 20 54 h fails.).+.AP T
05d0: 63 6c 5f 4f 62 6a 20 2a 68 61 6e 64 6c 65 72 50 cl_Obj *handlerP
05e0: 74 72 20 69 6e 0a 2b 41 20 73 63 72 69 70 74 20 tr in.+A script
05f0: 66 72 61 67 6d 65 6e 74 20 74 6f 20 62 65 20 69 fragment to be i
0600: 6e 73 74 61 6c 6c 65 64 20 61 73 20 74 68 65 20 nstalled as the
0610: 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20 unknown command
0620: 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 65 0a handler for the.
0630: 2b 6e 61 6d 65 73 70 61 63 65 2c 20 6f 72 20 4e +namespace, or N
0640: 55 4c 4c 20 74 6f 20 72 65 73 65 74 20 74 68 65 ULL to reset the
0650: 20 68 61 6e 64 6c 65 72 20 74 6f 20 69 74 73 20 handler to its
0660: 64 65 66 61 75 6c 74 2e 0a 20 2e 42 45 0a 20 0a default.. .BE. .
0670: 20 2e 53 48 20 44 45 53 43 52 49 50 54 49 4f 4e .SH DESCRIPTION
0680: 0a 40 40 20 2d 31 34 33 2c 36 20 2b 31 35 32 2c .@@ -143,6 +152,
0690: 31 33 20 40 40 0a 20 5c 66 42 54 63 6c 5f 46 69 13 @@. \fBTcl_Fi
06a0: 6e 64 43 6f 6d 6d 61 6e 64 5c 66 52 20 73 65 61 ndCommand\fR sea
06b0: 72 63 68 65 73 20 66 6f 72 20 61 20 63 6f 6d 6d rches for a comm
06c0: 61 6e 64 20 6e 61 6d 65 64 20 5c 66 49 6e 61 6d and named \fInam
06d0: 65 5c 66 52 20 77 69 74 68 69 6e 0a 20 74 68 65 e\fR within. the
06e0: 20 63 6f 6e 74 65 78 74 20 6f 66 20 74 68 65 20 context of the
06f0: 6e 61 6d 65 73 70 61 63 65 20 5c 66 49 63 6f 6e namespace \fIcon
0700: 74 65 78 74 4e 73 50 74 72 5c 66 52 2e 20 20 49 textNsPtr\fR. I
0710: 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 0a 20 63 f the command. c
0720: 61 6e 6e 6f 74 20 62 65 20 66 6f 75 6e 64 2c 20 annot be found,
0730: 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64 NULL is returned
0740: 2e 0a 2b 2e 50 50 0a 2b 5c 66 42 54 63 6c 5f 47 ..+.PP.+\fBTcl_G
0750: 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f etNamespaceUnkno
0760: 77 6e 48 61 6e 64 6c 65 72 5c 66 52 20 72 65 74 wnHandler\fR ret
0770: 75 72 6e 73 20 74 68 65 20 75 6e 6b 6e 6f 77 6e urns the unknown
0780: 20 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65 72 command handler
0790: 0a 2b 66 6f 72 20 74 68 65 20 6e 61 6d 65 73 70 .+for the namesp
07a0: 61 63 65 2c 20 6f 72 20 4e 55 4c 4c 20 69 66 20 ace, or NULL if
07b0: 6e 6f 6e 65 20 69 73 20 73 65 74 2e 0a 2b 2e 50 none is set..+.P
07c0: 50 0a 2b 5c 66 42 54 63 6c 5f 53 65 74 4e 61 6d P.+\fBTcl_SetNam
07d0: 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e espaceUnknownHan
07e0: 64 6c 65 72 5c 66 52 20 73 65 74 73 20 74 68 65 dler\fR sets the
07f0: 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 unknown command
0800: 20 68 61 6e 64 6c 65 72 20 66 6f 72 0a 2b 74 68 handler for.+th
0810: 65 20 6e 61 6d 65 73 70 61 63 65 2e 20 49 66 20 e namespace. If
0820: 5c 66 49 68 61 6e 64 6c 65 72 50 74 72 5c 66 52 \fIhandlerPtr\fR
0830: 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 74 is NULL, then t
0840: 68 65 20 68 61 6e 64 6c 65 72 20 69 73 20 72 65 he handler is re
0850: 73 65 74 20 74 6f 0a 2b 69 74 73 20 64 65 66 61 set to.+its defa
0860: 75 6c 74 2e 0a 20 0a 20 2e 53 48 20 22 53 45 45 ult.. . .SH "SEE
0870: 20 41 4c 53 4f 22 0a 20 54 63 6c 5f 43 72 65 61 ALSO". Tcl_Crea
0880: 74 65 43 6f 6d 6d 61 6e 64 2c 20 54 63 6c 5f 4c teCommand, Tcl_L
0890: 69 73 74 4f 62 6a 41 70 70 65 6e 64 45 6c 65 6d istObjAppendElem
08a0: 65 6e 74 73 2c 20 54 63 6c 5f 53 65 74 56 61 72 ents, Tcl_SetVar
08b0: 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 6e 61 6d 65 .Index: doc/name
08c0: 73 70 61 63 65 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d space.n.========
08d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
08e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
08f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0900: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 ===========.RCS
0910: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 file: /cvsroot/t
0920: 63 6c 2f 74 63 6c 2f 64 6f 63 2f 6e 61 6d 65 73 cl/tcl/doc/names
0930: 70 61 63 65 2e 6e 2c 76 0a 72 65 74 72 69 65 76 pace.n,v.retriev
0940: 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 ing revision 1.1
0950: 39 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 39 9.diff -u -r1.19
0960: 20 6e 61 6d 65 73 70 61 63 65 2e 6e 0a 2d 2d 2d namespace.n.---
0970: 20 64 6f 63 2f 6e 61 6d 65 73 70 61 63 65 2e 6e doc/namespace.n
0980: 09 31 20 46 65 62 20 32 30 30 36 20 31 37 3a 34 .1 Feb 2006 17:4
0990: 38 3a 31 30 20 2d 30 30 30 30 09 31 2e 31 39 0a 8:10 -0000.1.19.
09a0: 2b 2b 2b 20 64 6f 63 2f 6e 61 6d 65 73 70 61 63 +++ doc/namespac
09b0: 65 2e 6e 09 31 20 46 65 62 20 32 30 30 36 20 31 e.n.1 Feb 2006 1
09c0: 37 3a 35 37 3a 30 32 20 2d 30 30 30 30 0a 40 40 7:57:02 -0000.@@
09d0: 20 2d 32 35 36 2c 36 20 2b 32 35 36 2c 31 37 20 -256,6 +256,17
09e0: 40 40 0a 20 5c 66 42 75 70 76 61 72 20 30 20 24 @@. \fBupvar 0 $
09f0: 6e 73 3a 3a 61 20 62 5c 66 52 2e 20 20 0a 20 5c ns::a b\fR. . \
0a00: 66 42 6e 61 6d 65 73 70 61 63 65 20 75 70 76 61 fBnamespace upva
0a10: 72 5c 66 52 20 72 65 74 75 72 6e 73 20 61 6e 20 r\fR returns an
0a20: 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 0a 20 2e empty string.. .
0a30: 54 50 0a 2b 5c 66 42 6e 61 6d 65 73 70 61 63 65 TP.+\fBnamespace
0a40: 20 75 6e 6b 6e 6f 77 6e 5c 66 52 20 3f 5c 66 49 unknown\fR ?\fI
0a50: 73 63 72 69 70 74 5c 66 52 3f 0a 2b 53 65 74 73 script\fR?.+Sets
0a60: 20 6f 72 20 72 65 74 75 72 6e 73 20 74 68 65 20 or returns the
0a70: 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20 unknown command
0a80: 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 65 20 handler for the
0a90: 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 current namespac
0aa0: 65 2e 0a 2b 54 68 65 20 68 61 6e 64 6c 65 72 20 e..+The handler
0ab0: 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20 is invoked when
0ac0: 61 20 63 6f 6d 6d 61 6e 64 20 63 61 6c 6c 65 64 a command called
0ad0: 20 66 72 6f 6d 20 77 69 74 68 69 6e 20 74 68 65 from within the
0ae0: 20 6e 61 6d 65 73 70 61 63 65 0a 2b 63 61 6e 6e namespace.+cann
0af0: 6f 74 20 62 65 20 66 6f 75 6e 64 20 28 69 6e 20 ot be found (in
0b00: 65 69 74 68 65 72 20 74 68 65 20 63 75 72 72 65 either the curre
0b10: 6e 74 20 6e 61 6d 65 73 70 61 63 65 20 6f 72 20 nt namespace or
0b20: 74 68 65 20 67 6c 6f 62 61 6c 20 6e 61 6d 65 73 the global names
0b30: 70 61 63 65 29 2e 20 0a 2b 54 68 65 20 5c 66 49 pace). .+The \fI
0b40: 73 63 72 69 70 74 5c 66 52 20 61 72 67 75 6d 65 script\fR argume
0b50: 6e 74 2c 20 69 66 20 67 69 76 65 6e 2c 20 73 68 nt, if given, sh
0b60: 6f 75 6c 64 20 62 65 20 61 20 77 65 6c 6c 0a 2b ould be a well.+
0b70: 66 6f 72 6d 65 64 20 6c 69 73 74 20 72 65 70 72 formed list repr
0b80: 65 73 65 6e 74 69 6e 67 20 61 20 63 6f 6d 6d 61 esenting a comma
0b90: 6e 64 20 6e 61 6d 65 20 61 6e 64 20 6f 70 74 69 nd name and opti
0ba0: 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 2e 20 onal arguments.
0bb0: 57 68 65 6e 0a 2b 74 68 65 20 68 61 6e 64 6c 65 When.+the handle
0bc0: 72 20 69 73 20 69 6e 76 6f 6b 65 64 2c 20 74 68 r is invoked, th
0bd0: 65 20 66 75 6c 6c 20 69 6e 76 6f 63 61 74 69 6f e full invocatio
0be0: 6e 20 6c 69 6e 65 20 77 69 6c 6c 20 62 65 20 61 n line will be a
0bf0: 70 70 65 6e 64 65 64 20 74 6f 20 74 68 65 0a 2b ppended to the.+
0c00: 73 63 72 69 70 74 20 61 6e 64 20 74 68 65 20 72 script and the r
0c10: 65 73 75 6c 74 20 65 76 61 6c 75 61 74 65 64 20 esult evaluated
0c20: 69 6e 20 74 68 65 20 63 6f 6e 74 65 78 74 20 6f in the context o
0c30: 66 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 2e f the namespace.
0c40: 20 54 68 65 20 0a 2b 64 65 66 61 75 6c 74 20 68 The .+default h
0c50: 61 6e 64 6c 65 72 20 66 6f 72 20 61 6c 6c 20 6e andler for all n
0c60: 61 6d 65 73 70 61 63 65 73 20 69 73 20 5c 66 42 amespaces is \fB
0c70: 3a 3a 75 6e 6b 6e 6f 77 6e 5c 66 52 2e 20 49 66 ::unknown\fR. If
0c80: 20 6e 6f 20 61 72 67 75 6d 65 6e 74 0a 2b 69 73 no argument.+is
0c90: 20 67 69 76 65 6e 2c 20 69 74 20 72 65 74 75 72 given, it retur
0ca0: 6e 73 20 74 68 65 20 68 61 6e 64 6c 65 72 20 66 ns the handler f
0cb0: 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 6e or the current n
0cc0: 61 6d 65 73 70 61 63 65 2e 0a 2b 2e 54 50 0a 20 amespace..+.TP.
0cd0: 5c 66 42 6e 61 6d 65 73 70 61 63 65 20 77 68 69 \fBnamespace whi
0ce0: 63 68 5c 66 52 20 3f 5c 2d 5c 66 42 63 6f 6d 6d ch\fR ?\-\fBcomm
0cf0: 61 6e 64 5c 66 52 3f 20 3f 5c 2d 5c 66 42 76 61 and\fR? ?\-\fBva
0d00: 72 69 61 62 6c 65 5c 66 52 3f 20 5c 66 49 6e 61 riable\fR? \fIna
0d10: 6d 65 5c 66 52 0a 20 4c 6f 6f 6b 73 20 75 70 20 me\fR. Looks up
0d20: 5c 66 49 6e 61 6d 65 5c 66 52 20 61 73 20 65 69 \fIname\fR as ei
0d30: 74 68 65 72 20 61 20 63 6f 6d 6d 61 6e 64 20 6f ther a command o
0d40: 72 20 76 61 72 69 61 62 6c 65 0a 20 61 6e 64 20 r variable. and
0d50: 72 65 74 75 72 6e 73 20 69 74 73 20 66 75 6c 6c returns its full
0d60: 79 2d 71 75 61 6c 69 66 69 65 64 20 6e 61 6d 65 y-qualified name
0d70: 2e 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 75 6e 6b ..Index: doc/unk
0d80: 6e 6f 77 6e 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d nown.n.=========
0d90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0da0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0db0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0dc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 ==========.RCS f
0dd0: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 ile: /cvsroot/tc
0de0: 6c 2f 74 63 6c 2f 64 6f 63 2f 75 6e 6b 6e 6f 77 l/tcl/doc/unknow
0df0: 6e 2e 6e 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 n.n,v.retrieving
0e00: 20 72 65 76 69 73 69 6f 6e 20 31 2e 35 0a 64 69 revision 1.5.di
0e10: 66 66 20 2d 75 20 2d 72 31 2e 35 20 75 6e 6b 6e ff -u -r1.5 unkn
0e20: 6f 77 6e 2e 6e 0a 2d 2d 2d 20 64 6f 63 2f 75 6e own.n.--- doc/un
0e30: 6b 6e 6f 77 6e 2e 6e 09 33 30 20 4d 61 79 20 32 known.n.30 May 2
0e40: 30 30 34 20 31 34 3a 31 33 3a 35 32 20 2d 30 30 004 14:13:52 -00
0e50: 30 30 09 31 2e 35 0a 2b 2b 2b 20 64 6f 63 2f 75 00.1.5.+++ doc/u
0e60: 6e 6b 6e 6f 77 6e 2e 6e 09 31 20 46 65 62 20 32 nknown.n.1 Feb 2
0e70: 30 30 36 20 31 37 3a 35 37 3a 30 32 20 2d 30 30 006 17:57:02 -00
0e80: 30 30 0a 40 40 20 2d 32 33 2c 31 35 20 2b 32 33 00.@@ -23,15 +23
0e90: 2c 31 38 20 40 40 0a 20 74 72 69 65 73 20 74 6f ,18 @@. tries to
0ea0: 20 69 6e 76 6f 6b 65 20 61 20 63 6f 6d 6d 61 6e invoke a comman
0eb0: 64 20 74 68 61 74 20 64 6f 65 73 6e 27 74 20 65 d that doesn't e
0ec0: 78 69 73 74 2e 20 20 54 68 65 20 64 65 66 61 75 xist. The defau
0ed0: 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f lt implementatio
0ee0: 6e 0a 20 6f 66 20 5c 66 42 75 6e 6b 6e 6f 77 6e n. of \fBunknown
0ef0: 5c 66 52 20 69 73 20 61 20 6c 69 62 72 61 72 79 \fR is a library
0f00: 20 70 72 6f 63 65 64 75 72 65 20 64 65 66 69 6e procedure defin
0f10: 65 64 20 77 68 65 6e 20 54 63 6c 20 69 6e 69 74 ed when Tcl init
0f20: 69 61 6c 69 7a 65 73 20 61 6e 0a 20 69 6e 74 65 ializes an. inte
0f30: 72 70 72 65 74 65 72 2e 20 20 59 6f 75 20 63 61 rpreter. You ca
0f40: 6e 20 6f 76 65 72 72 69 64 65 20 74 68 65 20 64 n override the d
0f50: 65 66 61 75 6c 74 20 5c 66 42 75 6e 6b 6e 6f 77 efault \fBunknow
0f60: 6e 5c 66 52 20 74 6f 20 63 68 61 6e 67 65 20 69 n\fR to change i
0f70: 74 73 0a 2d 66 75 6e 63 74 69 6f 6e 61 6c 69 74 ts.-functionalit
0f80: 79 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 74 68 y. Note that th
0f90: 65 72 65 20 69 73 20 6e 6f 20 64 65 66 61 75 6c ere is no defaul
0fa0: 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e t implementation
0fb0: 20 6f 66 0a 2d 5c 66 42 75 6e 6b 6e 6f 77 6e 5c of.-\fBunknown\
0fc0: 66 52 20 69 6e 20 61 20 73 61 66 65 20 69 6e 74 fR in a safe int
0fd0: 65 72 70 72 65 74 65 72 2e 0a 2b 66 75 6e 63 74 erpreter..+funct
0fe0: 69 6f 6e 61 6c 69 74 79 2c 20 6f 72 20 79 6f 75 ionality, or you
0ff0: 20 63 61 6e 20 72 65 67 69 73 74 65 72 20 61 20 can register a
1000: 6e 65 77 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 new handler for
1010: 69 6e 64 69 76 69 64 75 61 6c 20 6e 61 6d 65 73 individual names
1020: 70 61 63 65 73 0a 2b 75 73 69 6e 67 20 74 68 65 paces.+using the
1030: 20 5c 66 42 6e 61 6d 65 73 70 61 63 65 20 75 6e \fBnamespace un
1040: 6b 6e 6f 77 6e 5c 66 52 20 63 6f 6d 6d 61 6e 64 known\fR command
1050: 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 . Note that the
1060: 72 65 20 69 73 20 6e 6f 20 64 65 66 61 75 6c 74 re is no default
1070: 20 0a 2b 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f .+implementatio
1080: 6e 20 6f 66 20 5c 66 42 75 6e 6b 6e 6f 77 6e 5c n of \fBunknown\
1090: 66 52 20 69 6e 20 61 20 73 61 66 65 20 69 6e 74 fR in a safe int
10a0: 65 72 70 72 65 74 65 72 2e 0a 20 2e 50 50 0a 20 erpreter.. .PP.
10b0: 49 66 20 74 68 65 20 54 63 6c 20 69 6e 74 65 72 If the Tcl inter
10c0: 70 72 65 74 65 72 20 65 6e 63 6f 75 6e 74 65 72 preter encounter
10d0: 73 20 61 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 s a command name
10e0: 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 72 65 for which there
10f0: 0a 2d 69 73 20 6e 6f 74 20 61 20 64 65 66 69 6e .-is not a defin
1100: 65 64 20 63 6f 6d 6d 61 6e 64 2c 20 74 68 65 6e ed command, then
1110: 20 54 63 6c 20 63 68 65 63 6b 73 20 66 6f 72 20 Tcl checks for
1120: 74 68 65 20 65 78 69 73 74 65 6e 63 65 20 6f 66 the existence of
1130: 0a 2d 61 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 .-a command name
1140: 64 20 5c 66 42 75 6e 6b 6e 6f 77 6e 5c 66 52 2e d \fBunknown\fR.
1150: 0a 2d 49 66 20 74 68 65 72 65 20 69 73 20 6e 6f .-If there is no
1160: 20 73 75 63 68 20 63 6f 6d 6d 61 6e 64 2c 20 74 such command, t
1170: 68 65 6e 20 74 68 65 20 69 6e 74 65 72 70 72 65 hen the interpre
1180: 74 65 72 20 72 65 74 75 72 6e 73 20 61 6e 0a 2d ter returns an.-
1190: 65 72 72 6f 72 2e 0a 2d 49 66 20 74 68 65 20 5c error..-If the \
11a0: 66 42 75 6e 6b 6e 6f 77 6e 5c 66 52 20 63 6f 6d fBunknown\fR com
11b0: 6d 61 6e 64 20 65 78 69 73 74 73 2c 20 74 68 65 mand exists, the
11c0: 6e 20 69 74 20 69 73 20 69 6e 76 6f 6b 65 64 20 n it is invoked
11d0: 77 69 74 68 0a 2b 69 73 20 6e 6f 74 20 61 20 64 with.+is not a d
11e0: 65 66 69 6e 65 64 20 63 6f 6d 6d 61 6e 64 20 28 efined command (
11f0: 69 6e 20 65 69 74 68 65 72 20 74 68 65 20 63 75 in either the cu
1200: 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 2c rrent namespace,
1210: 20 6f 72 20 74 68 65 20 0a 2b 67 6c 6f 62 61 6c or the .+global
1220: 20 6e 61 6d 65 73 70 61 63 65 29 2c 20 74 68 65 namespace), the
1230: 6e 20 54 63 6c 20 63 68 65 63 6b 73 20 66 6f 72 n Tcl checks for
1240: 20 74 68 65 20 65 78 69 73 74 65 6e 63 65 20 6f the existence o
1250: 66 0a 2b 61 6e 20 75 6e 6b 6e 6f 77 6e 20 68 61 f.+an unknown ha
1260: 6e 64 6c 65 72 20 66 6f 72 20 74 68 65 20 63 75 ndler for the cu
1270: 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 2e rrent namespace.
1280: 20 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 69 By default, thi
1290: 73 0a 2b 68 61 6e 64 6c 65 72 20 69 73 20 61 20 s.+handler is a
12a0: 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 64 20 5c 66 command named \f
12b0: 42 3a 3a 75 6e 6b 6e 6f 77 6e 5c 66 52 2e 20 20 B::unknown\fR.
12c0: 49 66 20 74 68 65 72 65 20 69 73 20 6e 6f 20 73 If there is no s
12d0: 75 63 68 20 0a 2b 63 6f 6d 6d 61 6e 64 2c 20 74 uch .+command, t
12e0: 68 65 6e 20 74 68 65 20 69 6e 74 65 72 70 72 65 hen the interpre
12f0: 74 65 72 20 72 65 74 75 72 6e 73 20 61 6e 20 65 ter returns an e
1300: 72 72 6f 72 2e 0a 2b 49 66 20 74 68 65 20 5c 66 rror..+If the \f
1310: 42 75 6e 6b 6e 6f 77 6e 5c 66 52 20 63 6f 6d 6d Bunknown\fR comm
1320: 61 6e 64 20 65 78 69 73 74 73 20 28 6f 72 20 61 and exists (or a
1330: 20 6e 65 77 20 68 61 6e 64 6c 65 72 20 68 61 73 new handler has
1340: 20 62 65 65 6e 0a 2b 72 65 67 69 73 74 65 72 65 been.+registere
1350: 64 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e d for the curren
1360: 74 20 6e 61 6d 65 73 70 61 63 65 29 2c 20 74 68 t namespace), th
1370: 65 6e 20 69 74 20 69 73 20 69 6e 76 6f 6b 65 64 en it is invoked
1380: 20 77 69 74 68 0a 20 61 72 67 75 6d 65 6e 74 73 with. arguments
1390: 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 74 consisting of t
13a0: 68 65 20 66 75 6c 6c 79 2d 73 75 62 73 74 69 74 he fully-substit
13b0: 75 74 65 64 20 6e 61 6d 65 20 61 6e 64 20 61 72 uted name and ar
13c0: 67 75 6d 65 6e 74 73 0a 20 66 6f 72 20 74 68 65 guments. for the
13d0: 20 6f 72 69 67 69 6e 61 6c 20 6e 6f 6e 2d 65 78 original non-ex
13e0: 69 73 74 65 6e 74 20 63 6f 6d 6d 61 6e 64 2e 0a istent command..
13f0: 20 54 68 65 20 5c 66 42 75 6e 6b 6e 6f 77 6e 5c The \fBunknown\
1400: 66 52 20 63 6f 6d 6d 61 6e 64 20 74 79 70 69 63 fR command typic
1410: 61 6c 6c 79 20 64 6f 65 73 20 74 68 69 6e 67 73 ally does things
1420: 20 6c 69 6b 65 20 73 65 61 72 63 68 69 6e 67 0a like searching.
1430: 40 40 20 2d 38 37 2c 37 20 2b 39 30 2c 37 20 40 @@ -87,7 +90,7 @
1440: 40 0a 20 2e 43 45 0a 20 0a 20 2e 53 48 20 22 53 @. .CE. . .SH "S
1450: 45 45 20 41 4c 53 4f 22 0a 2d 69 6e 66 6f 28 6e EE ALSO".-info(n
1460: 29 2c 20 70 72 6f 63 28 6e 29 2c 20 69 6e 74 65 ), proc(n), inte
1470: 72 70 28 6e 29 2c 20 6c 69 62 72 61 72 79 28 6e rp(n), library(n
1480: 29 0a 2b 69 6e 66 6f 28 6e 29 2c 20 70 72 6f 63 ).+info(n), proc
1490: 28 6e 29 2c 20 69 6e 74 65 72 70 28 6e 29 2c 20 (n), interp(n),
14a0: 6c 69 62 72 61 72 79 28 6e 29 2c 20 6e 61 6d 65 library(n), name
14b0: 73 70 61 63 65 28 6e 29 0a 20 0a 20 2e 53 48 20 space(n). . .SH
14c0: 4b 45 59 57 4f 52 44 53 0a 20 65 72 72 6f 72 2c KEYWORDS. error,
14d0: 20 6e 6f 6e 2d 65 78 69 73 74 65 6e 74 20 63 6f non-existent co
14e0: 6d 6d 61 6e 64 0a 49 6e 64 65 78 3a 20 67 65 6e mmand.Index: gen
14f0: 65 72 69 63 2f 74 63 6c 2e 64 65 63 6c 73 0a 3d eric/tcl.decls.=
1500: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1510: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1520: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1530: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1540: 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 ==.RCS file: /cv
1550: 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 sroot/tcl/tcl/ge
1560: 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63 6c 73 2c neric/tcl.decls,
1570: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 v.retrieving rev
1580: 69 73 69 6f 6e 20 31 2e 31 31 38 0a 64 69 66 66 ision 1.118.diff
1590: 20 2d 75 20 2d 72 31 2e 31 31 38 20 74 63 6c 2e -u -r1.118 tcl.
15a0: 64 65 63 6c 73 0a 2d 2d 2d 20 67 65 6e 65 72 69 decls.--- generi
15b0: 63 2f 74 63 6c 2e 64 65 63 6c 73 09 32 37 20 44 c/tcl.decls.27 D
15c0: 65 63 20 32 30 30 35 20 32 30 3a 31 34 3a 30 38 ec 2005 20:14:08
15d0: 20 2d 30 30 30 30 09 31 2e 31 31 38 0a 2b 2b 2b -0000.1.118.+++
15e0: 20 67 65 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63 generic/tcl.dec
15f0: 6c 73 09 31 20 46 65 62 20 32 30 30 36 20 31 37 ls.1 Feb 2006 17
1600: 3a 35 37 3a 30 33 20 2d 30 30 30 30 0a 40 40 20 :57:03 -0000.@@
1610: 2d 32 30 33 37 2c 37 20 2b 32 30 33 37 2c 31 37 -2037,7 +2037,17
1620: 20 40 40 0a 20 20 20 20 20 69 6e 74 20 54 63 6c @@. int Tcl
1630: 5f 49 6e 69 74 42 69 67 6e 75 6d 46 72 6f 6d 44 _InitBignumFromD
1640: 6f 75 62 6c 65 28 54 63 6c 5f 49 6e 74 65 72 70 ouble(Tcl_Interp
1650: 2a 20 69 6e 74 65 72 70 2c 20 64 6f 75 62 6c 65 * interp, double
1660: 20 69 6e 69 74 76 61 6c 2c 20 0a 20 09 09 6d 70 initval, . ..mp
1670: 5f 69 6e 74 20 2a 74 6f 49 6e 69 74 29 0a 20 7d _int *toInit). }
1680: 0a 2d 20 20 0a 2b 0a 2b 23 20 54 49 50 20 31 38 .- .+.+# TIP 18
1690: 31 0a 2b 64 65 63 6c 61 72 65 20 35 36 37 20 67 1.+declare 567 g
16a0: 65 6e 65 72 69 63 20 7b 0a 2b 20 20 20 20 54 63 eneric {.+ Tc
16b0: 6c 5f 4f 62 6a 20 2a 54 63 6c 5f 47 65 74 4e 61 l_Obj *Tcl_GetNa
16c0: 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 mespaceUnknownHa
16d0: 6e 64 6c 65 72 28 54 63 6c 5f 49 6e 74 65 72 70 ndler(Tcl_Interp
16e0: 20 2a 69 6e 74 65 72 70 2c 0a 2b 20 20 20 20 20 *interp,.+
16f0: 20 20 20 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 Tcl_Namespace
1700: 20 2a 6e 73 50 74 72 29 0a 2b 7d 0a 2b 64 65 63 *nsPtr).+}.+dec
1710: 6c 61 72 65 20 35 36 38 20 67 65 6e 65 72 69 63 lare 568 generic
1720: 20 7b 0a 2b 20 20 20 20 69 6e 74 20 54 63 6c 5f {.+ int Tcl_
1730: 53 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e SetNamespaceUnkn
1740: 6f 77 6e 48 61 6e 64 6c 65 72 28 0a 2b 20 20 20 ownHandler(.+
1750: 20 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 Tcl_Interp
1760: 2a 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4e 61 6d *interp, Tcl_Nam
1770: 65 73 70 61 63 65 20 2a 6e 73 50 74 72 2c 0a 2b espace *nsPtr,.+
1780: 20 20 20 20 20 20 20 20 54 63 6c 5f 4f 62 6a 20 Tcl_Obj
1790: 2a 68 61 6e 64 6c 65 72 50 74 72 29 0a 2b 7d 0a *handlerPtr).+}.
17a0: 20 0a 20 23 23 23 23 23 23 23 23 23 23 23 23 23 . #############
17b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
17f0: 23 0a 20 0a 40 40 20 2d 32 30 37 38 2c 36 20 2b #. .@@ -2078,6 +
1800: 32 30 38 38 2c 37 20 40 40 0a 20 09 20 20 20 20 2088,7 @@. .
1810: 63 68 61 72 20 2a 6c 69 62 72 61 72 79 50 61 74 char *libraryPat
1820: 68 29 0a 20 7d 0a 20 0a 2b 0a 20 23 23 23 23 23 h). }. .+. #####
1830: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1840: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1850: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1860: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1870: 23 23 23 23 23 23 23 23 23 0a 20 0a 20 23 20 50 #########. . # P
1880: 75 62 6c 69 63 20 66 75 6e 63 74 69 6f 6e 73 20 ublic functions
1890: 74 68 61 74 20 61 72 65 20 6e 6f 74 20 61 63 63 that are not acc
18a0: 65 73 73 69 62 6c 65 20 76 69 61 20 74 68 65 20 essible via the
18b0: 73 74 75 62 73 20 74 61 62 6c 65 3a 0a 49 6e 64 stubs table:.Ind
18c0: 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 42 ex: generic/tclB
18d0: 61 73 69 63 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d asic.c.=========
18e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
18f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1900: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1910: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 ==========.RCS f
1920: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 ile: /cvsroot/tc
1930: 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 l/tcl/generic/tc
1940: 6c 42 61 73 69 63 2e 63 2c 76 0a 72 65 74 72 69 lBasic.c,v.retri
1950: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 eving revision 1
1960: 2e 31 38 37 0a 64 69 66 66 20 2d 75 20 2d 72 31 .187.diff -u -r1
1970: 2e 31 38 37 20 74 63 6c 42 61 73 69 63 2e 63 0a .187 tclBasic.c.
1980: 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 42 --- generic/tclB
1990: 61 73 69 63 2e 63 09 31 31 20 4a 61 6e 20 32 30 asic.c.11 Jan 20
19a0: 30 36 20 31 37 3a 33 34 3a 35 33 20 2d 30 30 30 06 17:34:53 -000
19b0: 30 09 31 2e 31 38 37 0a 2b 2b 2b 20 67 65 6e 65 0.1.187.+++ gene
19c0: 72 69 63 2f 74 63 6c 42 61 73 69 63 2e 63 09 31 ric/tclBasic.c.1
19d0: 20 46 65 62 20 32 30 30 36 20 31 37 3a 35 37 3a Feb 2006 17:57:
19e0: 30 34 20 2d 30 30 30 30 0a 40 40 20 2d 33 32 34 04 -0000.@@ -324
19f0: 36 2c 36 20 2b 33 32 34 36 2c 31 30 20 40 40 0a 6,6 +3246,10 @@.
1a00: 20 20 20 20 20 69 6e 74 20 69 3b 0a 20 20 20 20 int i;.
1a10: 20 43 61 6c 6c 46 72 61 6d 65 20 2a 73 61 76 65 CallFrame *save
1a20: 64 56 61 72 46 72 61 6d 65 50 74 72 3b 2f 2a 20 dVarFramePtr;/*
1a30: 53 61 76 65 73 20 6f 6c 64 20 63 6f 70 79 20 6f Saves old copy o
1a40: 66 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 f iPtr->varFrame
1a50: 50 74 72 20 69 6e 20 63 61 73 65 0a 20 09 09 09 Ptr in case. ...
1a60: 09 20 2a 20 54 43 4c 5f 45 56 41 4c 5f 47 4c 4f . * TCL_EVAL_GLO
1a70: 42 41 4c 20 77 61 73 20 73 65 74 2e 20 2a 2f 0a BAL was set. */.
1a80: 2b 20 20 20 20 4e 61 6d 65 73 70 61 63 65 20 2a + Namespace *
1a90: 63 75 72 72 4e 73 50 74 72 20 3d 20 4e 55 4c 4c currNsPtr = NULL
1aa0: 3b 2f 2a 20 55 73 65 64 20 74 6f 20 63 68 65 63 ;/* Used to chec
1ab0: 6b 20 66 6f 72 20 61 6e 64 20 69 6e 76 6f 6b 65 k for and invoke
1ac0: 20 61 6e 79 0a 2b 20 20 20 20 20 20 20 20 20 20 any.+
1ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1ae0: 20 20 20 20 20 20 20 2a 20 72 65 67 69 73 74 65 * registe
1af0: 72 65 64 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d red unknown comm
1b00: 61 6e 64 0a 2b 20 20 20 20 20 20 20 20 20 20 20 and.+
1b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1b20: 20 20 20 20 20 20 2a 20 68 61 6e 64 6c 65 72 20 * handler
1b30: 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 for the current
1b40: 6e 61 6d 65 73 70 61 63 65 0a 2b 20 20 20 20 20 namespace.+
1b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1b60: 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 28 73 * (s
1b70: 65 65 20 54 49 50 20 31 38 31 29 2e 20 2a 2f 0a ee TIP 181). */.
1b80: 20 20 20 20 20 69 6e 74 20 63 6f 64 65 20 3d 20 int code =
1b90: 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20 20 69 6e 74 TCL_OK;. int
1ba0: 20 74 72 61 63 65 43 6f 64 65 20 3d 20 54 43 4c traceCode = TCL
1bb0: 5f 4f 4b 3b 0a 20 20 20 20 20 69 6e 74 20 63 68 _OK;. int ch
1bc0: 65 63 6b 54 72 61 63 65 73 20 3d 20 31 3b 0a 40 eckTraces = 1;.@
1bd0: 40 20 2d 33 32 36 30 2c 39 20 2b 33 32 36 34 2c @ -3260,9 +3264,
1be0: 31 30 20 40 40 0a 20 0a 20 20 20 20 20 2f 2a 0a 10 @@. . /*.
1bf0: 20 20 20 20 20 20 2a 20 46 69 6e 64 20 74 68 65 * Find the
1c00: 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 65 78 65 function to exe
1c10: 63 75 74 65 20 74 68 69 73 20 63 6f 6d 6d 61 6e cute this comman
1c20: 64 2e 20 49 66 20 74 68 65 72 65 20 69 73 6e 27 d. If there isn'
1c30: 74 20 6f 6e 65 2c 20 74 68 65 6e 20 73 65 65 0a t one, then see.
1c40: 2d 20 20 20 20 20 2a 20 69 66 20 74 68 65 72 65 - * if there
1c50: 20 69 73 20 61 20 63 6f 6d 6d 61 6e 64 20 22 75 is a command "u
1c60: 6e 6b 6e 6f 77 6e 22 2e 20 49 66 20 73 6f 2c 20 nknown". If so,
1c70: 63 72 65 61 74 65 20 61 20 6e 65 77 20 77 6f 72 create a new wor
1c80: 64 20 61 72 72 61 79 20 77 69 74 68 0a 2d 20 20 d array with.-
1c90: 20 20 20 2a 20 22 75 6e 6b 6e 6f 77 6e 22 20 61 * "unknown" a
1ca0: 73 20 74 68 65 20 66 69 72 73 74 20 77 6f 72 64 s the first word
1cb0: 20 61 6e 64 20 74 68 65 20 6f 72 69 67 69 6e 61 and the origina
1cc0: 6c 20 63 6f 6d 6d 61 6e 64 20 77 6f 72 64 73 20 l command words
1cd0: 61 73 0a 2d 20 20 20 20 20 2a 20 61 72 67 75 6d as.- * argum
1ce0: 65 6e 74 73 2e 20 54 68 65 6e 20 63 61 6c 6c 20 ents. Then call
1cf0: 6f 75 72 73 65 6c 76 65 73 20 72 65 63 75 72 73 ourselves recurs
1d00: 69 76 65 6c 79 20 74 6f 20 65 78 65 63 75 74 65 ively to execute
1d10: 20 69 74 2e 0a 2b 20 20 20 20 20 2a 20 69 66 20 it..+ * if
1d20: 74 68 65 72 65 20 69 73 20 61 6e 20 75 6e 6b 6e there is an unkn
1d30: 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 own command hand
1d40: 6c 65 72 20 72 65 67 69 73 74 65 72 65 64 20 66 ler registered f
1d50: 6f 72 20 74 68 69 73 20 6e 61 6d 65 73 70 61 63 or this namespac
1d60: 65 2e 0a 2b 20 20 20 20 20 2a 20 49 66 20 73 6f e..+ * If so
1d70: 2c 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 77 , create a new w
1d80: 6f 72 64 20 61 72 72 61 79 20 77 69 74 68 20 74 ord array with t
1d90: 68 65 20 68 61 6e 64 6c 65 72 20 61 73 20 74 68 he handler as th
1da0: 65 20 66 69 72 73 74 20 77 6f 72 64 73 20 61 6e e first words an
1db0: 64 0a 2b 20 20 20 20 20 2a 20 74 68 65 20 6f 72 d.+ * the or
1dc0: 69 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e 64 20 77 iginal command w
1dd0: 6f 72 64 73 20 61 73 20 61 72 67 75 6d 65 6e 74 ords as argument
1de0: 73 2e 20 54 68 65 6e 20 63 61 6c 6c 20 6f 75 72 s. Then call our
1df0: 73 65 6c 76 65 73 0a 2b 20 20 20 20 20 2a 20 72 selves.+ * r
1e00: 65 63 75 72 73 69 76 65 6c 79 20 74 6f 20 65 78 ecursively to ex
1e10: 65 63 75 74 65 20 69 74 2e 0a 20 20 20 20 20 20 ecute it..
1e20: 2a 0a 20 20 20 20 20 20 2a 20 49 66 20 63 61 6c *. * If cal
1e30: 6c 65 72 20 72 65 71 75 65 73 74 73 2c 20 6f 72 ler requests, or
1e40: 20 69 66 20 77 65 27 72 65 20 72 65 73 6f 6c 76 if we're resolv
1e50: 69 6e 67 20 74 68 65 20 74 61 72 67 65 74 20 65 ing the target e
1e60: 6e 64 20 6f 66 20 61 6e 0a 20 20 20 20 20 20 2a nd of an. *
1e70: 20 69 6e 74 65 72 70 65 74 65 72 20 61 6c 69 61 interpeter alia
1e80: 73 20 28 54 43 4c 5f 45 56 41 4c 5f 49 4e 56 4f s (TCL_EVAL_INVO
1e90: 4b 45 29 2c 20 62 65 20 73 75 72 65 20 74 6f 20 KE), be sure to
1ea0: 64 6f 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 0a do command name.
1eb0: 40 40 20 2d 33 32 37 38 2c 32 35 20 2b 33 32 38 @@ -3278,25 +328
1ec0: 33 2c 36 35 20 40 40 0a 20 09 69 50 74 72 2d 3e 3,65 @@. .iPtr->
1ed0: 76 61 72 46 72 61 6d 65 50 74 72 20 3d 20 4e 55 varFramePtr = NU
1ee0: 4c 4c 3b 0a 20 20 20 20 20 7d 0a 20 20 20 20 20 LL;. }.
1ef0: 63 6d 64 50 74 72 20 3d 20 28 43 6f 6d 6d 61 6e cmdPtr = (Comman
1f00: 64 20 2a 29 20 54 63 6c 5f 47 65 74 43 6f 6d 6d d *) Tcl_GetComm
1f10: 61 6e 64 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 andFromObj(inter
1f20: 70 2c 20 6f 62 6a 76 5b 30 5d 29 3b 0a 2b 20 20 p, objv[0]);.+
1f30: 20 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 47 72 61 /*.+ * Gra
1f40: 62 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 b current namesp
1f50: 61 63 65 20 62 65 66 6f 72 65 20 72 65 73 74 6f ace before resto
1f60: 72 69 6e 67 20 76 61 72 20 66 72 61 6d 65 2c 20 ring var frame,
1f70: 66 6f 72 20 75 6e 6b 6e 6f 77 6e 0a 2b 20 20 20 for unknown.+
1f80: 20 20 2a 20 68 61 6e 64 6c 65 72 20 63 68 65 63 * handler chec
1f90: 6b 20 62 65 6c 6f 77 2e 0a 2b 20 20 20 20 20 2a k below..+ *
1fa0: 2f 0a 2b 20 20 20 20 69 66 20 28 69 50 74 72 2d /.+ if (iPtr-
1fb0: 3e 76 61 72 46 72 61 6d 65 50 74 72 20 21 3d 20 >varFramePtr !=
1fc0: 4e 55 4c 4c 20 26 26 20 69 50 74 72 2d 3e 76 61 NULL && iPtr->va
1fd0: 72 46 72 61 6d 65 50 74 72 2d 3e 6e 73 50 74 72 rFramePtr->nsPtr
1fe0: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 20 20 20 != NULL) {.+
1ff0: 20 20 20 20 20 63 75 72 72 4e 73 50 74 72 20 3d currNsPtr =
2000: 20 69 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 iPtr->varFrameP
2010: 74 72 2d 3e 6e 73 50 74 72 3b 0a 2b 20 20 20 20 tr->nsPtr;.+
2020: 7d 20 65 6c 73 65 20 7b 0a 2b 20 20 20 20 20 20 } else {.+
2030: 20 20 2f 2a 20 4e 6f 74 65 3a 20 61 73 73 75 6d /* Note: assum
2040: 65 73 20 67 6c 6f 62 61 6c 4e 73 50 74 72 20 63 es globalNsPtr c
2050: 61 6e 20 6e 65 76 65 72 20 62 65 20 4e 55 4c 4c an never be NULL
2060: 2e 20 2a 2f 0a 2b 20 20 20 20 20 20 20 20 63 75 . */.+ cu
2070: 72 72 4e 73 50 74 72 20 3d 20 69 50 74 72 2d 3e rrNsPtr = iPtr->
2080: 67 6c 6f 62 61 6c 4e 73 50 74 72 3b 0a 2b 20 20 globalNsPtr;.+
2090: 20 20 20 20 20 20 69 66 20 28 63 75 72 72 4e 73 if (currNs
20a0: 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b Ptr == NULL) {.+
20b0: 20 20 20 20 20 20 20 20 20 20 20 20 54 63 6c 5f Tcl_
20c0: 50 61 6e 69 63 28 22 54 63 6c 45 76 61 6c 4f 62 Panic("TclEvalOb
20d0: 6a 76 49 6e 74 65 72 6e 61 6c 3a 20 4e 55 4c 4c jvInternal: NULL
20e0: 20 67 6c 6f 62 61 6c 20 6e 61 6d 65 73 70 61 63 global namespac
20f0: 65 20 70 6f 69 6e 74 65 72 22 29 3b 0a 2b 20 20 e pointer");.+
2100: 20 20 20 20 20 20 7d 0a 2b 20 20 20 20 7d 0a 20 }.+ }.
2110: 20 20 20 20 69 50 74 72 2d 3e 76 61 72 46 72 61 iPtr->varFra
2120: 6d 65 50 74 72 20 3d 20 73 61 76 65 64 56 61 72 mePtr = savedVar
2130: 46 72 61 6d 65 50 74 72 3b 0a 20 0a 20 20 20 20 FramePtr;. .
2140: 20 69 66 20 28 63 6d 64 50 74 72 20 3d 3d 20 4e if (cmdPtr == N
2150: 55 4c 4c 29 20 7b 0a 2d 09 6e 65 77 4f 62 6a 76 ULL) {.-.newObjv
2160: 20 3d 20 28 54 63 6c 5f 4f 62 6a 20 2a 2a 29 0a = (Tcl_Obj **).
2170: 2d 09 09 63 6b 61 6c 6c 6f 63 28 28 75 6e 73 69 -..ckalloc((unsi
2180: 67 6e 65 64 29 20 28 28 6f 62 6a 63 20 2b 20 31 gned) ((objc + 1
2190: 29 20 2a 20 73 69 7a 65 6f 66 28 54 63 6c 5f 4f ) * sizeof(Tcl_O
21a0: 62 6a 20 2a 29 29 29 3b 0a 2d 09 66 6f 72 20 28 bj *)));.-.for (
21b0: 69 20 3d 20 6f 62 6a 63 2d 31 3b 20 69 20 3e 3d i = objc-1; i >=
21c0: 20 30 3b 20 69 2d 2d 29 20 7b 0a 2d 09 20 20 20 0; i--) {.-.
21d0: 20 6e 65 77 4f 62 6a 76 5b 69 2b 31 5d 20 3d 20 newObjv[i+1] =
21e0: 6f 62 6a 76 5b 69 5d 3b 0a 2d 09 7d 0a 2d 09 6e objv[i];.-.}.-.n
21f0: 65 77 4f 62 6a 76 5b 30 5d 20 3d 20 54 63 6c 5f ewObjv[0] = Tcl_
2200: 4e 65 77 53 74 72 69 6e 67 4f 62 6a 28 22 3a 3a NewStringObj("::
2210: 75 6e 6b 6e 6f 77 6e 22 2c 20 2d 31 29 3b 0a 2b unknown", -1);.+
2220: 20 20 20 20 20 20 20 20 69 6e 74 20 6e 65 77 4f int newO
2230: 62 6a 63 2c 20 68 61 6e 64 6c 65 72 4f 62 6a 63 bjc, handlerObjc
2240: 3b 0a 2b 20 20 20 20 20 20 20 20 54 63 6c 5f 4f ;.+ Tcl_O
2250: 62 6a 20 2a 2a 68 61 6e 64 6c 65 72 4f 62 6a 76 bj **handlerObjv
2260: 3b 0a 2b 20 20 20 20 20 20 20 20 2f 2a 0a 2b 20 ;.+ /*.+
2270: 20 20 20 20 20 20 20 20 2a 20 43 68 65 63 6b 20 * Check
2280: 69 66 20 74 68 65 72 65 20 69 73 20 61 6e 20 75 if there is an u
2290: 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 20 72 nknown handler r
22a0: 65 67 69 73 74 65 72 65 64 20 66 6f 72 20 74 68 egistered for th
22b0: 69 73 20 6e 61 6d 65 73 70 61 63 65 2e 0a 2b 20 is namespace..+
22c0: 20 20 20 20 20 20 20 20 2a 20 4f 74 68 65 72 77 * Otherw
22d0: 69 73 65 2c 20 75 73 65 20 74 68 65 20 67 6c 6f ise, use the glo
22e0: 62 61 6c 20 6e 61 6d 65 73 70 61 63 65 20 75 6e bal namespace un
22f0: 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 2e 0a 2b known handler..+
2300: 20 20 20 20 20 20 20 20 20 2a 2f 0a 2b 20 20 20 */.+
2310: 20 20 20 20 20 69 66 20 28 63 75 72 72 4e 73 50 if (currNsP
2320: 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c tr->unknownHandl
2330: 65 72 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b erPtr == NULL) {
2340: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 63 75 .+ cu
2350: 72 72 4e 73 50 74 72 20 3d 20 69 50 74 72 2d 3e rrNsPtr = iPtr->
2360: 67 6c 6f 62 61 6c 4e 73 50 74 72 3b 0a 2b 20 20 globalNsPtr;.+
2370: 20 20 20 20 20 20 7d 0a 2b 20 20 20 20 20 20 20 }.+
2380: 20 69 66 20 28 63 75 72 72 4e 73 50 74 72 20 3d if (currNsPtr =
2390: 3d 20 69 50 74 72 2d 3e 67 6c 6f 62 61 6c 4e 73 = iPtr->globalNs
23a0: 50 74 72 20 26 26 0a 2b 20 20 20 20 20 20 20 20 Ptr &&.+
23b0: 20 20 20 20 63 75 72 72 4e 73 50 74 72 2d 3e 75 currNsPtr->u
23c0: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 nknownHandlerPtr
23d0: 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 20 20 20 == NULL) {.+
23e0: 20 20 20 20 20 20 20 20 20 2f 2a 20 47 6c 6f 62 /* Glob
23f0: 61 6c 20 6e 61 6d 65 73 70 61 63 65 20 68 61 73 al namespace has
2400: 20 6c 6f 73 74 20 75 6e 6b 6e 6f 77 6e 20 68 61 lost unknown ha
2410: 6e 64 6c 65 72 2c 20 72 65 73 65 74 2e 20 2a 2f ndler, reset. */
2420: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 63 75 .+ cu
2430: 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e rrNsPtr->unknown
2440: 48 61 6e 64 6c 65 72 50 74 72 20 3d 0a 2b 20 20 HandlerPtr =.+
2450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 63 Tc
2460: 6c 5f 4e 65 77 53 74 72 69 6e 67 4f 62 6a 28 22 l_NewStringObj("
2470: 3a 3a 75 6e 6b 6e 6f 77 6e 22 2c 20 2d 31 29 3b ::unknown", -1);
2480: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 54 63 .+ Tc
2490: 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 63 l_IncrRefCount(c
24a0: 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 urrNsPtr->unknow
24b0: 6e 48 61 6e 64 6c 65 72 50 74 72 29 3b 0a 2b 20 nHandlerPtr);.+
24c0: 20 20 20 20 20 20 20 7d 0a 2b 20 20 20 20 20 20 }.+
24d0: 20 20 69 66 20 28 54 63 6c 5f 4c 69 73 74 4f 62 if (Tcl_ListOb
24e0: 6a 47 65 74 45 6c 65 6d 65 6e 74 73 28 69 6e 74 jGetElements(int
24f0: 65 72 70 2c 0a 2b 20 20 20 20 20 20 20 20 20 20 erp,.+
2500: 20 20 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b currNsPtr->unk
2510: 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 2c 20 nownHandlerPtr,
2520: 26 68 61 6e 64 6c 65 72 4f 62 6a 63 2c 20 26 68 &handlerObjc, &h
2530: 61 6e 64 6c 65 72 4f 62 6a 76 29 0a 2b 20 20 20 andlerObjv).+
2540: 20 20 20 20 20 20 20 20 20 21 3d 20 54 43 4c 5f != TCL_
2550: 4f 4b 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 OK) {.+
2560: 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 return TCL_ER
2570: 52 4f 52 3b 0a 2b 20 20 20 20 20 20 20 20 7d 0a ROR;.+ }.
2580: 2b 20 20 20 20 20 20 20 20 6e 65 77 4f 62 6a 63 + newObjc
2590: 20 3d 20 6f 62 6a 63 20 2b 20 68 61 6e 64 6c 65 = objc + handle
25a0: 72 4f 62 6a 63 3b 0a 2b 09 6e 65 77 4f 62 6a 76 rObjc;.+.newObjv
25b0: 20 3d 20 28 54 63 6c 5f 4f 62 6a 20 2a 2a 29 20 = (Tcl_Obj **)
25c0: 63 6b 61 6c 6c 6f 63 28 28 75 6e 73 69 67 6e 65 ckalloc((unsigne
25d0: 64 29 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 d).+
25e0: 20 20 20 20 28 6e 65 77 4f 62 6a 63 20 2a 20 73 (newObjc * s
25f0: 69 7a 65 6f 66 28 54 63 6c 5f 4f 62 6a 20 2a 29 izeof(Tcl_Obj *)
2600: 29 29 3b 0a 2b 20 20 20 20 20 20 20 20 2f 2a 20 ));.+ /*
2610: 43 6f 70 79 20 63 6f 6d 6d 61 6e 64 20 70 72 65 Copy command pre
2620: 66 69 78 20 66 72 6f 6d 20 75 6e 6b 6e 6f 77 6e fix from unknown
2630: 20 68 61 6e 64 6c 65 72 2e 20 2a 2f 0a 2b 20 20 handler. */.+
2640: 20 20 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 for (i = 0
2650: 3b 20 69 20 3c 20 68 61 6e 64 6c 65 72 4f 62 6a ; i < handlerObj
2660: 63 3b 20 2b 2b 69 29 20 7b 0a 2b 20 20 20 20 20 c; ++i) {.+
2670: 20 20 20 20 20 20 20 6e 65 77 4f 62 6a 76 5b 69 newObjv[i
2680: 5d 20 3d 20 68 61 6e 64 6c 65 72 4f 62 6a 76 5b ] = handlerObjv[
2690: 69 5d 3b 0a 2b 20 20 20 20 20 20 20 20 7d 0a 2b i];.+ }.+
26a0: 20 20 20 20 20 20 20 20 2f 2a 20 41 64 64 20 69 /* Add i
26b0: 6e 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 20 61 n command name a
26c0: 6e 64 20 61 72 67 75 6d 65 6e 74 73 2e 20 2a 2f nd arguments. */
26d0: 0a 2b 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 .+ for (i
26e0: 20 3d 20 6f 62 6a 63 2d 31 3b 20 69 20 3e 3d 20 = objc-1; i >=
26f0: 30 3b 20 2d 2d 69 29 20 7b 0a 2b 20 20 20 20 20 0; --i) {.+
2700: 20 20 20 20 20 20 20 6e 65 77 4f 62 6a 76 5b 69 newObjv[i
2710: 2b 68 61 6e 64 6c 65 72 4f 62 6a 63 5d 20 3d 20 +handlerObjc] =
2720: 6f 62 6a 76 5b 69 5d 3b 0a 2b 20 20 20 20 20 20 objv[i];.+
2730: 20 20 7d 0a 20 09 54 63 6c 5f 49 6e 63 72 52 65 }. .Tcl_IncrRe
2740: 66 43 6f 75 6e 74 28 6e 65 77 4f 62 6a 76 5b 30 fCount(newObjv[0
2750: 5d 29 3b 0a 20 09 63 6d 64 50 74 72 20 3d 20 28 ]);. .cmdPtr = (
2760: 43 6f 6d 6d 61 6e 64 20 2a 29 20 54 63 6c 5f 47 Command *) Tcl_G
2770: 65 74 43 6f 6d 6d 61 6e 64 46 72 6f 6d 4f 62 6a etCommandFromObj
2780: 28 69 6e 74 65 72 70 2c 20 6e 65 77 4f 62 6a 76 (interp, newObjv
2790: 5b 30 5d 29 3b 0a 2b 20 20 20 20 20 20 20 20 0a [0]);.+ .
27a0: 20 09 69 66 20 28 63 6d 64 50 74 72 20 3d 3d 20 .if (cmdPtr ==
27b0: 4e 55 4c 4c 29 20 7b 0a 20 09 20 20 20 20 54 63 NULL) {. . Tc
27c0: 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69 l_AppendResult(i
27d0: 6e 74 65 72 70 2c 20 22 69 6e 76 61 6c 69 64 20 nterp, "invalid
27e0: 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 20 5c 22 22 command name \""
27f0: 2c 0a 20 09 09 20 20 20 20 54 63 6c 47 65 74 53 ,. .. TclGetS
2800: 74 72 69 6e 67 28 6f 62 6a 76 5b 30 5d 29 2c 20 tring(objv[0]),
2810: 22 5c 22 22 2c 20 4e 55 4c 4c 29 3b 0a 20 09 20 "\"", NULL);. .
2820: 20 20 20 63 6f 64 65 20 3d 20 54 43 4c 5f 45 52 code = TCL_ER
2830: 52 4f 52 3b 0a 20 09 7d 20 65 6c 73 65 20 7b 0a ROR;. .} else {.
2840: 20 09 20 20 20 20 69 50 74 72 2d 3e 6e 75 6d 4c . iPtr->numL
2850: 65 76 65 6c 73 2b 2b 3b 0a 2d 09 20 20 20 20 63 evels++;.-. c
2860: 6f 64 65 20 3d 20 54 63 6c 45 76 61 6c 4f 62 6a ode = TclEvalObj
2870: 76 49 6e 74 65 72 6e 61 6c 28 69 6e 74 65 72 70 vInternal(interp
2880: 2c 20 6f 62 6a 63 2b 31 2c 20 6e 65 77 4f 62 6a , objc+1, newObj
2890: 76 2c 0a 2d 09 09 20 20 20 20 63 6f 6d 6d 61 6e v,.-.. comman
28a0: 64 2c 20 6c 65 6e 67 74 68 2c 20 30 29 3b 0a 2b d, length, 0);.+
28b0: 09 20 20 20 20 63 6f 64 65 20 3d 20 54 63 6c 45 . code = TclE
28c0: 76 61 6c 4f 62 6a 76 49 6e 74 65 72 6e 61 6c 28 valObjvInternal(
28d0: 69 6e 74 65 72 70 2c 20 6e 65 77 4f 62 6a 63 2c interp, newObjc,
28e0: 20 6e 65 77 4f 62 6a 76 2c 20 63 6f 6d 6d 61 6e newObjv, comman
28f0: 64 2c 0a 2b 09 09 09 20 20 20 20 6c 65 6e 67 74 d,.+... lengt
2900: 68 2c 20 30 29 3b 0a 20 09 20 20 20 20 69 50 74 h, 0);. . iPt
2910: 72 2d 3e 6e 75 6d 4c 65 76 65 6c 73 2d 2d 3b 0a r->numLevels--;.
2920: 20 09 7d 0a 20 09 54 63 6c 5f 44 65 63 72 52 65 .}. .Tcl_DecrRe
2930: 66 43 6f 75 6e 74 28 6e 65 77 4f 62 6a 76 5b 30 fCount(newObjv[0
2940: 5d 29 3b 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 ]);.Index: gener
2950: 69 63 2f 74 63 6c 44 65 63 6c 73 2e 68 0a 3d 3d ic/tclDecls.h.==
2960: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2970: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2980: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2990: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
29a0: 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 =.RCS file: /cvs
29b0: 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e root/tcl/tcl/gen
29c0: 65 72 69 63 2f 74 63 6c 44 65 63 6c 73 2e 68 2c eric/tclDecls.h,
29d0: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 v.retrieving rev
29e0: 69 73 69 6f 6e 20 31 2e 31 32 30 0a 64 69 66 66 ision 1.120.diff
29f0: 20 2d 75 20 2d 72 31 2e 31 32 30 20 74 63 6c 44 -u -r1.120 tclD
2a00: 65 63 6c 73 2e 68 0a 2d 2d 2d 20 67 65 6e 65 72 ecls.h.--- gener
2a10: 69 63 2f 74 63 6c 44 65 63 6c 73 2e 68 09 32 37 ic/tclDecls.h.27
2a20: 20 44 65 63 20 32 30 30 35 20 32 30 3a 31 34 3a Dec 2005 20:14:
2a30: 30 38 20 2d 30 30 30 30 09 31 2e 31 32 30 0a 2b 08 -0000.1.120.+
2a40: 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 44 65 ++ generic/tclDe
2a50: 63 6c 73 2e 68 09 31 20 46 65 62 20 32 30 30 36 cls.h.1 Feb 2006
2a60: 20 31 37 3a 35 37 3a 30 35 20 2d 30 30 30 30 0a 17:57:05 -0000.
2a70: 40 40 20 2d 33 35 33 34 2c 36 20 2b 33 35 33 34 @@ -3534,6 +3534
2a80: 2c 31 39 20 40 40 0a 20 09 09 09 09 54 63 6c 5f ,19 @@. ....Tcl_
2a90: 49 6e 74 65 72 70 2a 20 69 6e 74 65 72 70 2c 20 Interp* interp,
2aa0: 64 6f 75 62 6c 65 20 69 6e 69 74 76 61 6c 2c 20 double initval,
2ab0: 0a 20 09 09 09 09 6d 70 5f 69 6e 74 20 2a 20 74 . ....mp_int * t
2ac0: 6f 49 6e 69 74 29 29 3b 0a 20 23 65 6e 64 69 66 oInit));. #endif
2ad0: 0a 2b 23 69 66 6e 64 65 66 20 54 63 6c 5f 47 65 .+#ifndef Tcl_Ge
2ae0: 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 tNamespaceUnknow
2af0: 6e 48 61 6e 64 6c 65 72 5f 54 43 4c 5f 44 45 43 nHandler_TCL_DEC
2b00: 4c 41 52 45 44 0a 2b 23 64 65 66 69 6e 65 20 54 LARED.+#define T
2b10: 63 6c 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55 cl_GetNamespaceU
2b20: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 5f 54 43 nknownHandler_TC
2b30: 4c 5f 44 45 43 4c 41 52 45 44 0a 2b 2f 2a 20 35 L_DECLARED.+/* 5
2b40: 36 37 20 2a 2f 0a 2b 45 58 54 45 52 4e 20 54 63 67 */.+EXTERN Tc
2b50: 6c 5f 4f 62 6a 20 2a 09 54 63 6c 5f 47 65 74 4e l_Obj *.Tcl_GetN
2b60: 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 amespaceUnknownH
2b70: 61 6e 64 6c 65 72 20 5f 41 4e 53 49 5f 41 52 47 andler _ANSI_ARG
2b80: 53 5f 28 28 0a 2b 09 09 09 09 54 63 6c 5f 49 6e S_((.+....Tcl_In
2b90: 74 65 72 70 20 2a 20 69 6e 74 65 72 70 2c 20 54 terp * interp, T
2ba0: 63 6c 5f 4e 61 6d 65 73 70 61 63 65 20 2a 20 6e cl_Namespace * n
2bb0: 73 50 74 72 29 29 3b 0a 2b 23 65 6e 64 69 66 0a sPtr));.+#endif.
2bc0: 2b 23 69 66 6e 64 65 66 20 54 63 6c 5f 53 65 74 +#ifndef Tcl_Set
2bd0: 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e NamespaceUnknown
2be0: 48 61 6e 64 6c 65 72 5f 54 43 4c 5f 44 45 43 4c Handler_TCL_DECL
2bf0: 41 52 45 44 0a 2b 23 64 65 66 69 6e 65 20 54 63 ARED.+#define Tc
2c00: 6c 5f 53 65 74 4e 61 6d 65 73 70 61 63 65 55 6e l_SetNamespaceUn
2c10: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 5f 54 43 4c knownHandler_TCL
2c20: 5f 44 45 43 4c 41 52 45 44 0a 2b 2f 2a 20 35 36 _DECLARED.+/* 56
2c30: 38 20 2a 2f 0a 2b 45 58 54 45 52 4e 20 69 6e 74 8 */.+EXTERN int
2c40: 09 09 54 63 6c 5f 53 65 74 4e 61 6d 65 73 70 61 ..Tcl_SetNamespa
2c50: 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 ceUnknownHandler
2c60: 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 0a 2b _ANSI_ARGS_((.+
2c70: 09 09 09 09 54 63 6c 5f 49 6e 74 65 72 70 20 2a ....Tcl_Interp *
2c80: 20 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4e 61 6d interp, Tcl_Nam
2c90: 65 73 70 61 63 65 20 2a 20 6e 73 50 74 72 2c 20 espace * nsPtr,
2ca0: 0a 2b 09 09 09 09 54 63 6c 5f 4f 62 6a 20 2a 20 .+....Tcl_Obj *
2cb0: 68 61 6e 64 6c 65 72 50 74 72 29 29 3b 0a 2b 23 handlerPtr));.+#
2cc0: 65 6e 64 69 66 0a 20 0a 20 74 79 70 65 64 65 66 endif. . typedef
2cd0: 20 73 74 72 75 63 74 20 54 63 6c 53 74 75 62 48 struct TclStubH
2ce0: 6f 6f 6b 73 20 7b 0a 20 20 20 20 20 73 74 72 75 ooks {. stru
2cf0: 63 74 20 54 63 6c 50 6c 61 74 53 74 75 62 73 20 ct TclPlatStubs
2d00: 2a 74 63 6c 50 6c 61 74 53 74 75 62 73 3b 0a 40 *tclPlatStubs;.@
2d10: 40 20 2d 34 31 34 32 2c 36 20 2b 34 31 35 35 2c @ -4142,6 +4155,
2d20: 38 20 40 40 0a 20 20 20 20 20 76 6f 69 64 20 28 8 @@. void (
2d30: 2a 74 63 6c 5f 53 65 74 43 68 61 6e 6e 65 6c 45 *tcl_SetChannelE
2d40: 72 72 6f 72 29 20 5f 41 4e 53 49 5f 41 52 47 53 rror) _ANSI_ARGS
2d50: 5f 28 28 54 63 6c 5f 43 68 61 6e 6e 65 6c 20 63 _((Tcl_Channel c
2d60: 68 61 6e 2c 20 54 63 6c 5f 4f 62 6a 2a 20 6d 73 han, Tcl_Obj* ms
2d70: 67 29 29 3b 20 2f 2a 20 35 36 34 20 2a 2f 0a 20 g)); /* 564 */.
2d80: 20 20 20 20 76 6f 69 64 20 28 2a 74 63 6c 5f 47 void (*tcl_G
2d90: 65 74 43 68 61 6e 6e 65 6c 45 72 72 6f 72 29 20 etChannelError)
2da0: 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c _ANSI_ARGS_((Tcl
2db0: 5f 43 68 61 6e 6e 65 6c 20 63 68 61 6e 2c 20 54 _Channel chan, T
2dc0: 63 6c 5f 4f 62 6a 2a 2a 20 6d 73 67 29 29 3b 20 cl_Obj** msg));
2dd0: 2f 2a 20 35 36 35 20 2a 2f 0a 20 20 20 20 20 69 /* 565 */. i
2de0: 6e 74 20 28 2a 74 63 6c 5f 49 6e 69 74 42 69 67 nt (*tcl_InitBig
2df0: 6e 75 6d 46 72 6f 6d 44 6f 75 62 6c 65 29 20 5f numFromDouble) _
2e00: 41 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f ANSI_ARGS_((Tcl_
2e10: 49 6e 74 65 72 70 2a 20 69 6e 74 65 72 70 2c 20 Interp* interp,
2e20: 64 6f 75 62 6c 65 20 69 6e 69 74 76 61 6c 2c 20 double initval,
2e30: 6d 70 5f 69 6e 74 20 2a 20 74 6f 49 6e 69 74 29 mp_int * toInit)
2e40: 29 3b 20 2f 2a 20 35 36 36 20 2a 2f 0a 2b 20 20 ); /* 566 */.+
2e50: 20 20 54 63 6c 5f 4f 62 6a 20 2a 20 28 2a 74 63 Tcl_Obj * (*tc
2e60: 6c 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e l_GetNamespaceUn
2e70: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 29 20 5f 41 knownHandler) _A
2e80: 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 49 NSI_ARGS_((Tcl_I
2e90: 6e 74 65 72 70 20 2a 20 69 6e 74 65 72 70 2c 20 nterp * interp,
2ea0: 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 20 2a 20 Tcl_Namespace *
2eb0: 6e 73 50 74 72 29 29 3b 20 2f 2a 20 35 36 37 20 nsPtr)); /* 567
2ec0: 2a 2f 0a 2b 20 20 20 20 69 6e 74 20 28 2a 74 63 */.+ int (*tc
2ed0: 6c 5f 53 65 74 4e 61 6d 65 73 70 61 63 65 55 6e l_SetNamespaceUn
2ee0: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 29 20 5f 41 knownHandler) _A
2ef0: 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 49 NSI_ARGS_((Tcl_I
2f00: 6e 74 65 72 70 20 2a 20 69 6e 74 65 72 70 2c 20 nterp * interp,
2f10: 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 20 2a 20 Tcl_Namespace *
2f20: 6e 73 50 74 72 2c 20 54 63 6c 5f 4f 62 6a 20 2a nsPtr, Tcl_Obj *
2f30: 20 68 61 6e 64 6c 65 72 50 74 72 29 29 3b 20 2f handlerPtr)); /
2f40: 2a 20 35 36 38 20 2a 2f 0a 20 7d 20 54 63 6c 53 * 568 */. } TclS
2f50: 74 75 62 73 3b 0a 20 0a 20 23 69 66 64 65 66 20 tubs;. . #ifdef
2f60: 5f 5f 63 70 6c 75 73 70 6c 75 73 0a 40 40 20 2d __cplusplus.@@ -
2f70: 36 34 35 30 2c 36 20 2b 36 34 36 35 2c 31 34 20 6450,6 +6465,14
2f80: 40 40 0a 20 23 64 65 66 69 6e 65 20 54 63 6c 5f @@. #define Tcl_
2f90: 49 6e 69 74 42 69 67 6e 75 6d 46 72 6f 6d 44 6f InitBignumFromDo
2fa0: 75 62 6c 65 20 5c 0a 20 09 28 74 63 6c 53 74 75 uble \. .(tclStu
2fb0: 62 73 50 74 72 2d 3e 74 63 6c 5f 49 6e 69 74 42 bsPtr->tcl_InitB
2fc0: 69 67 6e 75 6d 46 72 6f 6d 44 6f 75 62 6c 65 29 ignumFromDouble)
2fd0: 20 2f 2a 20 35 36 36 20 2a 2f 0a 20 23 65 6e 64 /* 566 */. #end
2fe0: 69 66 0a 2b 23 69 66 6e 64 65 66 20 54 63 6c 5f if.+#ifndef Tcl_
2ff0: 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e GetNamespaceUnkn
3000: 6f 77 6e 48 61 6e 64 6c 65 72 0a 2b 23 64 65 66 ownHandler.+#def
3010: 69 6e 65 20 54 63 6c 5f 47 65 74 4e 61 6d 65 73 ine Tcl_GetNames
3020: 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c paceUnknownHandl
3030: 65 72 20 5c 0a 2b 09 28 74 63 6c 53 74 75 62 73 er \.+.(tclStubs
3040: 50 74 72 2d 3e 74 63 6c 5f 47 65 74 4e 61 6d 65 Ptr->tcl_GetName
3050: 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 spaceUnknownHand
3060: 6c 65 72 29 20 2f 2a 20 35 36 37 20 2a 2f 0a 2b ler) /* 567 */.+
3070: 23 65 6e 64 69 66 0a 2b 23 69 66 6e 64 65 66 20 #endif.+#ifndef
3080: 54 63 6c 5f 53 65 74 4e 61 6d 65 73 70 61 63 65 Tcl_SetNamespace
3090: 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 0a 2b UnknownHandler.+
30a0: 23 64 65 66 69 6e 65 20 54 63 6c 5f 53 65 74 4e #define Tcl_SetN
30b0: 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 amespaceUnknownH
30c0: 61 6e 64 6c 65 72 20 5c 0a 2b 09 28 74 63 6c 53 andler \.+.(tclS
30d0: 74 75 62 73 50 74 72 2d 3e 74 63 6c 5f 53 65 74 tubsPtr->tcl_Set
30e0: 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e NamespaceUnknown
30f0: 48 61 6e 64 6c 65 72 29 20 2f 2a 20 35 36 38 20 Handler) /* 568
3100: 2a 2f 0a 2b 23 65 6e 64 69 66 0a 20 0a 20 23 65 */.+#endif. . #e
3110: 6e 64 69 66 20 2f 2a 20 64 65 66 69 6e 65 64 28 ndif /* defined(
3120: 55 53 45 5f 54 43 4c 5f 53 54 55 42 53 29 20 26 USE_TCL_STUBS) &
3130: 26 20 21 64 65 66 69 6e 65 64 28 55 53 45 5f 54 & !defined(USE_T
3140: 43 4c 5f 53 54 55 42 5f 50 52 4f 43 53 29 20 2a CL_STUB_PROCS) *
3150: 2f 0a 20 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 /. .Index: gener
3160: 69 63 2f 74 63 6c 49 6e 74 2e 68 0a 3d 3d 3d 3d ic/tclInt.h.====
3170: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3180: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3190: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
31a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a ===============.
31b0: 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f RCS file: /cvsro
31c0: 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 ot/tcl/tcl/gener
31d0: 69 63 2f 74 63 6c 49 6e 74 2e 68 2c 76 0a 72 65 ic/tclInt.h,v.re
31e0: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f trieving revisio
31f0: 6e 20 31 2e 32 36 35 0a 64 69 66 66 20 2d 75 20 n 1.265.diff -u
3200: 2d 72 31 2e 32 36 35 20 74 63 6c 49 6e 74 2e 68 -r1.265 tclInt.h
3210: 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c .--- generic/tcl
3220: 49 6e 74 2e 68 09 31 20 46 65 62 20 32 30 30 36 Int.h.1 Feb 2006
3230: 20 31 37 3a 34 38 3a 31 30 20 2d 30 30 30 30 09 17:48:10 -0000.
3240: 31 2e 32 36 35 0a 2b 2b 2b 20 67 65 6e 65 72 69 1.265.+++ generi
3250: 63 2f 74 63 6c 49 6e 74 2e 68 09 31 20 46 65 62 c/tclInt.h.1 Feb
3260: 20 32 30 30 36 20 31 37 3a 35 37 3a 30 35 20 2d 2006 17:57:05 -
3270: 30 30 30 30 0a 40 40 20 2d 32 36 33 2c 36 20 2b 0000.@@ -263,6 +
3280: 32 36 33 2c 39 20 40 40 0a 20 20 20 20 20 54 63 263,9 @@. Tc
3290: 6c 5f 45 6e 73 65 6d 62 6c 65 20 2a 65 6e 73 65 l_Ensemble *ense
32a0: 6d 62 6c 65 73 3b 09 2f 2a 20 4c 69 73 74 20 6f mbles;./* List o
32b0: 66 20 73 74 72 75 63 74 75 72 65 73 20 74 68 61 f structures tha
32c0: 74 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 64 65 t contain the de
32d0: 74 61 69 6c 73 0a 20 09 09 09 09 20 2a 20 6f 66 tails. .... * of
32e0: 20 74 68 65 20 65 6e 73 65 6d 62 6c 65 73 20 74 the ensembles t
32f0: 68 61 74 20 61 72 65 20 69 6d 70 6c 65 6d 65 6e hat are implemen
3300: 74 65 64 20 6f 6e 0a 20 09 09 09 09 20 2a 20 74 ted on. .... * t
3310: 6f 70 20 6f 66 20 74 68 69 73 20 6e 61 6d 65 73 op of this names
3320: 70 61 63 65 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 pace. */.+ Tc
3330: 6c 5f 4f 62 6a 20 2a 75 6e 6b 6e 6f 77 6e 48 61 l_Obj *unknownHa
3340: 6e 64 6c 65 72 50 74 72 3b 09 2f 2a 20 41 20 73 ndlerPtr;./* A s
3350: 63 72 69 70 74 20 66 72 61 67 6d 65 6e 74 20 74 cript fragment t
3360: 6f 20 62 65 20 75 73 65 64 20 77 68 65 6e 20 63 o be used when c
3370: 6f 6d 6d 61 6e 64 0a 2b 09 09 09 09 20 2a 20 72 ommand.+.... * r
3380: 65 73 6f 6c 75 74 69 6f 6e 20 69 6e 20 74 68 69 esolution in thi
3390: 73 20 6e 61 6d 65 73 70 61 63 65 20 66 61 69 6c s namespace fail
33a0: 73 2e 20 54 49 50 0a 2b 09 09 09 09 20 2a 20 31 s. TIP.+.... * 1
33b0: 38 31 2e 20 2a 2f 0a 20 20 20 20 20 69 6e 74 20 81. */. int
33c0: 63 6f 6d 6d 61 6e 64 50 61 74 68 4c 65 6e 67 74 commandPathLengt
33d0: 68 3b 09 2f 2a 20 54 68 65 20 6c 65 6e 67 74 68 h;./* The length
33e0: 20 6f 66 20 74 68 65 20 65 78 70 6c 69 63 69 74 of the explicit
33f0: 20 70 61 74 68 2e 20 2a 2f 0a 20 20 20 20 20 4e path. */. N
3400: 61 6d 65 73 70 61 63 65 50 61 74 68 45 6e 74 72 amespacePathEntr
3410: 79 20 2a 63 6f 6d 6d 61 6e 64 50 61 74 68 41 72 y *commandPathAr
3420: 72 61 79 3b 0a 20 09 09 09 09 2f 2a 20 54 68 65 ray;. ..../* The
3430: 20 65 78 70 6c 69 63 69 74 20 70 61 74 68 20 6f explicit path o
3440: 66 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 f the namespace
3450: 61 73 20 61 6e 0a 49 6e 64 65 78 3a 20 67 65 6e as an.Index: gen
3460: 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 eric/tclNamesp.c
3470: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .===============
3480: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3490: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
34a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
34b0: 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f ====.RCS file: /
34c0: 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f cvsroot/tcl/tcl/
34d0: 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 generic/tclNames
34e0: 70 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 p.c,v.retrieving
34f0: 20 72 65 76 69 73 69 6f 6e 20 31 2e 39 32 0a 64 revision 1.92.d
3500: 69 66 66 20 2d 75 20 2d 72 31 2e 39 32 20 74 63 iff -u -r1.92 tc
3510: 6c 4e 61 6d 65 73 70 2e 63 0a 2d 2d 2d 20 67 65 lNamesp.c.--- ge
3520: 6e 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 2e neric/tclNamesp.
3530: 63 09 31 20 46 65 62 20 32 30 30 36 20 31 37 3a c.1 Feb 2006 17:
3540: 34 38 3a 31 31 20 2d 30 30 30 30 09 31 2e 39 32 48:11 -0000.1.92
3550: 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c .+++ generic/tcl
3560: 4e 61 6d 65 73 70 2e 63 09 31 20 46 65 62 20 32 Namesp.c.1 Feb 2
3570: 30 30 36 20 31 37 3a 35 37 3a 30 37 20 2d 30 30 006 17:57:07 -00
3580: 30 30 0a 40 40 20 2d 31 32 2c 36 20 2b 31 32 2c 00.@@ -12,6 +12,
3590: 37 20 40 40 0a 20 20 2a 20 43 6f 70 79 72 69 67 7 @@. * Copyrig
35a0: 68 74 20 28 63 29 20 31 39 39 37 20 53 75 6e 20 ht (c) 1997 Sun
35b0: 4d 69 63 72 6f 73 79 73 74 65 6d 73 2c 20 49 6e Microsystems, In
35c0: 63 2e 0a 20 20 2a 20 43 6f 70 79 72 69 67 68 74 c.. * Copyright
35d0: 20 28 63 29 20 31 39 39 38 2d 31 39 39 39 20 62 (c) 1998-1999 b
35e0: 79 20 53 63 72 69 70 74 69 63 73 20 43 6f 72 70 y Scriptics Corp
35f0: 6f 72 61 74 69 6f 6e 2e 0a 20 20 2a 20 43 6f 70 oration.. * Cop
3600: 79 72 69 67 68 74 20 28 63 29 20 32 30 30 32 2d yright (c) 2002-
3610: 32 30 30 35 20 44 6f 6e 61 6c 20 4b 2e 20 46 65 2005 Donal K. Fe
3620: 6c 6c 6f 77 73 2e 0a 2b 20 2a 20 43 6f 70 79 72 llows..+ * Copyr
3630: 69 67 68 74 20 28 63 29 20 32 30 30 36 20 4e 65 ight (c) 2006 Ne
3640: 69 6c 20 4d 61 64 64 65 6e 2e 0a 20 20 2a 0a 20 il Madden.. *.
3650: 20 2a 20 4f 72 69 67 69 6e 61 6c 6c 79 20 69 6d * Originally im
3660: 70 6c 65 6d 65 6e 74 65 64 20 62 79 0a 20 20 2a plemented by. *
3670: 20 20 20 4d 69 63 68 61 65 6c 20 4a 2e 20 4d 63 Michael J. Mc
3680: 4c 65 6e 6e 61 6e 0a 40 40 20 2d 32 33 30 2c 36 Lennan.@@ -230,6
3690: 20 2b 32 33 31 2c 39 20 40 40 0a 20 09 09 09 20 +231,9 @@. ...
36a0: 20 20 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c int objc, Tcl
36b0: 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 _Obj *CONST objv
36c0: 5b 5d 29 3b 0a 20 73 74 61 74 69 63 20 69 6e 74 []);. static int
36d0: 09 09 4e 61 6d 65 73 70 61 63 65 55 70 76 61 72 ..NamespaceUpvar
36e0: 43 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 20 64 Cmd(ClientData d
36f0: 75 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74 65 72 70 ummy, Tcl_Interp
3700: 20 2a 69 6e 74 65 72 70 2c 0a 20 09 09 09 20 20 *interp,. ...
3710: 20 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f int objc, Tcl_
3720: 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b Obj *CONST objv[
3730: 5d 29 3b 0a 2b 73 74 61 74 69 63 20 69 6e 74 20 ]);.+static int
3740: 20 20 20 20 20 20 20 20 20 20 20 20 20 4e 61 6d Nam
3750: 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 43 6d 64 espaceUnknownCmd
3760: 28 43 6c 69 65 6e 74 44 61 74 61 20 64 75 6d 6d (ClientData dumm
3770: 79 2c 20 0a 2b 20 20 20 20 20 20 20 20 20 20 20 y, .+
3780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3790: 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 Tcl_Interp *int
37a0: 65 72 70 2c 20 69 6e 74 20 6f 62 6a 63 2c 20 0a erp, int objc, .
37b0: 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 +
37c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 63 6c Tcl
37d0: 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 _Obj *CONST objv
37e0: 5b 5d 29 3b 0a 20 73 74 61 74 69 63 20 69 6e 74 []);. static int
37f0: 09 09 4e 61 6d 65 73 70 61 63 65 57 68 69 63 68 ..NamespaceWhich
3800: 43 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 20 64 Cmd(ClientData d
3810: 75 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74 65 72 70 ummy, Tcl_Interp
3820: 20 2a 69 6e 74 65 72 70 2c 0a 20 09 09 09 20 20 *interp,. ...
3830: 20 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f int objc, Tcl_
3840: 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b Obj *CONST objv[
3850: 5d 29 3b 0a 20 73 74 61 74 69 63 20 69 6e 74 09 ]);. static int.
3860: 09 53 65 74 4e 73 4e 61 6d 65 46 72 6f 6d 41 6e .SetNsNameFromAn
3870: 79 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e y(Tcl_Interp *in
3880: 74 65 72 70 2c 20 54 63 6c 5f 4f 62 6a 20 2a 6f terp, Tcl_Obj *o
3890: 62 6a 50 74 72 29 3b 0a 40 40 20 2d 38 31 36 2c bjPtr);.@@ -816,
38a0: 36 20 2b 38 32 30 2c 37 20 40 40 0a 20 20 20 20 6 +820,7 @@.
38b0: 20 6e 73 50 74 72 2d 3e 63 6f 6d 70 69 6c 65 64 nsPtr->compiled
38c0: 56 61 72 52 65 73 50 72 6f 63 20 3d 20 4e 55 4c VarResProc = NUL
38d0: 4c 3b 0a 20 20 20 20 20 6e 73 50 74 72 2d 3e 65 L;. nsPtr->e
38e0: 78 70 6f 72 74 4c 6f 6f 6b 75 70 45 70 6f 63 68 xportLookupEpoch
38f0: 20 3d 20 30 3b 0a 20 20 20 20 20 6e 73 50 74 72 = 0;. nsPtr
3900: 2d 3e 65 6e 73 65 6d 62 6c 65 73 20 3d 20 4e 55 ->ensembles = NU
3910: 4c 4c 3b 0a 2b 20 20 20 20 6e 73 50 74 72 2d 3e LL;.+ nsPtr->
3920: 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 unknownHandlerPt
3930: 72 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 6e r = NULL;. n
3940: 73 50 74 72 2d 3e 63 6f 6d 6d 61 6e 64 50 61 74 sPtr->commandPat
3950: 68 4c 65 6e 67 74 68 20 3d 20 30 3b 0a 20 20 20 hLength = 0;.
3960: 20 20 6e 73 50 74 72 2d 3e 63 6f 6d 6d 61 6e 64 nsPtr->command
3970: 50 61 74 68 41 72 72 61 79 20 3d 20 4e 55 4c 4c PathArray = NULL
3980: 3b 0a 20 20 20 20 20 6e 73 50 74 72 2d 3e 63 6f ;. nsPtr->co
3990: 6d 6d 61 6e 64 50 61 74 68 53 6f 75 72 63 65 4c mmandPathSourceL
39a0: 69 73 74 20 3d 20 4e 55 4c 4c 3b 0a 40 40 20 2d ist = NULL;.@@ -
39b0: 39 31 37 2c 36 20 2b 39 32 32 2c 31 35 20 40 40 917,6 +922,15 @@
39c0: 0a 20 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 2f . }. . /
39d0: 2a 0a 2b 20 20 20 20 20 2a 20 49 66 20 74 68 65 *.+ * If the
39e0: 20 6e 61 6d 65 73 70 61 63 65 20 68 61 73 20 61 namespace has a
39f0: 20 72 65 67 69 73 74 65 72 65 64 20 75 6e 6b 6e registered unkn
3a00: 6f 77 6e 20 68 61 6e 64 6c 65 72 20 28 54 49 50 own handler (TIP
3a10: 20 31 38 31 29 2c 20 74 68 65 6e 20 66 72 65 65 181), then free
3a20: 0a 2b 20 20 20 20 20 2a 20 69 74 20 68 65 72 65 .+ * it here
3a30: 2e 0a 2b 20 20 20 20 20 2a 2f 0a 2b 20 20 20 20 ..+ */.+
3a40: 69 66 20 28 6e 73 50 74 72 2d 3e 75 6e 6b 6e 6f if (nsPtr->unkno
3a50: 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 21 3d 20 wnHandlerPtr !=
3a60: 4e 55 4c 4c 29 20 7b 0a 2b 09 54 63 6c 5f 44 65 NULL) {.+.Tcl_De
3a70: 63 72 52 65 66 43 6f 75 6e 74 28 6e 73 50 74 72 crRefCount(nsPtr
3a80: 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 ->unknownHandler
3a90: 50 74 72 29 3b 0a 2b 20 20 20 20 20 20 20 20 6e Ptr);.+ n
3aa0: 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e sPtr->unknownHan
3ab0: 64 6c 65 72 50 74 72 20 3d 20 4e 55 4c 4c 3b 0a dlerPtr = NULL;.
3ac0: 2b 20 20 20 20 7d 0a 2b 0a 2b 20 20 20 20 2f 2a + }.+.+ /*
3ad0: 0a 20 20 20 20 20 20 2a 20 49 66 20 74 68 65 20 . * If the
3ae0: 6e 61 6d 65 73 70 61 63 65 20 69 73 20 6f 6e 20 namespace is on
3af0: 74 68 65 20 63 61 6c 6c 20 66 72 61 6d 65 20 73 the call frame s
3b00: 74 61 63 6b 2c 20 69 74 20 69 73 20 6d 61 72 6b tack, it is mark
3b10: 65 64 20 61 73 20 22 64 79 69 6e 67 22 0a 20 20 ed as "dying".
3b20: 20 20 20 20 2a 20 28 4e 53 5f 44 59 49 4e 47 20 * (NS_DYING
3b30: 69 73 20 4f 52 27 64 20 69 6e 74 6f 20 69 74 73 is OR'd into its
3b40: 20 66 6c 61 67 73 29 3a 20 74 68 65 20 6e 61 6d flags): the nam
3b50: 65 73 70 61 63 65 20 63 61 6e 27 74 20 62 65 20 espace can't be
3b60: 6c 6f 6f 6b 65 64 20 75 70 20 62 79 0a 20 20 20 looked up by.
3b70: 20 20 20 2a 20 6e 61 6d 65 20 62 75 74 20 69 74 * name but it
3b80: 73 20 63 6f 6d 6d 61 6e 64 73 20 61 6e 64 20 76 s commands and v
3b90: 61 72 69 61 62 6c 65 73 20 61 72 65 20 73 74 69 ariables are sti
3ba0: 6c 6c 20 75 73 61 62 6c 65 20 62 79 20 74 68 6f ll usable by tho
3bb0: 73 65 20 61 63 74 69 76 65 0a 40 40 20 2d 32 38 se active.@@ -28
3bc0: 39 38 2c 31 33 20 2b 32 39 31 32 2c 31 33 20 40 98,13 +2912,13 @
3bd0: 40 0a 20 09 22 63 68 69 6c 64 72 65 6e 22 2c 20 @. ."children",
3be0: 22 63 6f 64 65 22 2c 20 22 63 75 72 72 65 6e 74 "code", "current
3bf0: 22 2c 20 22 64 65 6c 65 74 65 22 2c 20 22 65 6e ", "delete", "en
3c00: 73 65 6d 62 6c 65 22 2c 0a 20 09 22 65 76 61 6c semble",. ."eval
3c10: 22 2c 20 22 65 78 69 73 74 73 22 2c 20 22 65 78 ", "exists", "ex
3c20: 70 6f 72 74 22 2c 20 22 66 6f 72 67 65 74 22 2c port", "forget",
3c30: 20 22 69 6d 70 6f 72 74 22 2c 0a 20 09 22 69 6e "import",. ."in
3c40: 73 63 6f 70 65 22 2c 20 22 6f 72 69 67 69 6e 22 scope", "origin"
3c50: 2c 20 22 70 61 72 65 6e 74 22 2c 20 22 70 61 74 , "parent", "pat
3c60: 68 22 2c 20 22 71 75 61 6c 69 66 69 65 72 73 22 h", "qualifiers"
3c70: 2c 0a 2d 09 22 74 61 69 6c 22 2c 20 22 75 70 76 ,.-."tail", "upv
3c80: 61 72 22 2c 20 22 77 68 69 63 68 22 2c 20 4e 55 ar", "which", NU
3c90: 4c 4c 0a 2b 09 22 74 61 69 6c 22 2c 20 22 75 6e LL.+."tail", "un
3ca0: 6b 6e 6f 77 6e 22 2c 20 22 75 70 76 61 72 22 2c known", "upvar",
3cb0: 20 22 77 68 69 63 68 22 2c 20 4e 55 4c 4c 0a 20 "which", NULL.
3cc0: 20 20 20 20 7d 3b 0a 20 20 20 20 20 65 6e 75 6d };. enum
3cd0: 20 4e 53 53 75 62 43 6d 64 49 64 78 20 7b 0a 20 NSSubCmdIdx {.
3ce0: 09 4e 53 43 68 69 6c 64 72 65 6e 49 64 78 2c 20 .NSChildrenIdx,
3cf0: 4e 53 43 6f 64 65 49 64 78 2c 20 4e 53 43 75 72 NSCodeIdx, NSCur
3d00: 72 65 6e 74 49 64 78 2c 20 4e 53 44 65 6c 65 74 rentIdx, NSDelet
3d10: 65 49 64 78 2c 20 4e 53 45 6e 73 65 6d 62 6c 65 eIdx, NSEnsemble
3d20: 49 64 78 2c 0a 20 09 4e 53 45 76 61 6c 49 64 78 Idx,. .NSEvalIdx
3d30: 2c 20 4e 53 45 78 69 73 74 73 49 64 78 2c 20 4e , NSExistsIdx, N
3d40: 53 45 78 70 6f 72 74 49 64 78 2c 20 4e 53 46 6f SExportIdx, NSFo
3d50: 72 67 65 74 49 64 78 2c 20 4e 53 49 6d 70 6f 72 rgetIdx, NSImpor
3d60: 74 49 64 78 2c 0a 20 09 4e 53 49 6e 73 63 6f 70 tIdx,. .NSInscop
3d70: 65 49 64 78 2c 20 4e 53 4f 72 69 67 69 6e 49 64 eIdx, NSOriginId
3d80: 78 2c 20 4e 53 50 61 72 65 6e 74 49 64 78 2c 20 x, NSParentIdx,
3d90: 4e 53 50 61 74 68 49 64 78 2c 20 4e 53 51 75 61 NSPathIdx, NSQua
3da0: 6c 69 66 69 65 72 73 49 64 78 2c 0a 2d 09 4e 53 lifiersIdx,.-.NS
3db0: 54 61 69 6c 49 64 78 2c 20 4e 53 55 70 76 61 72 TailIdx, NSUpvar
3dc0: 49 64 78 2c 20 4e 53 57 68 69 63 68 49 64 78 0a Idx, NSWhichIdx.
3dd0: 2b 09 4e 53 54 61 69 6c 49 64 78 2c 20 4e 53 55 +.NSTailIdx, NSU
3de0: 6e 6b 6e 6f 77 6e 49 64 78 2c 20 4e 53 55 70 76 nknownIdx, NSUpv
3df0: 61 72 49 64 78 2c 20 4e 53 57 68 69 63 68 49 64 arIdx, NSWhichId
3e00: 78 0a 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 69 x. };. i
3e10: 6e 74 20 69 6e 64 65 78 2c 20 72 65 73 75 6c 74 nt index, result
3e20: 3b 0a 20 0a 40 40 20 2d 32 39 37 35 2c 36 20 2b ;. .@@ -2975,6 +
3e30: 32 39 38 39 2c 39 20 40 40 0a 20 20 20 20 20 63 2989,9 @@. c
3e40: 61 73 65 20 4e 53 55 70 76 61 72 49 64 78 3a 0a ase NSUpvarIdx:.
3e50: 20 09 72 65 73 75 6c 74 20 3d 20 4e 61 6d 65 73 .result = Names
3e60: 70 61 63 65 55 70 76 61 72 43 6d 64 28 63 6c 69 paceUpvarCmd(cli
3e70: 65 6e 74 44 61 74 61 2c 20 69 6e 74 65 72 70 2c entData, interp,
3e80: 20 6f 62 6a 63 2c 20 6f 62 6a 76 29 3b 0a 20 09 objc, objv);. .
3e90: 62 72 65 61 6b 3b 0a 2b 20 20 20 20 63 61 73 65 break;.+ case
3ea0: 20 4e 53 55 6e 6b 6e 6f 77 6e 49 64 78 3a 0a 2b NSUnknownIdx:.+
3eb0: 09 72 65 73 75 6c 74 20 3d 20 4e 61 6d 65 73 70 .result = Namesp
3ec0: 61 63 65 55 6e 6b 6e 6f 77 6e 43 6d 64 28 63 6c aceUnknownCmd(cl
3ed0: 69 65 6e 74 44 61 74 61 2c 20 69 6e 74 65 72 70 ientData, interp
3ee0: 2c 20 6f 62 6a 63 2c 20 6f 62 6a 76 29 3b 0a 2b , objc, objv);.+
3ef0: 09 62 72 65 61 6b 3b 0a 20 20 20 20 20 63 61 73 .break;. cas
3f00: 65 20 4e 53 57 68 69 63 68 49 64 78 3a 0a 20 09 e NSWhichIdx:. .
3f10: 72 65 73 75 6c 74 20 3d 20 4e 61 6d 65 73 70 61 result = Namespa
3f20: 63 65 57 68 69 63 68 43 6d 64 28 63 6c 69 65 6e ceWhichCmd(clien
3f30: 74 44 61 74 61 2c 20 69 6e 74 65 72 70 2c 20 6f tData, interp, o
3f40: 62 6a 63 2c 20 6f 62 6a 76 29 3b 0a 20 09 62 72 bjc, objv);. .br
3f50: 65 61 6b 3b 0a 40 40 20 2d 34 32 37 35 2c 36 20 eak;.@@ -4275,6
3f60: 2b 34 32 39 32 2c 31 36 38 20 40 40 0a 20 2f 2a +4292,168 @@. /*
3f70: 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d . *------------
3f80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3f90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3fa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3fb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a 0a 2b ----------. *.+
3fc0: 20 2a 20 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e * NamespaceUnkn
3fd0: 6f 77 6e 43 6d 64 20 2d 2d 0a 2b 20 2a 0a 2b 20 ownCmd --.+ *.+
3fe0: 2a 09 49 6e 76 6f 6b 65 64 20 74 6f 20 69 6d 70 *.Invoked to imp
3ff0: 6c 65 6d 65 6e 74 20 74 68 65 20 22 6e 61 6d 65 lement the "name
4000: 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 22 20 63 space unknown" c
4010: 6f 6d 6d 61 6e 64 20 28 54 49 50 20 31 38 31 29 ommand (TIP 181)
4020: 20 74 68 61 74 0a 2b 20 2a 09 73 65 74 73 20 6f that.+ *.sets o
4030: 72 20 71 75 65 72 69 65 73 20 61 20 70 65 72 2d r queries a per-
4040: 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 namespace unknow
4050: 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65 n command handle
4060: 72 2e 20 54 68 69 73 20 68 61 6e 64 6c 65 72 0a r. This handler.
4070: 2b 20 2a 09 69 73 20 63 61 6c 6c 65 64 20 77 68 + *.is called wh
4080: 65 6e 20 63 6f 6d 6d 61 6e 64 20 6c 6f 6f 6b 75 en command looku
4090: 70 20 66 61 69 6c 73 20 28 63 75 72 72 65 6e 74 p fails (current
40a0: 20 61 6e 64 20 67 6c 6f 62 61 6c 20 6e 73 29 2e and global ns).
40b0: 20 54 68 65 0a 2b 20 2a 09 64 65 66 61 75 6c 74 The.+ *.default
40c0: 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 65 handler for the
40d0: 20 67 6c 6f 62 61 6c 20 6e 61 6d 65 73 70 61 63 global namespac
40e0: 65 20 69 73 20 3a 3a 75 6e 6b 6e 6f 77 6e 2e 20 e is ::unknown.
40f0: 54 68 65 20 64 65 66 61 75 6c 74 0a 2b 20 2a 09 The default.+ *.
4100: 68 61 6e 64 6c 65 72 20 66 6f 72 20 6f 74 68 65 handler for othe
4110: 72 20 6e 61 6d 65 73 70 61 63 65 73 20 69 73 20 r namespaces is
4120: 74 6f 20 63 61 6c 6c 20 74 68 65 20 67 6c 6f 62 to call the glob
4130: 61 6c 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b al namespace unk
4140: 6e 6f 77 6e 0a 2b 20 2a 09 68 61 6e 64 6c 65 72 nown.+ *.handler
4150: 2e 20 50 61 73 73 69 6e 67 20 61 6e 20 65 6d 70 . Passing an emp
4160: 74 79 20 6c 69 73 74 20 72 65 73 75 6c 74 73 20 ty list results
4170: 69 6e 20 72 65 73 65 74 74 69 6e 67 20 74 68 65 in resetting the
4180: 20 68 61 6e 64 6c 65 72 20 74 6f 0a 2b 20 2a 09 handler to.+ *.
4190: 69 74 73 20 64 65 66 61 75 6c 74 2e 0a 2b 20 2a its default..+ *
41a0: 0a 2b 20 2a 09 20 20 20 20 6e 61 6d 65 73 70 61 .+ *. namespa
41b0: 63 65 20 75 6e 6b 6e 6f 77 6e 20 3f 68 61 6e 64 ce unknown ?hand
41c0: 6c 65 72 3f 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 ler?.+ *.+ * Res
41d0: 75 6c 74 73 3a 0a 2b 20 2a 09 52 65 74 75 72 6e ults:.+ *.Return
41e0: 73 20 54 43 4c 5f 4f 4b 20 69 66 20 73 75 63 63 s TCL_OK if succ
41f0: 65 73 73 66 75 6c 2c 20 61 6e 64 20 54 43 4c 5f essful, and TCL_
4200: 45 52 52 4f 52 20 69 66 20 61 6e 79 74 68 69 6e ERROR if anythin
4210: 67 20 67 6f 65 73 20 77 72 6f 6e 67 2e 0a 2b 20 g goes wrong..+
4220: 2a 0a 2b 20 2a 20 53 69 64 65 20 65 66 66 65 63 *.+ * Side effec
4230: 74 73 3a 0a 2b 20 2a 09 49 66 20 6e 6f 20 68 61 ts:.+ *.If no ha
4240: 6e 64 6c 65 72 20 69 73 20 73 70 65 63 69 66 69 ndler is specifi
4250: 65 64 2c 20 72 65 74 75 72 6e 73 20 61 20 72 65 ed, returns a re
4260: 73 75 6c 74 20 69 6e 20 74 68 65 20 69 6e 74 65 sult in the inte
4270: 72 70 72 65 74 65 72 27 73 0a 2b 20 2a 09 72 65 rpreter's.+ *.re
4280: 73 75 6c 74 20 6f 62 6a 65 63 74 2c 20 6f 74 68 sult object, oth
4290: 65 72 77 69 73 65 20 69 74 20 73 65 74 73 20 74 erwise it sets t
42a0: 68 65 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c he unknown handl
42b0: 65 72 20 70 6f 69 6e 74 65 72 20 69 6e 20 74 68 er pointer in th
42c0: 65 0a 2b 20 2a 09 63 75 72 72 65 6e 74 20 6e 61 e.+ *.current na
42d0: 6d 65 73 70 61 63 65 20 74 6f 20 74 68 65 20 73 mespace to the s
42e0: 63 72 69 70 74 20 66 72 61 67 6d 65 6e 74 20 70 cript fragment p
42f0: 72 6f 76 69 64 65 64 2e 20 49 66 20 61 6e 79 74 rovided. If anyt
4300: 68 69 6e 67 20 67 6f 65 73 0a 2b 20 2a 09 77 72 hing goes.+ *.wr
4310: 6f 6e 67 2c 20 74 68 65 20 72 65 73 75 6c 74 20 ong, the result
4320: 69 73 20 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 is an error mess
4330: 61 67 65 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d age..+ *.+ *----
4340: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4350: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4360: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4370: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4380: 2d 2d 0a 2b 20 2a 2f 0a 2b 73 74 61 74 69 63 20 --.+ */.+static
4390: 69 6e 74 0a 2b 4e 61 6d 65 73 70 61 63 65 55 6e int.+NamespaceUn
43a0: 6b 6e 6f 77 6e 43 6d 64 28 64 75 6d 6d 79 2c 20 knownCmd(dummy,
43b0: 69 6e 74 65 72 70 2c 20 6f 62 6a 63 2c 20 6f 62 interp, objc, ob
43c0: 6a 76 29 0a 2b 20 20 20 20 43 6c 69 65 6e 74 44 jv).+ ClientD
43d0: 61 74 61 20 64 75 6d 6d 79 3b 09 09 2f 2a 20 4e ata dummy;../* N
43e0: 6f 74 20 75 73 65 64 2e 20 2a 2f 0a 2b 20 20 20 ot used. */.+
43f0: 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 Tcl_Interp *int
4400: 65 72 70 3b 09 09 2f 2a 20 43 75 72 72 65 6e 74 erp;../* Current
4410: 20 69 6e 74 65 72 70 72 65 74 65 72 2e 20 2a 2f interpreter. */
4420: 0a 2b 20 20 20 20 69 6e 74 20 6f 62 6a 63 3b 09 .+ int objc;.
4430: 09 09 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 61 ../* Number of a
4440: 72 67 75 6d 65 6e 74 73 2e 20 2a 2f 0a 2b 20 20 rguments. */.+
4450: 20 20 54 63 6c 5f 4f 62 6a 20 2a 43 4f 4e 53 54 Tcl_Obj *CONST
4460: 20 6f 62 6a 76 5b 5d 3b 09 2f 2a 20 41 72 67 75 objv[];./* Argu
4470: 6d 65 6e 74 20 6f 62 6a 65 63 74 73 2e 20 2a 2f ment objects. */
4480: 0a 2b 7b 0a 2b 20 20 20 20 54 63 6c 5f 4e 61 6d .+{.+ Tcl_Nam
4490: 65 73 70 61 63 65 20 2a 63 75 72 72 4e 73 50 74 espace *currNsPt
44a0: 72 3b 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 r;.+ Tcl_Obj
44b0: 2a 72 65 73 75 6c 74 50 74 72 3b 0a 2b 20 20 20 *resultPtr;.+
44c0: 20 69 6e 74 20 72 63 3b 0a 2b 0a 2b 20 20 20 20 int rc;.+.+
44d0: 69 66 20 28 6f 62 6a 63 20 3e 20 33 29 20 7b 0a if (objc > 3) {.
44e0: 2b 09 54 63 6c 5f 57 72 6f 6e 67 4e 75 6d 41 72 +.Tcl_WrongNumAr
44f0: 67 73 28 69 6e 74 65 72 70 2c 20 32 2c 20 6f 62 gs(interp, 2, ob
4500: 6a 76 2c 20 22 3f 73 63 72 69 70 74 3f 22 29 3b jv, "?script?");
4510: 0a 2b 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .+ return
4520: 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b 20 20 20 TCL_ERROR;.+
4530: 20 7d 0a 2b 0a 2b 20 20 20 20 63 75 72 72 4e 73 }.+.+ currNs
4540: 50 74 72 20 3d 20 54 63 6c 5f 47 65 74 43 75 72 Ptr = Tcl_GetCur
4550: 72 65 6e 74 4e 61 6d 65 73 70 61 63 65 28 69 6e rentNamespace(in
4560: 74 65 72 70 29 3b 0a 2b 0a 2b 20 20 20 20 69 66 terp);.+.+ if
4570: 20 28 6f 62 6a 63 20 3d 3d 20 32 29 20 7b 0a 2b (objc == 2) {.+
4580: 09 2f 2a 0a 2b 09 20 2a 20 49 6e 74 72 6f 73 70 ./*.+. * Introsp
4590: 65 63 74 69 6f 6e 20 2d 20 72 65 74 75 72 6e 20 ection - return
45a0: 74 68 65 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 the current name
45b0: 73 70 61 63 65 20 68 61 6e 64 6c 65 72 2e 0a 2b space handler..+
45c0: 09 20 2a 2f 0a 2b 09 72 65 73 75 6c 74 50 74 72 . */.+.resultPtr
45d0: 20 3d 20 54 63 6c 5f 47 65 74 4e 61 6d 65 73 70 = Tcl_GetNamesp
45e0: 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 aceUnknownHandle
45f0: 72 28 69 6e 74 65 72 70 2c 20 63 75 72 72 4e 73 r(interp, currNs
4600: 50 74 72 29 3b 0a 2b 09 69 66 20 28 72 65 73 75 Ptr);.+.if (resu
4610: 6c 74 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b ltPtr == NULL) {
4620: 0a 2b 09 20 20 20 20 72 65 73 75 6c 74 50 74 72 .+. resultPtr
4630: 20 3d 20 54 63 6c 5f 4e 65 77 4f 62 6a 28 29 3b = Tcl_NewObj();
4640: 0a 2b 09 7d 0a 2b 09 54 63 6c 5f 53 65 74 4f 62 .+.}.+.Tcl_SetOb
4650: 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 jResult(interp,
4660: 72 65 73 75 6c 74 50 74 72 29 3b 0a 2b 20 20 20 resultPtr);.+
4670: 20 7d 20 65 6c 73 65 20 7b 0a 2b 09 72 63 20 3d } else {.+.rc =
4680: 20 54 63 6c 5f 53 65 74 4e 61 6d 65 73 70 61 63 Tcl_SetNamespac
4690: 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 28 eUnknownHandler(
46a0: 69 6e 74 65 72 70 2c 20 63 75 72 72 4e 73 50 74 interp, currNsPt
46b0: 72 2c 20 6f 62 6a 76 5b 32 5d 29 3b 0a 2b 09 69 r, objv[2]);.+.i
46c0: 66 20 28 72 63 20 3d 3d 20 54 43 4c 5f 4f 4b 29 f (rc == TCL_OK)
46d0: 20 7b 0a 2b 09 20 20 20 20 54 63 6c 5f 53 65 74 {.+. Tcl_Set
46e0: 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 ObjResult(interp
46f0: 2c 20 6f 62 6a 76 5b 32 5d 29 3b 0a 2b 09 7d 0a , objv[2]);.+.}.
4700: 2b 09 72 65 74 75 72 6e 20 72 63 3b 0a 2b 20 20 +.return rc;.+
4710: 20 20 7d 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 }.+ return
4720: 54 43 4c 5f 4f 4b 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f TCL_OK;.+}.+..+/
4730: 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *.+ *-----------
4740: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4750: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4760: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4770: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a -----------.+ *.
4780: 2b 20 2a 20 54 63 6c 5f 47 65 74 4e 61 6d 65 73 + * Tcl_GetNames
4790: 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c paceUnknownHandl
47a0: 65 72 20 2d 2d 0a 2b 20 2a 0a 2b 20 2a 09 52 65 er --.+ *.+ *.Re
47b0: 74 75 72 6e 73 20 74 68 65 20 75 6e 6b 6e 6f 77 turns the unknow
47c0: 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65 n command handle
47d0: 72 20 72 65 67 69 73 74 65 72 65 64 20 66 6f 72 r registered for
47e0: 20 74 68 65 20 67 69 76 65 6e 0a 2b 20 2a 09 6e the given.+ *.n
47f0: 61 6d 65 73 70 61 63 65 2e 0a 2b 20 2a 0a 2b 20 amespace..+ *.+
4800: 2a 20 52 65 73 75 6c 74 73 3a 0a 2b 20 2a 09 52 * Results:.+ *.R
4810: 65 74 75 72 6e 73 20 74 68 65 20 63 75 72 72 65 eturns the curre
4820: 6e 74 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 nt unknown comma
4830: 6e 64 20 68 61 6e 64 6c 65 72 2c 20 6f 72 20 4e nd handler, or N
4840: 55 4c 4c 20 69 66 20 6e 6f 6e 65 0a 2b 20 2a 09 ULL if none.+ *.
4850: 65 78 69 73 74 73 20 66 6f 72 20 74 68 65 20 6e exists for the n
4860: 61 6d 65 73 70 61 63 65 2e 0a 2b 20 2a 0a 2b 20 amespace..+ *.+
4870: 2a 20 53 69 64 65 20 65 66 66 65 63 74 73 3a 0a * Side effects:.
4880: 2b 20 2a 09 4e 6f 6e 65 2e 0a 2b 20 2a 0a 2b 20 + *.None..+ *.+
4890: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *---------------
48a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
48b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
48c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
48d0: 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 54 63 -------.+ */.+Tc
48e0: 6c 5f 4f 62 6a 20 2a 0a 2b 54 63 6c 5f 47 65 74 l_Obj *.+Tcl_Get
48f0: 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e NamespaceUnknown
4900: 48 61 6e 64 6c 65 72 28 69 6e 74 65 72 70 2c 20 Handler(interp,
4910: 6e 73 50 74 72 29 0a 2b 20 20 20 20 54 63 6c 5f nsPtr).+ Tcl_
4920: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 3b 09 Interp *interp;.
4930: 09 2f 2a 20 54 68 65 20 69 6e 74 65 72 70 72 65 ./* The interpre
4940: 74 65 72 20 69 6e 20 77 68 69 63 68 20 74 68 65 ter in which the
4950: 20 6e 61 6d 65 73 70 61 63 65 0a 2b 09 09 09 09 namespace.+....
4960: 20 2a 20 65 78 69 73 74 73 2e 20 2a 2f 0a 2b 20 * exists. */.+
4970: 20 20 20 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 Tcl_Namespace
4980: 20 2a 6e 73 50 74 72 3b 09 2f 2a 20 54 68 65 20 *nsPtr;./* The
4990: 6e 61 6d 65 73 70 61 63 65 2e 20 2a 2f 0a 2b 7b namespace. */.+{
49a0: 0a 2b 20 20 20 20 4e 61 6d 65 73 70 61 63 65 20 .+ Namespace
49b0: 2a 63 75 72 72 4e 73 50 74 72 20 3d 20 28 4e 61 *currNsPtr = (Na
49c0: 6d 65 73 70 61 63 65 20 2a 29 6e 73 50 74 72 3b mespace *)nsPtr;
49d0: 0a 2b 0a 2b 20 20 20 20 69 66 20 28 63 75 72 72 .+.+ if (curr
49e0: 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 NsPtr->unknownHa
49f0: 6e 64 6c 65 72 50 74 72 20 3d 3d 20 4e 55 4c 4c ndlerPtr == NULL
4a00: 20 26 26 0a 2b 09 63 75 72 72 4e 73 50 74 72 20 &&.+.currNsPtr
4a10: 3d 3d 20 28 28 49 6e 74 65 72 70 20 2a 29 69 6e == ((Interp *)in
4a20: 74 65 72 70 29 2d 3e 67 6c 6f 62 61 6c 4e 73 50 terp)->globalNsP
4a30: 74 72 29 20 7b 0a 2b 09 2f 2a 20 44 65 66 61 75 tr) {.+./* Defau
4a40: 6c 74 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 67 lt handler for g
4a50: 6c 6f 62 61 6c 20 6e 61 6d 65 73 70 61 63 65 20 lobal namespace
4a60: 69 73 20 22 3a 3a 75 6e 6b 6e 6f 77 6e 22 2e 20 is "::unknown".
4a70: 46 6f 72 20 61 6c 6c 0a 2b 09 20 2a 20 6f 74 68 For all.+. * oth
4a80: 65 72 20 6e 61 6d 65 73 70 61 63 65 73 2c 20 69 er namespaces, i
4a90: 74 20 69 73 20 4e 55 4c 4c 20 28 77 68 69 63 68 t is NULL (which
4aa0: 20 66 61 6c 6c 73 20 62 61 63 6b 20 6f 6e 20 74 falls back on t
4ab0: 68 65 20 67 6c 6f 62 61 6c 0a 2b 09 20 2a 20 75 he global.+. * u
4ac0: 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 29 2e nknown handler).
4ad0: 0a 2b 09 20 2a 2f 0a 2b 09 63 75 72 72 4e 73 50 .+. */.+.currNsP
4ae0: 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c tr->unknownHandl
4af0: 65 72 50 74 72 20 3d 0a 2b 09 20 20 20 20 54 63 erPtr =.+. Tc
4b00: 6c 5f 4e 65 77 53 74 72 69 6e 67 4f 62 6a 28 22 l_NewStringObj("
4b10: 3a 3a 75 6e 6b 6e 6f 77 6e 22 2c 20 2d 31 29 3b ::unknown", -1);
4b20: 0a 2b 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f .+.Tcl_IncrRefCo
4b30: 75 6e 74 28 63 75 72 72 4e 73 50 74 72 2d 3e 75 unt(currNsPtr->u
4b40: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 nknownHandlerPtr
4b50: 29 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 72 );.+ }.+ r
4b60: 65 74 75 72 6e 20 63 75 72 72 4e 73 50 74 72 2d eturn currNsPtr-
4b70: 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 >unknownHandlerP
4b80: 74 72 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f 2a 0a 2b 20 tr;.+}.+..+/*.+
4b90: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *---------------
4ba0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4bb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4bc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4bd0: 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20 -------.+ *.+ *
4be0: 54 63 6c 5f 53 65 74 4e 61 6d 65 73 70 61 63 65 Tcl_SetNamespace
4bf0: 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 20 2d UnknownHandler -
4c00: 2d 0a 2b 20 2a 0a 2b 20 2a 09 53 65 74 73 20 74 -.+ *.+ *.Sets t
4c10: 68 65 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 he unknown comma
4c20: 6e 64 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 nd handler for t
4c30: 68 65 20 67 69 76 65 6e 20 6e 61 6d 65 73 70 61 he given namespa
4c40: 63 65 20 74 6f 20 74 68 65 0a 2b 20 2a 09 63 6f ce to the.+ *.co
4c50: 6d 6d 61 6e 64 20 70 72 65 66 69 78 20 70 61 73 mmand prefix pas
4c60: 73 65 64 2e 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 sed..+ *.+ * Res
4c70: 75 6c 74 73 3a 0a 2b 20 2a 09 52 65 74 75 72 6e ults:.+ *.Return
4c80: 73 20 54 43 4c 5f 4f 4b 20 69 66 20 73 75 63 63 s TCL_OK if succ
4c90: 65 73 73 66 75 6c 2c 20 61 6e 64 20 54 43 4c 5f essful, and TCL_
4ca0: 45 52 52 4f 52 20 69 66 20 61 6e 79 74 68 69 6e ERROR if anythin
4cb0: 67 20 67 6f 65 73 20 0a 2b 20 2a 09 77 72 6f 6e g goes .+ *.wron
4cc0: 67 2e 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64 65 20 g..+ *.+ * Side
4cd0: 65 66 66 65 63 74 73 3a 0a 2b 20 2a 09 53 65 74 effects:.+ *.Set
4ce0: 73 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 s the namespace
4cf0: 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20 unknown command
4d00: 68 61 6e 64 6c 65 72 2e 20 49 66 20 74 68 65 20 handler. If the
4d10: 70 61 73 73 65 64 20 69 6e 0a 2b 20 2a 09 68 61 passed in.+ *.ha
4d20: 6e 64 6c 65 72 20 69 73 20 4e 55 4c 4c 20 6f 72 ndler is NULL or
4d30: 20 61 6e 20 65 6d 70 74 79 20 6c 69 73 74 2c 20 an empty list,
4d40: 74 68 65 6e 20 74 68 65 20 68 61 6e 64 6c 65 72 then the handler
4d50: 20 69 73 20 72 65 73 65 74 20 74 6f 0a 2b 20 2a is reset to.+ *
4d60: 09 69 74 73 20 64 65 66 61 75 6c 74 2e 20 49 66 .its default. If
4d70: 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 an error occurs
4d80: 2c 20 74 68 65 6e 20 61 6e 20 65 72 72 6f 72 20 , then an error
4d90: 6d 65 73 73 61 67 65 20 69 73 20 6c 65 66 74 0a message is left.
4da0: 2b 20 2a 09 69 6e 20 74 68 65 20 69 6e 74 65 72 + *.in the inter
4db0: 70 72 65 74 65 72 20 72 65 73 75 6c 74 2e 0a 2b preter result..+
4dc0: 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *.+ *----------
4dd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4de0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4df0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4e00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a ------------.+ *
4e10: 2f 0a 2b 69 6e 74 0a 2b 54 63 6c 5f 53 65 74 4e /.+int.+Tcl_SetN
4e20: 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 amespaceUnknownH
4e30: 61 6e 64 6c 65 72 28 69 6e 74 65 72 70 2c 20 6e andler(interp, n
4e40: 73 50 74 72 2c 20 68 61 6e 64 6c 65 72 50 74 72 sPtr, handlerPtr
4e50: 29 0a 2b 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 ).+ Tcl_Inter
4e60: 70 20 2a 69 6e 74 65 72 70 3b 09 09 2f 2a 20 49 p *interp;../* I
4e70: 6e 74 65 72 70 72 65 74 65 72 20 69 6e 20 77 68 nterpreter in wh
4e80: 69 63 68 20 74 68 65 20 6e 61 6d 65 73 70 61 63 ich the namespac
4e90: 65 20 0a 2b 09 09 09 09 20 2a 20 65 78 69 73 74 e .+.... * exist
4ea0: 73 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 4e s. */.+ Tcl_N
4eb0: 61 6d 65 73 70 61 63 65 20 2a 6e 73 50 74 72 3b amespace *nsPtr;
4ec0: 09 2f 2a 20 4e 61 6d 65 73 70 61 63 65 20 77 68 ./* Namespace wh
4ed0: 69 63 68 20 69 73 20 62 65 69 6e 67 20 75 70 64 ich is being upd
4ee0: 61 74 65 64 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 ated. */.+ Tc
4ef0: 6c 5f 4f 62 6a 20 2a 68 61 6e 64 6c 65 72 50 74 l_Obj *handlerPt
4f00: 72 3b 09 2f 2a 20 54 68 65 20 6e 65 77 20 68 61 r;./* The new ha
4f10: 6e 64 6c 65 72 2c 20 6f 72 20 4e 55 4c 4c 20 74 ndler, or NULL t
4f20: 6f 20 72 65 73 65 74 2e 20 2a 2f 0a 2b 7b 0a 2b o reset. */.+{.+
4f30: 20 20 20 20 69 6e 74 20 6c 73 74 6c 65 6e 3b 0a int lstlen;.
4f40: 2b 20 20 20 20 4e 61 6d 65 73 70 61 63 65 20 2a + Namespace *
4f50: 63 75 72 72 4e 73 50 74 72 20 3d 20 28 4e 61 6d currNsPtr = (Nam
4f60: 65 73 70 61 63 65 20 2a 29 6e 73 50 74 72 3b 0a espace *)nsPtr;.
4f70: 2b 0a 2b 20 20 20 20 69 66 20 28 63 75 72 72 4e +.+ if (currN
4f80: 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e sPtr->unknownHan
4f90: 64 6c 65 72 50 74 72 20 21 3d 20 4e 55 4c 4c 29 dlerPtr != NULL)
4fa0: 20 7b 0a 2b 09 2f 2a 20 52 65 6d 6f 76 65 20 6f {.+./* Remove o
4fb0: 6c 64 20 68 61 6e 64 6c 65 72 20 66 69 72 73 74 ld handler first
4fc0: 2e 20 2a 2f 0a 2b 09 54 63 6c 5f 44 65 63 72 52 . */.+.Tcl_DecrR
4fd0: 65 66 43 6f 75 6e 74 28 63 75 72 72 4e 73 50 74 efCount(currNsPt
4fe0: 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 r->unknownHandle
4ff0: 72 50 74 72 29 3b 0a 2b 20 20 20 20 20 20 20 20 rPtr);.+
5000: 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f currNsPtr->unkno
5010: 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 3d 20 4e wnHandlerPtr = N
5020: 55 4c 4c 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 ULL;.+ }.+
5030: 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 49 66 20 4e /*.+ * If N
5040: 55 4c 4c 20 6f 72 20 61 6e 20 65 6d 70 74 79 20 ULL or an empty
5050: 6c 69 73 74 20 69 73 20 70 61 73 73 65 64 2c 20 list is passed,
5060: 74 68 65 6e 20 72 65 73 65 74 20 74 6f 20 74 68 then reset to th
5070: 65 20 64 65 66 61 75 6c 74 0a 2b 20 20 20 20 20 e default.+
5080: 2a 20 68 61 6e 64 6c 65 72 2e 0a 2b 20 20 20 20 * handler..+
5090: 20 2a 2f 0a 2b 20 20 20 20 69 66 20 28 68 61 6e */.+ if (han
50a0: 64 6c 65 72 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 dlerPtr == NULL)
50b0: 20 7b 0a 2b 09 63 75 72 72 4e 73 50 74 72 2d 3e {.+.currNsPtr->
50c0: 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 unknownHandlerPt
50d0: 72 20 3d 20 4e 55 4c 4c 3b 0a 2b 20 20 20 20 7d r = NULL;.+ }
50e0: 20 65 6c 73 65 20 7b 0a 2b 09 69 66 20 28 54 63 else {.+.if (Tc
50f0: 6c 5f 4c 69 73 74 4f 62 6a 4c 65 6e 67 74 68 28 l_ListObjLength(
5100: 69 6e 74 65 72 70 2c 20 68 61 6e 64 6c 65 72 50 interp, handlerP
5110: 74 72 2c 20 26 6c 73 74 6c 65 6e 29 20 21 3d 20 tr, &lstlen) !=
5120: 54 43 4c 5f 4f 4b 29 20 7b 0a 2b 09 20 20 20 20 TCL_OK) {.+.
5130: 2f 2a 20 4e 6f 74 20 61 20 6c 69 73 74 20 2a 2f /* Not a list */
5140: 0a 2b 09 20 20 20 20 72 65 74 75 72 6e 20 54 43 .+. return TC
5150: 4c 5f 45 52 52 4f 52 3b 0a 2b 09 7d 20 65 6c 73 L_ERROR;.+.} els
5160: 65 20 69 66 20 28 6c 73 74 6c 65 6e 20 3d 3d 20 e if (lstlen ==
5170: 30 29 20 7b 0a 2b 09 20 20 20 20 2f 2a 20 45 6d 0) {.+. /* Em
5180: 70 74 79 20 6c 69 73 74 20 2d 20 72 65 73 65 74 pty list - reset
5190: 20 74 6f 20 64 65 66 61 75 6c 74 2e 20 2a 2f 0a to default. */.
51a0: 2b 09 20 20 20 20 63 75 72 72 4e 73 50 74 72 2d +. currNsPtr-
51b0: 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 >unknownHandlerP
51c0: 74 72 20 3d 20 4e 55 4c 4c 3b 0a 2b 09 7d 20 65 tr = NULL;.+.} e
51d0: 6c 73 65 20 7b 0a 2b 09 20 20 20 20 2f 2a 20 0a lse {.+. /* .
51e0: 2b 09 20 20 20 20 20 2a 20 49 6e 63 72 65 6d 65 +. * Increme
51f0: 6e 74 20 72 65 66 20 63 6f 75 6e 74 20 61 6e 64 nt ref count and
5200: 20 73 74 6f 72 65 2e 20 54 68 65 20 72 65 66 65 store. The refe
5210: 72 65 6e 63 65 20 63 6f 75 6e 74 20 69 73 20 0a rence count is .
5220: 2b 09 20 20 20 20 20 2a 20 64 65 63 72 65 6d 65 +. * decreme
5230: 6e 74 65 64 20 65 69 74 68 65 72 20 69 6e 20 74 nted either in t
5240: 68 65 20 63 6f 64 65 20 61 62 6f 76 65 2c 20 6f he code above, o
5250: 72 20 77 68 65 6e 20 74 68 65 20 6e 61 6d 65 73 r when the names
5260: 70 61 63 65 20 0a 2b 09 20 20 20 20 20 2a 20 69 pace .+. * i
5270: 73 20 64 65 6c 65 74 65 64 2e 0a 2b 09 20 20 20 s deleted..+.
5280: 20 20 2a 2f 0a 2b 09 20 20 20 20 54 63 6c 5f 49 */.+. Tcl_I
5290: 6e 63 72 52 65 66 43 6f 75 6e 74 28 68 61 6e 64 ncrRefCount(hand
52a0: 6c 65 72 50 74 72 29 3b 0a 2b 09 20 20 20 20 63 lerPtr);.+. c
52b0: 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 urrNsPtr->unknow
52c0: 6e 48 61 6e 64 6c 65 72 50 74 72 20 3d 20 68 61 nHandlerPtr = ha
52d0: 6e 64 6c 65 72 50 74 72 3b 0a 2b 09 7d 0a 2b 20 ndlerPtr;.+.}.+
52e0: 20 20 20 7d 0a 2b 20 20 20 20 72 65 74 75 72 6e }.+ return
52f0: 20 54 43 4c 5f 4f 4b 3b 0a 2b 7d 0a 2b 0c 0a 2b TCL_OK;.+}.+..+
5300: 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d /*.+ *----------
5310: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5320: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5330: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5340: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a ------------.+ *
5350: 0a 20 20 2a 20 4e 61 6d 65 73 70 61 63 65 54 61 . * NamespaceTa
5360: 69 6c 43 6d 64 20 2d 2d 0a 20 20 2a 0a 20 20 2a ilCmd --. *. *
5370: 09 49 6e 76 6f 6b 65 64 20 74 6f 20 69 6d 70 6c .Invoked to impl
5380: 65 6d 65 6e 74 20 74 68 65 20 22 6e 61 6d 65 73 ement the "names
5390: 70 61 63 65 20 74 61 69 6c 22 20 63 6f 6d 6d 61 pace tail" comma
53a0: 6e 64 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 nd that returns
53b0: 74 68 65 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 the.Index: gener
53c0: 69 63 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 ic/tclStubInit.c
53d0: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .===============
53e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
53f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5400: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5410: 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f ====.RCS file: /
5420: 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f cvsroot/tcl/tcl/
5430: 67 65 6e 65 72 69 63 2f 74 63 6c 53 74 75 62 49 generic/tclStubI
5440: 6e 69 74 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 nit.c,v.retrievi
5450: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 32 ng revision 1.12
5460: 37 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 32 7.diff -u -r1.12
5470: 37 20 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 0a 7 tclStubInit.c.
5480: 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 53 --- generic/tclS
5490: 74 75 62 49 6e 69 74 2e 63 09 32 37 20 44 65 63 tubInit.c.27 Dec
54a0: 20 32 30 30 35 20 32 30 3a 31 34 3a 30 39 20 2d 2005 20:14:09 -
54b0: 30 30 30 30 09 31 2e 31 32 37 0a 2b 2b 2b 20 67 0000.1.127.+++ g
54c0: 65 6e 65 72 69 63 2f 74 63 6c 53 74 75 62 49 6e eneric/tclStubIn
54d0: 69 74 2e 63 09 31 20 46 65 62 20 32 30 30 36 20 it.c.1 Feb 2006
54e0: 31 37 3a 35 37 3a 30 37 20 2d 30 30 30 30 0a 40 17:57:07 -0000.@
54f0: 40 20 2d 31 30 36 33 2c 36 20 2b 31 30 36 33 2c @ -1063,6 +1063,
5500: 38 20 40 40 0a 20 20 20 20 20 54 63 6c 5f 53 65 8 @@. Tcl_Se
5510: 74 43 68 61 6e 6e 65 6c 45 72 72 6f 72 2c 20 2f tChannelError, /
5520: 2a 20 35 36 34 20 2a 2f 0a 20 20 20 20 20 54 63 * 564 */. Tc
5530: 6c 5f 47 65 74 43 68 61 6e 6e 65 6c 45 72 72 6f l_GetChannelErro
5540: 72 2c 20 2f 2a 20 35 36 35 20 2a 2f 0a 20 20 20 r, /* 565 */.
5550: 20 20 54 63 6c 5f 49 6e 69 74 42 69 67 6e 75 6d Tcl_InitBignum
5560: 46 72 6f 6d 44 6f 75 62 6c 65 2c 20 2f 2a 20 35 FromDouble, /* 5
5570: 36 36 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 47 66 */.+ Tcl_G
5580: 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f etNamespaceUnkno
5590: 77 6e 48 61 6e 64 6c 65 72 2c 20 2f 2a 20 35 36 wnHandler, /* 56
55a0: 37 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 53 65 7 */.+ Tcl_Se
55b0: 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 tNamespaceUnknow
55c0: 6e 48 61 6e 64 6c 65 72 2c 20 2f 2a 20 35 36 38 nHandler, /* 568
55d0: 20 2a 2f 0a 20 7d 3b 0a 20 0a 20 2f 2a 20 21 45 */. };. . /* !E
55e0: 4e 44 21 3a 20 44 6f 20 6e 6f 74 20 65 64 69 74 ND!: Do not edit
55f0: 20 61 62 6f 76 65 20 74 68 69 73 20 6c 69 6e 65 above this line
5600: 2e 20 2a 2f 0a 49 6e 64 65 78 3a 20 74 65 73 74 . */.Index: test
5610: 73 2f 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 74 s/namespace.test
5620: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .===============
5630: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5640: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5650: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5660: 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f ====.RCS file: /
5670: 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f cvsroot/tcl/tcl/
5680: 74 65 73 74 73 2f 6e 61 6d 65 73 70 61 63 65 2e tests/namespace.
5690: 74 65 73 74 2c 76 0a 72 65 74 72 69 65 76 69 6e test,v.retrievin
56a0: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 35 32 0a g revision 1.52.
56b0: 64 69 66 66 20 2d 75 20 2d 72 31 2e 35 32 20 6e diff -u -r1.52 n
56c0: 61 6d 65 73 70 61 63 65 2e 74 65 73 74 0a 2d 2d amespace.test.--
56d0: 2d 20 74 65 73 74 73 2f 6e 61 6d 65 73 70 61 63 - tests/namespac
56e0: 65 2e 74 65 73 74 09 31 20 46 65 62 20 32 30 30 e.test.1 Feb 200
56f0: 36 20 31 37 3a 34 38 3a 31 32 20 2d 30 30 30 30 6 17:48:12 -0000
5700: 09 31 2e 35 32 0a 2b 2b 2b 20 74 65 73 74 73 2f .1.52.+++ tests/
5710: 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 74 09 31 namespace.test.1
5720: 20 46 65 62 20 32 30 30 36 20 31 37 3a 35 37 3a Feb 2006 17:57:
5730: 31 30 20 2d 30 30 30 30 0a 40 40 20 2d 32 34 30 10 -0000.@@ -240
5740: 33 2c 36 20 2b 32 34 30 33 2c 39 36 20 40 40 0a 3,6 +2403,96 @@.
5750: 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 64 namespace d
5760: 65 6c 65 74 65 20 3a 3a 74 65 73 74 5f 6e 73 5f elete ::test_ns_
5770: 32 0a 20 7d 0a 20 0a 2b 23 20 54 49 50 20 31 38 2. }. .+# TIP 18
5780: 31 20 2d 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 1 - namespace un
5790: 6b 6e 6f 77 6e 20 74 65 73 74 73 0a 2b 74 65 73 known tests.+tes
57a0: 74 20 6e 61 6d 65 73 70 61 63 65 2d 35 32 2e 31 t namespace-52.1
57b0: 20 7b 75 6e 6b 6e 6f 77 6e 3a 20 64 65 66 61 75 {unknown: defau
57c0: 6c 74 20 68 61 6e 64 6c 65 72 20 3a 3a 75 6e 6b lt handler ::unk
57d0: 6e 6f 77 6e 7d 20 7b 0a 2b 20 20 20 20 73 65 74 nown} {.+ set
57e0: 20 72 65 73 75 6c 74 20 5b 6c 69 73 74 20 5b 6e result [list [n
57f0: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 66 6f amespace eval fo
5800: 6f 62 61 72 20 7b 20 6e 61 6d 65 73 70 61 63 65 obar { namespace
5810: 20 75 6e 6b 6e 6f 77 6e 20 7d 5d 5d 0a 2b 20 20 unknown }]].+
5820: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 lappend result
5830: 20 5b 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c [namespace eval
5840: 20 3a 3a 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 :: { namespace
5850: 75 6e 6b 6e 6f 77 6e 20 7d 5d 0a 2b 20 20 20 20 unknown }].+
5860: 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 namespace delete
5870: 20 66 6f 6f 62 61 72 0a 2b 20 20 20 20 73 65 74 foobar.+ set
5880: 20 72 65 73 75 6c 74 0a 2b 7d 20 7b 7b 7d 20 3a result.+} {{} :
5890: 3a 75 6e 6b 6e 6f 77 6e 7d 0a 2b 74 65 73 74 20 :unknown}.+test
58a0: 6e 61 6d 65 73 70 61 63 65 2d 35 32 2e 32 20 7b namespace-52.2 {
58b0: 75 6e 6b 6e 6f 77 6e 3a 20 64 65 66 61 75 6c 74 unknown: default
58c0: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 67 6c 6f 62 resolution glob
58d0: 61 6c 7d 20 7b 0a 2b 20 20 20 20 70 72 6f 63 20 al} {.+ proc
58e0: 3a 3a 66 6f 6f 20 7b 7d 20 7b 20 72 65 74 75 72 ::foo {} { retur
58f0: 6e 20 22 47 4c 4f 42 41 4c 22 20 7d 0a 2b 20 20 n "GLOBAL" }.+
5900: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c namespace eval
5910: 20 3a 3a 62 61 72 20 7b 20 70 72 6f 63 20 66 6f ::bar { proc fo
5920: 6f 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 22 4e o {} { return "N
5930: 41 4d 45 53 50 41 43 45 22 20 7d 20 7d 0a 2b 20 AMESPACE" } }.+
5940: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 namespace eva
5950: 6c 20 3a 3a 62 61 72 3a 3a 6a 69 6d 20 7b 20 70 l ::bar::jim { p
5960: 72 6f 63 20 74 65 73 74 20 7b 7d 20 7b 20 66 6f roc test {} { fo
5970: 6f 20 7d 20 7d 0a 2b 20 20 20 20 73 65 74 20 72 o } }.+ set r
5980: 65 73 75 6c 74 20 5b 3a 3a 62 61 72 3a 3a 6a 69 esult [::bar::ji
5990: 6d 3a 3a 74 65 73 74 5d 0a 2b 20 20 20 20 6e 61 m::test].+ na
59a0: 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 3a mespace delete :
59b0: 3a 62 61 72 0a 2b 20 20 20 20 72 65 6e 61 6d 65 :bar.+ rename
59c0: 20 3a 3a 66 6f 6f 20 7b 7d 0a 2b 20 20 20 20 73 ::foo {}.+ s
59d0: 65 74 20 72 65 73 75 6c 74 0a 2b 7d 20 7b 47 4c et result.+} {GL
59e0: 4f 42 41 4c 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 OBAL}.+test name
59f0: 73 70 61 63 65 2d 35 32 2e 33 20 7b 75 6e 6b 6e space-52.3 {unkn
5a00: 6f 77 6e 3a 20 64 65 66 61 75 6c 74 20 72 65 73 own: default res
5a10: 6f 6c 75 74 69 6f 6e 20 6c 6f 63 61 6c 7d 20 7b olution local} {
5a20: 0a 2b 20 20 20 20 70 72 6f 63 20 3a 3a 66 6f 6f .+ proc ::foo
5a30: 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 22 47 4c {} { return "GL
5a40: 4f 42 41 4c 22 20 7d 0a 2b 20 20 20 20 6e 61 6d OBAL" }.+ nam
5a50: 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 62 61 espace eval ::ba
5a60: 72 20 7b 0a 2b 09 70 72 6f 63 20 66 6f 6f 20 7b r {.+.proc foo {
5a70: 7d 20 7b 20 72 65 74 75 72 6e 20 22 4e 41 4d 45 } { return "NAME
5a80: 53 50 41 43 45 22 20 7d 0a 2b 09 70 72 6f 63 20 SPACE" }.+.proc
5a90: 74 65 73 74 20 7b 7d 20 7b 20 66 6f 6f 20 7d 0a test {} { foo }.
5aa0: 2b 20 20 20 20 7d 0a 2b 20 20 20 20 73 65 74 20 + }.+ set
5ab0: 72 65 73 75 6c 74 20 5b 3a 3a 62 61 72 3a 3a 74 result [::bar::t
5ac0: 65 73 74 5d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 est].+ namesp
5ad0: 61 63 65 20 64 65 6c 65 74 65 20 3a 3a 62 61 72 ace delete ::bar
5ae0: 0a 2b 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a 66 .+ rename ::f
5af0: 6f 6f 20 7b 7d 0a 2b 20 20 20 20 73 65 74 20 72 oo {}.+ set r
5b00: 65 73 75 6c 74 0a 2b 7d 20 7b 4e 41 4d 45 53 50 esult.+} {NAMESP
5b10: 41 43 45 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 ACE}.+test names
5b20: 70 61 63 65 2d 35 32 2e 34 20 7b 75 6e 6b 6e 6f pace-52.4 {unkno
5b30: 77 6e 3a 20 73 65 74 20 68 61 6e 64 6c 65 72 7d wn: set handler}
5b40: 20 7b 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 {.+ namespac
5b50: 65 20 65 76 61 6c 20 66 6f 6f 20 7b 0a 2b 09 6e e eval foo {.+.n
5b60: 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e amespace unknown
5b70: 20 5b 6c 69 73 74 20 64 69 73 70 61 74 63 68 5d [list dispatch]
5b80: 0a 2b 09 70 72 6f 63 20 64 69 73 70 61 74 63 68 .+.proc dispatch
5b90: 20 7b 61 72 67 73 7d 20 7b 20 72 65 74 75 72 6e {args} { return
5ba0: 20 24 61 72 67 73 20 7d 0a 2b 09 70 72 6f 63 20 $args }.+.proc
5bb0: 74 65 73 74 20 7b 7d 20 7b 0a 2b 09 20 20 20 20 test {} {.+.
5bc0: 55 6e 6b 6e 6f 77 6e 43 6d 64 20 61 20 62 20 63 UnknownCmd a b c
5bd0: 0a 2b 09 7d 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 .+.}.+ }.+
5be0: 20 73 65 74 20 72 65 73 75 6c 74 20 5b 66 6f 6f set result [foo
5bf0: 3a 3a 74 65 73 74 5d 0a 2b 20 20 20 20 6e 61 6d ::test].+ nam
5c00: 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 66 6f espace delete fo
5c10: 6f 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75 6c o.+ set resul
5c20: 74 0a 2b 7d 20 7b 55 6e 6b 6e 6f 77 6e 43 6d 64 t.+} {UnknownCmd
5c30: 20 61 20 62 20 63 7d 0a 2b 74 65 73 74 20 6e 61 a b c}.+test na
5c40: 6d 65 73 70 61 63 65 2d 35 32 2e 35 20 7b 75 6e mespace-52.5 {un
5c50: 6b 6e 6f 77 6e 3a 20 73 65 61 72 63 68 20 70 61 known: search pa
5c60: 74 68 20 62 65 66 6f 72 65 20 75 6e 6b 6e 6f 77 th before unknow
5c70: 6e 20 69 73 20 75 6e 61 6c 74 65 72 65 64 7d 20 n is unaltered}
5c80: 7b 0a 2b 20 20 20 20 70 72 6f 63 20 3a 3a 74 65 {.+ proc ::te
5c90: 73 74 32 20 7b 61 72 67 73 7d 20 7b 20 72 65 74 st2 {args} { ret
5ca0: 75 72 6e 20 22 54 45 53 54 32 3a 20 24 61 72 67 urn "TEST2: $arg
5cb0: 73 22 20 7d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 s" }.+ namesp
5cc0: 61 63 65 20 65 76 61 6c 20 66 6f 6f 20 7b 0a 2b ace eval foo {.+
5cd0: 09 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f .namespace unkno
5ce0: 77 6e 20 5b 6c 69 73 74 20 64 69 73 70 61 74 63 wn [list dispatc
5cf0: 68 5d 0a 2b 09 70 72 6f 63 20 64 69 73 70 61 74 h].+.proc dispat
5d00: 63 68 20 7b 61 72 67 73 7d 20 7b 20 72 65 74 75 ch {args} { retu
5d10: 72 6e 20 22 55 4e 4b 4e 4f 57 4e 3a 20 24 61 72 rn "UNKNOWN: $ar
5d20: 67 73 22 20 7d 0a 2b 09 70 72 6f 63 20 74 65 73 gs" }.+.proc tes
5d30: 74 31 20 7b 61 72 67 73 7d 20 7b 20 72 65 74 75 t1 {args} { retu
5d40: 72 6e 20 22 54 45 53 54 31 3a 20 24 61 72 67 73 rn "TEST1: $args
5d50: 22 20 7d 0a 2b 09 70 72 6f 63 20 74 65 73 74 20 " }.+.proc test
5d60: 7b 7d 20 7b 0a 2b 09 20 20 20 20 73 65 74 20 72 {} {.+. set r
5d70: 65 73 75 6c 74 20 5b 6c 69 73 74 20 5b 74 65 73 esult [list [tes
5d80: 74 31 20 61 20 62 20 63 5d 5d 0a 2b 09 20 20 20 t1 a b c]].+.
5d90: 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 lappend result
5da0: 5b 74 65 73 74 32 20 61 20 62 20 63 5d 0a 2b 09 [test2 a b c].+.
5db0: 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 lappend resu
5dc0: 6c 74 20 5b 74 65 73 74 33 20 61 20 62 20 63 5d lt [test3 a b c]
5dd0: 0a 2b 09 20 20 20 20 72 65 74 75 72 6e 20 24 72 .+. return $r
5de0: 65 73 75 6c 74 0a 2b 09 7d 0a 2b 20 20 20 20 7d esult.+.}.+ }
5df0: 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75 6c 74 .+ set result
5e00: 20 5b 66 6f 6f 3a 3a 74 65 73 74 5d 0a 2b 20 20 [foo::test].+
5e10: 20 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 namespace dele
5e20: 74 65 20 66 6f 6f 0a 2b 20 20 20 20 72 65 6e 61 te foo.+ rena
5e30: 6d 65 20 3a 3a 74 65 73 74 32 20 7b 7d 0a 2b 20 me ::test2 {}.+
5e40: 20 20 20 73 65 74 20 72 65 73 75 6c 74 0a 2b 7d set result.+}
5e50: 20 7b 7b 54 45 53 54 31 3a 20 61 20 62 20 63 7d {{TEST1: a b c}
5e60: 20 7b 54 45 53 54 32 3a 20 61 20 62 20 63 7d 20 {TEST2: a b c}
5e70: 7b 55 4e 4b 4e 4f 57 4e 3a 20 74 65 73 74 33 20 {UNKNOWN: test3
5e80: 61 20 62 20 63 7d 7d 0a 2b 74 65 73 74 20 6e 61 a b c}}.+test na
5e90: 6d 65 73 70 61 63 65 2d 35 32 2e 36 20 7b 75 6e mespace-52.6 {un
5ea0: 6b 6e 6f 77 6e 3a 20 64 65 6c 65 74 69 6e 67 20 known: deleting
5eb0: 68 61 6e 64 6c 65 72 20 72 65 73 74 6f 72 65 73 handler restores
5ec0: 20 64 65 66 61 75 6c 74 7d 20 7b 0a 2b 20 20 20 default} {.+
5ed0: 20 72 65 6e 61 6d 65 20 3a 3a 75 6e 6b 6e 6f 77 rename ::unknow
5ee0: 6e 20 3a 3a 5f 75 6e 6b 6e 6f 77 6e 5f 6f 72 69 n ::_unknown_ori
5ef0: 67 0a 2b 20 20 20 20 70 72 6f 63 20 3a 3a 75 6e g.+ proc ::un
5f00: 6b 6e 6f 77 6e 20 7b 61 72 67 73 7d 20 7b 20 72 known {args} { r
5f10: 65 74 75 72 6e 20 22 44 45 46 41 55 4c 54 3a 20 eturn "DEFAULT:
5f20: 24 61 72 67 73 22 20 7d 0a 2b 20 20 20 20 6e 61 $args" }.+ na
5f30: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 66 6f 6f mespace eval foo
5f40: 20 7b 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 75 {.+.namespace u
5f50: 6e 6b 6e 6f 77 6e 20 64 75 6d 6d 79 0a 2b 09 6e nknown dummy.+.n
5f60: 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e amespace unknown
5f70: 20 7b 7d 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 {}.+ }.+
5f80: 73 65 74 20 72 65 73 75 6c 74 20 5b 6e 61 6d 65 set result [name
5f90: 73 70 61 63 65 20 65 76 61 6c 20 66 6f 6f 20 7b space eval foo {
5fa0: 20 64 75 6d 6d 79 20 61 20 62 20 63 20 7d 5d 0a dummy a b c }].
5fb0: 2b 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a 75 6e + rename ::un
5fc0: 6b 6e 6f 77 6e 20 7b 7d 0a 2b 20 20 20 20 72 65 known {}.+ re
5fd0: 6e 61 6d 65 20 3a 3a 5f 75 6e 6b 6e 6f 77 6e 5f name ::_unknown_
5fe0: 6f 72 69 67 20 3a 3a 75 6e 6b 6e 6f 77 6e 0a 2b orig ::unknown.+
5ff0: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 64 65 namespace de
6000: 6c 65 74 65 20 66 6f 6f 0a 2b 20 20 20 20 73 65 lete foo.+ se
6010: 74 20 72 65 73 75 6c 74 0a 2b 7d 20 7b 44 45 46 t result.+} {DEF
6020: 41 55 4c 54 3a 20 64 75 6d 6d 79 20 61 20 62 20 AULT: dummy a b
6030: 63 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 c}.+test namespa
6040: 63 65 2d 35 32 2e 37 20 7b 75 6e 6b 6e 6f 77 6e ce-52.7 {unknown
6050: 3a 20 73 65 74 74 69 6e 67 20 67 6c 6f 62 61 6c : setting global
6060: 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 unknown handler
6070: 7d 20 7b 0a 2b 20 20 20 20 70 72 6f 63 20 3a 3a } {.+ proc ::
6080: 6d 79 75 6e 6b 6e 6f 77 6e 20 7b 61 72 67 73 7d myunknown {args}
6090: 20 7b 20 72 65 74 75 72 6e 20 22 4d 59 55 4e 4b { return "MYUNK
60a0: 4e 4f 57 4e 3a 20 24 61 72 67 73 22 20 7d 0a 2b NOWN: $args" }.+
60b0: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 namespace ev
60c0: 61 6c 20 3a 3a 20 7b 20 6e 61 6d 65 73 70 61 63 al :: { namespac
60d0: 65 20 75 6e 6b 6e 6f 77 6e 20 3a 3a 6d 79 75 6e e unknown ::myun
60e0: 6b 6e 6f 77 6e 20 7d 0a 2b 20 20 20 20 73 65 74 known }.+ set
60f0: 20 72 65 73 75 6c 74 20 5b 6e 61 6d 65 73 70 61 result [namespa
6100: 63 65 20 65 76 61 6c 20 66 6f 6f 20 7b 20 64 75 ce eval foo { du
6110: 6d 6d 79 20 61 20 62 20 63 20 7d 5d 0a 2b 20 20 mmy a b c }].+
6120: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c namespace eval
6130: 20 3a 3a 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 :: { namespace
6140: 75 6e 6b 6e 6f 77 6e 20 7b 7d 20 7d 0a 2b 20 20 unknown {} }.+
6150: 20 20 72 65 6e 61 6d 65 20 3a 3a 6d 79 75 6e 6b rename ::myunk
6160: 6e 6f 77 6e 20 7b 7d 0a 2b 20 20 20 20 6e 61 6d nown {}.+ nam
6170: 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 66 6f espace delete fo
6180: 6f 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75 6c o.+ set resul
6190: 74 0a 2b 7d 20 7b 4d 59 55 4e 4b 4e 4f 57 4e 3a t.+} {MYUNKNOWN:
61a0: 20 64 75 6d 6d 79 20 61 20 62 20 63 7d 0a 2b 74 dummy a b c}.+t
61b0: 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 35 32 est namespace-52
61c0: 2e 38 20 7b 75 6e 6b 6e 6f 77 6e 3a 20 64 65 73 .8 {unknown: des
61d0: 74 72 6f 79 69 6e 67 20 61 6e 64 20 72 65 64 65 troying and rede
61e0: 66 69 6e 69 6e 67 20 67 6c 6f 62 61 6c 20 6e 61 fining global na
61f0: 6d 65 73 70 61 63 65 7d 20 7b 0a 2b 20 20 20 20 mespace} {.+
6200: 73 65 74 20 69 20 5b 69 6e 74 65 72 70 20 63 72 set i [interp cr
6210: 65 61 74 65 5d 0a 2b 20 20 20 20 24 69 20 68 69 eate].+ $i hi
6220: 64 65 20 70 72 6f 63 0a 2b 20 20 20 20 24 69 20 de proc.+ $i
6230: 68 69 64 65 20 6e 61 6d 65 73 70 61 63 65 0a 2b hide namespace.+
6240: 20 20 20 20 24 69 20 68 69 64 65 20 72 65 74 75 $i hide retu
6250: 72 6e 0a 2b 20 20 20 20 24 69 20 69 6e 76 6f 6b rn.+ $i invok
6260: 65 68 69 64 64 65 6e 20 6e 61 6d 65 73 70 61 63 ehidden namespac
6270: 65 20 64 65 6c 65 74 65 20 3a 3a 0a 2b 20 20 20 e delete ::.+
6280: 20 24 69 20 65 78 70 6f 73 65 20 72 65 74 75 72 $i expose retur
6290: 6e 0a 2b 20 20 20 20 24 69 20 69 6e 76 6f 6b 65 n.+ $i invoke
62a0: 68 69 64 64 65 6e 20 70 72 6f 63 20 75 6e 6b 6e hidden proc unkn
62b0: 6f 77 6e 20 61 72 67 73 20 7b 20 72 65 74 75 72 own args { retur
62c0: 6e 20 22 46 49 4e 45 22 20 7d 0a 2b 20 20 20 20 n "FINE" }.+
62d0: 24 69 20 65 76 61 6c 20 7b 20 66 6f 6f 20 62 61 $i eval { foo ba
62e0: 72 20 62 6f 62 20 7d 0a 2b 7d 20 7b 46 49 4e 45 r bob }.+} {FINE
62f0: 7d 0a 2b 20 20 20 20 0a 20 23 20 63 6c 65 61 6e }.+ . # clean
6300: 75 70 0a 20 63 61 74 63 68 20 7b 72 65 6e 61 6d up. catch {renam
6310: 65 20 63 6d 64 31 20 7b 7d 7d 0a 20 63 61 74 63 e cmd1 {}}. catc
6320: 68 20 7b 75 6e 73 65 74 20 6c 7d 0a h {unset l}.