Attachment "tip181-6.patch" to
ticket [958222ffff]
added by
tallniel
2006-01-19 04:46:22.
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 38 20 4a 61 6e 20 32 30 30 36 20 32 31 3a 34 18 Jan 2006 21:4
0110: 32 3a 30 33 20 2d 30 30 30 30 0a 40 40 20 2d 31 2:03 -0000.@@ -1
0120: 33 2c 37 20 2b 31 33 2c 37 20 40 40 0a 20 2e 54 3,7 +13,7 @@. .T
0130: 48 20 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 20 H Tcl_Namespace
0140: 33 20 38 2e 35 20 54 63 6c 20 22 54 63 6c 20 4c 3 8.5 Tcl "Tcl L
0150: 69 62 72 61 72 79 20 50 72 6f 63 65 64 75 72 65 ibrary Procedure
0160: 73 22 0a 20 2e 42 53 0a 20 2e 53 48 20 4e 41 4d s". .BS. .SH NAM
0170: 45 0a 2d 54 63 6c 5f 41 70 70 65 6e 64 45 78 70 E.-Tcl_AppendExp
0180: 6f 72 74 4c 69 73 74 2c 20 54 63 6c 5f 43 72 65 ortList, Tcl_Cre
0190: 61 74 65 4e 61 6d 65 73 70 61 63 65 2c 20 54 63 ateNamespace, Tc
01a0: 6c 5f 44 65 6c 65 74 65 4e 61 6d 65 73 70 61 63 l_DeleteNamespac
01b0: 65 2c 20 54 63 6c 5f 45 78 70 6f 72 74 2c 20 54 e, Tcl_Export, T
01c0: 63 6c 5f 46 69 6e 64 43 6f 6d 6d 61 6e 64 2c 20 cl_FindCommand,
01d0: 54 63 6c 5f 46 69 6e 64 4e 61 6d 65 73 70 61 63 Tcl_FindNamespac
01e0: 65 2c 20 54 63 6c 5f 46 6f 72 67 65 74 49 6d 70 e, Tcl_ForgetImp
01f0: 6f 72 74 2c 20 54 63 6c 5f 47 65 74 43 75 72 72 ort, Tcl_GetCurr
0200: 65 6e 74 4e 61 6d 65 73 70 61 63 65 2c 20 54 63 entNamespace, Tc
0210: 6c 5f 47 65 74 47 6c 6f 62 6c 61 4e 61 6d 65 73 l_GetGloblaNames
0220: 70 61 63 65 2c 20 54 63 6c 5f 49 6d 70 6f 72 74 pace, Tcl_Import
0230: 20 5c 2d 20 6d 61 6e 69 70 75 6c 61 74 65 20 6e \- manipulate n
0240: 61 6d 65 73 70 61 63 65 73 0a 2b 54 63 6c 5f 41 amespaces.+Tcl_A
0250: 70 70 65 6e 64 45 78 70 6f 72 74 4c 69 73 74 2c ppendExportList,
0260: 20 54 63 6c 5f 43 72 65 61 74 65 4e 61 6d 65 73 Tcl_CreateNames
0270: 70 61 63 65 2c 20 54 63 6c 5f 44 65 6c 65 74 65 pace, Tcl_Delete
0280: 4e 61 6d 65 73 70 61 63 65 2c 20 54 63 6c 5f 45 Namespace, Tcl_E
0290: 78 70 6f 72 74 2c 20 54 63 6c 5f 46 69 6e 64 43 xport, Tcl_FindC
02a0: 6f 6d 6d 61 6e 64 2c 20 54 63 6c 5f 46 69 6e 64 ommand, Tcl_Find
02b0: 4e 61 6d 65 73 70 61 63 65 2c 20 54 63 6c 5f 46 Namespace, Tcl_F
02c0: 6f 72 67 65 74 49 6d 70 6f 72 74 2c 20 54 63 6c orgetImport, Tcl
02d0: 5f 47 65 74 43 75 72 72 65 6e 74 4e 61 6d 65 73 _GetCurrentNames
02e0: 70 61 63 65 2c 20 54 63 6c 5f 47 65 74 47 6c 6f pace, Tcl_GetGlo
02f0: 62 6c 61 4e 61 6d 65 73 70 61 63 65 2c 20 54 63 blaNamespace, Tc
0300: 6c 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e l_GetNamespaceUn
0310: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 2c 20 54 63 knownHandler, Tc
0320: 6c 5f 49 6d 70 6f 72 74 2c 20 54 63 6c 5f 53 65 l_Import, Tcl_Se
0330: 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 tNamespaceUnknow
0340: 6e 48 61 6e 64 6c 65 72 20 5c 2d 20 6d 61 6e 69 nHandler \- mani
0350: 70 75 6c 61 74 65 20 6e 61 6d 65 73 70 61 63 65 pulate namespace
0360: 73 0a 20 2e 53 48 20 53 59 4e 4f 50 53 49 53 0a s. .SH SYNOPSIS.
0370: 20 2e 6e 66 0a 20 5c 66 42 23 69 6e 63 6c 75 64 .nf. \fB#includ
0380: 65 20 3c 74 63 6c 2e 68 3e 5c 66 52 0a 40 40 20 e <tcl.h>\fR.@@
0390: 2d 34 36 2c 36 20 2b 34 36 2c 31 32 20 40 40 0a -46,6 +46,12 @@.
03a0: 20 2e 73 70 0a 20 54 63 6c 5f 43 6f 6d 6d 61 6e .sp. Tcl_Comman
03b0: 64 0a 20 5c 66 42 54 63 6c 5f 46 69 6e 64 43 6f d. \fBTcl_FindCo
03c0: 6d 6d 61 6e 64 5c 66 52 28 5c 66 49 69 6e 74 65 mmand\fR(\fIinte
03d0: 72 70 2c 20 6e 61 6d 65 2c 20 63 6f 6e 74 65 78 rp, name, contex
03e0: 74 4e 73 50 74 72 2c 20 66 6c 61 67 73 5c 66 52 tNsPtr, flags\fR
03f0: 29 0a 2b 2e 73 70 0a 2b 54 63 6c 5f 4f 62 6a 20 ).+.sp.+Tcl_Obj
0400: 2a 0a 2b 5c 66 42 54 63 6c 5f 47 65 74 4e 61 6d *.+\fBTcl_GetNam
0410: 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e espaceUnknownHan
0420: 64 6c 65 72 28 5c 66 49 69 6e 74 65 72 70 2c 20 dler(\fIinterp,
0430: 6e 73 50 74 72 5c 66 52 29 0a 2b 2e 73 70 0a 2b nsPtr\fR).+.sp.+
0440: 69 6e 74 0a 2b 5c 66 42 54 63 6c 5f 53 65 74 4e int.+\fBTcl_SetN
0450: 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 amespaceUnknownH
0460: 61 6e 64 6c 65 72 28 5c 66 49 69 6e 74 65 72 70 andler(\fIinterp
0470: 2c 20 6e 73 50 74 72 2c 20 68 61 6e 64 6c 65 72 , nsPtr, handler
0480: 50 74 72 5c 66 52 29 0a 20 2e 53 48 20 41 52 47 Ptr\fR). .SH ARG
0490: 55 4d 45 4e 54 53 0a 20 2e 41 53 20 54 63 6c 5f UMENTS. .AS Tcl_
04a0: 4e 61 6d 65 73 70 61 63 65 44 65 6c 65 74 65 50 NamespaceDeleteP
04b0: 72 6f 63 20 61 6c 6c 6f 77 4f 76 65 72 77 72 69 roc allowOverwri
04c0: 74 65 20 69 6e 2f 6f 75 74 0a 20 2e 41 50 20 54 te in/out. .AP T
04d0: 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 cl_Interp *inter
04e0: 70 20 69 6e 2f 6f 75 74 0a 40 40 20 2d 38 37 2c p in/out.@@ -87,
04f0: 36 20 2b 39 33 2c 39 20 40 40 0a 20 69 6e 64 69 6 +93,9 @@. indi
0500: 63 61 74 65 73 20 74 68 61 74 20 74 68 65 20 73 cates that the s
0510: 65 61 72 63 68 20 69 73 20 61 6c 77 61 79 73 20 earch is always
0520: 74 6f 20 62 65 20 63 6f 6e 64 75 63 74 65 64 20 to be conducted
0530: 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65 0a relative to the.
0540: 20 63 6f 6e 74 65 78 74 20 6e 61 6d 65 73 70 61 context namespa
0550: 63 65 29 2c 20 61 6e 64 20 5c 66 42 54 43 4c 5f ce), and \fBTCL_
0560: 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 5c 66 52 LEAVE_ERR_MSG\fR
0570: 20 28 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 (indicates that
0580: 20 61 6e 20 65 72 72 6f 72 0a 20 6d 65 73 73 61 an error. messa
0590: 67 65 20 73 68 6f 75 6c 64 20 62 65 20 6c 65 66 ge should be lef
05a0: 74 20 69 6e 20 74 68 65 20 69 6e 74 65 72 70 72 t in the interpr
05b0: 65 74 65 72 20 69 66 20 74 68 65 20 73 65 61 72 eter if the sear
05c0: 63 68 20 66 61 69 6c 73 2e 29 0a 2b 2e 41 50 20 ch fails.).+.AP
05d0: 54 63 6c 5f 4f 62 6a 20 2a 68 61 6e 64 6c 65 72 Tcl_Obj *handler
05e0: 50 74 72 20 69 6e 0a 2b 41 20 73 63 72 69 70 74 Ptr in.+A script
05f0: 20 66 72 61 67 6d 65 6e 74 20 74 6f 20 62 65 20 fragment to be
0600: 69 6e 73 74 61 6c 6c 65 64 20 61 73 20 74 68 65 installed as the
0610: 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 unknown command
0620: 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 65 handler for the
0630: 0a 2b 6e 61 6d 65 73 70 61 63 65 2c 20 6f 72 20 .+namespace, or
0640: 4e 55 4c 4c 20 74 6f 20 72 65 73 65 74 20 74 68 NULL to reset th
0650: 65 20 68 61 6e 64 6c 65 72 20 74 6f 20 69 74 73 e handler to its
0660: 20 64 65 66 61 75 6c 74 2e 0a 20 2e 42 45 0a 20 default.. .BE.
0670: 0a 20 2e 53 48 20 44 45 53 43 52 49 50 54 49 4f . .SH DESCRIPTIO
0680: 4e 0a 40 40 20 2d 31 34 33 2c 36 20 2b 31 35 32 N.@@ -143,6 +152
0690: 2c 31 33 20 40 40 0a 20 5c 66 42 54 63 6c 5f 46 ,13 @@. \fBTcl_F
06a0: 69 6e 64 43 6f 6d 6d 61 6e 64 5c 66 52 20 73 65 indCommand\fR se
06b0: 61 72 63 68 65 73 20 66 6f 72 20 61 20 63 6f 6d arches for a com
06c0: 6d 61 6e 64 20 6e 61 6d 65 64 20 5c 66 49 6e 61 mand named \fIna
06d0: 6d 65 5c 66 52 20 77 69 74 68 69 6e 0a 20 74 68 me\fR within. th
06e0: 65 20 63 6f 6e 74 65 78 74 20 6f 66 20 74 68 65 e context of the
06f0: 20 6e 61 6d 65 73 70 61 63 65 20 5c 66 49 63 6f namespace \fIco
0700: 6e 74 65 78 74 4e 73 50 74 72 5c 66 52 2e 20 20 ntextNsPtr\fR.
0710: 49 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 0a 20 If the command.
0720: 63 61 6e 6e 6f 74 20 62 65 20 66 6f 75 6e 64 2c cannot be found,
0730: 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 NULL is returne
0740: 64 2e 0a 2b 2e 50 50 0a 2b 5c 66 42 54 63 6c 5f d..+.PP.+\fBTcl_
0750: 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e GetNamespaceUnkn
0760: 6f 77 6e 48 61 6e 64 6c 65 72 5c 66 52 20 72 65 ownHandler\fR re
0770: 74 75 72 6e 73 20 74 68 65 20 75 6e 6b 6e 6f 77 turns the unknow
0780: 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65 n command handle
0790: 72 0a 2b 66 6f 72 20 74 68 65 20 6e 61 6d 65 73 r.+for the names
07a0: 70 61 63 65 2c 20 6f 72 20 4e 55 4c 4c 20 69 66 pace, or NULL if
07b0: 20 6e 6f 6e 65 20 69 73 20 73 65 74 2e 0a 2b 2e none is set..+.
07c0: 50 50 0a 2b 5c 66 42 54 63 6c 5f 53 65 74 4e 61 PP.+\fBTcl_SetNa
07d0: 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 mespaceUnknownHa
07e0: 6e 64 6c 65 72 5c 66 52 20 73 65 74 73 20 74 68 ndler\fR sets th
07f0: 65 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e e unknown comman
0800: 64 20 68 61 6e 64 6c 65 72 20 66 6f 72 0a 2b 74 d handler for.+t
0810: 68 65 20 6e 61 6d 65 73 70 61 63 65 2e 20 49 66 he namespace. If
0820: 20 5c 66 49 68 61 6e 64 6c 65 72 50 74 72 5c 66 \fIhandlerPtr\f
0830: 52 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 R is NULL, then
0840: 74 68 65 20 68 61 6e 64 6c 65 72 20 69 73 20 72 the handler is r
0850: 65 73 65 74 20 74 6f 0a 2b 69 74 73 20 64 65 66 eset to.+its def
0860: 61 75 6c 74 2e 0a 20 0a 20 2e 53 48 20 22 53 45 ault.. . .SH "SE
0870: 45 20 41 4c 53 4f 22 0a 20 54 63 6c 5f 43 72 65 E ALSO". Tcl_Cre
0880: 61 74 65 43 6f 6d 6d 61 6e 64 2c 20 54 63 6c 5f ateCommand, Tcl_
0890: 4c 69 73 74 4f 62 6a 41 70 70 65 6e 64 45 6c 65 ListObjAppendEle
08a0: 6d 65 6e 74 73 2c 20 54 63 6c 5f 53 65 74 56 61 ments, Tcl_SetVa
08b0: 72 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 6e 61 6d r.Index: doc/nam
08c0: 65 73 70 61 63 65 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d espace.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 3d 0a 52 43 53 ============.RCS
0910: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f file: /cvsroot/
0920: 74 63 6c 2f 74 63 6c 2f 64 6f 63 2f 6e 61 6d 65 tcl/tcl/doc/name
0930: 73 70 61 63 65 2e 6e 2c 76 0a 72 65 74 72 69 65 space.n,v.retrie
0940: 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e ving revision 1.
0950: 31 38 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 18.diff -u -r1.1
0960: 38 20 6e 61 6d 65 73 70 61 63 65 2e 6e 0a 2d 2d 8 namespace.n.--
0970: 2d 20 64 6f 63 2f 6e 61 6d 65 73 70 61 63 65 2e - doc/namespace.
0980: 6e 09 33 30 20 4d 61 79 20 32 30 30 35 20 30 30 n.30 May 2005 00
0990: 3a 30 34 3a 34 35 20 2d 30 30 30 30 09 31 2e 31 :04:45 -0000.1.1
09a0: 38 0a 2b 2b 2b 20 64 6f 63 2f 6e 61 6d 65 73 70 8.+++ doc/namesp
09b0: 61 63 65 2e 6e 09 31 38 20 4a 61 6e 20 32 30 30 ace.n.18 Jan 200
09c0: 36 20 32 31 3a 34 32 3a 30 35 20 2d 30 30 30 30 6 21:42:05 -0000
09d0: 0a 40 40 20 2d 32 34 39 2c 36 20 2b 32 34 39 2c .@@ -249,6 +249,
09e0: 31 37 20 40 40 0a 20 49 74 20 64 6f 65 73 20 6e 17 @@. It does n
09f0: 6f 74 20 63 68 65 63 6b 20 77 68 65 74 68 65 72 ot check whether
0a00: 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 6e the namespace n
0a10: 61 6d 65 73 20 61 72 65 2c 20 69 6e 20 66 61 63 ames are, in fac
0a20: 74 2c 0a 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 t,. the names of
0a30: 20 63 75 72 72 65 6e 74 6c 79 20 64 65 66 69 6e currently defin
0a40: 65 64 20 6e 61 6d 65 73 70 61 63 65 73 2e 0a 20 ed namespaces..
0a50: 2e 54 50 0a 2b 5c 66 42 6e 61 6d 65 73 70 61 63 .TP.+\fBnamespac
0a60: 65 20 75 6e 6b 6e 6f 77 6e 5c 66 52 20 3f 5c 66 e unknown\fR ?\f
0a70: 49 73 63 72 69 70 74 5c 66 52 3f 0a 2b 53 65 74 Iscript\fR?.+Set
0a80: 73 20 6f 72 20 72 65 74 75 72 6e 73 20 74 68 65 s or returns the
0a90: 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 unknown command
0aa0: 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 65 handler for the
0ab0: 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 current namespa
0ac0: 63 65 2e 0a 2b 54 68 65 20 68 61 6e 64 6c 65 72 ce..+The handler
0ad0: 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e is invoked when
0ae0: 20 61 20 63 6f 6d 6d 61 6e 64 20 63 61 6c 6c 65 a command calle
0af0: 64 20 66 72 6f 6d 20 77 69 74 68 69 6e 20 74 68 d from within th
0b00: 65 20 6e 61 6d 65 73 70 61 63 65 0a 2b 63 61 6e e namespace.+can
0b10: 6e 6f 74 20 62 65 20 66 6f 75 6e 64 20 28 69 6e not be found (in
0b20: 20 65 69 74 68 65 72 20 74 68 65 20 63 75 72 72 either the curr
0b30: 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 20 6f 72 ent namespace or
0b40: 20 74 68 65 20 67 6c 6f 62 61 6c 20 6e 61 6d 65 the global name
0b50: 73 70 61 63 65 29 2e 20 0a 2b 54 68 65 20 5c 66 space). .+The \f
0b60: 49 73 63 72 69 70 74 5c 66 52 20 61 72 67 75 6d Iscript\fR argum
0b70: 65 6e 74 2c 20 69 66 20 67 69 76 65 6e 2c 20 73 ent, if given, s
0b80: 68 6f 75 6c 64 20 62 65 20 61 20 77 65 6c 6c 0a hould be a well.
0b90: 2b 66 6f 72 6d 65 64 20 6c 69 73 74 20 72 65 70 +formed list rep
0ba0: 72 65 73 65 6e 74 69 6e 67 20 61 20 63 6f 6d 6d resenting a comm
0bb0: 61 6e 64 20 6e 61 6d 65 20 61 6e 64 20 6f 70 74 and name and opt
0bc0: 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 2e ional arguments.
0bd0: 20 57 68 65 6e 0a 2b 74 68 65 20 68 61 6e 64 6c When.+the handl
0be0: 65 72 20 69 73 20 69 6e 76 6f 6b 65 64 2c 20 74 er is invoked, t
0bf0: 68 65 20 66 75 6c 6c 20 69 6e 76 6f 63 61 74 69 he full invocati
0c00: 6f 6e 20 6c 69 6e 65 20 77 69 6c 6c 20 62 65 20 on line will be
0c10: 61 70 70 65 6e 64 65 64 20 74 6f 20 74 68 65 0a appended to the.
0c20: 2b 73 63 72 69 70 74 20 61 6e 64 20 74 68 65 20 +script and the
0c30: 72 65 73 75 6c 74 20 65 76 61 6c 75 61 74 65 64 result evaluated
0c40: 20 69 6e 20 74 68 65 20 63 6f 6e 74 65 78 74 20 in the context
0c50: 6f 66 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 of the namespace
0c60: 2e 20 54 68 65 20 0a 2b 64 65 66 61 75 6c 74 20 . The .+default
0c70: 68 61 6e 64 6c 65 72 20 66 6f 72 20 61 6c 6c 20 handler for all
0c80: 6e 61 6d 65 73 70 61 63 65 73 20 69 73 20 5c 66 namespaces is \f
0c90: 42 3a 3a 75 6e 6b 6e 6f 77 6e 5c 66 52 2e 20 49 B::unknown\fR. I
0ca0: 66 20 6e 6f 20 61 72 67 75 6d 65 6e 74 0a 2b 69 f no argument.+i
0cb0: 73 20 67 69 76 65 6e 2c 20 69 74 20 72 65 74 75 s given, it retu
0cc0: 72 6e 73 20 74 68 65 20 68 61 6e 64 6c 65 72 20 rns the handler
0cd0: 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 for the current
0ce0: 6e 61 6d 65 73 70 61 63 65 2e 0a 2b 2e 54 50 0a namespace..+.TP.
0cf0: 20 5c 66 42 6e 61 6d 65 73 70 61 63 65 20 77 68 \fBnamespace wh
0d00: 69 63 68 5c 66 52 20 3f 5c 2d 5c 66 42 63 6f 6d ich\fR ?\-\fBcom
0d10: 6d 61 6e 64 5c 66 52 3f 20 3f 5c 2d 5c 66 42 76 mand\fR? ?\-\fBv
0d20: 61 72 69 61 62 6c 65 5c 66 52 3f 20 5c 66 49 6e ariable\fR? \fIn
0d30: 61 6d 65 5c 66 52 0a 20 4c 6f 6f 6b 73 20 75 70 ame\fR. Looks up
0d40: 20 5c 66 49 6e 61 6d 65 5c 66 52 20 61 73 20 65 \fIname\fR as e
0d50: 69 74 68 65 72 20 61 20 63 6f 6d 6d 61 6e 64 20 ither a command
0d60: 6f 72 20 76 61 72 69 61 62 6c 65 0a 20 61 6e 64 or variable. and
0d70: 20 72 65 74 75 72 6e 73 20 69 74 73 20 66 75 6c returns its ful
0d80: 6c 79 2d 71 75 61 6c 69 66 69 65 64 20 6e 61 6d ly-qualified nam
0d90: 65 2e 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 75 6e e..Index: doc/un
0da0: 6b 6e 6f 77 6e 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d known.n.========
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 3d 3d 3d 3d 3d 3d ================
0dd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0de0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 ===========.RCS
0df0: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 file: /cvsroot/t
0e00: 63 6c 2f 74 63 6c 2f 64 6f 63 2f 75 6e 6b 6e 6f cl/tcl/doc/unkno
0e10: 77 6e 2e 6e 2c 76 0a 72 65 74 72 69 65 76 69 6e wn.n,v.retrievin
0e20: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 35 0a 64 g revision 1.5.d
0e30: 69 66 66 20 2d 75 20 2d 72 31 2e 35 20 75 6e 6b iff -u -r1.5 unk
0e40: 6e 6f 77 6e 2e 6e 0a 2d 2d 2d 20 64 6f 63 2f 75 nown.n.--- doc/u
0e50: 6e 6b 6e 6f 77 6e 2e 6e 09 33 30 20 4d 61 79 20 nknown.n.30 May
0e60: 32 30 30 34 20 31 34 3a 31 33 3a 35 32 20 2d 30 2004 14:13:52 -0
0e70: 30 30 30 09 31 2e 35 0a 2b 2b 2b 20 64 6f 63 2f 000.1.5.+++ doc/
0e80: 75 6e 6b 6e 6f 77 6e 2e 6e 09 31 38 20 4a 61 6e unknown.n.18 Jan
0e90: 20 32 30 30 36 20 32 31 3a 34 32 3a 30 35 20 2d 2006 21:42:05 -
0ea0: 30 30 30 30 0a 40 40 20 2d 32 33 2c 31 35 20 2b 0000.@@ -23,15 +
0eb0: 32 33 2c 31 38 20 40 40 0a 20 74 72 69 65 73 20 23,18 @@. tries
0ec0: 74 6f 20 69 6e 76 6f 6b 65 20 61 20 63 6f 6d 6d to invoke a comm
0ed0: 61 6e 64 20 74 68 61 74 20 64 6f 65 73 6e 27 74 and that doesn't
0ee0: 20 65 78 69 73 74 2e 20 20 54 68 65 20 64 65 66 exist. The def
0ef0: 61 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 ault implementat
0f00: 69 6f 6e 0a 20 6f 66 20 5c 66 42 75 6e 6b 6e 6f ion. of \fBunkno
0f10: 77 6e 5c 66 52 20 69 73 20 61 20 6c 69 62 72 61 wn\fR is a libra
0f20: 72 79 20 70 72 6f 63 65 64 75 72 65 20 64 65 66 ry procedure def
0f30: 69 6e 65 64 20 77 68 65 6e 20 54 63 6c 20 69 6e ined when Tcl in
0f40: 69 74 69 61 6c 69 7a 65 73 20 61 6e 0a 20 69 6e itializes an. in
0f50: 74 65 72 70 72 65 74 65 72 2e 20 20 59 6f 75 20 terpreter. You
0f60: 63 61 6e 20 6f 76 65 72 72 69 64 65 20 74 68 65 can override the
0f70: 20 64 65 66 61 75 6c 74 20 5c 66 42 75 6e 6b 6e default \fBunkn
0f80: 6f 77 6e 5c 66 52 20 74 6f 20 63 68 61 6e 67 65 own\fR to change
0f90: 20 69 74 73 0a 2d 66 75 6e 63 74 69 6f 6e 61 6c its.-functional
0fa0: 69 74 79 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 ity. Note that
0fb0: 74 68 65 72 65 20 69 73 20 6e 6f 20 64 65 66 61 there is no defa
0fc0: 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 ult implementati
0fd0: 6f 6e 20 6f 66 0a 2d 5c 66 42 75 6e 6b 6e 6f 77 on of.-\fBunknow
0fe0: 6e 5c 66 52 20 69 6e 20 61 20 73 61 66 65 20 69 n\fR in a safe i
0ff0: 6e 74 65 72 70 72 65 74 65 72 2e 0a 2b 66 75 6e nterpreter..+fun
1000: 63 74 69 6f 6e 61 6c 69 74 79 2c 20 6f 72 20 79 ctionality, or y
1010: 6f 75 20 63 61 6e 20 72 65 67 69 73 74 65 72 20 ou can register
1020: 61 20 6e 65 77 20 68 61 6e 64 6c 65 72 20 66 6f a new handler fo
1030: 72 20 69 6e 64 69 76 69 64 75 61 6c 20 6e 61 6d r individual nam
1040: 65 73 70 61 63 65 73 0a 2b 75 73 69 6e 67 20 74 espaces.+using t
1050: 68 65 20 5c 66 42 6e 61 6d 65 73 70 61 63 65 20 he \fBnamespace
1060: 75 6e 6b 6e 6f 77 6e 5c 66 52 20 63 6f 6d 6d 61 unknown\fR comma
1070: 6e 64 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 74 nd. Note that t
1080: 68 65 72 65 20 69 73 20 6e 6f 20 64 65 66 61 75 here is no defau
1090: 6c 74 20 0a 2b 69 6d 70 6c 65 6d 65 6e 74 61 74 lt .+implementat
10a0: 69 6f 6e 20 6f 66 20 5c 66 42 75 6e 6b 6e 6f 77 ion of \fBunknow
10b0: 6e 5c 66 52 20 69 6e 20 61 20 73 61 66 65 20 69 n\fR in a safe i
10c0: 6e 74 65 72 70 72 65 74 65 72 2e 0a 20 2e 50 50 nterpreter.. .PP
10d0: 0a 20 49 66 20 74 68 65 20 54 63 6c 20 69 6e 74 . If the Tcl int
10e0: 65 72 70 72 65 74 65 72 20 65 6e 63 6f 75 6e 74 erpreter encount
10f0: 65 72 73 20 61 20 63 6f 6d 6d 61 6e 64 20 6e 61 ers a command na
1100: 6d 65 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 me for which the
1110: 72 65 0a 2d 69 73 20 6e 6f 74 20 61 20 64 65 66 re.-is not a def
1120: 69 6e 65 64 20 63 6f 6d 6d 61 6e 64 2c 20 74 68 ined command, th
1130: 65 6e 20 54 63 6c 20 63 68 65 63 6b 73 20 66 6f en Tcl checks fo
1140: 72 20 74 68 65 20 65 78 69 73 74 65 6e 63 65 20 r the existence
1150: 6f 66 0a 2d 61 20 63 6f 6d 6d 61 6e 64 20 6e 61 of.-a command na
1160: 6d 65 64 20 5c 66 42 75 6e 6b 6e 6f 77 6e 5c 66 med \fBunknown\f
1170: 52 2e 0a 2d 49 66 20 74 68 65 72 65 20 69 73 20 R..-If there is
1180: 6e 6f 20 73 75 63 68 20 63 6f 6d 6d 61 6e 64 2c no such command,
1190: 20 74 68 65 6e 20 74 68 65 20 69 6e 74 65 72 70 then the interp
11a0: 72 65 74 65 72 20 72 65 74 75 72 6e 73 20 61 6e reter returns an
11b0: 0a 2d 65 72 72 6f 72 2e 0a 2d 49 66 20 74 68 65 .-error..-If the
11c0: 20 5c 66 42 75 6e 6b 6e 6f 77 6e 5c 66 52 20 63 \fBunknown\fR c
11d0: 6f 6d 6d 61 6e 64 20 65 78 69 73 74 73 2c 20 74 ommand exists, t
11e0: 68 65 6e 20 69 74 20 69 73 20 69 6e 76 6f 6b 65 hen it is invoke
11f0: 64 20 77 69 74 68 0a 2b 69 73 20 6e 6f 74 20 61 d with.+is not a
1200: 20 64 65 66 69 6e 65 64 20 63 6f 6d 6d 61 6e 64 defined command
1210: 20 28 69 6e 20 65 69 74 68 65 72 20 74 68 65 20 (in either the
1220: 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 current namespac
1230: 65 2c 20 6f 72 20 74 68 65 20 0a 2b 67 6c 6f 62 e, or the .+glob
1240: 61 6c 20 6e 61 6d 65 73 70 61 63 65 29 2c 20 74 al namespace), t
1250: 68 65 6e 20 54 63 6c 20 63 68 65 63 6b 73 20 66 hen Tcl checks f
1260: 6f 72 20 74 68 65 20 65 78 69 73 74 65 6e 63 65 or the existence
1270: 20 6f 66 0a 2b 61 6e 20 75 6e 6b 6e 6f 77 6e 20 of.+an unknown
1280: 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 65 20 handler for the
1290: 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 current namespac
12a0: 65 2e 20 42 79 20 64 65 66 61 75 6c 74 2c 20 74 e. By default, t
12b0: 68 69 73 0a 2b 68 61 6e 64 6c 65 72 20 69 73 20 his.+handler is
12c0: 61 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 64 20 a command named
12d0: 5c 66 42 3a 3a 75 6e 6b 6e 6f 77 6e 5c 66 52 2e \fB::unknown\fR.
12e0: 20 20 49 66 20 74 68 65 72 65 20 69 73 20 6e 6f If there is no
12f0: 20 73 75 63 68 20 0a 2b 63 6f 6d 6d 61 6e 64 2c such .+command,
1300: 20 74 68 65 6e 20 74 68 65 20 69 6e 74 65 72 70 then the interp
1310: 72 65 74 65 72 20 72 65 74 75 72 6e 73 20 61 6e reter returns an
1320: 20 65 72 72 6f 72 2e 0a 2b 49 66 20 74 68 65 20 error..+If the
1330: 5c 66 42 75 6e 6b 6e 6f 77 6e 5c 66 52 20 63 6f \fBunknown\fR co
1340: 6d 6d 61 6e 64 20 65 78 69 73 74 73 20 28 6f 72 mmand exists (or
1350: 20 61 20 6e 65 77 20 68 61 6e 64 6c 65 72 20 68 a new handler h
1360: 61 73 20 62 65 65 6e 0a 2b 72 65 67 69 73 74 65 as been.+registe
1370: 72 65 64 20 66 6f 72 20 74 68 65 20 63 75 72 72 red for the curr
1380: 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 29 2c 20 ent namespace),
1390: 74 68 65 6e 20 69 74 20 69 73 20 69 6e 76 6f 6b then it is invok
13a0: 65 64 20 77 69 74 68 0a 20 61 72 67 75 6d 65 6e ed with. argumen
13b0: 74 73 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 ts consisting of
13c0: 20 74 68 65 20 66 75 6c 6c 79 2d 73 75 62 73 74 the fully-subst
13d0: 69 74 75 74 65 64 20 6e 61 6d 65 20 61 6e 64 20 ituted name and
13e0: 61 72 67 75 6d 65 6e 74 73 0a 20 66 6f 72 20 74 arguments. for t
13f0: 68 65 20 6f 72 69 67 69 6e 61 6c 20 6e 6f 6e 2d he original non-
1400: 65 78 69 73 74 65 6e 74 20 63 6f 6d 6d 61 6e 64 existent command
1410: 2e 0a 20 54 68 65 20 5c 66 42 75 6e 6b 6e 6f 77 .. The \fBunknow
1420: 6e 5c 66 52 20 63 6f 6d 6d 61 6e 64 20 74 79 70 n\fR command typ
1430: 69 63 61 6c 6c 79 20 64 6f 65 73 20 74 68 69 6e ically does thin
1440: 67 73 20 6c 69 6b 65 20 73 65 61 72 63 68 69 6e gs like searchin
1450: 67 0a 40 40 20 2d 38 37 2c 37 20 2b 39 30 2c 37 g.@@ -87,7 +90,7
1460: 20 40 40 0a 20 2e 43 45 0a 20 0a 20 2e 53 48 20 @@. .CE. . .SH
1470: 22 53 45 45 20 41 4c 53 4f 22 0a 2d 69 6e 66 6f "SEE ALSO".-info
1480: 28 6e 29 2c 20 70 72 6f 63 28 6e 29 2c 20 69 6e (n), proc(n), in
1490: 74 65 72 70 28 6e 29 2c 20 6c 69 62 72 61 72 79 terp(n), library
14a0: 28 6e 29 0a 2b 69 6e 66 6f 28 6e 29 2c 20 70 72 (n).+info(n), pr
14b0: 6f 63 28 6e 29 2c 20 69 6e 74 65 72 70 28 6e 29 oc(n), interp(n)
14c0: 2c 20 6c 69 62 72 61 72 79 28 6e 29 2c 20 6e 61 , library(n), na
14d0: 6d 65 73 70 61 63 65 28 6e 29 0a 20 0a 20 2e 53 mespace(n). . .S
14e0: 48 20 4b 45 59 57 4f 52 44 53 0a 20 65 72 72 6f H KEYWORDS. erro
14f0: 72 2c 20 6e 6f 6e 2d 65 78 69 73 74 65 6e 74 20 r, non-existent
1500: 63 6f 6d 6d 61 6e 64 0a 49 6e 64 65 78 3a 20 67 command.Index: g
1510: 65 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63 6c 73 eneric/tcl.decls
1520: 0a 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 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1550: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1560: 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f ====.RCS file: /
1570: 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f cvsroot/tcl/tcl/
1580: 67 65 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63 6c generic/tcl.decl
1590: 73 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 s,v.retrieving r
15a0: 65 76 69 73 69 6f 6e 20 31 2e 31 31 38 0a 64 69 evision 1.118.di
15b0: 66 66 20 2d 75 20 2d 72 31 2e 31 31 38 20 74 63 ff -u -r1.118 tc
15c0: 6c 2e 64 65 63 6c 73 0a 2d 2d 2d 20 67 65 6e 65 l.decls.--- gene
15d0: 72 69 63 2f 74 63 6c 2e 64 65 63 6c 73 09 32 37 ric/tcl.decls.27
15e0: 20 44 65 63 20 32 30 30 35 20 32 30 3a 31 34 3a Dec 2005 20:14:
15f0: 30 38 20 2d 30 30 30 30 09 31 2e 31 31 38 0a 2b 08 -0000.1.118.+
1600: 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 2e 64 ++ generic/tcl.d
1610: 65 63 6c 73 09 31 38 20 4a 61 6e 20 32 30 30 36 ecls.18 Jan 2006
1620: 20 32 31 3a 34 32 3a 30 38 20 2d 30 30 30 30 0a 21:42:08 -0000.
1630: 40 40 20 2d 32 30 33 37 2c 37 20 2b 32 30 33 37 @@ -2037,7 +2037
1640: 2c 31 37 20 40 40 0a 20 20 20 20 20 69 6e 74 20 ,17 @@. int
1650: 54 63 6c 5f 49 6e 69 74 42 69 67 6e 75 6d 46 72 Tcl_InitBignumFr
1660: 6f 6d 44 6f 75 62 6c 65 28 54 63 6c 5f 49 6e 74 omDouble(Tcl_Int
1670: 65 72 70 2a 20 69 6e 74 65 72 70 2c 20 64 6f 75 erp* interp, dou
1680: 62 6c 65 20 69 6e 69 74 76 61 6c 2c 20 0a 20 09 ble initval, . .
1690: 09 6d 70 5f 69 6e 74 20 2a 74 6f 49 6e 69 74 29 .mp_int *toInit)
16a0: 0a 20 7d 0a 2d 20 20 0a 2b 0a 2b 23 20 54 49 50 . }.- .+.+# TIP
16b0: 20 31 38 31 0a 2b 64 65 63 6c 61 72 65 20 35 36 181.+declare 56
16c0: 37 20 67 65 6e 65 72 69 63 20 7b 0a 2b 20 20 20 7 generic {.+
16d0: 20 54 63 6c 5f 4f 62 6a 20 2a 54 63 6c 5f 47 65 Tcl_Obj *Tcl_Ge
16e0: 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 tNamespaceUnknow
16f0: 6e 48 61 6e 64 6c 65 72 28 54 63 6c 5f 49 6e 74 nHandler(Tcl_Int
1700: 65 72 70 20 2a 69 6e 74 65 72 70 2c 0a 2b 20 20 erp *interp,.+
1710: 20 20 20 20 20 20 54 63 6c 5f 4e 61 6d 65 73 70 Tcl_Namesp
1720: 61 63 65 20 2a 6e 73 50 74 72 29 0a 2b 7d 0a 2b ace *nsPtr).+}.+
1730: 64 65 63 6c 61 72 65 20 35 36 38 20 67 65 6e 65 declare 568 gene
1740: 72 69 63 20 7b 0a 2b 20 20 20 20 69 6e 74 20 54 ric {.+ int T
1750: 63 6c 5f 53 65 74 4e 61 6d 65 73 70 61 63 65 55 cl_SetNamespaceU
1760: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 28 0a 2b nknownHandler(.+
1770: 20 20 20 20 20 20 20 20 54 63 6c 5f 49 6e 74 65 Tcl_Inte
1780: 72 70 20 2a 69 6e 74 65 72 70 2c 20 54 63 6c 5f rp *interp, Tcl_
1790: 4e 61 6d 65 73 70 61 63 65 20 2a 6e 73 50 74 72 Namespace *nsPtr
17a0: 2c 0a 2b 20 20 20 20 20 20 20 20 54 63 6c 5f 4f ,.+ Tcl_O
17b0: 62 6a 20 2a 68 61 6e 64 6c 65 72 50 74 72 29 0a bj *handlerPtr).
17c0: 2b 7d 0a 20 0a 20 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 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1800: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1810: 23 23 23 23 0a 20 0a 40 40 20 2d 32 30 37 38 2c ####. .@@ -2078,
1820: 36 20 2b 32 30 38 38 2c 37 20 40 40 0a 20 09 20 6 +2088,7 @@. .
1830: 20 20 20 63 68 61 72 20 2a 6c 69 62 72 61 72 79 char *library
1840: 50 61 74 68 29 0a 20 7d 0a 20 0a 2b 0a 20 23 23 Path). }. .+. ##
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 23 23 23 23 23 23 23 ################
1880: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
1890: 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 0a 20 ############. .
18a0: 23 20 50 75 62 6c 69 63 20 66 75 6e 63 74 69 6f # Public functio
18b0: 6e 73 20 74 68 61 74 20 61 72 65 20 6e 6f 74 20 ns that are not
18c0: 61 63 63 65 73 73 69 62 6c 65 20 76 69 61 20 74 accessible via t
18d0: 68 65 20 73 74 75 62 73 20 74 61 62 6c 65 3a 0a he stubs table:.
18e0: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 Index: generic/t
18f0: 63 6c 42 61 73 69 63 2e 63 0a 3d 3d 3d 3d 3d 3d clBasic.c.======
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 3d 3d 3d 3d 3d 3d ================
1920: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1930: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 =============.RC
1940: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 S file: /cvsroot
1950: 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 /tcl/tcl/generic
1960: 2f 74 63 6c 42 61 73 69 63 2e 63 2c 76 0a 72 65 /tclBasic.c,v.re
1970: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f trieving revisio
1980: 6e 20 31 2e 31 38 37 0a 64 69 66 66 20 2d 75 20 n 1.187.diff -u
1990: 2d 72 31 2e 31 38 37 20 74 63 6c 42 61 73 69 63 -r1.187 tclBasic
19a0: 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 .c.--- generic/t
19b0: 63 6c 42 61 73 69 63 2e 63 09 31 31 20 4a 61 6e clBasic.c.11 Jan
19c0: 20 32 30 30 36 20 31 37 3a 33 34 3a 35 33 20 2d 2006 17:34:53 -
19d0: 30 30 30 30 09 31 2e 31 38 37 0a 2b 2b 2b 20 67 0000.1.187.+++ g
19e0: 65 6e 65 72 69 63 2f 74 63 6c 42 61 73 69 63 2e eneric/tclBasic.
19f0: 63 09 31 38 20 4a 61 6e 20 32 30 30 36 20 32 31 c.18 Jan 2006 21
1a00: 3a 34 32 3a 31 35 20 2d 30 30 30 30 0a 40 40 20 :42:15 -0000.@@
1a10: 2d 33 32 34 36 2c 36 20 2b 33 32 34 36 2c 31 30 -3246,6 +3246,10
1a20: 20 40 40 0a 20 20 20 20 20 69 6e 74 20 69 3b 0a @@. int i;.
1a30: 20 20 20 20 20 43 61 6c 6c 46 72 61 6d 65 20 2a CallFrame *
1a40: 73 61 76 65 64 56 61 72 46 72 61 6d 65 50 74 72 savedVarFramePtr
1a50: 3b 2f 2a 20 53 61 76 65 73 20 6f 6c 64 20 63 6f ;/* Saves old co
1a60: 70 79 20 6f 66 20 69 50 74 72 2d 3e 76 61 72 46 py of iPtr->varF
1a70: 72 61 6d 65 50 74 72 20 69 6e 20 63 61 73 65 0a ramePtr in case.
1a80: 20 09 09 09 09 20 2a 20 54 43 4c 5f 45 56 41 4c .... * TCL_EVAL
1a90: 5f 47 4c 4f 42 41 4c 20 77 61 73 20 73 65 74 2e _GLOBAL was set.
1aa0: 20 2a 2f 0a 2b 20 20 20 20 4e 61 6d 65 73 70 61 */.+ Namespa
1ab0: 63 65 20 2a 63 75 72 72 4e 73 50 74 72 20 3d 20 ce *currNsPtr =
1ac0: 4e 55 4c 4c 3b 2f 2a 20 55 73 65 64 20 74 6f 20 NULL;/* Used to
1ad0: 63 68 65 63 6b 20 66 6f 72 20 61 6e 64 20 69 6e check for and in
1ae0: 76 6f 6b 65 20 61 6e 79 0a 2b 20 20 20 20 20 20 voke any.+
1af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1b00: 20 20 20 20 20 20 20 20 20 20 20 2a 20 72 65 67 * reg
1b10: 69 73 74 65 72 65 64 20 75 6e 6b 6e 6f 77 6e 20 istered unknown
1b20: 63 6f 6d 6d 61 6e 64 0a 2b 20 20 20 20 20 20 20 command.+
1b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1b40: 20 20 20 20 20 20 20 20 20 20 2a 20 68 61 6e 64 * hand
1b50: 6c 65 72 20 66 6f 72 20 74 68 65 20 63 75 72 72 ler for the curr
1b60: 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 0a 2b 20 ent namespace.+
1b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1b90: 2a 20 28 73 65 65 20 54 49 50 20 31 38 31 29 2e * (see TIP 181).
1ba0: 20 2a 2f 0a 20 20 20 20 20 69 6e 74 20 63 6f 64 */. int cod
1bb0: 65 20 3d 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20 e = TCL_OK;.
1bc0: 20 69 6e 74 20 74 72 61 63 65 43 6f 64 65 20 3d int traceCode =
1bd0: 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20 20 69 6e TCL_OK;. in
1be0: 74 20 63 68 65 63 6b 54 72 61 63 65 73 20 3d 20 t checkTraces =
1bf0: 31 3b 0a 40 40 20 2d 33 32 36 30 2c 39 20 2b 33 1;.@@ -3260,9 +3
1c00: 32 36 34 2c 31 30 20 40 40 0a 20 0a 20 20 20 20 264,10 @@. .
1c10: 20 2f 2a 0a 20 20 20 20 20 20 2a 20 46 69 6e 64 /*. * Find
1c20: 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 74 6f the function to
1c30: 20 65 78 65 63 75 74 65 20 74 68 69 73 20 63 6f execute this co
1c40: 6d 6d 61 6e 64 2e 20 49 66 20 74 68 65 72 65 20 mmand. If there
1c50: 69 73 6e 27 74 20 6f 6e 65 2c 20 74 68 65 6e 20 isn't one, then
1c60: 73 65 65 0a 2d 20 20 20 20 20 2a 20 69 66 20 74 see.- * if t
1c70: 68 65 72 65 20 69 73 20 61 20 63 6f 6d 6d 61 6e here is a comman
1c80: 64 20 22 75 6e 6b 6e 6f 77 6e 22 2e 20 49 66 20 d "unknown". If
1c90: 73 6f 2c 20 63 72 65 61 74 65 20 61 20 6e 65 77 so, create a new
1ca0: 20 77 6f 72 64 20 61 72 72 61 79 20 77 69 74 68 word array with
1cb0: 0a 2d 20 20 20 20 20 2a 20 22 75 6e 6b 6e 6f 77 .- * "unknow
1cc0: 6e 22 20 61 73 20 74 68 65 20 66 69 72 73 74 20 n" as the first
1cd0: 77 6f 72 64 20 61 6e 64 20 74 68 65 20 6f 72 69 word and the ori
1ce0: 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e 64 20 77 6f ginal command wo
1cf0: 72 64 73 20 61 73 0a 2d 20 20 20 20 20 2a 20 61 rds as.- * a
1d00: 72 67 75 6d 65 6e 74 73 2e 20 54 68 65 6e 20 63 rguments. Then c
1d10: 61 6c 6c 20 6f 75 72 73 65 6c 76 65 73 20 72 65 all ourselves re
1d20: 63 75 72 73 69 76 65 6c 79 20 74 6f 20 65 78 65 cursively to exe
1d30: 63 75 74 65 20 69 74 2e 0a 2b 20 20 20 20 20 2a cute it..+ *
1d40: 20 69 66 20 74 68 65 72 65 20 69 73 20 61 6e 20 if there is an
1d50: 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20 unknown command
1d60: 68 61 6e 64 6c 65 72 20 72 65 67 69 73 74 65 72 handler register
1d70: 65 64 20 66 6f 72 20 74 68 69 73 20 6e 61 6d 65 ed for this name
1d80: 73 70 61 63 65 2e 0a 2b 20 20 20 20 20 2a 20 49 space..+ * I
1d90: 66 20 73 6f 2c 20 63 72 65 61 74 65 20 61 20 6e f so, create a n
1da0: 65 77 20 77 6f 72 64 20 61 72 72 61 79 20 77 69 ew word array wi
1db0: 74 68 20 74 68 65 20 68 61 6e 64 6c 65 72 20 61 th the handler a
1dc0: 73 20 74 68 65 20 66 69 72 73 74 20 77 6f 72 64 s the first word
1dd0: 73 20 61 6e 64 0a 2b 20 20 20 20 20 2a 20 74 68 s and.+ * th
1de0: 65 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61 e original comma
1df0: 6e 64 20 77 6f 72 64 73 20 61 73 20 61 72 67 75 nd words as argu
1e00: 6d 65 6e 74 73 2e 20 54 68 65 6e 20 63 61 6c 6c ments. Then call
1e10: 20 6f 75 72 73 65 6c 76 65 73 0a 2b 20 20 20 20 ourselves.+
1e20: 20 2a 20 72 65 63 75 72 73 69 76 65 6c 79 20 74 * recursively t
1e30: 6f 20 65 78 65 63 75 74 65 20 69 74 2e 0a 20 20 o execute it..
1e40: 20 20 20 20 2a 0a 20 20 20 20 20 20 2a 20 49 66 *. * If
1e50: 20 63 61 6c 6c 65 72 20 72 65 71 75 65 73 74 73 caller requests
1e60: 2c 20 6f 72 20 69 66 20 77 65 27 72 65 20 72 65 , or if we're re
1e70: 73 6f 6c 76 69 6e 67 20 74 68 65 20 74 61 72 67 solving the targ
1e80: 65 74 20 65 6e 64 20 6f 66 20 61 6e 0a 20 20 20 et end of an.
1e90: 20 20 20 2a 20 69 6e 74 65 72 70 65 74 65 72 20 * interpeter
1ea0: 61 6c 69 61 73 20 28 54 43 4c 5f 45 56 41 4c 5f alias (TCL_EVAL_
1eb0: 49 4e 56 4f 4b 45 29 2c 20 62 65 20 73 75 72 65 INVOKE), be sure
1ec0: 20 74 6f 20 64 6f 20 63 6f 6d 6d 61 6e 64 20 6e to do command n
1ed0: 61 6d 65 0a 40 40 20 2d 33 32 37 38 2c 32 35 20 ame.@@ -3278,25
1ee0: 2b 33 32 38 33 2c 36 35 20 40 40 0a 20 09 69 50 +3283,65 @@. .iP
1ef0: 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 20 tr->varFramePtr
1f00: 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 7d 0a 20 = NULL;. }.
1f10: 20 20 20 20 63 6d 64 50 74 72 20 3d 20 28 43 6f cmdPtr = (Co
1f20: 6d 6d 61 6e 64 20 2a 29 20 54 63 6c 5f 47 65 74 mmand *) Tcl_Get
1f30: 43 6f 6d 6d 61 6e 64 46 72 6f 6d 4f 62 6a 28 69 CommandFromObj(i
1f40: 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 30 5d 29 3b nterp, objv[0]);
1f50: 0a 2b 20 20 20 20 2f 2a 0a 2b 20 20 20 20 20 2a .+ /*.+ *
1f60: 20 47 72 61 62 20 63 75 72 72 65 6e 74 20 6e 61 Grab current na
1f70: 6d 65 73 70 61 63 65 20 62 65 66 6f 72 65 20 72 mespace before r
1f80: 65 73 74 6f 72 69 6e 67 20 76 61 72 20 66 72 61 estoring var fra
1f90: 6d 65 2c 20 66 6f 72 20 75 6e 6b 6e 6f 77 6e 0a me, for unknown.
1fa0: 2b 20 20 20 20 20 2a 20 68 61 6e 64 6c 65 72 20 + * handler
1fb0: 63 68 65 63 6b 20 62 65 6c 6f 77 2e 0a 2b 20 20 check below..+
1fc0: 20 20 20 2a 2f 0a 2b 20 20 20 20 69 66 20 28 69 */.+ if (i
1fd0: 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 Ptr->varFramePtr
1fe0: 20 21 3d 20 4e 55 4c 4c 20 26 26 20 69 50 74 72 != NULL && iPtr
1ff0: 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 6e ->varFramePtr->n
2000: 73 50 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a sPtr != NULL) {.
2010: 2b 20 20 20 20 20 20 20 20 63 75 72 72 4e 73 50 + currNsP
2020: 74 72 20 3d 20 69 50 74 72 2d 3e 76 61 72 46 72 tr = iPtr->varFr
2030: 61 6d 65 50 74 72 2d 3e 6e 73 50 74 72 3b 0a 2b amePtr->nsPtr;.+
2040: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 2b 20 20 } else {.+
2050: 20 20 20 20 20 20 2f 2a 20 4e 6f 74 65 3a 20 61 /* Note: a
2060: 73 73 75 6d 65 73 20 67 6c 6f 62 61 6c 4e 73 50 ssumes globalNsP
2070: 74 72 20 63 61 6e 20 6e 65 76 65 72 20 62 65 20 tr can never be
2080: 4e 55 4c 4c 2e 20 2a 2f 0a 2b 20 20 20 20 20 20 NULL. */.+
2090: 20 20 63 75 72 72 4e 73 50 74 72 20 3d 20 69 50 currNsPtr = iP
20a0: 74 72 2d 3e 67 6c 6f 62 61 6c 4e 73 50 74 72 3b tr->globalNsPtr;
20b0: 0a 2b 20 20 20 20 20 20 20 20 69 66 20 28 63 75 .+ if (cu
20c0: 72 72 4e 73 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 rrNsPtr == NULL)
20d0: 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 {.+
20e0: 54 63 6c 5f 50 61 6e 69 63 28 22 54 63 6c 45 76 Tcl_Panic("TclEv
20f0: 61 6c 4f 62 6a 76 49 6e 74 65 72 6e 61 6c 3a 20 alObjvInternal:
2100: 4e 55 4c 4c 20 67 6c 6f 62 61 6c 20 6e 61 6d 65 NULL global name
2110: 73 70 61 63 65 20 70 6f 69 6e 74 65 72 22 29 3b space pointer");
2120: 0a 2b 20 20 20 20 20 20 20 20 7d 0a 2b 20 20 20 .+ }.+
2130: 20 7d 0a 20 20 20 20 20 69 50 74 72 2d 3e 76 61 }. iPtr->va
2140: 72 46 72 61 6d 65 50 74 72 20 3d 20 73 61 76 65 rFramePtr = save
2150: 64 56 61 72 46 72 61 6d 65 50 74 72 3b 0a 20 0a dVarFramePtr;. .
2160: 20 20 20 20 20 69 66 20 28 63 6d 64 50 74 72 20 if (cmdPtr
2170: 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2d 09 6e 65 77 == NULL) {.-.new
2180: 4f 62 6a 76 20 3d 20 28 54 63 6c 5f 4f 62 6a 20 Objv = (Tcl_Obj
2190: 2a 2a 29 0a 2d 09 09 63 6b 61 6c 6c 6f 63 28 28 **).-..ckalloc((
21a0: 75 6e 73 69 67 6e 65 64 29 20 28 28 6f 62 6a 63 unsigned) ((objc
21b0: 20 2b 20 31 29 20 2a 20 73 69 7a 65 6f 66 28 54 + 1) * sizeof(T
21c0: 63 6c 5f 4f 62 6a 20 2a 29 29 29 3b 0a 2d 09 66 cl_Obj *)));.-.f
21d0: 6f 72 20 28 69 20 3d 20 6f 62 6a 63 2d 31 3b 20 or (i = objc-1;
21e0: 69 20 3e 3d 20 30 3b 20 69 2d 2d 29 20 7b 0a 2d i >= 0; i--) {.-
21f0: 09 20 20 20 20 6e 65 77 4f 62 6a 76 5b 69 2b 31 . newObjv[i+1
2200: 5d 20 3d 20 6f 62 6a 76 5b 69 5d 3b 0a 2d 09 7d ] = objv[i];.-.}
2210: 0a 2d 09 6e 65 77 4f 62 6a 76 5b 30 5d 20 3d 20 .-.newObjv[0] =
2220: 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67 4f 62 6a Tcl_NewStringObj
2230: 28 22 3a 3a 75 6e 6b 6e 6f 77 6e 22 2c 20 2d 31 ("::unknown", -1
2240: 29 3b 0a 2b 20 20 20 20 20 20 20 20 69 6e 74 20 );.+ int
2250: 6e 65 77 4f 62 6a 63 2c 20 68 61 6e 64 6c 65 72 newObjc, handler
2260: 4f 62 6a 63 3b 0a 2b 20 20 20 20 20 20 20 20 54 Objc;.+ T
2270: 63 6c 5f 4f 62 6a 20 2a 2a 68 61 6e 64 6c 65 72 cl_Obj **handler
2280: 4f 62 6a 76 3b 0a 2b 20 20 20 20 20 20 20 20 2f Objv;.+ /
2290: 2a 0a 2b 20 20 20 20 20 20 20 20 20 2a 20 43 68 *.+ * Ch
22a0: 65 63 6b 20 69 66 20 74 68 65 72 65 20 69 73 20 eck if there is
22b0: 61 6e 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c an unknown handl
22c0: 65 72 20 72 65 67 69 73 74 65 72 65 64 20 66 6f er registered fo
22d0: 72 20 74 68 69 73 20 6e 61 6d 65 73 70 61 63 65 r this namespace
22e0: 2e 0a 2b 20 20 20 20 20 20 20 20 20 2a 20 4f 74 ..+ * Ot
22f0: 68 65 72 77 69 73 65 2c 20 75 73 65 20 74 68 65 herwise, use the
2300: 20 67 6c 6f 62 61 6c 20 6e 61 6d 65 73 70 61 63 global namespac
2310: 65 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 e unknown handle
2320: 72 2e 0a 2b 20 20 20 20 20 20 20 20 20 2a 2f 0a r..+ */.
2330: 2b 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 + if (cur
2340: 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 rNsPtr->unknownH
2350: 61 6e 64 6c 65 72 50 74 72 20 3d 3d 20 4e 55 4c andlerPtr == NUL
2360: 4c 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 L) {.+
2370: 20 20 63 75 72 72 4e 73 50 74 72 20 3d 20 69 50 currNsPtr = iP
2380: 74 72 2d 3e 67 6c 6f 62 61 6c 4e 73 50 74 72 3b tr->globalNsPtr;
2390: 0a 2b 20 20 20 20 20 20 20 20 7d 0a 2b 20 20 20 .+ }.+
23a0: 20 20 20 20 20 69 66 20 28 63 75 72 72 4e 73 50 if (currNsP
23b0: 74 72 20 3d 3d 20 69 50 74 72 2d 3e 67 6c 6f 62 tr == iPtr->glob
23c0: 61 6c 4e 73 50 74 72 20 26 26 0a 2b 20 20 20 20 alNsPtr &&.+
23d0: 20 20 20 20 20 20 20 20 63 75 72 72 4e 73 50 74 currNsPt
23e0: 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 r->unknownHandle
23f0: 72 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a rPtr == NULL) {.
2400: 2b 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 + /*
2410: 47 6c 6f 62 61 6c 20 6e 61 6d 65 73 70 61 63 65 Global namespace
2420: 20 68 61 73 20 6c 6f 73 74 20 75 6e 6b 6e 6f 77 has lost unknow
2430: 6e 20 68 61 6e 64 6c 65 72 2c 20 72 65 73 65 74 n handler, reset
2440: 2e 20 2a 2f 0a 2b 20 20 20 20 20 20 20 20 20 20 . */.+
2450: 20 20 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b currNsPtr->unk
2460: 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 3d nownHandlerPtr =
2470: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .+
2480: 20 20 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67 4f Tcl_NewStringO
2490: 62 6a 28 22 3a 3a 75 6e 6b 6e 6f 77 6e 22 2c 20 bj("::unknown",
24a0: 2d 31 29 3b 0a 2b 20 20 20 20 20 20 20 20 20 20 -1);.+
24b0: 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 Tcl_IncrRefCou
24c0: 6e 74 28 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e nt(currNsPtr->un
24d0: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 29 knownHandlerPtr)
24e0: 3b 0a 2b 20 20 20 20 20 20 20 20 7d 0a 2b 20 20 ;.+ }.+
24f0: 20 20 20 20 20 20 69 66 20 28 54 63 6c 5f 4c 69 if (Tcl_Li
2500: 73 74 4f 62 6a 47 65 74 45 6c 65 6d 65 6e 74 73 stObjGetElements
2510: 28 69 6e 74 65 72 70 2c 0a 2b 20 20 20 20 20 20 (interp,.+
2520: 20 20 20 20 20 20 63 75 72 72 4e 73 50 74 72 2d currNsPtr-
2530: 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 >unknownHandlerP
2540: 74 72 2c 20 26 68 61 6e 64 6c 65 72 4f 62 6a 63 tr, &handlerObjc
2550: 2c 20 26 68 61 6e 64 6c 65 72 4f 62 6a 76 29 0a , &handlerObjv).
2560: 2b 20 20 20 20 20 20 20 20 20 20 20 20 21 3d 20 + !=
2570: 54 43 4c 5f 4f 4b 29 20 7b 0a 2b 20 20 20 20 20 TCL_OK) {.+
2580: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 43 return TC
2590: 4c 5f 45 52 52 4f 52 3b 0a 2b 20 20 20 20 20 20 L_ERROR;.+
25a0: 20 20 7d 0a 2b 20 20 20 20 20 20 20 20 6e 65 77 }.+ new
25b0: 4f 62 6a 63 20 3d 20 6f 62 6a 63 20 2b 20 68 61 Objc = objc + ha
25c0: 6e 64 6c 65 72 4f 62 6a 63 3b 0a 2b 09 6e 65 77 ndlerObjc;.+.new
25d0: 4f 62 6a 76 20 3d 20 28 54 63 6c 5f 4f 62 6a 20 Objv = (Tcl_Obj
25e0: 2a 2a 29 20 63 6b 61 6c 6c 6f 63 28 28 75 6e 73 **) ckalloc((uns
25f0: 69 67 6e 65 64 29 0a 2b 20 20 20 20 20 20 20 20 igned).+
2600: 20 20 20 20 20 20 20 20 28 6e 65 77 4f 62 6a 63 (newObjc
2610: 20 2a 20 73 69 7a 65 6f 66 28 54 63 6c 5f 4f 62 * sizeof(Tcl_Ob
2620: 6a 20 2a 29 29 29 3b 0a 2b 20 20 20 20 20 20 20 j *)));.+
2630: 20 2f 2a 20 43 6f 70 79 20 63 6f 6d 6d 61 6e 64 /* Copy command
2640: 20 70 72 65 66 69 78 20 66 72 6f 6d 20 75 6e 6b prefix from unk
2650: 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 2e 20 2a 2f nown handler. */
2660: 0a 2b 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 .+ for (i
2670: 20 3d 20 30 3b 20 69 20 3c 20 68 61 6e 64 6c 65 = 0; i < handle
2680: 72 4f 62 6a 63 3b 20 2b 2b 69 29 20 7b 0a 2b 20 rObjc; ++i) {.+
2690: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4f 62 newOb
26a0: 6a 76 5b 69 5d 20 3d 20 68 61 6e 64 6c 65 72 4f jv[i] = handlerO
26b0: 62 6a 76 5b 69 5d 3b 0a 2b 20 20 20 20 20 20 20 bjv[i];.+
26c0: 20 7d 0a 2b 20 20 20 20 20 20 20 20 2f 2a 20 41 }.+ /* A
26d0: 64 64 20 69 6e 20 63 6f 6d 6d 61 6e 64 20 6e 61 dd in command na
26e0: 6d 65 20 61 6e 64 20 61 72 67 75 6d 65 6e 74 73 me and arguments
26f0: 2e 20 2a 2f 0a 2b 20 20 20 20 20 20 20 20 66 6f . */.+ fo
2700: 72 20 28 69 20 3d 20 6f 62 6a 63 2d 31 3b 20 69 r (i = objc-1; i
2710: 20 3e 3d 20 30 3b 20 2d 2d 69 29 20 7b 0a 2b 20 >= 0; --i) {.+
2720: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 4f 62 newOb
2730: 6a 76 5b 69 2b 68 61 6e 64 6c 65 72 4f 62 6a 63 jv[i+handlerObjc
2740: 5d 20 3d 20 6f 62 6a 76 5b 69 5d 3b 0a 2b 20 20 ] = objv[i];.+
2750: 20 20 20 20 20 20 7d 0a 20 09 54 63 6c 5f 49 6e }. .Tcl_In
2760: 63 72 52 65 66 43 6f 75 6e 74 28 6e 65 77 4f 62 crRefCount(newOb
2770: 6a 76 5b 30 5d 29 3b 0a 20 09 63 6d 64 50 74 72 jv[0]);. .cmdPtr
2780: 20 3d 20 28 43 6f 6d 6d 61 6e 64 20 2a 29 20 54 = (Command *) T
2790: 63 6c 5f 47 65 74 43 6f 6d 6d 61 6e 64 46 72 6f cl_GetCommandFro
27a0: 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 6e 65 77 mObj(interp, new
27b0: 4f 62 6a 76 5b 30 5d 29 3b 0a 2b 20 20 20 20 20 Objv[0]);.+
27c0: 20 20 20 0a 20 09 69 66 20 28 63 6d 64 50 74 72 . .if (cmdPtr
27d0: 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 20 20 == NULL) {. .
27e0: 20 20 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 Tcl_AppendResu
27f0: 6c 74 28 69 6e 74 65 72 70 2c 20 22 69 6e 76 61 lt(interp, "inva
2800: 6c 69 64 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 lid command name
2810: 20 5c 22 22 2c 0a 20 09 09 20 20 20 20 54 63 6c \"",. .. Tcl
2820: 47 65 74 53 74 72 69 6e 67 28 6f 62 6a 76 5b 30 GetString(objv[0
2830: 5d 29 2c 20 22 5c 22 22 2c 20 4e 55 4c 4c 29 3b ]), "\"", NULL);
2840: 0a 20 09 20 20 20 20 63 6f 64 65 20 3d 20 54 43 . . code = TC
2850: 4c 5f 45 52 52 4f 52 3b 0a 20 09 7d 20 65 6c 73 L_ERROR;. .} els
2860: 65 20 7b 0a 20 09 20 20 20 20 69 50 74 72 2d 3e e {. . iPtr->
2870: 6e 75 6d 4c 65 76 65 6c 73 2b 2b 3b 0a 2d 09 20 numLevels++;.-.
2880: 20 20 20 63 6f 64 65 20 3d 20 54 63 6c 45 76 61 code = TclEva
2890: 6c 4f 62 6a 76 49 6e 74 65 72 6e 61 6c 28 69 6e lObjvInternal(in
28a0: 74 65 72 70 2c 20 6f 62 6a 63 2b 31 2c 20 6e 65 terp, objc+1, ne
28b0: 77 4f 62 6a 76 2c 0a 2d 09 09 20 20 20 20 63 6f wObjv,.-.. co
28c0: 6d 6d 61 6e 64 2c 20 6c 65 6e 67 74 68 2c 20 30 mmand, length, 0
28d0: 29 3b 0a 2b 09 20 20 20 20 63 6f 64 65 20 3d 20 );.+. code =
28e0: 54 63 6c 45 76 61 6c 4f 62 6a 76 49 6e 74 65 72 TclEvalObjvInter
28f0: 6e 61 6c 28 69 6e 74 65 72 70 2c 20 6e 65 77 4f nal(interp, newO
2900: 62 6a 63 2c 20 6e 65 77 4f 62 6a 76 2c 20 63 6f bjc, newObjv, co
2910: 6d 6d 61 6e 64 2c 0a 2b 09 09 09 20 20 20 20 6c mmand,.+... l
2920: 65 6e 67 74 68 2c 20 30 29 3b 0a 20 09 20 20 20 ength, 0);. .
2930: 20 69 50 74 72 2d 3e 6e 75 6d 4c 65 76 65 6c 73 iPtr->numLevels
2940: 2d 2d 3b 0a 20 09 7d 0a 20 09 54 63 6c 5f 44 65 --;. .}. .Tcl_De
2950: 63 72 52 65 66 43 6f 75 6e 74 28 6e 65 77 4f 62 crRefCount(newOb
2960: 6a 76 5b 30 5d 29 3b 0a 49 6e 64 65 78 3a 20 67 jv[0]);.Index: g
2970: 65 6e 65 72 69 63 2f 74 63 6c 44 65 63 6c 73 2e eneric/tclDecls.
2980: 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d h.==============
2990: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
29a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
29b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
29c0: 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 =====.RCS file:
29d0: 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c /cvsroot/tcl/tcl
29e0: 2f 67 65 6e 65 72 69 63 2f 74 63 6c 44 65 63 6c /generic/tclDecl
29f0: 73 2e 68 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 s.h,v.retrieving
2a00: 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 32 30 0a revision 1.120.
2a10: 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 32 30 20 diff -u -r1.120
2a20: 74 63 6c 44 65 63 6c 73 2e 68 0a 2d 2d 2d 20 67 tclDecls.h.--- g
2a30: 65 6e 65 72 69 63 2f 74 63 6c 44 65 63 6c 73 2e eneric/tclDecls.
2a40: 68 09 32 37 20 44 65 63 20 32 30 30 35 20 32 30 h.27 Dec 2005 20
2a50: 3a 31 34 3a 30 38 20 2d 30 30 30 30 09 31 2e 31 :14:08 -0000.1.1
2a60: 32 30 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 20.+++ generic/t
2a70: 63 6c 44 65 63 6c 73 2e 68 09 31 38 20 4a 61 6e clDecls.h.18 Jan
2a80: 20 32 30 30 36 20 32 31 3a 34 32 3a 32 35 20 2d 2006 21:42:25 -
2a90: 30 30 30 30 0a 40 40 20 2d 33 35 33 34 2c 36 20 0000.@@ -3534,6
2aa0: 2b 33 35 33 34 2c 31 39 20 40 40 0a 20 09 09 09 +3534,19 @@. ...
2ab0: 09 54 63 6c 5f 49 6e 74 65 72 70 2a 20 69 6e 74 .Tcl_Interp* int
2ac0: 65 72 70 2c 20 64 6f 75 62 6c 65 20 69 6e 69 74 erp, double init
2ad0: 76 61 6c 2c 20 0a 20 09 09 09 09 6d 70 5f 69 6e val, . ....mp_in
2ae0: 74 20 2a 20 74 6f 49 6e 69 74 29 29 3b 0a 20 23 t * toInit));. #
2af0: 65 6e 64 69 66 0a 2b 23 69 66 6e 64 65 66 20 54 endif.+#ifndef T
2b00: 63 6c 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55 cl_GetNamespaceU
2b10: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 5f 54 43 nknownHandler_TC
2b20: 4c 5f 44 45 43 4c 41 52 45 44 0a 2b 23 64 65 66 L_DECLARED.+#def
2b30: 69 6e 65 20 54 63 6c 5f 47 65 74 4e 61 6d 65 73 ine Tcl_GetNames
2b40: 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c paceUnknownHandl
2b50: 65 72 5f 54 43 4c 5f 44 45 43 4c 41 52 45 44 0a er_TCL_DECLARED.
2b60: 2b 2f 2a 20 35 36 37 20 2a 2f 0a 2b 45 58 54 45 +/* 567 */.+EXTE
2b70: 52 4e 20 54 63 6c 5f 4f 62 6a 20 2a 09 54 63 6c RN Tcl_Obj *.Tcl
2b80: 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b _GetNamespaceUnk
2b90: 6e 6f 77 6e 48 61 6e 64 6c 65 72 20 5f 41 4e 53 nownHandler _ANS
2ba0: 49 5f 41 52 47 53 5f 28 28 0a 2b 09 09 09 09 54 I_ARGS_((.+....T
2bb0: 63 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 65 cl_Interp * inte
2bc0: 72 70 2c 20 54 63 6c 5f 4e 61 6d 65 73 70 61 63 rp, Tcl_Namespac
2bd0: 65 20 2a 20 6e 73 50 74 72 29 29 3b 0a 2b 23 65 e * nsPtr));.+#e
2be0: 6e 64 69 66 0a 2b 23 69 66 6e 64 65 66 20 54 63 ndif.+#ifndef Tc
2bf0: 6c 5f 53 65 74 4e 61 6d 65 73 70 61 63 65 55 6e l_SetNamespaceUn
2c00: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 5f 54 43 4c knownHandler_TCL
2c10: 5f 44 45 43 4c 41 52 45 44 0a 2b 23 64 65 66 69 _DECLARED.+#defi
2c20: 6e 65 20 54 63 6c 5f 53 65 74 4e 61 6d 65 73 70 ne Tcl_SetNamesp
2c30: 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 aceUnknownHandle
2c40: 72 5f 54 43 4c 5f 44 45 43 4c 41 52 45 44 0a 2b r_TCL_DECLARED.+
2c50: 2f 2a 20 35 36 38 20 2a 2f 0a 2b 45 58 54 45 52 /* 568 */.+EXTER
2c60: 4e 20 69 6e 74 09 09 54 63 6c 5f 53 65 74 4e 61 N int..Tcl_SetNa
2c70: 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 mespaceUnknownHa
2c80: 6e 64 6c 65 72 20 5f 41 4e 53 49 5f 41 52 47 53 ndler _ANSI_ARGS
2c90: 5f 28 28 0a 2b 09 09 09 09 54 63 6c 5f 49 6e 74 _((.+....Tcl_Int
2ca0: 65 72 70 20 2a 20 69 6e 74 65 72 70 2c 20 54 63 erp * interp, Tc
2cb0: 6c 5f 4e 61 6d 65 73 70 61 63 65 20 2a 20 6e 73 l_Namespace * ns
2cc0: 50 74 72 2c 20 0a 2b 09 09 09 09 54 63 6c 5f 4f Ptr, .+....Tcl_O
2cd0: 62 6a 20 2a 20 68 61 6e 64 6c 65 72 50 74 72 29 bj * handlerPtr)
2ce0: 29 3b 0a 2b 23 65 6e 64 69 66 0a 20 0a 20 74 79 );.+#endif. . ty
2cf0: 70 65 64 65 66 20 73 74 72 75 63 74 20 54 63 6c pedef struct Tcl
2d00: 53 74 75 62 48 6f 6f 6b 73 20 7b 0a 20 20 20 20 StubHooks {.
2d10: 20 73 74 72 75 63 74 20 54 63 6c 50 6c 61 74 53 struct TclPlatS
2d20: 74 75 62 73 20 2a 74 63 6c 50 6c 61 74 53 74 75 tubs *tclPlatStu
2d30: 62 73 3b 0a 40 40 20 2d 34 31 34 32 2c 36 20 2b bs;.@@ -4142,6 +
2d40: 34 31 35 35 2c 38 20 40 40 0a 20 20 20 20 20 76 4155,8 @@. v
2d50: 6f 69 64 20 28 2a 74 63 6c 5f 53 65 74 43 68 61 oid (*tcl_SetCha
2d60: 6e 6e 65 6c 45 72 72 6f 72 29 20 5f 41 4e 53 49 nnelError) _ANSI
2d70: 5f 41 52 47 53 5f 28 28 54 63 6c 5f 43 68 61 6e _ARGS_((Tcl_Chan
2d80: 6e 65 6c 20 63 68 61 6e 2c 20 54 63 6c 5f 4f 62 nel chan, Tcl_Ob
2d90: 6a 2a 20 6d 73 67 29 29 3b 20 2f 2a 20 35 36 34 j* msg)); /* 564
2da0: 20 2a 2f 0a 20 20 20 20 20 76 6f 69 64 20 28 2a */. void (*
2db0: 74 63 6c 5f 47 65 74 43 68 61 6e 6e 65 6c 45 72 tcl_GetChannelEr
2dc0: 72 6f 72 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f ror) _ANSI_ARGS_
2dd0: 28 28 54 63 6c 5f 43 68 61 6e 6e 65 6c 20 63 68 ((Tcl_Channel ch
2de0: 61 6e 2c 20 54 63 6c 5f 4f 62 6a 2a 2a 20 6d 73 an, Tcl_Obj** ms
2df0: 67 29 29 3b 20 2f 2a 20 35 36 35 20 2a 2f 0a 20 g)); /* 565 */.
2e00: 20 20 20 20 69 6e 74 20 28 2a 74 63 6c 5f 49 6e int (*tcl_In
2e10: 69 74 42 69 67 6e 75 6d 46 72 6f 6d 44 6f 75 62 itBignumFromDoub
2e20: 6c 65 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 le) _ANSI_ARGS_(
2e30: 28 54 63 6c 5f 49 6e 74 65 72 70 2a 20 69 6e 74 (Tcl_Interp* int
2e40: 65 72 70 2c 20 64 6f 75 62 6c 65 20 69 6e 69 74 erp, double init
2e50: 76 61 6c 2c 20 6d 70 5f 69 6e 74 20 2a 20 74 6f val, mp_int * to
2e60: 49 6e 69 74 29 29 3b 20 2f 2a 20 35 36 36 20 2a Init)); /* 566 *
2e70: 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a /.+ Tcl_Obj *
2e80: 20 28 2a 74 63 6c 5f 47 65 74 4e 61 6d 65 73 70 (*tcl_GetNamesp
2e90: 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 aceUnknownHandle
2ea0: 72 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 r) _ANSI_ARGS_((
2eb0: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 Tcl_Interp * int
2ec0: 65 72 70 2c 20 54 63 6c 5f 4e 61 6d 65 73 70 61 erp, Tcl_Namespa
2ed0: 63 65 20 2a 20 6e 73 50 74 72 29 29 3b 20 2f 2a ce * nsPtr)); /*
2ee0: 20 35 36 37 20 2a 2f 0a 2b 20 20 20 20 69 6e 74 567 */.+ int
2ef0: 20 28 2a 74 63 6c 5f 53 65 74 4e 61 6d 65 73 70 (*tcl_SetNamesp
2f00: 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 aceUnknownHandle
2f10: 72 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 r) _ANSI_ARGS_((
2f20: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 Tcl_Interp * int
2f30: 65 72 70 2c 20 54 63 6c 5f 4e 61 6d 65 73 70 61 erp, Tcl_Namespa
2f40: 63 65 20 2a 20 6e 73 50 74 72 2c 20 54 63 6c 5f ce * nsPtr, Tcl_
2f50: 4f 62 6a 20 2a 20 68 61 6e 64 6c 65 72 50 74 72 Obj * handlerPtr
2f60: 29 29 3b 20 2f 2a 20 35 36 38 20 2a 2f 0a 20 7d )); /* 568 */. }
2f70: 20 54 63 6c 53 74 75 62 73 3b 0a 20 0a 20 23 69 TclStubs;. . #i
2f80: 66 64 65 66 20 5f 5f 63 70 6c 75 73 70 6c 75 73 fdef __cplusplus
2f90: 0a 40 40 20 2d 36 34 35 30 2c 36 20 2b 36 34 36 .@@ -6450,6 +646
2fa0: 35 2c 31 34 20 40 40 0a 20 23 64 65 66 69 6e 65 5,14 @@. #define
2fb0: 20 54 63 6c 5f 49 6e 69 74 42 69 67 6e 75 6d 46 Tcl_InitBignumF
2fc0: 72 6f 6d 44 6f 75 62 6c 65 20 5c 0a 20 09 28 74 romDouble \. .(t
2fd0: 63 6c 53 74 75 62 73 50 74 72 2d 3e 74 63 6c 5f clStubsPtr->tcl_
2fe0: 49 6e 69 74 42 69 67 6e 75 6d 46 72 6f 6d 44 6f InitBignumFromDo
2ff0: 75 62 6c 65 29 20 2f 2a 20 35 36 36 20 2a 2f 0a uble) /* 566 */.
3000: 20 23 65 6e 64 69 66 0a 2b 23 69 66 6e 64 65 66 #endif.+#ifndef
3010: 20 54 63 6c 5f 47 65 74 4e 61 6d 65 73 70 61 63 Tcl_GetNamespac
3020: 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 0a eUnknownHandler.
3030: 2b 23 64 65 66 69 6e 65 20 54 63 6c 5f 47 65 74 +#define Tcl_Get
3040: 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e NamespaceUnknown
3050: 48 61 6e 64 6c 65 72 20 5c 0a 2b 09 28 74 63 6c Handler \.+.(tcl
3060: 53 74 75 62 73 50 74 72 2d 3e 74 63 6c 5f 47 65 StubsPtr->tcl_Ge
3070: 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 tNamespaceUnknow
3080: 6e 48 61 6e 64 6c 65 72 29 20 2f 2a 20 35 36 37 nHandler) /* 567
3090: 20 2a 2f 0a 2b 23 65 6e 64 69 66 0a 2b 23 69 66 */.+#endif.+#if
30a0: 6e 64 65 66 20 54 63 6c 5f 53 65 74 4e 61 6d 65 ndef Tcl_SetName
30b0: 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 spaceUnknownHand
30c0: 6c 65 72 0a 2b 23 64 65 66 69 6e 65 20 54 63 6c ler.+#define Tcl
30d0: 5f 53 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b _SetNamespaceUnk
30e0: 6e 6f 77 6e 48 61 6e 64 6c 65 72 20 5c 0a 2b 09 nownHandler \.+.
30f0: 28 74 63 6c 53 74 75 62 73 50 74 72 2d 3e 74 63 (tclStubsPtr->tc
3100: 6c 5f 53 65 74 4e 61 6d 65 73 70 61 63 65 55 6e l_SetNamespaceUn
3110: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 29 20 2f 2a knownHandler) /*
3120: 20 35 36 38 20 2a 2f 0a 2b 23 65 6e 64 69 66 0a 568 */.+#endif.
3130: 20 0a 20 23 65 6e 64 69 66 20 2f 2a 20 64 65 66 . #endif /* def
3140: 69 6e 65 64 28 55 53 45 5f 54 43 4c 5f 53 54 55 ined(USE_TCL_STU
3150: 42 53 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 BS) && !defined(
3160: 55 53 45 5f 54 43 4c 5f 53 54 55 42 5f 50 52 4f USE_TCL_STUB_PRO
3170: 43 53 29 20 2a 2f 0a 20 0a 49 6e 64 65 78 3a 20 CS) */. .Index:
3180: 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e 68 generic/tclInt.h
3190: 0a 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 3d ================
31b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
31c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
31d0: 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f ====.RCS file: /
31e0: 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f cvsroot/tcl/tcl/
31f0: 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e 68 generic/tclInt.h
3200: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 ,v.retrieving re
3210: 76 69 73 69 6f 6e 20 31 2e 32 36 34 0a 64 69 66 vision 1.264.dif
3220: 66 20 2d 75 20 2d 72 31 2e 32 36 34 20 74 63 6c f -u -r1.264 tcl
3230: 49 6e 74 2e 68 0a 2d 2d 2d 20 67 65 6e 65 72 69 Int.h.--- generi
3240: 63 2f 74 63 6c 49 6e 74 2e 68 09 32 37 20 44 65 c/tclInt.h.27 De
3250: 63 20 32 30 30 35 20 32 30 3a 31 34 3a 30 39 20 c 2005 20:14:09
3260: 2d 30 30 30 30 09 31 2e 32 36 34 0a 2b 2b 2b 20 -0000.1.264.+++
3270: 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e 68 generic/tclInt.h
3280: 09 31 38 20 4a 61 6e 20 32 30 30 36 20 32 31 3a .18 Jan 2006 21:
3290: 34 32 3a 33 30 20 2d 30 30 30 30 0a 40 40 20 2d 42:30 -0000.@@ -
32a0: 32 36 33 2c 36 20 2b 32 36 33 2c 39 20 40 40 0a 263,6 +263,9 @@.
32b0: 20 20 20 20 20 54 63 6c 5f 45 6e 73 65 6d 62 6c Tcl_Ensembl
32c0: 65 20 2a 65 6e 73 65 6d 62 6c 65 73 3b 09 2f 2a e *ensembles;./*
32d0: 20 4c 69 73 74 20 6f 66 20 73 74 72 75 63 74 75 List of structu
32e0: 72 65 73 20 74 68 61 74 20 63 6f 6e 74 61 69 6e res that contain
32f0: 20 74 68 65 20 64 65 74 61 69 6c 73 0a 20 09 09 the details. ..
3300: 09 09 20 2a 20 6f 66 20 74 68 65 20 65 6e 73 65 .. * of the ense
3310: 6d 62 6c 65 73 20 74 68 61 74 20 61 72 65 20 69 mbles that are i
3320: 6d 70 6c 65 6d 65 6e 74 65 64 20 6f 6e 0a 20 09 mplemented on. .
3330: 09 09 09 20 2a 20 74 6f 70 20 6f 66 20 74 68 69 ... * top of thi
3340: 73 20 6e 61 6d 65 73 70 61 63 65 2e 20 2a 2f 0a s namespace. */.
3350: 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 75 6e + Tcl_Obj *un
3360: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 3b knownHandlerPtr;
3370: 09 2f 2a 20 41 20 73 63 72 69 70 74 20 66 72 61 ./* A script fra
3380: 67 6d 65 6e 74 20 74 6f 20 62 65 20 75 73 65 64 gment to be used
3390: 20 77 68 65 6e 20 63 6f 6d 6d 61 6e 64 0a 2b 09 when command.+.
33a0: 09 09 09 20 2a 20 72 65 73 6f 6c 75 74 69 6f 6e ... * resolution
33b0: 20 69 6e 20 74 68 69 73 20 6e 61 6d 65 73 70 61 in this namespa
33c0: 63 65 20 66 61 69 6c 73 2e 20 54 49 50 0a 2b 09 ce fails. TIP.+.
33d0: 09 09 09 20 2a 20 31 38 31 2e 20 2a 2f 0a 20 20 ... * 181. */.
33e0: 20 20 20 69 6e 74 20 63 6f 6d 6d 61 6e 64 50 61 int commandPa
33f0: 74 68 4c 65 6e 67 74 68 3b 09 2f 2a 20 54 68 65 thLength;./* The
3400: 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 65 length of the e
3410: 78 70 6c 69 63 69 74 20 70 61 74 68 2e 20 2a 2f xplicit path. */
3420: 0a 20 20 20 20 20 4e 61 6d 65 73 70 61 63 65 50 . NamespaceP
3430: 61 74 68 45 6e 74 72 79 20 2a 63 6f 6d 6d 61 6e athEntry *comman
3440: 64 50 61 74 68 41 72 72 61 79 3b 0a 20 09 09 09 dPathArray;. ...
3450: 09 2f 2a 20 54 68 65 20 65 78 70 6c 69 63 69 74 ./* The explicit
3460: 20 70 61 74 68 20 6f 66 20 74 68 65 20 6e 61 6d path of the nam
3470: 65 73 70 61 63 65 20 61 73 20 61 6e 0a 49 6e 64 espace as an.Ind
3480: 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 4e ex: generic/tclN
3490: 61 6d 65 73 70 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d amesp.c.========
34a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
34b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
34c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
34d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 ===========.RCS
34e0: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 file: /cvsroot/t
34f0: 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 cl/tcl/generic/t
3500: 63 6c 4e 61 6d 65 73 70 2e 63 2c 76 0a 72 65 74 clNamesp.c,v.ret
3510: 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e rieving revision
3520: 20 31 2e 39 31 0a 64 69 66 66 20 2d 75 20 2d 72 1.91.diff -u -r
3530: 31 2e 39 31 20 74 63 6c 4e 61 6d 65 73 70 2e 63 1.91 tclNamesp.c
3540: 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c .--- generic/tcl
3550: 4e 61 6d 65 73 70 2e 63 09 31 31 20 4a 61 6e 20 Namesp.c.11 Jan
3560: 32 30 30 36 20 31 37 3a 33 34 3a 35 33 20 2d 30 2006 17:34:53 -0
3570: 30 30 30 09 31 2e 39 31 0a 2b 2b 2b 20 67 65 6e 000.1.91.+++ gen
3580: 65 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 eric/tclNamesp.c
3590: 09 31 38 20 4a 61 6e 20 32 30 30 36 20 32 31 3a .18 Jan 2006 21:
35a0: 34 32 3a 33 39 20 2d 30 30 30 30 0a 40 40 20 2d 42:39 -0000.@@ -
35b0: 31 32 2c 36 20 2b 31 32 2c 37 20 40 40 0a 20 20 12,6 +12,7 @@.
35c0: 2a 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 * Copyright (c)
35d0: 31 39 39 37 20 53 75 6e 20 4d 69 63 72 6f 73 79 1997 Sun Microsy
35e0: 73 74 65 6d 73 2c 20 49 6e 63 2e 0a 20 20 2a 20 stems, Inc.. *
35f0: 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 Copyright (c) 19
3600: 39 38 2d 31 39 39 39 20 62 79 20 53 63 72 69 70 98-1999 by Scrip
3610: 74 69 63 73 20 43 6f 72 70 6f 72 61 74 69 6f 6e tics Corporation
3620: 2e 0a 20 20 2a 20 43 6f 70 79 72 69 67 68 74 20 .. * Copyright
3630: 28 63 29 20 32 30 30 32 2d 32 30 30 35 20 44 6f (c) 2002-2005 Do
3640: 6e 61 6c 20 4b 2e 20 46 65 6c 6c 6f 77 73 2e 0a nal K. Fellows..
3650: 2b 20 2a 20 43 6f 70 79 72 69 67 68 74 20 28 63 + * Copyright (c
3660: 29 20 32 30 30 36 20 4e 65 69 6c 20 4d 61 64 64 ) 2006 Neil Madd
3670: 65 6e 2e 0a 20 20 2a 0a 20 20 2a 20 4f 72 69 67 en.. *. * Orig
3680: 69 6e 61 6c 6c 79 20 69 6d 70 6c 65 6d 65 6e 74 inally implement
3690: 65 64 20 62 79 0a 20 20 2a 20 20 20 4d 69 63 68 ed by. * Mich
36a0: 61 65 6c 20 4a 2e 20 4d 63 4c 65 6e 6e 61 6e 0a ael J. McLennan.
36b0: 40 40 20 2d 32 32 38 2c 36 20 2b 32 32 39 2c 39 @@ -228,6 +229,9
36c0: 20 40 40 0a 20 09 09 09 20 20 20 20 54 63 6c 5f @@. ... Tcl_
36d0: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 69 Interp *interp,i
36e0: 6e 74 20 6f 62 6a 63 2c 54 63 6c 5f 4f 62 6a 20 nt objc,Tcl_Obj
36f0: 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d 29 3b 0a *CONST objv[]);.
3700: 20 73 74 61 74 69 63 20 69 6e 74 09 09 4e 61 6d static int..Nam
3710: 65 73 70 61 63 65 54 61 69 6c 43 6d 64 28 43 6c espaceTailCmd(Cl
3720: 69 65 6e 74 44 61 74 61 20 64 75 6d 6d 79 2c 20 ientData dummy,
3730: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 Tcl_Interp *inte
3740: 72 70 2c 0a 20 09 09 09 20 20 20 20 69 6e 74 20 rp,. ... int
3750: 6f 62 6a 63 2c 20 54 63 6c 5f 4f 62 6a 20 2a 43 objc, Tcl_Obj *C
3760: 4f 4e 53 54 20 6f 62 6a 76 5b 5d 29 3b 0a 2b 73 ONST objv[]);.+s
3770: 74 61 74 69 63 20 69 6e 74 20 20 20 20 20 20 20 tatic int
3780: 20 20 20 20 20 20 20 4e 61 6d 65 73 70 61 63 65 Namespace
3790: 55 6e 6b 6e 6f 77 6e 43 6d 64 28 43 6c 69 65 6e UnknownCmd(Clien
37a0: 74 44 61 74 61 20 64 75 6d 6d 79 2c 20 0a 2b 20 tData dummy, .+
37b0: 20 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 54 63 6c 5f 49 Tcl_I
37d0: 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 20 69 nterp *interp, i
37e0: 6e 74 20 6f 62 6a 63 2c 20 0a 2b 20 20 20 20 20 nt objc, .+
37f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3800: 20 20 20 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a Tcl_Obj *
3810: 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d 29 3b 0a 20 CONST objv[]);.
3820: 73 74 61 74 69 63 20 69 6e 74 09 09 4e 61 6d 65 static int..Name
3830: 73 70 61 63 65 57 68 69 63 68 43 6d 64 28 43 6c spaceWhichCmd(Cl
3840: 69 65 6e 74 44 61 74 61 20 64 75 6d 6d 79 2c 20 ientData dummy,
3850: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 Tcl_Interp *inte
3860: 72 70 2c 0a 20 09 09 09 20 20 20 20 69 6e 74 20 rp,. ... int
3870: 6f 62 6a 63 2c 20 54 63 6c 5f 4f 62 6a 20 2a 43 objc, Tcl_Obj *C
3880: 4f 4e 53 54 20 6f 62 6a 76 5b 5d 29 3b 0a 20 73 ONST objv[]);. s
3890: 74 61 74 69 63 20 69 6e 74 09 09 53 65 74 4e 73 tatic int..SetNs
38a0: 4e 61 6d 65 46 72 6f 6d 41 6e 79 28 54 63 6c 5f NameFromAny(Tcl_
38b0: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 20 Interp *interp,
38c0: 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 74 72 29 Tcl_Obj *objPtr)
38d0: 3b 0a 40 40 20 2d 38 31 34 2c 36 20 2b 38 31 38 ;.@@ -814,6 +818
38e0: 2c 37 20 40 40 0a 20 20 20 20 20 6e 73 50 74 72 ,7 @@. nsPtr
38f0: 2d 3e 63 6f 6d 70 69 6c 65 64 56 61 72 52 65 73 ->compiledVarRes
3900: 50 72 6f 63 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 Proc = NULL;.
3910: 20 20 6e 73 50 74 72 2d 3e 65 78 70 6f 72 74 4c nsPtr->exportL
3920: 6f 6f 6b 75 70 45 70 6f 63 68 20 3d 20 30 3b 0a ookupEpoch = 0;.
3930: 20 20 20 20 20 6e 73 50 74 72 2d 3e 65 6e 73 65 nsPtr->ense
3940: 6d 62 6c 65 73 20 3d 20 4e 55 4c 4c 3b 0a 2b 20 mbles = NULL;.+
3950: 20 20 20 6e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 nsPtr->unknow
3960: 6e 48 61 6e 64 6c 65 72 50 74 72 20 3d 20 4e 55 nHandlerPtr = NU
3970: 4c 4c 3b 0a 20 20 20 20 20 6e 73 50 74 72 2d 3e LL;. nsPtr->
3980: 63 6f 6d 6d 61 6e 64 50 61 74 68 4c 65 6e 67 74 commandPathLengt
3990: 68 20 3d 20 30 3b 0a 20 20 20 20 20 6e 73 50 74 h = 0;. nsPt
39a0: 72 2d 3e 63 6f 6d 6d 61 6e 64 50 61 74 68 41 72 r->commandPathAr
39b0: 72 61 79 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 ray = NULL;.
39c0: 20 6e 73 50 74 72 2d 3e 63 6f 6d 6d 61 6e 64 50 nsPtr->commandP
39d0: 61 74 68 53 6f 75 72 63 65 4c 69 73 74 20 3d 20 athSourceList =
39e0: 4e 55 4c 4c 3b 0a 40 40 20 2d 39 31 35 2c 36 20 NULL;.@@ -915,6
39f0: 2b 39 32 30 2c 31 35 20 40 40 0a 20 20 20 20 20 +920,15 @@.
3a00: 7d 0a 20 0a 20 20 20 20 20 2f 2a 0a 2b 20 20 20 }. . /*.+
3a10: 20 20 2a 20 49 66 20 74 68 65 20 6e 61 6d 65 73 * If the names
3a20: 70 61 63 65 20 68 61 73 20 61 20 72 65 67 69 73 pace has a regis
3a30: 74 65 72 65 64 20 75 6e 6b 6e 6f 77 6e 20 68 61 tered unknown ha
3a40: 6e 64 6c 65 72 20 28 54 49 50 20 31 38 31 29 2c ndler (TIP 181),
3a50: 20 74 68 65 6e 20 66 72 65 65 0a 2b 20 20 20 20 then free.+
3a60: 20 2a 20 69 74 20 68 65 72 65 2e 0a 2b 20 20 20 * it here..+
3a70: 20 20 2a 2f 0a 2b 20 20 20 20 69 66 20 28 6e 73 */.+ if (ns
3a80: 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 Ptr->unknownHand
3a90: 6c 65 72 50 74 72 20 21 3d 20 4e 55 4c 4c 29 20 lerPtr != NULL)
3aa0: 7b 0a 2b 09 54 63 6c 5f 44 65 63 72 52 65 66 43 {.+.Tcl_DecrRefC
3ab0: 6f 75 6e 74 28 6e 73 50 74 72 2d 3e 75 6e 6b 6e ount(nsPtr->unkn
3ac0: 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 29 3b 0a ownHandlerPtr);.
3ad0: 2b 20 20 20 20 20 20 20 20 6e 73 50 74 72 2d 3e + nsPtr->
3ae0: 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 unknownHandlerPt
3af0: 72 20 3d 20 4e 55 4c 4c 3b 0a 2b 20 20 20 20 7d r = NULL;.+ }
3b00: 0a 2b 0a 2b 20 20 20 20 2f 2a 0a 20 20 20 20 20 .+.+ /*.
3b10: 20 2a 20 49 66 20 74 68 65 20 6e 61 6d 65 73 70 * If the namesp
3b20: 61 63 65 20 69 73 20 6f 6e 20 74 68 65 20 63 61 ace is on the ca
3b30: 6c 6c 20 66 72 61 6d 65 20 73 74 61 63 6b 2c 20 ll frame stack,
3b40: 69 74 20 69 73 20 6d 61 72 6b 65 64 20 61 73 20 it is marked as
3b50: 22 64 79 69 6e 67 22 0a 20 20 20 20 20 20 2a 20 "dying". *
3b60: 28 4e 53 5f 44 59 49 4e 47 20 69 73 20 4f 52 27 (NS_DYING is OR'
3b70: 64 20 69 6e 74 6f 20 69 74 73 20 66 6c 61 67 73 d into its flags
3b80: 29 3a 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 ): the namespace
3b90: 20 63 61 6e 27 74 20 62 65 20 6c 6f 6f 6b 65 64 can't be looked
3ba0: 20 75 70 20 62 79 0a 20 20 20 20 20 20 2a 20 6e up by. * n
3bb0: 61 6d 65 20 62 75 74 20 69 74 73 20 63 6f 6d 6d ame but its comm
3bc0: 61 6e 64 73 20 61 6e 64 20 76 61 72 69 61 62 6c ands and variabl
3bd0: 65 73 20 61 72 65 20 73 74 69 6c 6c 20 75 73 61 es are still usa
3be0: 62 6c 65 20 62 79 20 74 68 6f 73 65 20 61 63 74 ble by those act
3bf0: 69 76 65 0a 40 40 20 2d 32 38 39 36 2c 31 33 20 ive.@@ -2896,13
3c00: 2b 32 39 31 30 2c 31 33 20 40 40 0a 20 09 22 63 +2910,13 @@. ."c
3c10: 68 69 6c 64 72 65 6e 22 2c 20 22 63 6f 64 65 22 hildren", "code"
3c20: 2c 20 22 63 75 72 72 65 6e 74 22 2c 20 22 64 65 , "current", "de
3c30: 6c 65 74 65 22 2c 20 22 65 6e 73 65 6d 62 6c 65 lete", "ensemble
3c40: 22 2c 0a 20 09 22 65 76 61 6c 22 2c 20 22 65 78 ",. ."eval", "ex
3c50: 69 73 74 73 22 2c 20 22 65 78 70 6f 72 74 22 2c ists", "export",
3c60: 20 22 66 6f 72 67 65 74 22 2c 20 22 69 6d 70 6f "forget", "impo
3c70: 72 74 22 2c 0a 20 09 22 69 6e 73 63 6f 70 65 22 rt",. ."inscope"
3c80: 2c 20 22 6f 72 69 67 69 6e 22 2c 20 22 70 61 72 , "origin", "par
3c90: 65 6e 74 22 2c 20 22 70 61 74 68 22 2c 20 22 71 ent", "path", "q
3ca0: 75 61 6c 69 66 69 65 72 73 22 2c 0a 2d 09 22 74 ualifiers",.-."t
3cb0: 61 69 6c 22 2c 20 22 77 68 69 63 68 22 2c 20 4e ail", "which", N
3cc0: 55 4c 4c 0a 2b 09 22 74 61 69 6c 22 2c 20 22 75 ULL.+."tail", "u
3cd0: 6e 6b 6e 6f 77 6e 22 2c 20 22 77 68 69 63 68 22 nknown", "which"
3ce0: 2c 20 4e 55 4c 4c 0a 20 20 20 20 20 7d 3b 0a 20 , NULL. };.
3cf0: 20 20 20 20 65 6e 75 6d 20 4e 53 53 75 62 43 6d enum NSSubCm
3d00: 64 49 64 78 20 7b 0a 20 09 4e 53 43 68 69 6c 64 dIdx {. .NSChild
3d10: 72 65 6e 49 64 78 2c 20 4e 53 43 6f 64 65 49 64 renIdx, NSCodeId
3d20: 78 2c 20 4e 53 43 75 72 72 65 6e 74 49 64 78 2c x, NSCurrentIdx,
3d30: 20 4e 53 44 65 6c 65 74 65 49 64 78 2c 20 4e 53 NSDeleteIdx, NS
3d40: 45 6e 73 65 6d 62 6c 65 49 64 78 2c 0a 20 09 4e EnsembleIdx,. .N
3d50: 53 45 76 61 6c 49 64 78 2c 20 4e 53 45 78 69 73 SEvalIdx, NSExis
3d60: 74 73 49 64 78 2c 20 4e 53 45 78 70 6f 72 74 49 tsIdx, NSExportI
3d70: 64 78 2c 20 4e 53 46 6f 72 67 65 74 49 64 78 2c dx, NSForgetIdx,
3d80: 20 4e 53 49 6d 70 6f 72 74 49 64 78 2c 0a 20 09 NSImportIdx,. .
3d90: 4e 53 49 6e 73 63 6f 70 65 49 64 78 2c 20 4e 53 NSInscopeIdx, NS
3da0: 4f 72 69 67 69 6e 49 64 78 2c 20 4e 53 50 61 72 OriginIdx, NSPar
3db0: 65 6e 74 49 64 78 2c 20 4e 53 50 61 74 68 49 64 entIdx, NSPathId
3dc0: 78 2c 20 4e 53 51 75 61 6c 69 66 69 65 72 73 49 x, NSQualifiersI
3dd0: 64 78 2c 0a 2d 09 4e 53 54 61 69 6c 49 64 78 2c dx,.-.NSTailIdx,
3de0: 20 4e 53 57 68 69 63 68 49 64 78 0a 2b 09 4e 53 NSWhichIdx.+.NS
3df0: 54 61 69 6c 49 64 78 2c 20 4e 53 55 6e 6b 6e 6f TailIdx, NSUnkno
3e00: 77 6e 49 64 78 2c 20 4e 53 57 68 69 63 68 49 64 wnIdx, NSWhichId
3e10: 78 0a 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 69 x. };. i
3e20: 6e 74 20 69 6e 64 65 78 2c 20 72 65 73 75 6c 74 nt index, result
3e30: 3b 0a 20 0a 40 40 20 2d 32 39 37 30 2c 36 20 2b ;. .@@ -2970,6 +
3e40: 32 39 38 34 2c 39 20 40 40 0a 20 20 20 20 20 63 2984,9 @@. c
3e50: 61 73 65 20 4e 53 54 61 69 6c 49 64 78 3a 0a 20 ase NSTailIdx:.
3e60: 09 72 65 73 75 6c 74 20 3d 20 4e 61 6d 65 73 70 .result = Namesp
3e70: 61 63 65 54 61 69 6c 43 6d 64 28 63 6c 69 65 6e aceTailCmd(clien
3e80: 74 44 61 74 61 2c 20 69 6e 74 65 72 70 2c 20 6f tData, interp, o
3e90: 62 6a 63 2c 20 6f 62 6a 76 29 3b 0a 20 09 62 72 bjc, objv);. .br
3ea0: 65 61 6b 3b 0a 2b 20 20 20 20 63 61 73 65 20 4e eak;.+ case N
3eb0: 53 55 6e 6b 6e 6f 77 6e 49 64 78 3a 0a 2b 09 72 SUnknownIdx:.+.r
3ec0: 65 73 75 6c 74 20 3d 20 4e 61 6d 65 73 70 61 63 esult = Namespac
3ed0: 65 55 6e 6b 6e 6f 77 6e 43 6d 64 28 63 6c 69 65 eUnknownCmd(clie
3ee0: 6e 74 44 61 74 61 2c 20 69 6e 74 65 72 70 2c 20 ntData, interp,
3ef0: 6f 62 6a 63 2c 20 6f 62 6a 76 29 3b 0a 2b 09 62 objc, objv);.+.b
3f00: 72 65 61 6b 3b 0a 20 20 20 20 20 63 61 73 65 20 reak;. case
3f10: 4e 53 57 68 69 63 68 49 64 78 3a 0a 20 09 72 65 NSWhichIdx:. .re
3f20: 73 75 6c 74 20 3d 20 4e 61 6d 65 73 70 61 63 65 sult = Namespace
3f30: 57 68 69 63 68 43 6d 64 28 63 6c 69 65 6e 74 44 WhichCmd(clientD
3f40: 61 74 61 2c 20 69 6e 74 65 72 70 2c 20 6f 62 6a ata, interp, obj
3f50: 63 2c 20 6f 62 6a 76 29 3b 0a 20 09 62 72 65 61 c, objv);. .brea
3f60: 6b 3b 0a 40 40 20 2d 34 32 37 30 2c 36 20 2b 34 k;.@@ -4270,6 +4
3f70: 32 38 37 2c 31 36 38 20 40 40 0a 20 2f 2a 0a 20 287,168 @@. /*.
3f80: 20 2a 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 2d 2d 2d 2d 2d 2d ----------------
3fc0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a 0a 2b 20 2a --------. *.+ *
3fd0: 20 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 NamespaceUnknow
3fe0: 6e 43 6d 64 20 2d 2d 0a 2b 20 2a 0a 2b 20 2a 09 nCmd --.+ *.+ *.
3ff0: 49 6e 76 6f 6b 65 64 20 74 6f 20 69 6d 70 6c 65 Invoked to imple
4000: 6d 65 6e 74 20 74 68 65 20 22 6e 61 6d 65 73 70 ment the "namesp
4010: 61 63 65 20 75 6e 6b 6e 6f 77 6e 22 20 63 6f 6d ace unknown" com
4020: 6d 61 6e 64 20 28 54 49 50 20 31 38 31 29 20 74 mand (TIP 181) t
4030: 68 61 74 0a 2b 20 2a 09 73 65 74 73 20 6f 72 20 hat.+ *.sets or
4040: 71 75 65 72 69 65 73 20 61 20 70 65 72 2d 6e 61 queries a per-na
4050: 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 20 mespace unknown
4060: 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65 72 2e command handler.
4070: 20 54 68 69 73 20 68 61 6e 64 6c 65 72 0a 2b 20 This handler.+
4080: 2a 09 69 73 20 63 61 6c 6c 65 64 20 77 68 65 6e *.is called when
4090: 20 63 6f 6d 6d 61 6e 64 20 6c 6f 6f 6b 75 70 20 command lookup
40a0: 66 61 69 6c 73 20 28 63 75 72 72 65 6e 74 20 61 fails (current a
40b0: 6e 64 20 67 6c 6f 62 61 6c 20 6e 73 29 2e 20 54 nd global ns). T
40c0: 68 65 0a 2b 20 2a 09 64 65 66 61 75 6c 74 20 68 he.+ *.default h
40d0: 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 65 20 67 andler for the g
40e0: 6c 6f 62 61 6c 20 6e 61 6d 65 73 70 61 63 65 20 lobal namespace
40f0: 69 73 20 3a 3a 75 6e 6b 6e 6f 77 6e 2e 20 54 68 is ::unknown. Th
4100: 65 20 64 65 66 61 75 6c 74 0a 2b 20 2a 09 68 61 e default.+ *.ha
4110: 6e 64 6c 65 72 20 66 6f 72 20 6f 74 68 65 72 20 ndler for other
4120: 6e 61 6d 65 73 70 61 63 65 73 20 69 73 20 74 6f namespaces is to
4130: 20 63 61 6c 6c 20 74 68 65 20 67 6c 6f 62 61 6c call the global
4140: 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f namespace unkno
4150: 77 6e 0a 2b 20 2a 09 68 61 6e 64 6c 65 72 2e 20 wn.+ *.handler.
4160: 50 61 73 73 69 6e 67 20 61 6e 20 65 6d 70 74 79 Passing an empty
4170: 20 6c 69 73 74 20 72 65 73 75 6c 74 73 20 69 6e list results in
4180: 20 72 65 73 65 74 74 69 6e 67 20 74 68 65 20 68 resetting the h
4190: 61 6e 64 6c 65 72 20 74 6f 0a 2b 20 2a 09 69 74 andler to.+ *.it
41a0: 73 20 64 65 66 61 75 6c 74 2e 0a 2b 20 2a 0a 2b s default..+ *.+
41b0: 20 2a 09 20 20 20 20 6e 61 6d 65 73 70 61 63 65 *. namespace
41c0: 20 75 6e 6b 6e 6f 77 6e 20 3f 68 61 6e 64 6c 65 unknown ?handle
41d0: 72 3f 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 6c r?.+ *.+ * Resul
41e0: 74 73 3a 0a 2b 20 2a 09 52 65 74 75 72 6e 73 20 ts:.+ *.Returns
41f0: 54 43 4c 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 TCL_OK if succes
4200: 73 66 75 6c 2c 20 61 6e 64 20 54 43 4c 5f 45 52 sful, and TCL_ER
4210: 52 4f 52 20 69 66 20 61 6e 79 74 68 69 6e 67 20 ROR if anything
4220: 67 6f 65 73 20 77 72 6f 6e 67 2e 0a 2b 20 2a 0a goes wrong..+ *.
4230: 2b 20 2a 20 53 69 64 65 20 65 66 66 65 63 74 73 + * Side effects
4240: 3a 0a 2b 20 2a 09 49 66 20 6e 6f 20 68 61 6e 64 :.+ *.If no hand
4250: 6c 65 72 20 69 73 20 73 70 65 63 69 66 69 65 64 ler is specified
4260: 2c 20 72 65 74 75 72 6e 73 20 61 20 72 65 73 75 , returns a resu
4270: 6c 74 20 69 6e 20 74 68 65 20 69 6e 74 65 72 70 lt in the interp
4280: 72 65 74 65 72 27 73 0a 2b 20 2a 09 72 65 73 75 reter's.+ *.resu
4290: 6c 74 20 6f 62 6a 65 63 74 2c 20 6f 74 68 65 72 lt object, other
42a0: 77 69 73 65 20 69 74 20 73 65 74 73 20 74 68 65 wise it sets the
42b0: 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 unknown handler
42c0: 20 70 6f 69 6e 74 65 72 20 69 6e 20 74 68 65 0a pointer in the.
42d0: 2b 20 2a 09 63 75 72 72 65 6e 74 20 6e 61 6d 65 + *.current name
42e0: 73 70 61 63 65 20 74 6f 20 74 68 65 20 73 63 72 space to the scr
42f0: 69 70 74 20 66 72 61 67 6d 65 6e 74 20 70 72 6f ipt fragment pro
4300: 76 69 64 65 64 2e 20 49 66 20 61 6e 79 74 68 69 vided. If anythi
4310: 6e 67 20 67 6f 65 73 0a 2b 20 2a 09 77 72 6f 6e ng goes.+ *.wron
4320: 67 2c 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 g, the result is
4330: 20 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 an error messag
4340: 65 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d e..+ *.+ *------
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 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4390: 0a 2b 20 2a 2f 0a 2b 73 74 61 74 69 63 20 69 6e .+ */.+static in
43a0: 74 0a 2b 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e t.+NamespaceUnkn
43b0: 6f 77 6e 43 6d 64 28 64 75 6d 6d 79 2c 20 69 6e ownCmd(dummy, in
43c0: 74 65 72 70 2c 20 6f 62 6a 63 2c 20 6f 62 6a 76 terp, objc, objv
43d0: 29 0a 2b 20 20 20 20 43 6c 69 65 6e 74 44 61 74 ).+ ClientDat
43e0: 61 20 64 75 6d 6d 79 3b 09 09 2f 2a 20 4e 6f 74 a dummy;../* Not
43f0: 20 75 73 65 64 2e 20 2a 2f 0a 2b 20 20 20 20 54 used. */.+ T
4400: 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 cl_Interp *inter
4410: 70 3b 09 09 2f 2a 20 43 75 72 72 65 6e 74 20 69 p;../* Current i
4420: 6e 74 65 72 70 72 65 74 65 72 2e 20 2a 2f 0a 2b nterpreter. */.+
4430: 20 20 20 20 69 6e 74 20 6f 62 6a 63 3b 09 09 09 int objc;...
4440: 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 61 72 67 /* Number of arg
4450: 75 6d 65 6e 74 73 2e 20 2a 2f 0a 2b 20 20 20 20 uments. */.+
4460: 54 63 6c 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f Tcl_Obj *CONST o
4470: 62 6a 76 5b 5d 3b 09 2f 2a 20 41 72 67 75 6d 65 bjv[];./* Argume
4480: 6e 74 20 6f 62 6a 65 63 74 73 2e 20 2a 2f 0a 2b nt objects. */.+
4490: 7b 0a 2b 20 20 20 20 54 63 6c 5f 4e 61 6d 65 73 {.+ Tcl_Names
44a0: 70 61 63 65 20 2a 63 75 72 72 4e 73 50 74 72 3b pace *currNsPtr;
44b0: 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 72 .+ Tcl_Obj *r
44c0: 65 73 75 6c 74 50 74 72 3b 0a 2b 20 20 20 20 69 esultPtr;.+ i
44d0: 6e 74 20 72 63 3b 0a 2b 0a 2b 20 20 20 20 69 66 nt rc;.+.+ if
44e0: 20 28 6f 62 6a 63 20 3e 20 33 29 20 7b 0a 2b 09 (objc > 3) {.+.
44f0: 54 63 6c 5f 57 72 6f 6e 67 4e 75 6d 41 72 67 73 Tcl_WrongNumArgs
4500: 28 69 6e 74 65 72 70 2c 20 32 2c 20 6f 62 6a 76 (interp, 2, objv
4510: 2c 20 22 3f 73 63 72 69 70 74 3f 22 29 3b 0a 2b , "?script?");.+
4520: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 return T
4530: 43 4c 5f 45 52 52 4f 52 3b 0a 2b 20 20 20 20 7d CL_ERROR;.+ }
4540: 0a 2b 0a 2b 20 20 20 20 63 75 72 72 4e 73 50 74 .+.+ currNsPt
4550: 72 20 3d 20 54 63 6c 5f 47 65 74 43 75 72 72 65 r = Tcl_GetCurre
4560: 6e 74 4e 61 6d 65 73 70 61 63 65 28 69 6e 74 65 ntNamespace(inte
4570: 72 70 29 3b 0a 2b 0a 2b 20 20 20 20 69 66 20 28 rp);.+.+ if (
4580: 6f 62 6a 63 20 3d 3d 20 32 29 20 7b 0a 2b 09 2f objc == 2) {.+./
4590: 2a 0a 2b 09 20 2a 20 49 6e 74 72 6f 73 70 65 63 *.+. * Introspec
45a0: 74 69 6f 6e 20 2d 20 72 65 74 75 72 6e 20 74 68 tion - return th
45b0: 65 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 e current namesp
45c0: 61 63 65 20 68 61 6e 64 6c 65 72 2e 0a 2b 09 20 ace handler..+.
45d0: 2a 2f 0a 2b 09 72 65 73 75 6c 74 50 74 72 20 3d */.+.resultPtr =
45e0: 20 54 63 6c 5f 47 65 74 4e 61 6d 65 73 70 61 63 Tcl_GetNamespac
45f0: 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 28 eUnknownHandler(
4600: 69 6e 74 65 72 70 2c 20 63 75 72 72 4e 73 50 74 interp, currNsPt
4610: 72 29 3b 0a 2b 09 69 66 20 28 72 65 73 75 6c 74 r);.+.if (result
4620: 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b Ptr == NULL) {.+
4630: 09 20 20 20 20 72 65 73 75 6c 74 50 74 72 20 3d . resultPtr =
4640: 20 54 63 6c 5f 4e 65 77 4f 62 6a 28 29 3b 0a 2b Tcl_NewObj();.+
4650: 09 7d 0a 2b 09 54 63 6c 5f 53 65 74 4f 62 6a 52 .}.+.Tcl_SetObjR
4660: 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 72 65 esult(interp, re
4670: 73 75 6c 74 50 74 72 29 3b 0a 2b 20 20 20 20 7d sultPtr);.+ }
4680: 20 65 6c 73 65 20 7b 0a 2b 09 72 63 20 3d 20 54 else {.+.rc = T
4690: 63 6c 5f 53 65 74 4e 61 6d 65 73 70 61 63 65 55 cl_SetNamespaceU
46a0: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 28 69 6e nknownHandler(in
46b0: 74 65 72 70 2c 20 63 75 72 72 4e 73 50 74 72 2c terp, currNsPtr,
46c0: 20 6f 62 6a 76 5b 32 5d 29 3b 0a 2b 09 69 66 20 objv[2]);.+.if
46d0: 28 72 63 20 3d 3d 20 54 43 4c 5f 4f 4b 29 20 7b (rc == TCL_OK) {
46e0: 0a 2b 09 20 20 20 20 54 63 6c 5f 53 65 74 4f 62 .+. Tcl_SetOb
46f0: 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 jResult(interp,
4700: 6f 62 6a 76 5b 32 5d 29 3b 0a 2b 09 7d 0a 2b 09 objv[2]);.+.}.+.
4710: 72 65 74 75 72 6e 20 72 63 3b 0a 2b 20 20 20 20 return rc;.+
4720: 7d 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 54 43 }.+ return TC
4730: 4c 5f 4f 4b 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f 2a 0a L_OK;.+}.+..+/*.
4740: 2b 20 2a 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 2d 2d 2d 2d 2d ----------------
4780: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 2b 20 ---------.+ *.+
4790: 2a 20 54 63 6c 5f 47 65 74 4e 61 6d 65 73 70 61 * Tcl_GetNamespa
47a0: 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 ceUnknownHandler
47b0: 20 2d 2d 0a 2b 20 2a 0a 2b 20 2a 09 52 65 74 75 --.+ *.+ *.Retu
47c0: 72 6e 73 20 74 68 65 20 75 6e 6b 6e 6f 77 6e 20 rns the unknown
47d0: 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65 72 20 command handler
47e0: 72 65 67 69 73 74 65 72 65 64 20 66 6f 72 20 74 registered for t
47f0: 68 65 20 67 69 76 65 6e 0a 2b 20 2a 09 6e 61 6d he given.+ *.nam
4800: 65 73 70 61 63 65 2e 0a 2b 20 2a 0a 2b 20 2a 20 espace..+ *.+ *
4810: 52 65 73 75 6c 74 73 3a 0a 2b 20 2a 09 52 65 74 Results:.+ *.Ret
4820: 75 72 6e 73 20 74 68 65 20 63 75 72 72 65 6e 74 urns the current
4830: 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 unknown command
4840: 20 68 61 6e 64 6c 65 72 2c 20 6f 72 20 4e 55 4c handler, or NUL
4850: 4c 20 69 66 20 6e 6f 6e 65 0a 2b 20 2a 09 65 78 L if none.+ *.ex
4860: 69 73 74 73 20 66 6f 72 20 74 68 65 20 6e 61 6d ists for the nam
4870: 65 73 70 61 63 65 2e 0a 2b 20 2a 0a 2b 20 2a 20 espace..+ *.+ *
4880: 53 69 64 65 20 65 66 66 65 63 74 73 3a 0a 2b 20 Side effects:.+
4890: 2a 09 4e 6f 6e 65 2e 0a 2b 20 2a 0a 2b 20 2a 2d *.None..+ *.+ *-
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 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
48e0: 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 54 63 6c 5f -----.+ */.+Tcl_
48f0: 4f 62 6a 20 2a 0a 2b 54 63 6c 5f 47 65 74 4e 61 Obj *.+Tcl_GetNa
4900: 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 mespaceUnknownHa
4910: 6e 64 6c 65 72 28 69 6e 74 65 72 70 2c 20 6e 73 ndler(interp, ns
4920: 50 74 72 29 0a 2b 20 20 20 20 54 63 6c 5f 49 6e Ptr).+ Tcl_In
4930: 74 65 72 70 20 2a 69 6e 74 65 72 70 3b 09 09 2f terp *interp;../
4940: 2a 20 54 68 65 20 69 6e 74 65 72 70 72 65 74 65 * The interprete
4950: 72 20 69 6e 20 77 68 69 63 68 20 74 68 65 20 6e r in which the n
4960: 61 6d 65 73 70 61 63 65 0a 2b 09 09 09 09 20 2a amespace.+.... *
4970: 20 65 78 69 73 74 73 2e 20 2a 2f 0a 2b 20 20 20 exists. */.+
4980: 20 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 20 2a Tcl_Namespace *
4990: 6e 73 50 74 72 3b 09 2f 2a 20 54 68 65 20 6e 61 nsPtr;./* The na
49a0: 6d 65 73 70 61 63 65 2e 20 2a 2f 0a 2b 7b 0a 2b mespace. */.+{.+
49b0: 20 20 20 20 4e 61 6d 65 73 70 61 63 65 20 2a 63 Namespace *c
49c0: 75 72 72 4e 73 50 74 72 20 3d 20 28 4e 61 6d 65 urrNsPtr = (Name
49d0: 73 70 61 63 65 20 2a 29 6e 73 50 74 72 3b 0a 2b space *)nsPtr;.+
49e0: 0a 2b 20 20 20 20 69 66 20 28 63 75 72 72 4e 73 .+ if (currNs
49f0: 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 Ptr->unknownHand
4a00: 6c 65 72 50 74 72 20 3d 3d 20 4e 55 4c 4c 20 26 lerPtr == NULL &
4a10: 26 0a 2b 09 63 75 72 72 4e 73 50 74 72 20 3d 3d &.+.currNsPtr ==
4a20: 20 28 28 49 6e 74 65 72 70 20 2a 29 69 6e 74 65 ((Interp *)inte
4a30: 72 70 29 2d 3e 67 6c 6f 62 61 6c 4e 73 50 74 72 rp)->globalNsPtr
4a40: 29 20 7b 0a 2b 09 2f 2a 20 44 65 66 61 75 6c 74 ) {.+./* Default
4a50: 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 67 6c 6f handler for glo
4a60: 62 61 6c 20 6e 61 6d 65 73 70 61 63 65 20 69 73 bal namespace is
4a70: 20 22 3a 3a 75 6e 6b 6e 6f 77 6e 22 2e 20 46 6f "::unknown". Fo
4a80: 72 20 61 6c 6c 0a 2b 09 20 2a 20 6f 74 68 65 72 r all.+. * other
4a90: 20 6e 61 6d 65 73 70 61 63 65 73 2c 20 69 74 20 namespaces, it
4aa0: 69 73 20 4e 55 4c 4c 20 28 77 68 69 63 68 20 66 is NULL (which f
4ab0: 61 6c 6c 73 20 62 61 63 6b 20 6f 6e 20 74 68 65 alls back on the
4ac0: 20 67 6c 6f 62 61 6c 0a 2b 09 20 2a 20 75 6e 6b global.+. * unk
4ad0: 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 29 2e 0a 2b nown handler)..+
4ae0: 09 20 2a 2f 0a 2b 09 63 75 72 72 4e 73 50 74 72 . */.+.currNsPtr
4af0: 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 ->unknownHandler
4b00: 50 74 72 20 3d 0a 2b 09 20 20 20 20 54 63 6c 5f Ptr =.+. Tcl_
4b10: 4e 65 77 53 74 72 69 6e 67 4f 62 6a 28 22 3a 3a NewStringObj("::
4b20: 75 6e 6b 6e 6f 77 6e 22 2c 20 2d 31 29 3b 0a 2b unknown", -1);.+
4b30: 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e .Tcl_IncrRefCoun
4b40: 74 28 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b t(currNsPtr->unk
4b50: 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 29 3b nownHandlerPtr);
4b60: 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 72 65 74 .+ }.+ ret
4b70: 75 72 6e 20 63 75 72 72 4e 73 50 74 72 2d 3e 75 urn currNsPtr->u
4b80: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 nknownHandlerPtr
4b90: 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f 2a 0a 2b 20 2a 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 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4be0: 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20 54 63 -----.+ *.+ * Tc
4bf0: 6c 5f 53 65 74 4e 61 6d 65 73 70 61 63 65 55 6e l_SetNamespaceUn
4c00: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 20 2d 2d 0a knownHandler --.
4c10: 2b 20 2a 0a 2b 20 2a 09 53 65 74 73 20 74 68 65 + *.+ *.Sets the
4c20: 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 unknown command
4c30: 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 65 handler for the
4c40: 20 67 69 76 65 6e 20 6e 61 6d 65 73 70 61 63 65 given namespace
4c50: 20 74 6f 20 74 68 65 0a 2b 20 2a 09 63 6f 6d 6d to the.+ *.comm
4c60: 61 6e 64 20 70 72 65 66 69 78 20 70 61 73 73 65 and prefix passe
4c70: 64 2e 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 6c d..+ *.+ * Resul
4c80: 74 73 3a 0a 2b 20 2a 09 52 65 74 75 72 6e 73 20 ts:.+ *.Returns
4c90: 54 43 4c 5f 4f 4b 20 69 66 20 73 75 63 63 65 73 TCL_OK if succes
4ca0: 73 66 75 6c 2c 20 61 6e 64 20 54 43 4c 5f 45 52 sful, and TCL_ER
4cb0: 52 4f 52 20 69 66 20 61 6e 79 74 68 69 6e 67 20 ROR if anything
4cc0: 67 6f 65 73 20 0a 2b 20 2a 09 77 72 6f 6e 67 2e goes .+ *.wrong.
4cd0: 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64 65 20 65 66 .+ *.+ * Side ef
4ce0: 66 65 63 74 73 3a 0a 2b 20 2a 09 53 65 74 73 20 fects:.+ *.Sets
4cf0: 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 75 6e the namespace un
4d00: 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 known command ha
4d10: 6e 64 6c 65 72 2e 20 49 66 20 74 68 65 20 70 61 ndler. If the pa
4d20: 73 73 65 64 20 69 6e 0a 2b 20 2a 09 68 61 6e 64 ssed in.+ *.hand
4d30: 6c 65 72 20 69 73 20 4e 55 4c 4c 20 6f 72 20 61 ler is NULL or a
4d40: 6e 20 65 6d 70 74 79 20 6c 69 73 74 2c 20 74 68 n empty list, th
4d50: 65 6e 20 74 68 65 20 68 61 6e 64 6c 65 72 20 69 en the handler i
4d60: 73 20 72 65 73 65 74 20 74 6f 0a 2b 20 2a 09 69 s reset to.+ *.i
4d70: 74 73 20 64 65 66 61 75 6c 74 2e 20 49 66 20 61 ts default. If a
4d80: 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 2c 20 n error occurs,
4d90: 74 68 65 6e 20 61 6e 20 65 72 72 6f 72 20 6d 65 then an error me
4da0: 73 73 61 67 65 20 69 73 20 6c 65 66 74 0a 2b 20 ssage is left.+
4db0: 2a 09 69 6e 20 74 68 65 20 69 6e 74 65 72 70 72 *.in the interpr
4dc0: 65 74 65 72 20 72 65 73 75 6c 74 2e 0a 2b 20 2a eter result..+ *
4dd0: 0a 2b 20 2a 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 2d 2d 2d 2d ----------------
4e10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a ----------.+ */.
4e20: 2b 69 6e 74 0a 2b 54 63 6c 5f 53 65 74 4e 61 6d +int.+Tcl_SetNam
4e30: 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e espaceUnknownHan
4e40: 64 6c 65 72 28 69 6e 74 65 72 70 2c 20 6e 73 50 dler(interp, nsP
4e50: 74 72 2c 20 68 61 6e 64 6c 65 72 50 74 72 29 0a tr, handlerPtr).
4e60: 2b 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 + Tcl_Interp
4e70: 2a 69 6e 74 65 72 70 3b 09 09 2f 2a 20 49 6e 74 *interp;../* Int
4e80: 65 72 70 72 65 74 65 72 20 69 6e 20 77 68 69 63 erpreter in whic
4e90: 68 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 h the namespace
4ea0: 0a 2b 09 09 09 09 20 2a 20 65 78 69 73 74 73 2e .+.... * exists.
4eb0: 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 4e 61 6d */.+ Tcl_Nam
4ec0: 65 73 70 61 63 65 20 2a 6e 73 50 74 72 3b 09 2f espace *nsPtr;./
4ed0: 2a 20 4e 61 6d 65 73 70 61 63 65 20 77 68 69 63 * Namespace whic
4ee0: 68 20 69 73 20 62 65 69 6e 67 20 75 70 64 61 74 h is being updat
4ef0: 65 64 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f ed. */.+ Tcl_
4f00: 4f 62 6a 20 2a 68 61 6e 64 6c 65 72 50 74 72 3b Obj *handlerPtr;
4f10: 09 2f 2a 20 54 68 65 20 6e 65 77 20 68 61 6e 64 ./* The new hand
4f20: 6c 65 72 2c 20 6f 72 20 4e 55 4c 4c 20 74 6f 20 ler, or NULL to
4f30: 72 65 73 65 74 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20 reset. */.+{.+
4f40: 20 20 69 6e 74 20 6c 73 74 6c 65 6e 3b 0a 2b 20 int lstlen;.+
4f50: 20 20 20 4e 61 6d 65 73 70 61 63 65 20 2a 63 75 Namespace *cu
4f60: 72 72 4e 73 50 74 72 20 3d 20 28 4e 61 6d 65 73 rrNsPtr = (Names
4f70: 70 61 63 65 20 2a 29 6e 73 50 74 72 3b 0a 2b 0a pace *)nsPtr;.+.
4f80: 2b 20 20 20 20 69 66 20 28 63 75 72 72 4e 73 50 + if (currNsP
4f90: 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c tr->unknownHandl
4fa0: 65 72 50 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b erPtr != NULL) {
4fb0: 0a 2b 09 2f 2a 20 52 65 6d 6f 76 65 20 6f 6c 64 .+./* Remove old
4fc0: 20 68 61 6e 64 6c 65 72 20 66 69 72 73 74 2e 20 handler first.
4fd0: 2a 2f 0a 2b 09 54 63 6c 5f 44 65 63 72 52 65 66 */.+.Tcl_DecrRef
4fe0: 43 6f 75 6e 74 28 63 75 72 72 4e 73 50 74 72 2d Count(currNsPtr-
4ff0: 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 >unknownHandlerP
5000: 74 72 29 3b 0a 2b 20 20 20 20 20 20 20 20 63 75 tr);.+ cu
5010: 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e rrNsPtr->unknown
5020: 48 61 6e 64 6c 65 72 50 74 72 20 3d 20 4e 55 4c HandlerPtr = NUL
5030: 4c 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 2f L;.+ }.+ /
5040: 2a 0a 2b 20 20 20 20 20 2a 20 49 66 20 4e 55 4c *.+ * If NUL
5050: 4c 20 6f 72 20 61 6e 20 65 6d 70 74 79 20 6c 69 L or an empty li
5060: 73 74 20 69 73 20 70 61 73 73 65 64 2c 20 74 68 st is passed, th
5070: 65 6e 20 72 65 73 65 74 20 74 6f 20 74 68 65 20 en reset to the
5080: 64 65 66 61 75 6c 74 0a 2b 20 20 20 20 20 2a 20 default.+ *
5090: 68 61 6e 64 6c 65 72 2e 0a 2b 20 20 20 20 20 2a handler..+ *
50a0: 2f 0a 2b 20 20 20 20 69 66 20 28 68 61 6e 64 6c /.+ if (handl
50b0: 65 72 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b erPtr == NULL) {
50c0: 0a 2b 09 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e .+.currNsPtr->un
50d0: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 knownHandlerPtr
50e0: 3d 20 4e 55 4c 4c 3b 0a 2b 20 20 20 20 7d 20 65 = NULL;.+ } e
50f0: 6c 73 65 20 7b 0a 2b 09 69 66 20 28 54 63 6c 5f lse {.+.if (Tcl_
5100: 4c 69 73 74 4f 62 6a 4c 65 6e 67 74 68 28 69 6e ListObjLength(in
5110: 74 65 72 70 2c 20 68 61 6e 64 6c 65 72 50 74 72 terp, handlerPtr
5120: 2c 20 26 6c 73 74 6c 65 6e 29 20 21 3d 20 54 43 , &lstlen) != TC
5130: 4c 5f 4f 4b 29 20 7b 0a 2b 09 20 20 20 20 2f 2a L_OK) {.+. /*
5140: 20 4e 6f 74 20 61 20 6c 69 73 74 20 2a 2f 0a 2b Not a list */.+
5150: 09 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f . return TCL_
5160: 45 52 52 4f 52 3b 0a 2b 09 7d 20 65 6c 73 65 20 ERROR;.+.} else
5170: 69 66 20 28 6c 73 74 6c 65 6e 20 3d 3d 20 30 29 if (lstlen == 0)
5180: 20 7b 0a 2b 09 20 20 20 20 2f 2a 20 45 6d 70 74 {.+. /* Empt
5190: 79 20 6c 69 73 74 20 2d 20 72 65 73 65 74 20 74 y list - reset t
51a0: 6f 20 64 65 66 61 75 6c 74 2e 20 2a 2f 0a 2b 09 o default. */.+.
51b0: 20 20 20 20 63 75 72 72 4e 73 50 74 72 2d 3e 75 currNsPtr->u
51c0: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 nknownHandlerPtr
51d0: 20 3d 20 4e 55 4c 4c 3b 0a 2b 09 7d 20 65 6c 73 = NULL;.+.} els
51e0: 65 20 7b 0a 2b 09 20 20 20 20 2f 2a 20 0a 2b 09 e {.+. /* .+.
51f0: 20 20 20 20 20 2a 20 49 6e 63 72 65 6d 65 6e 74 * Increment
5200: 20 72 65 66 20 63 6f 75 6e 74 20 61 6e 64 20 73 ref count and s
5210: 74 6f 72 65 2e 20 54 68 65 20 72 65 66 65 72 65 tore. The refere
5220: 6e 63 65 20 63 6f 75 6e 74 20 69 73 20 0a 2b 09 nce count is .+.
5230: 20 20 20 20 20 2a 20 64 65 63 72 65 6d 65 6e 74 * decrement
5240: 65 64 20 65 69 74 68 65 72 20 69 6e 20 74 68 65 ed either in the
5250: 20 63 6f 64 65 20 61 62 6f 76 65 2c 20 6f 72 20 code above, or
5260: 77 68 65 6e 20 74 68 65 20 6e 61 6d 65 73 70 61 when the namespa
5270: 63 65 20 0a 2b 09 20 20 20 20 20 2a 20 69 73 20 ce .+. * is
5280: 64 65 6c 65 74 65 64 2e 0a 2b 09 20 20 20 20 20 deleted..+.
5290: 2a 2f 0a 2b 09 20 20 20 20 54 63 6c 5f 49 6e 63 */.+. Tcl_Inc
52a0: 72 52 65 66 43 6f 75 6e 74 28 68 61 6e 64 6c 65 rRefCount(handle
52b0: 72 50 74 72 29 3b 0a 2b 09 20 20 20 20 63 75 72 rPtr);.+. cur
52c0: 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 rNsPtr->unknownH
52d0: 61 6e 64 6c 65 72 50 74 72 20 3d 20 68 61 6e 64 andlerPtr = hand
52e0: 6c 65 72 50 74 72 3b 0a 2b 09 7d 0a 2b 20 20 20 lerPtr;.+.}.+
52f0: 20 7d 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 54 }.+ return T
5300: 43 4c 5f 4f 4b 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f 2a CL_OK;.+}.+..+/*
5310: 0a 2b 20 2a 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 2d 2d 2d 2d ----------------
5350: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 20 ----------.+ *.
5360: 20 2a 20 4e 61 6d 65 73 70 61 63 65 54 61 69 6c * NamespaceTail
5370: 43 6d 64 20 2d 2d 0a 20 20 2a 0a 20 20 2a 09 49 Cmd --. *. *.I
5380: 6e 76 6f 6b 65 64 20 74 6f 20 69 6d 70 6c 65 6d nvoked to implem
5390: 65 6e 74 20 74 68 65 20 22 6e 61 6d 65 73 70 61 ent the "namespa
53a0: 63 65 20 74 61 69 6c 22 20 63 6f 6d 6d 61 6e 64 ce tail" command
53b0: 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 that returns th
53c0: 65 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 e.Index: generic
53d0: 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 0a 3d /tclStubInit.c.=
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 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5420: 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 ==.RCS file: /cv
5430: 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 sroot/tcl/tcl/ge
5440: 6e 65 72 69 63 2f 74 63 6c 53 74 75 62 49 6e 69 neric/tclStubIni
5450: 74 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 t.c,v.retrieving
5460: 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 32 37 0a revision 1.127.
5470: 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 32 37 20 diff -u -r1.127
5480: 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 0a 2d 2d tclStubInit.c.--
5490: 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 53 74 75 - generic/tclStu
54a0: 62 49 6e 69 74 2e 63 09 32 37 20 44 65 63 20 32 bInit.c.27 Dec 2
54b0: 30 30 35 20 32 30 3a 31 34 3a 30 39 20 2d 30 30 005 20:14:09 -00
54c0: 30 30 09 31 2e 31 32 37 0a 2b 2b 2b 20 67 65 6e 00.1.127.+++ gen
54d0: 65 72 69 63 2f 74 63 6c 53 74 75 62 49 6e 69 74 eric/tclStubInit
54e0: 2e 63 09 31 38 20 4a 61 6e 20 32 30 30 36 20 32 .c.18 Jan 2006 2
54f0: 31 3a 34 32 3a 34 31 20 2d 30 30 30 30 0a 40 40 1:42:41 -0000.@@
5500: 20 2d 31 30 36 33 2c 36 20 2b 31 30 36 33 2c 38 -1063,6 +1063,8
5510: 20 40 40 0a 20 20 20 20 20 54 63 6c 5f 53 65 74 @@. Tcl_Set
5520: 43 68 61 6e 6e 65 6c 45 72 72 6f 72 2c 20 2f 2a ChannelError, /*
5530: 20 35 36 34 20 2a 2f 0a 20 20 20 20 20 54 63 6c 564 */. Tcl
5540: 5f 47 65 74 43 68 61 6e 6e 65 6c 45 72 72 6f 72 _GetChannelError
5550: 2c 20 2f 2a 20 35 36 35 20 2a 2f 0a 20 20 20 20 , /* 565 */.
5560: 20 54 63 6c 5f 49 6e 69 74 42 69 67 6e 75 6d 46 Tcl_InitBignumF
5570: 72 6f 6d 44 6f 75 62 6c 65 2c 20 2f 2a 20 35 36 romDouble, /* 56
5580: 36 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 47 65 6 */.+ Tcl_Ge
5590: 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 tNamespaceUnknow
55a0: 6e 48 61 6e 64 6c 65 72 2c 20 2f 2a 20 35 36 37 nHandler, /* 567
55b0: 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 53 65 74 */.+ Tcl_Set
55c0: 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e NamespaceUnknown
55d0: 48 61 6e 64 6c 65 72 2c 20 2f 2a 20 35 36 38 20 Handler, /* 568
55e0: 2a 2f 0a 20 7d 3b 0a 20 0a 20 2f 2a 20 21 45 4e */. };. . /* !EN
55f0: 44 21 3a 20 44 6f 20 6e 6f 74 20 65 64 69 74 20 D!: Do not edit
5600: 61 62 6f 76 65 20 74 68 69 73 20 6c 69 6e 65 2e above this line.
5610: 20 2a 2f 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 */.Index: tests
5620: 2f 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 74 0a /namespace.test.
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 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5670: 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 ===.RCS file: /c
5680: 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 vsroot/tcl/tcl/t
5690: 65 73 74 73 2f 6e 61 6d 65 73 70 61 63 65 2e 74 ests/namespace.t
56a0: 65 73 74 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 est,v.retrieving
56b0: 20 72 65 76 69 73 69 6f 6e 20 31 2e 35 30 0a 64 revision 1.50.d
56c0: 69 66 66 20 2d 75 20 2d 72 31 2e 35 30 20 6e 61 iff -u -r1.50 na
56d0: 6d 65 73 70 61 63 65 2e 74 65 73 74 0a 2d 2d 2d mespace.test.---
56e0: 20 74 65 73 74 73 2f 6e 61 6d 65 73 70 61 63 65 tests/namespace
56f0: 2e 74 65 73 74 09 39 20 4a 61 6e 20 32 30 30 36 .test.9 Jan 2006
5700: 20 31 38 3a 33 35 3a 30 31 20 2d 30 30 30 30 09 18:35:01 -0000.
5710: 31 2e 35 30 0a 2b 2b 2b 20 74 65 73 74 73 2f 6e 1.50.+++ tests/n
5720: 61 6d 65 73 70 61 63 65 2e 74 65 73 74 09 31 38 amespace.test.18
5730: 20 4a 61 6e 20 32 30 30 36 20 32 31 3a 34 32 3a Jan 2006 21:42:
5740: 34 37 20 2d 30 30 30 30 0a 40 40 20 2d 38 37 33 47 -0000.@@ -873
5750: 2c 37 20 2b 38 37 33 2c 37 20 40 40 0a 20 7d 20 ,7 +873,7 @@. }
5760: 7b 31 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 {1 {wrong # args
5770: 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 6e 61 6d : should be "nam
5780: 65 73 70 61 63 65 20 73 75 62 63 6f 6d 6d 61 6e espace subcomman
5790: 64 20 3f 61 72 67 20 2e 2e 2e 3f 22 7d 7d 0a 20 d ?arg ...?"}}.
57a0: 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 32 test namespace-2
57b0: 30 2e 32 20 7b 54 63 6c 5f 4e 61 6d 65 73 70 61 0.2 {Tcl_Namespa
57c0: 63 65 4f 62 6a 43 6d 64 2c 20 62 61 64 20 73 75 ceObjCmd, bad su
57d0: 62 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 20 20 20 20 bcommand} {.
57e0: 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 6e 61 list [catch {na
57f0: 6d 65 73 70 61 63 65 20 77 6f 6d 62 61 74 20 7b mespace wombat {
5800: 7d 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 }} msg] $msg.-}
5810: 7b 31 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 {1 {bad option "
5820: 77 6f 6d 62 61 74 22 3a 20 6d 75 73 74 20 62 65 wombat": must be
5830: 20 63 68 69 6c 64 72 65 6e 2c 20 63 6f 64 65 2c children, code,
5840: 20 63 75 72 72 65 6e 74 2c 20 64 65 6c 65 74 65 current, delete
5850: 2c 20 65 6e 73 65 6d 62 6c 65 2c 20 65 76 61 6c , ensemble, eval
5860: 2c 20 65 78 69 73 74 73 2c 20 65 78 70 6f 72 74 , exists, export
5870: 2c 20 66 6f 72 67 65 74 2c 20 69 6d 70 6f 72 74 , forget, import
5880: 2c 20 69 6e 73 63 6f 70 65 2c 20 6f 72 69 67 69 , inscope, origi
5890: 6e 2c 20 70 61 72 65 6e 74 2c 20 70 61 74 68 2c n, parent, path,
58a0: 20 71 75 61 6c 69 66 69 65 72 73 2c 20 74 61 69 qualifiers, tai
58b0: 6c 2c 20 6f 72 20 77 68 69 63 68 7d 7d 0a 2b 7d l, or which}}.+}
58c0: 20 7b 31 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 {1 {bad option
58d0: 22 77 6f 6d 62 61 74 22 3a 20 6d 75 73 74 20 62 "wombat": must b
58e0: 65 20 63 68 69 6c 64 72 65 6e 2c 20 63 6f 64 65 e children, code
58f0: 2c 20 63 75 72 72 65 6e 74 2c 20 64 65 6c 65 74 , current, delet
5900: 65 2c 20 65 6e 73 65 6d 62 6c 65 2c 20 65 76 61 e, ensemble, eva
5910: 6c 2c 20 65 78 69 73 74 73 2c 20 65 78 70 6f 72 l, exists, expor
5920: 74 2c 20 66 6f 72 67 65 74 2c 20 69 6d 70 6f 72 t, forget, impor
5930: 74 2c 20 69 6e 73 63 6f 70 65 2c 20 6f 72 69 67 t, inscope, orig
5940: 69 6e 2c 20 70 61 72 65 6e 74 2c 20 70 61 74 68 in, parent, path
5950: 2c 20 71 75 61 6c 69 66 69 65 72 73 2c 20 74 61 , qualifiers, ta
5960: 69 6c 2c 20 75 6e 6b 6e 6f 77 6e 2c 20 6f 72 20 il, unknown, or
5970: 77 68 69 63 68 7d 7d 0a 20 74 65 73 74 20 6e 61 which}}. test na
5980: 6d 65 73 70 61 63 65 2d 32 30 2e 33 20 7b 54 63 mespace-20.3 {Tc
5990: 6c 5f 4e 61 6d 65 73 70 61 63 65 4f 62 6a 43 6d l_NamespaceObjCm
59a0: 64 2c 20 61 62 62 72 65 76 69 61 74 69 6f 6e 73 d, abbreviations
59b0: 20 61 72 65 20 6f 6b 61 79 7d 20 7b 0a 20 20 20 are okay} {.
59c0: 20 20 6e 61 6d 65 73 70 61 63 65 20 63 68 20 3a namespace ch :
59d0: 3a 20 74 65 73 74 5f 6e 73 5f 2a 0a 20 7d 20 7b : test_ns_*. } {
59e0: 7d 0a 40 40 20 2d 39 38 30 2c 37 20 2b 39 38 30 }.@@ -980,7 +980
59f0: 2c 37 20 40 40 0a 20 7d 20 7b 31 20 7b 77 72 6f ,7 @@. } {1 {wro
5a00: 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c ng # args: shoul
5a10: 64 20 62 65 20 22 6e 61 6d 65 73 70 61 63 65 20 d be "namespace
5a20: 65 76 61 6c 20 6e 61 6d 65 20 61 72 67 20 3f 61 eval name arg ?a
5a30: 72 67 2e 2e 2e 3f 22 7d 7d 0a 20 74 65 73 74 20 rg...?"}}. test
5a40: 6e 61 6d 65 73 70 61 63 65 2d 32 35 2e 32 20 7b namespace-25.2 {
5a50: 4e 61 6d 65 73 70 61 63 65 45 76 61 6c 43 6d 64 NamespaceEvalCmd
5a60: 2c 20 62 61 64 20 61 72 67 73 7d 20 7b 0a 20 20 , bad args} {.
5a70: 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b list [catch {
5a80: 6e 61 6d 65 73 70 61 63 65 20 74 65 73 74 5f 6e namespace test_n
5a90: 73 5f 31 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 2d s_1} msg] $msg.-
5aa0: 7d 20 7b 31 20 7b 62 61 64 20 6f 70 74 69 6f 6e } {1 {bad option
5ab0: 20 22 74 65 73 74 5f 6e 73 5f 31 22 3a 20 6d 75 "test_ns_1": mu
5ac0: 73 74 20 62 65 20 63 68 69 6c 64 72 65 6e 2c 20 st be children,
5ad0: 63 6f 64 65 2c 20 63 75 72 72 65 6e 74 2c 20 64 code, current, d
5ae0: 65 6c 65 74 65 2c 20 65 6e 73 65 6d 62 6c 65 2c elete, ensemble,
5af0: 20 65 76 61 6c 2c 20 65 78 69 73 74 73 2c 20 65 eval, exists, e
5b00: 78 70 6f 72 74 2c 20 66 6f 72 67 65 74 2c 20 69 xport, forget, i
5b10: 6d 70 6f 72 74 2c 20 69 6e 73 63 6f 70 65 2c 20 mport, inscope,
5b20: 6f 72 69 67 69 6e 2c 20 70 61 72 65 6e 74 2c 20 origin, parent,
5b30: 70 61 74 68 2c 20 71 75 61 6c 69 66 69 65 72 73 path, qualifiers
5b40: 2c 20 74 61 69 6c 2c 20 6f 72 20 77 68 69 63 68 , tail, or which
5b50: 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 6f 70 }}.+} {1 {bad op
5b60: 74 69 6f 6e 20 22 74 65 73 74 5f 6e 73 5f 31 22 tion "test_ns_1"
5b70: 3a 20 6d 75 73 74 20 62 65 20 63 68 69 6c 64 72 : must be childr
5b80: 65 6e 2c 20 63 6f 64 65 2c 20 63 75 72 72 65 6e en, code, curren
5b90: 74 2c 20 64 65 6c 65 74 65 2c 20 65 6e 73 65 6d t, delete, ensem
5ba0: 62 6c 65 2c 20 65 76 61 6c 2c 20 65 78 69 73 74 ble, eval, exist
5bb0: 73 2c 20 65 78 70 6f 72 74 2c 20 66 6f 72 67 65 s, export, forge
5bc0: 74 2c 20 69 6d 70 6f 72 74 2c 20 69 6e 73 63 6f t, import, insco
5bd0: 70 65 2c 20 6f 72 69 67 69 6e 2c 20 70 61 72 65 pe, origin, pare
5be0: 6e 74 2c 20 70 61 74 68 2c 20 71 75 61 6c 69 66 nt, path, qualif
5bf0: 69 65 72 73 2c 20 74 61 69 6c 2c 20 75 6e 6b 6e iers, tail, unkn
5c00: 6f 77 6e 2c 20 6f 72 20 77 68 69 63 68 7d 7d 0a own, or which}}.
5c10: 20 63 61 74 63 68 20 7b 75 6e 73 65 74 20 76 7d catch {unset v}
5c20: 0a 20 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 . test namespace
5c30: 2d 32 35 2e 33 20 7b 4e 61 6d 65 73 70 61 63 65 -25.3 {Namespace
5c40: 45 76 61 6c 43 6d 64 2c 20 6e 65 77 20 6e 61 6d EvalCmd, new nam
5c50: 65 73 70 61 63 65 7d 20 7b 0a 20 20 20 20 20 73 espace} {. s
5c60: 65 74 20 76 20 31 32 33 0a 40 40 20 2d 32 33 39 et v 123.@@ -239
5c70: 35 2c 36 20 2b 32 33 39 35 2c 39 36 20 40 40 0a 5,6 +2395,96 @@.
5c80: 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 64 namespace d
5c90: 65 6c 65 74 65 20 3a 3a 74 65 73 74 5f 6e 73 5f elete ::test_ns_
5ca0: 32 0a 20 7d 0a 20 0a 2b 23 20 54 49 50 20 31 38 2. }. .+# TIP 18
5cb0: 31 20 2d 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 1 - namespace un
5cc0: 6b 6e 6f 77 6e 20 74 65 73 74 73 0a 2b 74 65 73 known tests.+tes
5cd0: 74 20 6e 61 6d 65 73 70 61 63 65 2d 35 32 2e 31 t namespace-52.1
5ce0: 20 7b 75 6e 6b 6e 6f 77 6e 3a 20 64 65 66 61 75 {unknown: defau
5cf0: 6c 74 20 68 61 6e 64 6c 65 72 20 3a 3a 75 6e 6b lt handler ::unk
5d00: 6e 6f 77 6e 7d 20 7b 0a 2b 20 20 20 20 73 65 74 nown} {.+ set
5d10: 20 72 65 73 75 6c 74 20 5b 6c 69 73 74 20 5b 6e result [list [n
5d20: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 66 6f amespace eval fo
5d30: 6f 62 61 72 20 7b 20 6e 61 6d 65 73 70 61 63 65 obar { namespace
5d40: 20 75 6e 6b 6e 6f 77 6e 20 7d 5d 5d 0a 2b 20 20 unknown }]].+
5d50: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 lappend result
5d60: 20 5b 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c [namespace eval
5d70: 20 3a 3a 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 :: { namespace
5d80: 75 6e 6b 6e 6f 77 6e 20 7d 5d 0a 2b 20 20 20 20 unknown }].+
5d90: 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 namespace delete
5da0: 20 66 6f 6f 62 61 72 0a 2b 20 20 20 20 73 65 74 foobar.+ set
5db0: 20 72 65 73 75 6c 74 0a 2b 7d 20 7b 7b 7d 20 3a result.+} {{} :
5dc0: 3a 75 6e 6b 6e 6f 77 6e 7d 0a 2b 74 65 73 74 20 :unknown}.+test
5dd0: 6e 61 6d 65 73 70 61 63 65 2d 35 32 2e 32 20 7b namespace-52.2 {
5de0: 75 6e 6b 6e 6f 77 6e 3a 20 64 65 66 61 75 6c 74 unknown: default
5df0: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 67 6c 6f 62 resolution glob
5e00: 61 6c 7d 20 7b 0a 2b 20 20 20 20 70 72 6f 63 20 al} {.+ proc
5e10: 3a 3a 66 6f 6f 20 7b 7d 20 7b 20 72 65 74 75 72 ::foo {} { retur
5e20: 6e 20 22 47 4c 4f 42 41 4c 22 20 7d 0a 2b 20 20 n "GLOBAL" }.+
5e30: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c namespace eval
5e40: 20 3a 3a 62 61 72 20 7b 20 70 72 6f 63 20 66 6f ::bar { proc fo
5e50: 6f 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 22 4e o {} { return "N
5e60: 41 4d 45 53 50 41 43 45 22 20 7d 20 7d 0a 2b 20 AMESPACE" } }.+
5e70: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 namespace eva
5e80: 6c 20 3a 3a 62 61 72 3a 3a 6a 69 6d 20 7b 20 70 l ::bar::jim { p
5e90: 72 6f 63 20 74 65 73 74 20 7b 7d 20 7b 20 66 6f roc test {} { fo
5ea0: 6f 20 7d 20 7d 0a 2b 20 20 20 20 73 65 74 20 72 o } }.+ set r
5eb0: 65 73 75 6c 74 20 5b 3a 3a 62 61 72 3a 3a 6a 69 esult [::bar::ji
5ec0: 6d 3a 3a 74 65 73 74 5d 0a 2b 20 20 20 20 6e 61 m::test].+ na
5ed0: 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 3a mespace delete :
5ee0: 3a 62 61 72 0a 2b 20 20 20 20 72 65 6e 61 6d 65 :bar.+ rename
5ef0: 20 3a 3a 66 6f 6f 20 7b 7d 0a 2b 20 20 20 20 73 ::foo {}.+ s
5f00: 65 74 20 72 65 73 75 6c 74 0a 2b 7d 20 7b 47 4c et result.+} {GL
5f10: 4f 42 41 4c 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 OBAL}.+test name
5f20: 73 70 61 63 65 2d 35 32 2e 33 20 7b 75 6e 6b 6e space-52.3 {unkn
5f30: 6f 77 6e 3a 20 64 65 66 61 75 6c 74 20 72 65 73 own: default res
5f40: 6f 6c 75 74 69 6f 6e 20 6c 6f 63 61 6c 7d 20 7b olution local} {
5f50: 0a 2b 20 20 20 20 70 72 6f 63 20 3a 3a 66 6f 6f .+ proc ::foo
5f60: 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 22 47 4c {} { return "GL
5f70: 4f 42 41 4c 22 20 7d 0a 2b 20 20 20 20 6e 61 6d OBAL" }.+ nam
5f80: 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 62 61 espace eval ::ba
5f90: 72 20 7b 0a 2b 09 70 72 6f 63 20 66 6f 6f 20 7b r {.+.proc foo {
5fa0: 7d 20 7b 20 72 65 74 75 72 6e 20 22 4e 41 4d 45 } { return "NAME
5fb0: 53 50 41 43 45 22 20 7d 0a 2b 09 70 72 6f 63 20 SPACE" }.+.proc
5fc0: 74 65 73 74 20 7b 7d 20 7b 20 66 6f 6f 20 7d 0a test {} { foo }.
5fd0: 2b 20 20 20 20 7d 0a 2b 20 20 20 20 73 65 74 20 + }.+ set
5fe0: 72 65 73 75 6c 74 20 5b 3a 3a 62 61 72 3a 3a 74 result [::bar::t
5ff0: 65 73 74 5d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 est].+ namesp
6000: 61 63 65 20 64 65 6c 65 74 65 20 3a 3a 62 61 72 ace delete ::bar
6010: 0a 2b 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a 66 .+ rename ::f
6020: 6f 6f 20 7b 7d 0a 2b 20 20 20 20 73 65 74 20 72 oo {}.+ set r
6030: 65 73 75 6c 74 0a 2b 7d 20 7b 4e 41 4d 45 53 50 esult.+} {NAMESP
6040: 41 43 45 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 ACE}.+test names
6050: 70 61 63 65 2d 35 32 2e 34 20 7b 75 6e 6b 6e 6f pace-52.4 {unkno
6060: 77 6e 3a 20 73 65 74 20 68 61 6e 64 6c 65 72 7d wn: set handler}
6070: 20 7b 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 {.+ namespac
6080: 65 20 65 76 61 6c 20 66 6f 6f 20 7b 0a 2b 09 6e e eval foo {.+.n
6090: 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e amespace unknown
60a0: 20 5b 6c 69 73 74 20 64 69 73 70 61 74 63 68 5d [list dispatch]
60b0: 0a 2b 09 70 72 6f 63 20 64 69 73 70 61 74 63 68 .+.proc dispatch
60c0: 20 7b 61 72 67 73 7d 20 7b 20 72 65 74 75 72 6e {args} { return
60d0: 20 24 61 72 67 73 20 7d 0a 2b 09 70 72 6f 63 20 $args }.+.proc
60e0: 74 65 73 74 20 7b 7d 20 7b 0a 2b 09 20 20 20 20 test {} {.+.
60f0: 55 6e 6b 6e 6f 77 6e 43 6d 64 20 61 20 62 20 63 UnknownCmd a b c
6100: 0a 2b 09 7d 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 .+.}.+ }.+
6110: 20 73 65 74 20 72 65 73 75 6c 74 20 5b 66 6f 6f set result [foo
6120: 3a 3a 74 65 73 74 5d 0a 2b 20 20 20 20 6e 61 6d ::test].+ nam
6130: 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 66 6f espace delete fo
6140: 6f 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75 6c o.+ set resul
6150: 74 0a 2b 7d 20 7b 55 6e 6b 6e 6f 77 6e 43 6d 64 t.+} {UnknownCmd
6160: 20 61 20 62 20 63 7d 0a 2b 74 65 73 74 20 6e 61 a b c}.+test na
6170: 6d 65 73 70 61 63 65 2d 35 32 2e 35 20 7b 75 6e mespace-52.5 {un
6180: 6b 6e 6f 77 6e 3a 20 73 65 61 72 63 68 20 70 61 known: search pa
6190: 74 68 20 62 65 66 6f 72 65 20 75 6e 6b 6e 6f 77 th before unknow
61a0: 6e 20 69 73 20 75 6e 61 6c 74 65 72 65 64 7d 20 n is unaltered}
61b0: 7b 0a 2b 20 20 20 20 70 72 6f 63 20 3a 3a 74 65 {.+ proc ::te
61c0: 73 74 32 20 7b 61 72 67 73 7d 20 7b 20 72 65 74 st2 {args} { ret
61d0: 75 72 6e 20 22 54 45 53 54 32 3a 20 24 61 72 67 urn "TEST2: $arg
61e0: 73 22 20 7d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 s" }.+ namesp
61f0: 61 63 65 20 65 76 61 6c 20 66 6f 6f 20 7b 0a 2b ace eval foo {.+
6200: 09 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f .namespace unkno
6210: 77 6e 20 5b 6c 69 73 74 20 64 69 73 70 61 74 63 wn [list dispatc
6220: 68 5d 0a 2b 09 70 72 6f 63 20 64 69 73 70 61 74 h].+.proc dispat
6230: 63 68 20 7b 61 72 67 73 7d 20 7b 20 72 65 74 75 ch {args} { retu
6240: 72 6e 20 22 55 4e 4b 4e 4f 57 4e 3a 20 24 61 72 rn "UNKNOWN: $ar
6250: 67 73 22 20 7d 0a 2b 09 70 72 6f 63 20 74 65 73 gs" }.+.proc tes
6260: 74 31 20 7b 61 72 67 73 7d 20 7b 20 72 65 74 75 t1 {args} { retu
6270: 72 6e 20 22 54 45 53 54 31 3a 20 24 61 72 67 73 rn "TEST1: $args
6280: 22 20 7d 0a 2b 09 70 72 6f 63 20 74 65 73 74 20 " }.+.proc test
6290: 7b 7d 20 7b 0a 2b 09 20 20 20 20 73 65 74 20 72 {} {.+. set r
62a0: 65 73 75 6c 74 20 5b 6c 69 73 74 20 5b 74 65 73 esult [list [tes
62b0: 74 31 20 61 20 62 20 63 5d 5d 0a 2b 09 20 20 20 t1 a b c]].+.
62c0: 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 lappend result
62d0: 5b 74 65 73 74 32 20 61 20 62 20 63 5d 0a 2b 09 [test2 a b c].+.
62e0: 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 lappend resu
62f0: 6c 74 20 5b 74 65 73 74 33 20 61 20 62 20 63 5d lt [test3 a b c]
6300: 0a 2b 09 20 20 20 20 72 65 74 75 72 6e 20 24 72 .+. return $r
6310: 65 73 75 6c 74 0a 2b 09 7d 0a 2b 20 20 20 20 7d esult.+.}.+ }
6320: 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75 6c 74 .+ set result
6330: 20 5b 66 6f 6f 3a 3a 74 65 73 74 5d 0a 2b 20 20 [foo::test].+
6340: 20 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 namespace dele
6350: 74 65 20 66 6f 6f 0a 2b 20 20 20 20 72 65 6e 61 te foo.+ rena
6360: 6d 65 20 3a 3a 74 65 73 74 32 20 7b 7d 0a 2b 20 me ::test2 {}.+
6370: 20 20 20 73 65 74 20 72 65 73 75 6c 74 0a 2b 7d set result.+}
6380: 20 7b 7b 54 45 53 54 31 3a 20 61 20 62 20 63 7d {{TEST1: a b c}
6390: 20 7b 54 45 53 54 32 3a 20 61 20 62 20 63 7d 20 {TEST2: a b c}
63a0: 7b 55 4e 4b 4e 4f 57 4e 3a 20 74 65 73 74 33 20 {UNKNOWN: test3
63b0: 61 20 62 20 63 7d 7d 0a 2b 74 65 73 74 20 6e 61 a b c}}.+test na
63c0: 6d 65 73 70 61 63 65 2d 35 32 2e 36 20 7b 75 6e mespace-52.6 {un
63d0: 6b 6e 6f 77 6e 3a 20 64 65 6c 65 74 69 6e 67 20 known: deleting
63e0: 68 61 6e 64 6c 65 72 20 72 65 73 74 6f 72 65 73 handler restores
63f0: 20 64 65 66 61 75 6c 74 7d 20 7b 0a 2b 20 20 20 default} {.+
6400: 20 72 65 6e 61 6d 65 20 3a 3a 75 6e 6b 6e 6f 77 rename ::unknow
6410: 6e 20 3a 3a 5f 75 6e 6b 6e 6f 77 6e 5f 6f 72 69 n ::_unknown_ori
6420: 67 0a 2b 20 20 20 20 70 72 6f 63 20 3a 3a 75 6e g.+ proc ::un
6430: 6b 6e 6f 77 6e 20 7b 61 72 67 73 7d 20 7b 20 72 known {args} { r
6440: 65 74 75 72 6e 20 22 44 45 46 41 55 4c 54 3a 20 eturn "DEFAULT:
6450: 24 61 72 67 73 22 20 7d 0a 2b 20 20 20 20 6e 61 $args" }.+ na
6460: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 66 6f 6f mespace eval foo
6470: 20 7b 0a 2b 09 6e 61 6d 65 73 70 61 63 65 20 75 {.+.namespace u
6480: 6e 6b 6e 6f 77 6e 20 64 75 6d 6d 79 0a 2b 09 6e nknown dummy.+.n
6490: 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e amespace unknown
64a0: 20 7b 7d 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 {}.+ }.+
64b0: 73 65 74 20 72 65 73 75 6c 74 20 5b 6e 61 6d 65 set result [name
64c0: 73 70 61 63 65 20 65 76 61 6c 20 66 6f 6f 20 7b space eval foo {
64d0: 20 64 75 6d 6d 79 20 61 20 62 20 63 20 7d 5d 0a dummy a b c }].
64e0: 2b 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a 75 6e + rename ::un
64f0: 6b 6e 6f 77 6e 20 7b 7d 0a 2b 20 20 20 20 72 65 known {}.+ re
6500: 6e 61 6d 65 20 3a 3a 5f 75 6e 6b 6e 6f 77 6e 5f name ::_unknown_
6510: 6f 72 69 67 20 3a 3a 75 6e 6b 6e 6f 77 6e 0a 2b orig ::unknown.+
6520: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 64 65 namespace de
6530: 6c 65 74 65 20 66 6f 6f 0a 2b 20 20 20 20 73 65 lete foo.+ se
6540: 74 20 72 65 73 75 6c 74 0a 2b 7d 20 7b 44 45 46 t result.+} {DEF
6550: 41 55 4c 54 3a 20 64 75 6d 6d 79 20 61 20 62 20 AULT: dummy a b
6560: 63 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 c}.+test namespa
6570: 63 65 2d 35 32 2e 37 20 7b 75 6e 6b 6e 6f 77 6e ce-52.7 {unknown
6580: 3a 20 73 65 74 74 69 6e 67 20 67 6c 6f 62 61 6c : setting global
6590: 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 unknown handler
65a0: 7d 20 7b 0a 2b 20 20 20 20 70 72 6f 63 20 3a 3a } {.+ proc ::
65b0: 6d 79 75 6e 6b 6e 6f 77 6e 20 7b 61 72 67 73 7d myunknown {args}
65c0: 20 7b 20 72 65 74 75 72 6e 20 22 4d 59 55 4e 4b { return "MYUNK
65d0: 4e 4f 57 4e 3a 20 24 61 72 67 73 22 20 7d 0a 2b NOWN: $args" }.+
65e0: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 namespace ev
65f0: 61 6c 20 3a 3a 20 7b 20 6e 61 6d 65 73 70 61 63 al :: { namespac
6600: 65 20 75 6e 6b 6e 6f 77 6e 20 3a 3a 6d 79 75 6e e unknown ::myun
6610: 6b 6e 6f 77 6e 20 7d 0a 2b 20 20 20 20 73 65 74 known }.+ set
6620: 20 72 65 73 75 6c 74 20 5b 6e 61 6d 65 73 70 61 result [namespa
6630: 63 65 20 65 76 61 6c 20 66 6f 6f 20 7b 20 64 75 ce eval foo { du
6640: 6d 6d 79 20 61 20 62 20 63 20 7d 5d 0a 2b 20 20 mmy a b c }].+
6650: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c namespace eval
6660: 20 3a 3a 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 :: { namespace
6670: 75 6e 6b 6e 6f 77 6e 20 7b 7d 20 7d 0a 2b 20 20 unknown {} }.+
6680: 20 20 72 65 6e 61 6d 65 20 3a 3a 6d 79 75 6e 6b rename ::myunk
6690: 6e 6f 77 6e 20 7b 7d 0a 2b 20 20 20 20 6e 61 6d nown {}.+ nam
66a0: 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 66 6f espace delete fo
66b0: 6f 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75 6c o.+ set resul
66c0: 74 0a 2b 7d 20 7b 4d 59 55 4e 4b 4e 4f 57 4e 3a t.+} {MYUNKNOWN:
66d0: 20 64 75 6d 6d 79 20 61 20 62 20 63 7d 0a 2b 74 dummy a b c}.+t
66e0: 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 35 32 est namespace-52
66f0: 2e 38 20 7b 75 6e 6b 6e 6f 77 6e 3a 20 64 65 73 .8 {unknown: des
6700: 74 72 6f 79 69 6e 67 20 61 6e 64 20 72 65 64 65 troying and rede
6710: 66 69 6e 69 6e 67 20 67 6c 6f 62 61 6c 20 6e 61 fining global na
6720: 6d 65 73 70 61 63 65 7d 20 7b 0a 2b 20 20 20 20 mespace} {.+
6730: 73 65 74 20 69 20 5b 69 6e 74 65 72 70 20 63 72 set i [interp cr
6740: 65 61 74 65 5d 0a 2b 20 20 20 20 24 69 20 68 69 eate].+ $i hi
6750: 64 65 20 70 72 6f 63 0a 2b 20 20 20 20 24 69 20 de proc.+ $i
6760: 68 69 64 65 20 6e 61 6d 65 73 70 61 63 65 0a 2b hide namespace.+
6770: 20 20 20 20 24 69 20 68 69 64 65 20 72 65 74 75 $i hide retu
6780: 72 6e 0a 2b 20 20 20 20 24 69 20 69 6e 76 6f 6b rn.+ $i invok
6790: 65 68 69 64 64 65 6e 20 6e 61 6d 65 73 70 61 63 ehidden namespac
67a0: 65 20 64 65 6c 65 74 65 20 3a 3a 0a 2b 20 20 20 e delete ::.+
67b0: 20 24 69 20 65 78 70 6f 73 65 20 72 65 74 75 72 $i expose retur
67c0: 6e 0a 2b 20 20 20 20 24 69 20 69 6e 76 6f 6b 65 n.+ $i invoke
67d0: 68 69 64 64 65 6e 20 70 72 6f 63 20 75 6e 6b 6e hidden proc unkn
67e0: 6f 77 6e 20 61 72 67 73 20 7b 20 72 65 74 75 72 own args { retur
67f0: 6e 20 22 46 49 4e 45 22 20 7d 0a 2b 20 20 20 20 n "FINE" }.+
6800: 24 69 20 65 76 61 6c 20 7b 20 66 6f 6f 20 62 61 $i eval { foo ba
6810: 72 20 62 6f 62 20 7d 0a 2b 7d 20 7b 46 49 4e 45 r bob }.+} {FINE
6820: 7d 0a 2b 20 20 20 20 0a 20 23 20 63 6c 65 61 6e }.+ . # clean
6830: 75 70 0a 20 63 61 74 63 68 20 7b 72 65 6e 61 6d up. catch {renam
6840: 65 20 63 6d 64 31 20 7b 7d 7d 0a 20 63 61 74 63 e cmd1 {}}. catc
6850: 68 20 7b 75 6e 73 65 74 20 6c 7d 0a h {unset l}.