Attachment "tip181-5.patch" to
ticket [958222ffff]
added by
tallniel
2006-01-19 00:00:13.
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 31 36 3a 35 18 Jan 2006 16:5
0110: 36 3a 34 32 20 2d 30 30 30 30 0a 40 40 20 2d 31 6:42 -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 31 36 3a 35 36 3a 34 34 20 2d 30 30 30 30 6 16:56:44 -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 31 36 3a 35 36 3a 34 34 20 2d 2006 16:56:44 -
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 31 36 3a 35 36 3a 34 37 20 2d 30 30 30 30 0a 16:56:47 -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 31 36 c.18 Jan 2006 16
1a00: 3a 35 36 3a 35 34 20 2d 30 30 30 30 0a 40 40 20 :56:54 -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 32 20 40 40 0a 20 09 69 50 +3283,62 @@. .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 7d 0a 20 20 20 20 20 69 50 74 .+ }. iPt
20c0: 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 20 3d r->varFramePtr =
20d0: 20 73 61 76 65 64 56 61 72 46 72 61 6d 65 50 74 savedVarFramePt
20e0: 72 3b 0a 20 0a 20 20 20 20 20 69 66 20 28 63 6d r;. . if (cm
20f0: 64 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a dPtr == NULL) {.
2100: 2d 09 6e 65 77 4f 62 6a 76 20 3d 20 28 54 63 6c -.newObjv = (Tcl
2110: 5f 4f 62 6a 20 2a 2a 29 0a 2d 09 09 63 6b 61 6c _Obj **).-..ckal
2120: 6c 6f 63 28 28 75 6e 73 69 67 6e 65 64 29 20 28 loc((unsigned) (
2130: 28 6f 62 6a 63 20 2b 20 31 29 20 2a 20 73 69 7a (objc + 1) * siz
2140: 65 6f 66 28 54 63 6c 5f 4f 62 6a 20 2a 29 29 29 eof(Tcl_Obj *)))
2150: 3b 0a 2d 09 66 6f 72 20 28 69 20 3d 20 6f 62 6a ;.-.for (i = obj
2160: 63 2d 31 3b 20 69 20 3e 3d 20 30 3b 20 69 2d 2d c-1; i >= 0; i--
2170: 29 20 7b 0a 2d 09 20 20 20 20 6e 65 77 4f 62 6a ) {.-. newObj
2180: 76 5b 69 2b 31 5d 20 3d 20 6f 62 6a 76 5b 69 5d v[i+1] = objv[i]
2190: 3b 0a 2d 09 7d 0a 2d 09 6e 65 77 4f 62 6a 76 5b ;.-.}.-.newObjv[
21a0: 30 5d 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 69 0] = Tcl_NewStri
21b0: 6e 67 4f 62 6a 28 22 3a 3a 75 6e 6b 6e 6f 77 6e ngObj("::unknown
21c0: 22 2c 20 2d 31 29 3b 0a 2b 20 20 20 20 20 20 20 ", -1);.+
21d0: 20 69 6e 74 20 6e 65 77 4f 62 6a 63 2c 20 68 61 int newObjc, ha
21e0: 6e 64 6c 65 72 4f 62 6a 63 3b 0a 2b 20 20 20 20 ndlerObjc;.+
21f0: 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 2a 68 61 Tcl_Obj **ha
2200: 6e 64 6c 65 72 4f 62 6a 76 3b 0a 2b 20 20 20 20 ndlerObjv;.+
2210: 20 20 20 20 2f 2a 0a 2b 20 20 20 20 20 20 20 20 /*.+
2220: 20 2a 20 43 68 65 63 6b 20 69 66 20 74 68 65 72 * Check if ther
2230: 65 20 69 73 20 61 6e 20 75 6e 6b 6e 6f 77 6e 20 e is an unknown
2240: 68 61 6e 64 6c 65 72 20 72 65 67 69 73 74 65 72 handler register
2250: 65 64 20 66 6f 72 20 74 68 69 73 20 6e 61 6d 65 ed for this name
2260: 73 70 61 63 65 2e 0a 2b 20 20 20 20 20 20 20 20 space..+
2270: 20 2a 20 4f 74 68 65 72 77 69 73 65 2c 20 75 73 * Otherwise, us
2280: 65 20 74 68 65 20 67 6c 6f 62 61 6c 20 6e 61 6d e the global nam
2290: 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 20 68 espace unknown h
22a0: 61 6e 64 6c 65 72 2e 0a 2b 20 20 20 20 20 20 20 andler..+
22b0: 20 20 2a 2f 0a 2b 20 20 20 20 20 20 20 20 69 66 */.+ if
22c0: 20 28 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b (currNsPtr->unk
22d0: 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 3d nownHandlerPtr =
22e0: 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 20 20 20 20 20 = NULL) {.+
22f0: 20 20 20 20 20 20 20 63 75 72 72 4e 73 50 74 72 currNsPtr
2300: 20 3d 20 69 50 74 72 2d 3e 67 6c 6f 62 61 6c 4e = iPtr->globalN
2310: 73 50 74 72 3b 0a 2b 20 20 20 20 20 20 20 20 7d sPtr;.+ }
2320: 0a 2b 20 20 20 20 20 20 20 20 69 66 20 28 63 75 .+ if (cu
2330: 72 72 4e 73 50 74 72 20 3d 3d 20 69 50 74 72 2d rrNsPtr == iPtr-
2340: 3e 67 6c 6f 62 61 6c 4e 73 50 74 72 20 26 26 0a >globalNsPtr &&.
2350: 2b 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 + cur
2360: 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 rNsPtr->unknownH
2370: 61 6e 64 6c 65 72 50 74 72 20 3d 3d 20 4e 55 4c andlerPtr == NUL
2380: 4c 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 L) {.+
2390: 20 20 2f 2a 20 47 6c 6f 62 61 6c 20 6e 61 6d 65 /* Global name
23a0: 73 70 61 63 65 20 68 61 73 20 6c 6f 73 74 20 75 space has lost u
23b0: 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 2c 20 nknown handler,
23c0: 72 65 73 65 74 2e 20 2a 2f 0a 2b 20 20 20 20 20 reset. */.+
23d0: 20 20 20 20 20 20 20 63 75 72 72 4e 73 50 74 72 currNsPtr
23e0: 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 ->unknownHandler
23f0: 50 74 72 20 3d 0a 2b 20 20 20 20 20 20 20 20 20 Ptr =.+
2400: 20 20 20 20 20 20 20 54 63 6c 5f 4e 65 77 53 74 Tcl_NewSt
2410: 72 69 6e 67 4f 62 6a 28 22 3a 3a 75 6e 6b 6e 6f ringObj("::unkno
2420: 77 6e 22 2c 20 2d 31 29 3b 0a 2b 20 20 20 20 20 wn", -1);.+
2430: 20 20 20 20 20 20 20 54 63 6c 5f 49 6e 63 72 52 Tcl_IncrR
2440: 65 66 43 6f 75 6e 74 28 63 75 72 72 4e 73 50 74 efCount(currNsPt
2450: 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 r->unknownHandle
2460: 72 50 74 72 29 3b 0a 2b 20 20 20 20 20 20 20 20 rPtr);.+
2470: 7d 0a 2b 20 20 20 20 20 20 20 20 69 66 20 28 54 }.+ if (T
2480: 63 6c 5f 4c 69 73 74 4f 62 6a 47 65 74 45 6c 65 cl_ListObjGetEle
2490: 6d 65 6e 74 73 28 69 6e 74 65 72 70 2c 0a 2b 20 ments(interp,.+
24a0: 20 20 20 20 20 20 20 20 20 20 20 63 75 72 72 4e currN
24b0: 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e sPtr->unknownHan
24c0: 64 6c 65 72 50 74 72 2c 20 26 68 61 6e 64 6c 65 dlerPtr, &handle
24d0: 72 4f 62 6a 63 2c 20 26 68 61 6e 64 6c 65 72 4f rObjc, &handlerO
24e0: 62 6a 76 29 0a 2b 20 20 20 20 20 20 20 20 20 20 bjv).+
24f0: 20 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2b != TCL_OK) {.+
2500: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
2510: 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b 20 rn TCL_ERROR;.+
2520: 20 20 20 20 20 20 20 7d 0a 2b 20 20 20 20 20 20 }.+
2530: 20 20 6e 65 77 4f 62 6a 63 20 3d 20 6f 62 6a 63 newObjc = objc
2540: 20 2b 20 68 61 6e 64 6c 65 72 4f 62 6a 63 3b 0a + handlerObjc;.
2550: 2b 09 6e 65 77 4f 62 6a 76 20 3d 20 28 54 63 6c +.newObjv = (Tcl
2560: 5f 4f 62 6a 20 2a 2a 29 20 63 6b 61 6c 6c 6f 63 _Obj **) ckalloc
2570: 28 28 75 6e 73 69 67 6e 65 64 29 0a 2b 20 20 20 ((unsigned).+
2580: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 65 (ne
2590: 77 4f 62 6a 63 20 2a 20 73 69 7a 65 6f 66 28 54 wObjc * sizeof(T
25a0: 63 6c 5f 4f 62 6a 20 2a 29 29 29 3b 0a 2b 20 20 cl_Obj *)));.+
25b0: 20 20 20 20 20 20 2f 2a 20 43 6f 70 79 20 63 6f /* Copy co
25c0: 6d 6d 61 6e 64 20 70 72 65 66 69 78 20 66 72 6f mmand prefix fro
25d0: 6d 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 m unknown handle
25e0: 72 2e 20 2a 2f 0a 2b 20 20 20 20 20 20 20 20 66 r. */.+ f
25f0: 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 68 or (i = 0; i < h
2600: 61 6e 64 6c 65 72 4f 62 6a 63 3b 20 2b 2b 69 29 andlerObjc; ++i)
2610: 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 {.+
2620: 6e 65 77 4f 62 6a 76 5b 69 5d 20 3d 20 68 61 6e newObjv[i] = han
2630: 64 6c 65 72 4f 62 6a 76 5b 69 5d 3b 0a 2b 20 20 dlerObjv[i];.+
2640: 20 20 20 20 20 20 7d 0a 2b 20 20 20 20 20 20 20 }.+
2650: 20 2f 2a 20 41 64 64 20 69 6e 20 63 6f 6d 6d 61 /* Add in comma
2660: 6e 64 20 6e 61 6d 65 20 61 6e 64 20 61 72 67 75 nd name and argu
2670: 6d 65 6e 74 73 2e 20 2a 2f 0a 2b 20 20 20 20 20 ments. */.+
2680: 20 20 20 66 6f 72 20 28 69 20 3d 20 6f 62 6a 63 for (i = objc
2690: 2d 31 3b 20 69 20 3e 3d 20 30 3b 20 2d 2d 69 29 -1; i >= 0; --i)
26a0: 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 {.+
26b0: 6e 65 77 4f 62 6a 76 5b 69 2b 68 61 6e 64 6c 65 newObjv[i+handle
26c0: 72 4f 62 6a 63 5d 20 3d 20 6f 62 6a 76 5b 69 5d rObjc] = objv[i]
26d0: 3b 0a 2b 20 20 20 20 20 20 20 20 7d 0a 20 09 54 ;.+ }. .T
26e0: 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 cl_IncrRefCount(
26f0: 6e 65 77 4f 62 6a 76 5b 30 5d 29 3b 0a 20 09 63 newObjv[0]);. .c
2700: 6d 64 50 74 72 20 3d 20 28 43 6f 6d 6d 61 6e 64 mdPtr = (Command
2710: 20 2a 29 20 54 63 6c 5f 47 65 74 43 6f 6d 6d 61 *) Tcl_GetComma
2720: 6e 64 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 ndFromObj(interp
2730: 2c 20 6e 65 77 4f 62 6a 76 5b 30 5d 29 3b 0a 2b , newObjv[0]);.+
2740: 20 20 20 20 20 20 20 20 0a 20 09 69 66 20 28 63 . .if (c
2750: 6d 64 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b mdPtr == NULL) {
2760: 0a 20 09 20 20 20 20 54 63 6c 5f 41 70 70 65 6e . . Tcl_Appen
2770: 64 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 dResult(interp,
2780: 22 69 6e 76 61 6c 69 64 20 63 6f 6d 6d 61 6e 64 "invalid command
2790: 20 6e 61 6d 65 20 5c 22 22 2c 0a 20 09 09 20 20 name \"",. ..
27a0: 20 20 54 63 6c 47 65 74 53 74 72 69 6e 67 28 6f TclGetString(o
27b0: 62 6a 76 5b 30 5d 29 2c 20 22 5c 22 22 2c 20 4e bjv[0]), "\"", N
27c0: 55 4c 4c 29 3b 0a 20 09 20 20 20 20 63 6f 64 65 ULL);. . code
27d0: 20 3d 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 09 = TCL_ERROR;. .
27e0: 7d 20 65 6c 73 65 20 7b 0a 20 09 20 20 20 20 69 } else {. . i
27f0: 50 74 72 2d 3e 6e 75 6d 4c 65 76 65 6c 73 2b 2b Ptr->numLevels++
2800: 3b 0a 2d 09 20 20 20 20 63 6f 64 65 20 3d 20 54 ;.-. code = T
2810: 63 6c 45 76 61 6c 4f 62 6a 76 49 6e 74 65 72 6e clEvalObjvIntern
2820: 61 6c 28 69 6e 74 65 72 70 2c 20 6f 62 6a 63 2b al(interp, objc+
2830: 31 2c 20 6e 65 77 4f 62 6a 76 2c 0a 2d 09 09 20 1, newObjv,.-..
2840: 20 20 20 63 6f 6d 6d 61 6e 64 2c 20 6c 65 6e 67 command, leng
2850: 74 68 2c 20 30 29 3b 0a 2b 09 20 20 20 20 63 6f th, 0);.+. co
2860: 64 65 20 3d 20 54 63 6c 45 76 61 6c 4f 62 6a 76 de = TclEvalObjv
2870: 49 6e 74 65 72 6e 61 6c 28 69 6e 74 65 72 70 2c Internal(interp,
2880: 20 6e 65 77 4f 62 6a 63 2c 20 6e 65 77 4f 62 6a newObjc, newObj
2890: 76 2c 20 63 6f 6d 6d 61 6e 64 2c 0a 2b 09 09 09 v, command,.+...
28a0: 20 20 20 20 6c 65 6e 67 74 68 2c 20 30 29 3b 0a length, 0);.
28b0: 20 09 20 20 20 20 69 50 74 72 2d 3e 6e 75 6d 4c . iPtr->numL
28c0: 65 76 65 6c 73 2d 2d 3b 0a 20 09 7d 0a 20 09 54 evels--;. .}. .T
28d0: 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 cl_DecrRefCount(
28e0: 6e 65 77 4f 62 6a 76 5b 30 5d 29 3b 0a 49 6e 64 newObjv[0]);.Ind
28f0: 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 44 ex: generic/tclD
2900: 65 63 6c 73 2e 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d ecls.h.=========
2910: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2920: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2930: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
2940: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 ==========.RCS f
2950: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 ile: /cvsroot/tc
2960: 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 l/tcl/generic/tc
2970: 6c 44 65 63 6c 73 2e 68 2c 76 0a 72 65 74 72 69 lDecls.h,v.retri
2980: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 eving revision 1
2990: 2e 31 32 30 0a 64 69 66 66 20 2d 75 20 2d 72 31 .120.diff -u -r1
29a0: 2e 31 32 30 20 74 63 6c 44 65 63 6c 73 2e 68 0a .120 tclDecls.h.
29b0: 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 44 --- generic/tclD
29c0: 65 63 6c 73 2e 68 09 32 37 20 44 65 63 20 32 30 ecls.h.27 Dec 20
29d0: 30 35 20 32 30 3a 31 34 3a 30 38 20 2d 30 30 30 05 20:14:08 -000
29e0: 30 09 31 2e 31 32 30 0a 2b 2b 2b 20 67 65 6e 65 0.1.120.+++ gene
29f0: 72 69 63 2f 74 63 6c 44 65 63 6c 73 2e 68 09 31 ric/tclDecls.h.1
2a00: 38 20 4a 61 6e 20 32 30 30 36 20 31 36 3a 35 37 8 Jan 2006 16:57
2a10: 3a 30 34 20 2d 30 30 30 30 0a 40 40 20 2d 33 35 :04 -0000.@@ -35
2a20: 33 34 2c 36 20 2b 33 35 33 34 2c 31 39 20 40 40 34,6 +3534,19 @@
2a30: 0a 20 09 09 09 09 54 63 6c 5f 49 6e 74 65 72 70 . ....Tcl_Interp
2a40: 2a 20 69 6e 74 65 72 70 2c 20 64 6f 75 62 6c 65 * interp, double
2a50: 20 69 6e 69 74 76 61 6c 2c 20 0a 20 09 09 09 09 initval, . ....
2a60: 6d 70 5f 69 6e 74 20 2a 20 74 6f 49 6e 69 74 29 mp_int * toInit)
2a70: 29 3b 0a 20 23 65 6e 64 69 66 0a 2b 23 69 66 6e );. #endif.+#ifn
2a80: 64 65 66 20 54 63 6c 5f 47 65 74 4e 61 6d 65 73 def Tcl_GetNames
2a90: 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c paceUnknownHandl
2aa0: 65 72 5f 54 43 4c 5f 44 45 43 4c 41 52 45 44 0a er_TCL_DECLARED.
2ab0: 2b 23 64 65 66 69 6e 65 20 54 63 6c 5f 47 65 74 +#define Tcl_Get
2ac0: 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e NamespaceUnknown
2ad0: 48 61 6e 64 6c 65 72 5f 54 43 4c 5f 44 45 43 4c Handler_TCL_DECL
2ae0: 41 52 45 44 0a 2b 2f 2a 20 35 36 37 20 2a 2f 0a ARED.+/* 567 */.
2af0: 2b 45 58 54 45 52 4e 20 54 63 6c 5f 4f 62 6a 20 +EXTERN Tcl_Obj
2b00: 2a 09 54 63 6c 5f 47 65 74 4e 61 6d 65 73 70 61 *.Tcl_GetNamespa
2b10: 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 ceUnknownHandler
2b20: 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 0a 2b _ANSI_ARGS_((.+
2b30: 09 09 09 09 54 63 6c 5f 49 6e 74 65 72 70 20 2a ....Tcl_Interp *
2b40: 20 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4e 61 6d interp, Tcl_Nam
2b50: 65 73 70 61 63 65 20 2a 20 6e 73 50 74 72 29 29 espace * nsPtr))
2b60: 3b 0a 2b 23 65 6e 64 69 66 0a 2b 23 69 66 6e 64 ;.+#endif.+#ifnd
2b70: 65 66 20 54 63 6c 5f 53 65 74 4e 61 6d 65 73 70 ef Tcl_SetNamesp
2b80: 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 aceUnknownHandle
2b90: 72 5f 54 43 4c 5f 44 45 43 4c 41 52 45 44 0a 2b r_TCL_DECLARED.+
2ba0: 23 64 65 66 69 6e 65 20 54 63 6c 5f 53 65 74 4e #define Tcl_SetN
2bb0: 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 amespaceUnknownH
2bc0: 61 6e 64 6c 65 72 5f 54 43 4c 5f 44 45 43 4c 41 andler_TCL_DECLA
2bd0: 52 45 44 0a 2b 2f 2a 20 35 36 38 20 2a 2f 0a 2b RED.+/* 568 */.+
2be0: 45 58 54 45 52 4e 20 69 6e 74 09 09 54 63 6c 5f EXTERN int..Tcl_
2bf0: 53 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e SetNamespaceUnkn
2c00: 6f 77 6e 48 61 6e 64 6c 65 72 20 5f 41 4e 53 49 ownHandler _ANSI
2c10: 5f 41 52 47 53 5f 28 28 0a 2b 09 09 09 09 54 63 _ARGS_((.+....Tc
2c20: 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 65 72 l_Interp * inter
2c30: 70 2c 20 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 p, Tcl_Namespace
2c40: 20 2a 20 6e 73 50 74 72 2c 20 0a 2b 09 09 09 09 * nsPtr, .+....
2c50: 54 63 6c 5f 4f 62 6a 20 2a 20 68 61 6e 64 6c 65 Tcl_Obj * handle
2c60: 72 50 74 72 29 29 3b 0a 2b 23 65 6e 64 69 66 0a rPtr));.+#endif.
2c70: 20 0a 20 74 79 70 65 64 65 66 20 73 74 72 75 63 . typedef struc
2c80: 74 20 54 63 6c 53 74 75 62 48 6f 6f 6b 73 20 7b t TclStubHooks {
2c90: 0a 20 20 20 20 20 73 74 72 75 63 74 20 54 63 6c . struct Tcl
2ca0: 50 6c 61 74 53 74 75 62 73 20 2a 74 63 6c 50 6c PlatStubs *tclPl
2cb0: 61 74 53 74 75 62 73 3b 0a 40 40 20 2d 34 31 34 atStubs;.@@ -414
2cc0: 32 2c 36 20 2b 34 31 35 35 2c 38 20 40 40 0a 20 2,6 +4155,8 @@.
2cd0: 20 20 20 20 76 6f 69 64 20 28 2a 74 63 6c 5f 53 void (*tcl_S
2ce0: 65 74 43 68 61 6e 6e 65 6c 45 72 72 6f 72 29 20 etChannelError)
2cf0: 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c _ANSI_ARGS_((Tcl
2d00: 5f 43 68 61 6e 6e 65 6c 20 63 68 61 6e 2c 20 54 _Channel chan, T
2d10: 63 6c 5f 4f 62 6a 2a 20 6d 73 67 29 29 3b 20 2f cl_Obj* msg)); /
2d20: 2a 20 35 36 34 20 2a 2f 0a 20 20 20 20 20 76 6f * 564 */. vo
2d30: 69 64 20 28 2a 74 63 6c 5f 47 65 74 43 68 61 6e id (*tcl_GetChan
2d40: 6e 65 6c 45 72 72 6f 72 29 20 5f 41 4e 53 49 5f nelError) _ANSI_
2d50: 41 52 47 53 5f 28 28 54 63 6c 5f 43 68 61 6e 6e ARGS_((Tcl_Chann
2d60: 65 6c 20 63 68 61 6e 2c 20 54 63 6c 5f 4f 62 6a el chan, Tcl_Obj
2d70: 2a 2a 20 6d 73 67 29 29 3b 20 2f 2a 20 35 36 35 ** msg)); /* 565
2d80: 20 2a 2f 0a 20 20 20 20 20 69 6e 74 20 28 2a 74 */. int (*t
2d90: 63 6c 5f 49 6e 69 74 42 69 67 6e 75 6d 46 72 6f cl_InitBignumFro
2da0: 6d 44 6f 75 62 6c 65 29 20 5f 41 4e 53 49 5f 41 mDouble) _ANSI_A
2db0: 52 47 53 5f 28 28 54 63 6c 5f 49 6e 74 65 72 70 RGS_((Tcl_Interp
2dc0: 2a 20 69 6e 74 65 72 70 2c 20 64 6f 75 62 6c 65 * interp, double
2dd0: 20 69 6e 69 74 76 61 6c 2c 20 6d 70 5f 69 6e 74 initval, mp_int
2de0: 20 2a 20 74 6f 49 6e 69 74 29 29 3b 20 2f 2a 20 * toInit)); /*
2df0: 35 36 36 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 566 */.+ Tcl_
2e00: 4f 62 6a 20 2a 20 28 2a 74 63 6c 5f 47 65 74 4e Obj * (*tcl_GetN
2e10: 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 amespaceUnknownH
2e20: 61 6e 64 6c 65 72 29 20 5f 41 4e 53 49 5f 41 52 andler) _ANSI_AR
2e30: 47 53 5f 28 28 54 63 6c 5f 49 6e 74 65 72 70 20 GS_((Tcl_Interp
2e40: 2a 20 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4e 61 * interp, Tcl_Na
2e50: 6d 65 73 70 61 63 65 20 2a 20 6e 73 50 74 72 29 mespace * nsPtr)
2e60: 29 3b 20 2f 2a 20 35 36 37 20 2a 2f 0a 2b 20 20 ); /* 567 */.+
2e70: 20 20 69 6e 74 20 28 2a 74 63 6c 5f 53 65 74 4e int (*tcl_SetN
2e80: 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 amespaceUnknownH
2e90: 61 6e 64 6c 65 72 29 20 5f 41 4e 53 49 5f 41 52 andler) _ANSI_AR
2ea0: 47 53 5f 28 28 54 63 6c 5f 49 6e 74 65 72 70 20 GS_((Tcl_Interp
2eb0: 2a 20 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4e 61 * interp, Tcl_Na
2ec0: 6d 65 73 70 61 63 65 20 2a 20 6e 73 50 74 72 2c mespace * nsPtr,
2ed0: 20 54 63 6c 5f 4f 62 6a 20 2a 20 68 61 6e 64 6c Tcl_Obj * handl
2ee0: 65 72 50 74 72 29 29 3b 20 2f 2a 20 35 36 38 20 erPtr)); /* 568
2ef0: 2a 2f 0a 20 7d 20 54 63 6c 53 74 75 62 73 3b 0a */. } TclStubs;.
2f00: 20 0a 20 23 69 66 64 65 66 20 5f 5f 63 70 6c 75 . #ifdef __cplu
2f10: 73 70 6c 75 73 0a 40 40 20 2d 36 34 35 30 2c 36 splus.@@ -6450,6
2f20: 20 2b 36 34 36 35 2c 31 34 20 40 40 0a 20 23 64 +6465,14 @@. #d
2f30: 65 66 69 6e 65 20 54 63 6c 5f 49 6e 69 74 42 69 efine Tcl_InitBi
2f40: 67 6e 75 6d 46 72 6f 6d 44 6f 75 62 6c 65 20 5c gnumFromDouble \
2f50: 0a 20 09 28 74 63 6c 53 74 75 62 73 50 74 72 2d . .(tclStubsPtr-
2f60: 3e 74 63 6c 5f 49 6e 69 74 42 69 67 6e 75 6d 46 >tcl_InitBignumF
2f70: 72 6f 6d 44 6f 75 62 6c 65 29 20 2f 2a 20 35 36 romDouble) /* 56
2f80: 36 20 2a 2f 0a 20 23 65 6e 64 69 66 0a 2b 23 69 6 */. #endif.+#i
2f90: 66 6e 64 65 66 20 54 63 6c 5f 47 65 74 4e 61 6d fndef Tcl_GetNam
2fa0: 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e espaceUnknownHan
2fb0: 64 6c 65 72 0a 2b 23 64 65 66 69 6e 65 20 54 63 dler.+#define Tc
2fc0: 6c 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e l_GetNamespaceUn
2fd0: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 20 5c 0a 2b knownHandler \.+
2fe0: 09 28 74 63 6c 53 74 75 62 73 50 74 72 2d 3e 74 .(tclStubsPtr->t
2ff0: 63 6c 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55 cl_GetNamespaceU
3000: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 29 20 2f nknownHandler) /
3010: 2a 20 35 36 37 20 2a 2f 0a 2b 23 65 6e 64 69 66 * 567 */.+#endif
3020: 0a 2b 23 69 66 6e 64 65 66 20 54 63 6c 5f 53 65 .+#ifndef Tcl_Se
3030: 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 tNamespaceUnknow
3040: 6e 48 61 6e 64 6c 65 72 0a 2b 23 64 65 66 69 6e nHandler.+#defin
3050: 65 20 54 63 6c 5f 53 65 74 4e 61 6d 65 73 70 61 e Tcl_SetNamespa
3060: 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 ceUnknownHandler
3070: 20 5c 0a 2b 09 28 74 63 6c 53 74 75 62 73 50 74 \.+.(tclStubsPt
3080: 72 2d 3e 74 63 6c 5f 53 65 74 4e 61 6d 65 73 70 r->tcl_SetNamesp
3090: 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 aceUnknownHandle
30a0: 72 29 20 2f 2a 20 35 36 38 20 2a 2f 0a 2b 23 65 r) /* 568 */.+#e
30b0: 6e 64 69 66 0a 20 0a 20 23 65 6e 64 69 66 20 2f ndif. . #endif /
30c0: 2a 20 64 65 66 69 6e 65 64 28 55 53 45 5f 54 43 * defined(USE_TC
30d0: 4c 5f 53 54 55 42 53 29 20 26 26 20 21 64 65 66 L_STUBS) && !def
30e0: 69 6e 65 64 28 55 53 45 5f 54 43 4c 5f 53 54 55 ined(USE_TCL_STU
30f0: 42 5f 50 52 4f 43 53 29 20 2a 2f 0a 20 0a 49 6e B_PROCS) */. .In
3100: 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c dex: generic/tcl
3110: 49 6e 74 2e 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d Int.h.==========
3120: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3130: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3140: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3150: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 =========.RCS fi
3160: 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c le: /cvsroot/tcl
3170: 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c /tcl/generic/tcl
3180: 49 6e 74 2e 68 2c 76 0a 72 65 74 72 69 65 76 69 Int.h,v.retrievi
3190: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 32 36 ng revision 1.26
31a0: 34 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 32 36 4.diff -u -r1.26
31b0: 34 20 74 63 6c 49 6e 74 2e 68 0a 2d 2d 2d 20 67 4 tclInt.h.--- g
31c0: 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e 68 09 eneric/tclInt.h.
31d0: 32 37 20 44 65 63 20 32 30 30 35 20 32 30 3a 31 27 Dec 2005 20:1
31e0: 34 3a 30 39 20 2d 30 30 30 30 09 31 2e 32 36 34 4:09 -0000.1.264
31f0: 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c .+++ generic/tcl
3200: 49 6e 74 2e 68 09 31 38 20 4a 61 6e 20 32 30 30 Int.h.18 Jan 200
3210: 36 20 31 36 3a 35 37 3a 31 30 20 2d 30 30 30 30 6 16:57:10 -0000
3220: 0a 40 40 20 2d 32 36 33 2c 36 20 2b 32 36 33 2c .@@ -263,6 +263,
3230: 39 20 40 40 0a 20 20 20 20 20 54 63 6c 5f 45 6e 9 @@. Tcl_En
3240: 73 65 6d 62 6c 65 20 2a 65 6e 73 65 6d 62 6c 65 semble *ensemble
3250: 73 3b 09 2f 2a 20 4c 69 73 74 20 6f 66 20 73 74 s;./* List of st
3260: 72 75 63 74 75 72 65 73 20 74 68 61 74 20 63 6f ructures that co
3270: 6e 74 61 69 6e 20 74 68 65 20 64 65 74 61 69 6c ntain the detail
3280: 73 0a 20 09 09 09 09 20 2a 20 6f 66 20 74 68 65 s. .... * of the
3290: 20 65 6e 73 65 6d 62 6c 65 73 20 74 68 61 74 20 ensembles that
32a0: 61 72 65 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 are implemented
32b0: 6f 6e 0a 20 09 09 09 09 20 2a 20 74 6f 70 20 6f on. .... * top o
32c0: 66 20 74 68 69 73 20 6e 61 6d 65 73 70 61 63 65 f this namespace
32d0: 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 . */.+ Tcl_Ob
32e0: 6a 20 2a 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 j *unknownHandle
32f0: 72 50 74 72 3b 09 2f 2a 20 41 20 73 63 72 69 70 rPtr;./* A scrip
3300: 74 20 66 72 61 67 6d 65 6e 74 20 74 6f 20 62 65 t fragment to be
3310: 20 75 73 65 64 20 77 68 65 6e 20 63 6f 6d 6d 61 used when comma
3320: 6e 64 0a 2b 09 09 09 09 20 2a 20 72 65 73 6f 6c nd.+.... * resol
3330: 75 74 69 6f 6e 20 69 6e 20 74 68 69 73 20 6e 61 ution in this na
3340: 6d 65 73 70 61 63 65 20 66 61 69 6c 73 2e 20 54 mespace fails. T
3350: 49 50 0a 2b 09 09 09 09 20 2a 20 31 38 31 2e 20 IP.+.... * 181.
3360: 2a 2f 0a 20 20 20 20 20 69 6e 74 20 63 6f 6d 6d */. int comm
3370: 61 6e 64 50 61 74 68 4c 65 6e 67 74 68 3b 09 2f andPathLength;./
3380: 2a 20 54 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 * The length of
3390: 74 68 65 20 65 78 70 6c 69 63 69 74 20 70 61 74 the explicit pat
33a0: 68 2e 20 2a 2f 0a 20 20 20 20 20 4e 61 6d 65 73 h. */. Names
33b0: 70 61 63 65 50 61 74 68 45 6e 74 72 79 20 2a 63 pacePathEntry *c
33c0: 6f 6d 6d 61 6e 64 50 61 74 68 41 72 72 61 79 3b ommandPathArray;
33d0: 0a 20 09 09 09 09 2f 2a 20 54 68 65 20 65 78 70 . ..../* The exp
33e0: 6c 69 63 69 74 20 70 61 74 68 20 6f 66 20 74 68 licit path of th
33f0: 65 20 6e 61 6d 65 73 70 61 63 65 20 61 73 20 61 e namespace as a
3400: 6e 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 n.Index: generic
3410: 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 0a 3d 3d 3d /tclNamesp.c.===
3420: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3430: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3440: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3450: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3460: 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 .RCS file: /cvsr
3470: 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 oot/tcl/tcl/gene
3480: 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 2c ric/tclNamesp.c,
3490: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 v.retrieving rev
34a0: 69 73 69 6f 6e 20 31 2e 39 31 0a 64 69 66 66 20 ision 1.91.diff
34b0: 2d 75 20 2d 72 31 2e 39 31 20 74 63 6c 4e 61 6d -u -r1.91 tclNam
34c0: 65 73 70 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 esp.c.--- generi
34d0: 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 09 31 31 c/tclNamesp.c.11
34e0: 20 4a 61 6e 20 32 30 30 36 20 31 37 3a 33 34 3a Jan 2006 17:34:
34f0: 35 33 20 2d 30 30 30 30 09 31 2e 39 31 0a 2b 2b 53 -0000.1.91.++
3500: 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d + generic/tclNam
3510: 65 73 70 2e 63 09 31 38 20 4a 61 6e 20 32 30 30 esp.c.18 Jan 200
3520: 36 20 31 36 3a 35 37 3a 32 32 20 2d 30 30 30 30 6 16:57:22 -0000
3530: 0a 40 40 20 2d 31 32 2c 36 20 2b 31 32 2c 37 20 .@@ -12,6 +12,7
3540: 40 40 0a 20 20 2a 20 43 6f 70 79 72 69 67 68 74 @@. * Copyright
3550: 20 28 63 29 20 31 39 39 37 20 53 75 6e 20 4d 69 (c) 1997 Sun Mi
3560: 63 72 6f 73 79 73 74 65 6d 73 2c 20 49 6e 63 2e crosystems, Inc.
3570: 0a 20 20 2a 20 43 6f 70 79 72 69 67 68 74 20 28 . * Copyright (
3580: 63 29 20 31 39 39 38 2d 31 39 39 39 20 62 79 20 c) 1998-1999 by
3590: 53 63 72 69 70 74 69 63 73 20 43 6f 72 70 6f 72 Scriptics Corpor
35a0: 61 74 69 6f 6e 2e 0a 20 20 2a 20 43 6f 70 79 72 ation.. * Copyr
35b0: 69 67 68 74 20 28 63 29 20 32 30 30 32 2d 32 30 ight (c) 2002-20
35c0: 30 35 20 44 6f 6e 61 6c 20 4b 2e 20 46 65 6c 6c 05 Donal K. Fell
35d0: 6f 77 73 2e 0a 2b 20 2a 20 43 6f 70 79 72 69 67 ows..+ * Copyrig
35e0: 68 74 20 28 63 29 20 32 30 30 36 20 4e 65 69 6c ht (c) 2006 Neil
35f0: 20 4d 61 64 64 65 6e 2e 0a 20 20 2a 0a 20 20 2a Madden.. *. *
3600: 20 4f 72 69 67 69 6e 61 6c 6c 79 20 69 6d 70 6c Originally impl
3610: 65 6d 65 6e 74 65 64 20 62 79 0a 20 20 2a 20 20 emented by. *
3620: 20 4d 69 63 68 61 65 6c 20 4a 2e 20 4d 63 4c 65 Michael J. McLe
3630: 6e 6e 61 6e 0a 40 40 20 2d 32 32 38 2c 36 20 2b nnan.@@ -228,6 +
3640: 32 32 39 2c 39 20 40 40 0a 20 09 09 09 20 20 20 229,9 @@. ...
3650: 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 Tcl_Interp *int
3660: 65 72 70 2c 69 6e 74 20 6f 62 6a 63 2c 54 63 6c erp,int objc,Tcl
3670: 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 _Obj *CONST objv
3680: 5b 5d 29 3b 0a 20 73 74 61 74 69 63 20 69 6e 74 []);. static int
3690: 09 09 4e 61 6d 65 73 70 61 63 65 54 61 69 6c 43 ..NamespaceTailC
36a0: 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 20 64 75 md(ClientData du
36b0: 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74 65 72 70 20 mmy, Tcl_Interp
36c0: 2a 69 6e 74 65 72 70 2c 0a 20 09 09 09 20 20 20 *interp,. ...
36d0: 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f int objc, Tcl_O
36e0: 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d bj *CONST objv[]
36f0: 29 3b 0a 2b 73 74 61 74 69 63 20 69 6e 74 20 20 );.+static int
3700: 20 20 20 20 20 20 20 20 20 20 20 20 4e 61 6d 65 Name
3710: 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 43 6d 64 28 spaceUnknownCmd(
3720: 43 6c 69 65 6e 74 44 61 74 61 20 64 75 6d 6d 79 ClientData dummy
3730: 2c 20 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 , .+
3740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3750: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 Tcl_Interp *inte
3760: 72 70 2c 20 69 6e 74 20 6f 62 6a 63 2c 20 0a 2b rp, int objc, .+
3770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3780: 20 20 20 20 20 20 20 20 20 20 20 20 54 63 6c 5f Tcl_
3790: 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b Obj *CONST objv[
37a0: 5d 29 3b 0a 20 73 74 61 74 69 63 20 69 6e 74 09 ]);. static int.
37b0: 09 4e 61 6d 65 73 70 61 63 65 57 68 69 63 68 43 .NamespaceWhichC
37c0: 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 20 64 75 md(ClientData du
37d0: 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74 65 72 70 20 mmy, Tcl_Interp
37e0: 2a 69 6e 74 65 72 70 2c 0a 20 09 09 09 20 20 20 *interp,. ...
37f0: 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f int objc, Tcl_O
3800: 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d bj *CONST objv[]
3810: 29 3b 0a 20 73 74 61 74 69 63 20 69 6e 74 09 09 );. static int..
3820: 53 65 74 4e 73 4e 61 6d 65 46 72 6f 6d 41 6e 79 SetNsNameFromAny
3830: 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 (Tcl_Interp *int
3840: 65 72 70 2c 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62 erp, Tcl_Obj *ob
3850: 6a 50 74 72 29 3b 0a 40 40 20 2d 38 31 34 2c 36 jPtr);.@@ -814,6
3860: 20 2b 38 31 38 2c 37 20 40 40 0a 20 20 20 20 20 +818,7 @@.
3870: 6e 73 50 74 72 2d 3e 63 6f 6d 70 69 6c 65 64 56 nsPtr->compiledV
3880: 61 72 52 65 73 50 72 6f 63 20 3d 20 4e 55 4c 4c arResProc = NULL
3890: 3b 0a 20 20 20 20 20 6e 73 50 74 72 2d 3e 65 78 ;. nsPtr->ex
38a0: 70 6f 72 74 4c 6f 6f 6b 75 70 45 70 6f 63 68 20 portLookupEpoch
38b0: 3d 20 30 3b 0a 20 20 20 20 20 6e 73 50 74 72 2d = 0;. nsPtr-
38c0: 3e 65 6e 73 65 6d 62 6c 65 73 20 3d 20 4e 55 4c >ensembles = NUL
38d0: 4c 3b 0a 2b 20 20 20 20 6e 73 50 74 72 2d 3e 75 L;.+ nsPtr->u
38e0: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 nknownHandlerPtr
38f0: 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 6e 73 = NULL;. ns
3900: 50 74 72 2d 3e 63 6f 6d 6d 61 6e 64 50 61 74 68 Ptr->commandPath
3910: 4c 65 6e 67 74 68 20 3d 20 30 3b 0a 20 20 20 20 Length = 0;.
3920: 20 6e 73 50 74 72 2d 3e 63 6f 6d 6d 61 6e 64 50 nsPtr->commandP
3930: 61 74 68 41 72 72 61 79 20 3d 20 4e 55 4c 4c 3b athArray = NULL;
3940: 0a 20 20 20 20 20 6e 73 50 74 72 2d 3e 63 6f 6d . nsPtr->com
3950: 6d 61 6e 64 50 61 74 68 53 6f 75 72 63 65 4c 69 mandPathSourceLi
3960: 73 74 20 3d 20 4e 55 4c 4c 3b 0a 40 40 20 2d 39 st = NULL;.@@ -9
3970: 31 35 2c 36 20 2b 39 32 30 2c 31 34 20 40 40 0a 15,6 +920,14 @@.
3980: 20 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 2f 2a }. . /*
3990: 0a 2b 20 20 20 20 20 2a 20 49 66 20 74 68 65 20 .+ * If the
39a0: 6e 61 6d 65 73 70 61 63 65 20 68 61 73 20 61 20 namespace has a
39b0: 72 65 67 69 73 74 65 72 65 64 20 75 6e 6b 6e 6f registered unkno
39c0: 77 6e 20 68 61 6e 64 6c 65 72 20 28 54 49 50 20 wn handler (TIP
39d0: 31 38 31 29 2c 20 74 68 65 6e 20 66 72 65 65 0a 181), then free.
39e0: 2b 20 20 20 20 20 2a 20 69 74 20 68 65 72 65 2e + * it here.
39f0: 0a 2b 20 20 20 20 20 2a 2f 0a 2b 20 20 20 20 69 .+ */.+ i
3a00: 66 20 28 6e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 f (nsPtr->unknow
3a10: 6e 48 61 6e 64 6c 65 72 50 74 72 20 21 3d 20 4e nHandlerPtr != N
3a20: 55 4c 4c 29 20 7b 0a 2b 09 54 63 6c 5f 44 65 63 ULL) {.+.Tcl_Dec
3a30: 72 52 65 66 43 6f 75 6e 74 28 6e 73 50 74 72 2d rRefCount(nsPtr-
3a40: 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 >unknownHandlerP
3a50: 74 72 29 3b 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20 tr);.+ }.+.+
3a60: 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 49 66 /*. * If
3a70: 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 69 the namespace i
3a80: 73 20 6f 6e 20 74 68 65 20 63 61 6c 6c 20 66 72 s on the call fr
3a90: 61 6d 65 20 73 74 61 63 6b 2c 20 69 74 20 69 73 ame stack, it is
3aa0: 20 6d 61 72 6b 65 64 20 61 73 20 22 64 79 69 6e marked as "dyin
3ab0: 67 22 0a 20 20 20 20 20 20 2a 20 28 4e 53 5f 44 g". * (NS_D
3ac0: 59 49 4e 47 20 69 73 20 4f 52 27 64 20 69 6e 74 YING is OR'd int
3ad0: 6f 20 69 74 73 20 66 6c 61 67 73 29 3a 20 74 68 o its flags): th
3ae0: 65 20 6e 61 6d 65 73 70 61 63 65 20 63 61 6e 27 e namespace can'
3af0: 74 20 62 65 20 6c 6f 6f 6b 65 64 20 75 70 20 62 t be looked up b
3b00: 79 0a 20 20 20 20 20 20 2a 20 6e 61 6d 65 20 62 y. * name b
3b10: 75 74 20 69 74 73 20 63 6f 6d 6d 61 6e 64 73 20 ut its commands
3b20: 61 6e 64 20 76 61 72 69 61 62 6c 65 73 20 61 72 and variables ar
3b30: 65 20 73 74 69 6c 6c 20 75 73 61 62 6c 65 20 62 e still usable b
3b40: 79 20 74 68 6f 73 65 20 61 63 74 69 76 65 0a 40 y those active.@
3b50: 40 20 2d 32 38 39 36 2c 31 33 20 2b 32 39 30 39 @ -2896,13 +2909
3b60: 2c 31 33 20 40 40 0a 20 09 22 63 68 69 6c 64 72 ,13 @@. ."childr
3b70: 65 6e 22 2c 20 22 63 6f 64 65 22 2c 20 22 63 75 en", "code", "cu
3b80: 72 72 65 6e 74 22 2c 20 22 64 65 6c 65 74 65 22 rrent", "delete"
3b90: 2c 20 22 65 6e 73 65 6d 62 6c 65 22 2c 0a 20 09 , "ensemble",. .
3ba0: 22 65 76 61 6c 22 2c 20 22 65 78 69 73 74 73 22 "eval", "exists"
3bb0: 2c 20 22 65 78 70 6f 72 74 22 2c 20 22 66 6f 72 , "export", "for
3bc0: 67 65 74 22 2c 20 22 69 6d 70 6f 72 74 22 2c 0a get", "import",.
3bd0: 20 09 22 69 6e 73 63 6f 70 65 22 2c 20 22 6f 72 ."inscope", "or
3be0: 69 67 69 6e 22 2c 20 22 70 61 72 65 6e 74 22 2c igin", "parent",
3bf0: 20 22 70 61 74 68 22 2c 20 22 71 75 61 6c 69 66 "path", "qualif
3c00: 69 65 72 73 22 2c 0a 2d 09 22 74 61 69 6c 22 2c iers",.-."tail",
3c10: 20 22 77 68 69 63 68 22 2c 20 4e 55 4c 4c 0a 2b "which", NULL.+
3c20: 09 22 74 61 69 6c 22 2c 20 22 75 6e 6b 6e 6f 77 ."tail", "unknow
3c30: 6e 22 2c 20 22 77 68 69 63 68 22 2c 20 4e 55 4c n", "which", NUL
3c40: 4c 0a 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 65 L. };. e
3c50: 6e 75 6d 20 4e 53 53 75 62 43 6d 64 49 64 78 20 num NSSubCmdIdx
3c60: 7b 0a 20 09 4e 53 43 68 69 6c 64 72 65 6e 49 64 {. .NSChildrenId
3c70: 78 2c 20 4e 53 43 6f 64 65 49 64 78 2c 20 4e 53 x, NSCodeIdx, NS
3c80: 43 75 72 72 65 6e 74 49 64 78 2c 20 4e 53 44 65 CurrentIdx, NSDe
3c90: 6c 65 74 65 49 64 78 2c 20 4e 53 45 6e 73 65 6d leteIdx, NSEnsem
3ca0: 62 6c 65 49 64 78 2c 0a 20 09 4e 53 45 76 61 6c bleIdx,. .NSEval
3cb0: 49 64 78 2c 20 4e 53 45 78 69 73 74 73 49 64 78 Idx, NSExistsIdx
3cc0: 2c 20 4e 53 45 78 70 6f 72 74 49 64 78 2c 20 4e , NSExportIdx, N
3cd0: 53 46 6f 72 67 65 74 49 64 78 2c 20 4e 53 49 6d SForgetIdx, NSIm
3ce0: 70 6f 72 74 49 64 78 2c 0a 20 09 4e 53 49 6e 73 portIdx,. .NSIns
3cf0: 63 6f 70 65 49 64 78 2c 20 4e 53 4f 72 69 67 69 copeIdx, NSOrigi
3d00: 6e 49 64 78 2c 20 4e 53 50 61 72 65 6e 74 49 64 nIdx, NSParentId
3d10: 78 2c 20 4e 53 50 61 74 68 49 64 78 2c 20 4e 53 x, NSPathIdx, NS
3d20: 51 75 61 6c 69 66 69 65 72 73 49 64 78 2c 0a 2d QualifiersIdx,.-
3d30: 09 4e 53 54 61 69 6c 49 64 78 2c 20 4e 53 57 68 .NSTailIdx, NSWh
3d40: 69 63 68 49 64 78 0a 2b 09 4e 53 54 61 69 6c 49 ichIdx.+.NSTailI
3d50: 64 78 2c 20 4e 53 55 6e 6b 6e 6f 77 6e 49 64 78 dx, NSUnknownIdx
3d60: 2c 20 4e 53 57 68 69 63 68 49 64 78 0a 20 20 20 , NSWhichIdx.
3d70: 20 20 7d 3b 0a 20 20 20 20 20 69 6e 74 20 69 6e };. int in
3d80: 64 65 78 2c 20 72 65 73 75 6c 74 3b 0a 20 0a 40 dex, result;. .@
3d90: 40 20 2d 32 39 37 30 2c 36 20 2b 32 39 38 33 2c @ -2970,6 +2983,
3da0: 39 20 40 40 0a 20 20 20 20 20 63 61 73 65 20 4e 9 @@. case N
3db0: 53 54 61 69 6c 49 64 78 3a 0a 20 09 72 65 73 75 STailIdx:. .resu
3dc0: 6c 74 20 3d 20 4e 61 6d 65 73 70 61 63 65 54 61 lt = NamespaceTa
3dd0: 69 6c 43 6d 64 28 63 6c 69 65 6e 74 44 61 74 61 ilCmd(clientData
3de0: 2c 20 69 6e 74 65 72 70 2c 20 6f 62 6a 63 2c 20 , interp, objc,
3df0: 6f 62 6a 76 29 3b 0a 20 09 62 72 65 61 6b 3b 0a objv);. .break;.
3e00: 2b 20 20 20 20 63 61 73 65 20 4e 53 55 6e 6b 6e + case NSUnkn
3e10: 6f 77 6e 49 64 78 3a 0a 2b 09 72 65 73 75 6c 74 ownIdx:.+.result
3e20: 20 3d 20 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e = NamespaceUnkn
3e30: 6f 77 6e 43 6d 64 28 63 6c 69 65 6e 74 44 61 74 ownCmd(clientDat
3e40: 61 2c 20 69 6e 74 65 72 70 2c 20 6f 62 6a 63 2c a, interp, objc,
3e50: 20 6f 62 6a 76 29 3b 0a 2b 09 62 72 65 61 6b 3b objv);.+.break;
3e60: 0a 20 20 20 20 20 63 61 73 65 20 4e 53 57 68 69 . case NSWhi
3e70: 63 68 49 64 78 3a 0a 20 09 72 65 73 75 6c 74 20 chIdx:. .result
3e80: 3d 20 4e 61 6d 65 73 70 61 63 65 57 68 69 63 68 = NamespaceWhich
3e90: 43 6d 64 28 63 6c 69 65 6e 74 44 61 74 61 2c 20 Cmd(clientData,
3ea0: 69 6e 74 65 72 70 2c 20 6f 62 6a 63 2c 20 6f 62 interp, objc, ob
3eb0: 6a 76 29 3b 0a 20 09 62 72 65 61 6b 3b 0a 40 40 jv);. .break;.@@
3ec0: 20 2d 34 32 37 30 2c 36 20 2b 34 32 38 36 2c 31 -4270,6 +4286,1
3ed0: 36 37 20 40 40 0a 20 2f 2a 0a 20 20 2a 2d 2d 2d 67 @@. /*. *---
3ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3ef0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3f10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3f20: 2d 2d 2d 0a 20 20 2a 0a 2b 20 2a 20 4e 61 6d 65 ---. *.+ * Name
3f30: 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 43 6d 64 20 spaceUnknownCmd
3f40: 2d 2d 0a 2b 20 2a 0a 2b 20 2a 09 49 6e 76 6f 6b --.+ *.+ *.Invok
3f50: 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 ed to implement
3f60: 74 68 65 20 22 6e 61 6d 65 73 70 61 63 65 20 75 the "namespace u
3f70: 6e 6b 6e 6f 77 6e 22 20 63 6f 6d 6d 61 6e 64 20 nknown" command
3f80: 28 54 49 50 20 31 38 31 29 20 74 68 61 74 0a 2b (TIP 181) that.+
3f90: 20 2a 09 73 65 74 73 20 6f 72 20 71 75 65 72 69 *.sets or queri
3fa0: 65 73 20 61 20 70 65 72 2d 6e 61 6d 65 73 70 61 es a per-namespa
3fb0: 63 65 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 ce unknown comma
3fc0: 6e 64 20 68 61 6e 64 6c 65 72 2e 20 54 68 69 73 nd handler. This
3fd0: 20 68 61 6e 64 6c 65 72 0a 2b 20 2a 09 69 73 20 handler.+ *.is
3fe0: 63 61 6c 6c 65 64 20 77 68 65 6e 20 63 6f 6d 6d called when comm
3ff0: 61 6e 64 20 6c 6f 6f 6b 75 70 20 66 61 69 6c 73 and lookup fails
4000: 20 28 63 75 72 72 65 6e 74 20 61 6e 64 20 67 6c (current and gl
4010: 6f 62 61 6c 20 6e 73 29 2e 20 54 68 65 0a 2b 20 obal ns). The.+
4020: 2a 09 64 65 66 61 75 6c 74 20 68 61 6e 64 6c 65 *.default handle
4030: 72 20 66 6f 72 20 74 68 65 20 67 6c 6f 62 61 6c r for the global
4040: 20 6e 61 6d 65 73 70 61 63 65 20 69 73 20 3a 3a namespace is ::
4050: 75 6e 6b 6e 6f 77 6e 2e 20 54 68 65 20 64 65 66 unknown. The def
4060: 61 75 6c 74 0a 2b 20 2a 09 68 61 6e 64 6c 65 72 ault.+ *.handler
4070: 20 66 6f 72 20 6f 74 68 65 72 20 6e 61 6d 65 73 for other names
4080: 70 61 63 65 73 20 69 73 20 74 6f 20 63 61 6c 6c paces is to call
4090: 20 74 68 65 20 67 6c 6f 62 61 6c 20 6e 61 6d 65 the global name
40a0: 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 0a 2b 20 space unknown.+
40b0: 2a 09 68 61 6e 64 6c 65 72 2e 20 50 61 73 73 69 *.handler. Passi
40c0: 6e 67 20 61 6e 20 65 6d 70 74 79 20 6c 69 73 74 ng an empty list
40d0: 20 72 65 73 75 6c 74 73 20 69 6e 20 72 65 73 65 results in rese
40e0: 74 74 69 6e 67 20 74 68 65 20 68 61 6e 64 6c 65 tting the handle
40f0: 72 20 74 6f 0a 2b 20 2a 09 69 74 73 20 64 65 66 r to.+ *.its def
4100: 61 75 6c 74 2e 0a 2b 20 2a 0a 2b 20 2a 09 20 20 ault..+ *.+ *.
4110: 20 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e namespace unkn
4120: 6f 77 6e 20 3f 68 61 6e 64 6c 65 72 3f 0a 2b 20 own ?handler?.+
4130: 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73 3a 0a 2b *.+ * Results:.+
4140: 20 2a 09 52 65 74 75 72 6e 73 20 54 43 4c 5f 4f *.Returns TCL_O
4150: 4b 20 69 66 20 73 75 63 63 65 73 73 66 75 6c 2c K if successful,
4160: 20 61 6e 64 20 54 43 4c 5f 45 52 52 4f 52 20 69 and TCL_ERROR i
4170: 66 20 61 6e 79 74 68 69 6e 67 20 67 6f 65 73 20 f anything goes
4180: 77 72 6f 6e 67 2e 0a 2b 20 2a 0a 2b 20 2a 20 53 wrong..+ *.+ * S
4190: 69 64 65 20 65 66 66 65 63 74 73 3a 0a 2b 20 2a ide effects:.+ *
41a0: 09 49 66 20 6e 6f 20 68 61 6e 64 6c 65 72 20 69 .If no handler i
41b0: 73 20 73 70 65 63 69 66 69 65 64 2c 20 72 65 74 s specified, ret
41c0: 75 72 6e 73 20 61 20 72 65 73 75 6c 74 20 69 6e urns a result in
41d0: 20 74 68 65 20 69 6e 74 65 72 70 72 65 74 65 72 the interpreter
41e0: 27 73 0a 2b 20 2a 09 72 65 73 75 6c 74 20 6f 62 's.+ *.result ob
41f0: 6a 65 63 74 2c 20 6f 74 68 65 72 77 69 73 65 20 ject, otherwise
4200: 69 74 20 73 65 74 73 20 74 68 65 20 75 6e 6b 6e it sets the unkn
4210: 6f 77 6e 20 68 61 6e 64 6c 65 72 20 70 6f 69 6e own handler poin
4220: 74 65 72 20 69 6e 20 74 68 65 0a 2b 20 2a 09 63 ter in the.+ *.c
4230: 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 urrent namespace
4240: 20 74 6f 20 74 68 65 20 73 63 72 69 70 74 20 66 to the script f
4250: 72 61 67 6d 65 6e 74 20 70 72 6f 76 69 64 65 64 ragment provided
4260: 2e 20 49 66 20 61 6e 79 74 68 69 6e 67 20 67 6f . If anything go
4270: 65 73 0a 2b 20 2a 09 77 72 6f 6e 67 2c 20 74 68 es.+ *.wrong, th
4280: 65 20 72 65 73 75 6c 74 20 69 73 20 61 6e 20 65 e result is an e
4290: 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0a 2b 20 rror message..+
42a0: 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *.+ *-----------
42b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
42c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
42d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
42e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f -----------.+ */
42f0: 0a 2b 73 74 61 74 69 63 20 69 6e 74 0a 2b 4e 61 .+static int.+Na
4300: 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 43 6d mespaceUnknownCm
4310: 64 28 64 75 6d 6d 79 2c 20 69 6e 74 65 72 70 2c d(dummy, interp,
4320: 20 6f 62 6a 63 2c 20 6f 62 6a 76 29 0a 2b 20 20 objc, objv).+
4330: 20 20 43 6c 69 65 6e 74 44 61 74 61 20 64 75 6d ClientData dum
4340: 6d 79 3b 09 09 2f 2a 20 4e 6f 74 20 75 73 65 64 my;../* Not used
4350: 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 49 6e . */.+ Tcl_In
4360: 74 65 72 70 20 2a 69 6e 74 65 72 70 3b 09 09 2f terp *interp;../
4370: 2a 20 43 75 72 72 65 6e 74 20 69 6e 74 65 72 70 * Current interp
4380: 72 65 74 65 72 2e 20 2a 2f 0a 2b 20 20 20 20 69 reter. */.+ i
4390: 6e 74 20 6f 62 6a 63 3b 09 09 09 2f 2a 20 4e 75 nt objc;.../* Nu
43a0: 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 mber of argument
43b0: 73 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f s. */.+ Tcl_O
43c0: 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d bj *CONST objv[]
43d0: 3b 09 2f 2a 20 41 72 67 75 6d 65 6e 74 20 6f 62 ;./* Argument ob
43e0: 6a 65 63 74 73 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20 jects. */.+{.+
43f0: 20 20 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 20 Tcl_Namespace
4400: 2a 63 75 72 72 4e 73 50 74 72 3b 0a 2b 20 20 20 *currNsPtr;.+
4410: 20 54 63 6c 5f 4f 62 6a 20 2a 72 65 73 75 6c 74 Tcl_Obj *result
4420: 50 74 72 3b 0a 2b 20 20 20 20 69 6e 74 20 72 63 Ptr;.+ int rc
4430: 3b 0a 2b 0a 2b 20 20 20 20 69 66 20 28 6f 62 6a ;.+.+ if (obj
4440: 63 20 3e 20 33 29 20 7b 0a 2b 09 54 63 6c 5f 57 c > 3) {.+.Tcl_W
4450: 72 6f 6e 67 4e 75 6d 41 72 67 73 28 69 6e 74 65 rongNumArgs(inte
4460: 72 70 2c 20 32 2c 20 6f 62 6a 76 2c 20 22 3f 73 rp, 2, objv, "?s
4470: 63 72 69 70 74 3f 22 29 3b 0a 2b 20 20 20 20 20 cript?");.+
4480: 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 return TCL_ER
4490: 52 4f 52 3b 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20 ROR;.+ }.+.+
44a0: 20 20 20 63 75 72 72 4e 73 50 74 72 20 3d 20 54 currNsPtr = T
44b0: 63 6c 5f 47 65 74 43 75 72 72 65 6e 74 4e 61 6d cl_GetCurrentNam
44c0: 65 73 70 61 63 65 28 69 6e 74 65 72 70 29 3b 0a espace(interp);.
44d0: 2b 0a 2b 20 20 20 20 69 66 20 28 6f 62 6a 63 20 +.+ if (objc
44e0: 3d 3d 20 32 29 20 7b 0a 2b 09 2f 2a 0a 2b 09 20 == 2) {.+./*.+.
44f0: 2a 20 49 6e 74 72 6f 73 70 65 63 74 69 6f 6e 20 * Introspection
4500: 2d 20 72 65 74 75 72 6e 20 74 68 65 20 63 75 72 - return the cur
4510: 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 20 68 rent namespace h
4520: 61 6e 64 6c 65 72 2e 0a 2b 09 20 2a 2f 0a 2b 09 andler..+. */.+.
4530: 72 65 73 75 6c 74 50 74 72 20 3d 20 54 63 6c 5f resultPtr = Tcl_
4540: 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e GetNamespaceUnkn
4550: 6f 77 6e 48 61 6e 64 6c 65 72 28 69 6e 74 65 72 ownHandler(inter
4560: 70 2c 20 63 75 72 72 4e 73 50 74 72 29 3b 0a 2b p, currNsPtr);.+
4570: 09 69 66 20 28 72 65 73 75 6c 74 50 74 72 20 3d .if (resultPtr =
4580: 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 20 20 20 20 = NULL) {.+.
4590: 72 65 73 75 6c 74 50 74 72 20 3d 20 54 63 6c 5f resultPtr = Tcl_
45a0: 4e 65 77 4f 62 6a 28 29 3b 0a 2b 09 7d 0a 2b 09 NewObj();.+.}.+.
45b0: 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 75 6c 74 Tcl_SetObjResult
45c0: 28 69 6e 74 65 72 70 2c 20 72 65 73 75 6c 74 50 (interp, resultP
45d0: 74 72 29 3b 0a 2b 20 20 20 20 7d 20 65 6c 73 65 tr);.+ } else
45e0: 20 7b 0a 2b 09 72 63 20 3d 20 54 63 6c 5f 53 65 {.+.rc = Tcl_Se
45f0: 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 tNamespaceUnknow
4600: 6e 48 61 6e 64 6c 65 72 28 69 6e 74 65 72 70 2c nHandler(interp,
4610: 20 63 75 72 72 4e 73 50 74 72 2c 20 6f 62 6a 76 currNsPtr, objv
4620: 5b 32 5d 29 3b 0a 2b 09 69 66 20 28 72 63 20 3d [2]);.+.if (rc =
4630: 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2b 09 20 20 = TCL_OK) {.+.
4640: 20 20 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 75 Tcl_SetObjResu
4650: 6c 74 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b lt(interp, objv[
4660: 32 5d 29 3b 0a 2b 09 7d 0a 2b 09 72 65 74 75 72 2]);.+.}.+.retur
4670: 6e 20 72 63 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 n rc;.+ }.+
4680: 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b 3b return TCL_OK;
4690: 0a 2b 7d 0a 2b 0c 0a 2b 2f 2a 0a 2b 20 2a 2d 2d .+}.+..+/*.+ *--
46a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
46b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
46c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
46d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
46e0: 2d 2d 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20 54 63 6c ----.+ *.+ * Tcl
46f0: 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b _GetNamespaceUnk
4700: 6e 6f 77 6e 48 61 6e 64 6c 65 72 20 2d 2d 0a 2b nownHandler --.+
4710: 20 2a 0a 2b 20 2a 09 52 65 74 75 72 6e 73 20 74 *.+ *.Returns t
4720: 68 65 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 he unknown comma
4730: 6e 64 20 68 61 6e 64 6c 65 72 20 72 65 67 69 73 nd handler regis
4740: 74 65 72 65 64 20 66 6f 72 20 74 68 65 20 67 69 tered for the gi
4750: 76 65 6e 0a 2b 20 2a 09 6e 61 6d 65 73 70 61 63 ven.+ *.namespac
4760: 65 2e 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 6c e..+ *.+ * Resul
4770: 74 73 3a 0a 2b 20 2a 09 52 65 74 75 72 6e 73 20 ts:.+ *.Returns
4780: 74 68 65 20 63 75 72 72 65 6e 74 20 75 6e 6b 6e the current unkn
4790: 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 own command hand
47a0: 6c 65 72 2c 20 6f 72 20 4e 55 4c 4c 20 69 66 20 ler, or NULL if
47b0: 6e 6f 6e 65 0a 2b 20 2a 09 65 78 69 73 74 73 20 none.+ *.exists
47c0: 66 6f 72 20 74 68 65 20 6e 61 6d 65 73 70 61 63 for the namespac
47d0: 65 2e 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64 65 20 e..+ *.+ * Side
47e0: 65 66 66 65 63 74 73 3a 0a 2b 20 2a 09 4e 6f 6e effects:.+ *.Non
47f0: 65 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d e..+ *.+ *------
4800: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4810: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4820: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4830: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4840: 0a 2b 20 2a 2f 0a 2b 54 63 6c 5f 4f 62 6a 20 2a .+ */.+Tcl_Obj *
4850: 0a 2b 54 63 6c 5f 47 65 74 4e 61 6d 65 73 70 61 .+Tcl_GetNamespa
4860: 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 ceUnknownHandler
4870: 28 69 6e 74 65 72 70 2c 20 6e 73 50 74 72 29 0a (interp, nsPtr).
4880: 2b 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 + Tcl_Interp
4890: 2a 69 6e 74 65 72 70 3b 09 09 2f 2a 20 54 68 65 *interp;../* The
48a0: 20 69 6e 74 65 72 70 72 65 74 65 72 20 69 6e 20 interpreter in
48b0: 77 68 69 63 68 20 74 68 65 20 6e 61 6d 65 73 70 which the namesp
48c0: 61 63 65 0a 2b 09 09 09 09 20 2a 20 65 78 69 73 ace.+.... * exis
48d0: 74 73 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f ts. */.+ Tcl_
48e0: 4e 61 6d 65 73 70 61 63 65 20 2a 6e 73 50 74 72 Namespace *nsPtr
48f0: 3b 09 2f 2a 20 54 68 65 20 6e 61 6d 65 73 70 61 ;./* The namespa
4900: 63 65 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 4e ce. */.+{.+ N
4910: 61 6d 65 73 70 61 63 65 20 2a 63 75 72 72 4e 73 amespace *currNs
4920: 50 74 72 20 3d 20 28 4e 61 6d 65 73 70 61 63 65 Ptr = (Namespace
4930: 20 2a 29 6e 73 50 74 72 3b 0a 2b 0a 2b 20 20 20 *)nsPtr;.+.+
4940: 20 69 66 20 28 63 75 72 72 4e 73 50 74 72 2d 3e if (currNsPtr->
4950: 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 unknownHandlerPt
4960: 72 20 3d 3d 20 4e 55 4c 4c 20 26 26 0a 2b 09 63 r == NULL &&.+.c
4970: 75 72 72 4e 73 50 74 72 20 3d 3d 20 28 28 49 6e urrNsPtr == ((In
4980: 74 65 72 70 20 2a 29 69 6e 74 65 72 70 29 2d 3e terp *)interp)->
4990: 67 6c 6f 62 61 6c 4e 73 50 74 72 29 20 7b 0a 2b globalNsPtr) {.+
49a0: 09 2f 2a 20 44 65 66 61 75 6c 74 20 68 61 6e 64 ./* Default hand
49b0: 6c 65 72 20 66 6f 72 20 67 6c 6f 62 61 6c 20 6e ler for global n
49c0: 61 6d 65 73 70 61 63 65 20 69 73 20 22 3a 3a 75 amespace is "::u
49d0: 6e 6b 6e 6f 77 6e 22 2e 20 46 6f 72 20 61 6c 6c nknown". For all
49e0: 0a 2b 09 20 2a 20 6f 74 68 65 72 20 6e 61 6d 65 .+. * other name
49f0: 73 70 61 63 65 73 2c 20 69 74 20 69 73 20 4e 55 spaces, it is NU
4a00: 4c 4c 20 28 77 68 69 63 68 20 66 61 6c 6c 73 20 LL (which falls
4a10: 62 61 63 6b 20 6f 6e 20 74 68 65 20 67 6c 6f 62 back on the glob
4a20: 61 6c 0a 2b 09 20 2a 20 75 6e 6b 6e 6f 77 6e 20 al.+. * unknown
4a30: 68 61 6e 64 6c 65 72 29 2e 0a 2b 09 20 2a 2f 0a handler)..+. */.
4a40: 2b 09 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b +.currNsPtr->unk
4a50: 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 3d nownHandlerPtr =
4a60: 0a 2b 09 20 20 20 20 54 63 6c 5f 4e 65 77 53 74 .+. Tcl_NewSt
4a70: 72 69 6e 67 4f 62 6a 28 22 3a 3a 75 6e 6b 6e 6f ringObj("::unkno
4a80: 77 6e 22 2c 20 2d 31 29 3b 0a 2b 09 54 63 6c 5f wn", -1);.+.Tcl_
4a90: 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 63 75 72 IncrRefCount(cur
4aa0: 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 rNsPtr->unknownH
4ab0: 61 6e 64 6c 65 72 50 74 72 29 3b 0a 2b 20 20 20 andlerPtr);.+
4ac0: 20 7d 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 63 }.+ return c
4ad0: 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 urrNsPtr->unknow
4ae0: 6e 48 61 6e 64 6c 65 72 50 74 72 3b 0a 2b 7d 0a nHandlerPtr;.+}.
4af0: 2b 0c 0a 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d +..+/*.+ *------
4b00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4b10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4b20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4b30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4b40: 0a 2b 20 2a 0a 2b 20 2a 20 54 63 6c 5f 53 65 74 .+ *.+ * Tcl_Set
4b50: 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e NamespaceUnknown
4b60: 48 61 6e 64 6c 65 72 20 2d 2d 0a 2b 20 2a 0a 2b Handler --.+ *.+
4b70: 20 2a 09 53 65 74 73 20 74 68 65 20 75 6e 6b 6e *.Sets the unkn
4b80: 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 own command hand
4b90: 6c 65 72 20 66 6f 72 20 74 68 65 20 67 69 76 65 ler for the give
4ba0: 6e 20 6e 61 6d 65 73 70 61 63 65 20 74 6f 20 74 n namespace to t
4bb0: 68 65 0a 2b 20 2a 09 63 6f 6d 6d 61 6e 64 20 70 he.+ *.command p
4bc0: 72 65 66 69 78 20 70 61 73 73 65 64 2e 0a 2b 20 refix passed..+
4bd0: 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73 3a 0a 2b *.+ * Results:.+
4be0: 20 2a 09 52 65 74 75 72 6e 73 20 54 43 4c 5f 4f *.Returns TCL_O
4bf0: 4b 20 69 66 20 73 75 63 63 65 73 73 66 75 6c 2c K if successful,
4c00: 20 61 6e 64 20 54 43 4c 5f 45 52 52 4f 52 20 69 and TCL_ERROR i
4c10: 66 20 61 6e 79 74 68 69 6e 67 20 67 6f 65 73 20 f anything goes
4c20: 0a 2b 20 2a 09 77 72 6f 6e 67 2e 0a 2b 20 2a 0a .+ *.wrong..+ *.
4c30: 2b 20 2a 20 53 69 64 65 20 65 66 66 65 63 74 73 + * Side effects
4c40: 3a 0a 2b 20 2a 09 53 65 74 73 20 74 68 65 20 6e :.+ *.Sets the n
4c50: 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e amespace unknown
4c60: 20 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65 72 command handler
4c70: 2e 20 49 66 20 74 68 65 20 70 61 73 73 65 64 20 . If the passed
4c80: 69 6e 0a 2b 20 2a 09 68 61 6e 64 6c 65 72 20 69 in.+ *.handler i
4c90: 73 20 4e 55 4c 4c 20 6f 72 20 61 6e 20 65 6d 70 s NULL or an emp
4ca0: 74 79 20 6c 69 73 74 2c 20 74 68 65 6e 20 74 68 ty list, then th
4cb0: 65 20 68 61 6e 64 6c 65 72 20 69 73 20 72 65 73 e handler is res
4cc0: 65 74 20 74 6f 0a 2b 20 2a 09 69 74 73 20 64 65 et to.+ *.its de
4cd0: 66 61 75 6c 74 2e 20 49 66 20 61 6e 20 65 72 72 fault. If an err
4ce0: 6f 72 20 6f 63 63 75 72 73 2c 20 74 68 65 6e 20 or occurs, then
4cf0: 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 an error message
4d00: 20 69 73 20 6c 65 66 74 0a 2b 20 2a 09 69 6e 20 is left.+ *.in
4d10: 74 68 65 20 69 6e 74 65 72 70 72 65 74 65 72 20 the interpreter
4d20: 72 65 73 75 6c 74 2e 0a 2b 20 2a 0a 2b 20 2a 2d result..+ *.+ *-
4d30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4d40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4d50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4d60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4d70: 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 69 6e 74 0a -----.+ */.+int.
4d80: 2b 54 63 6c 5f 53 65 74 4e 61 6d 65 73 70 61 63 +Tcl_SetNamespac
4d90: 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 28 eUnknownHandler(
4da0: 69 6e 74 65 72 70 2c 20 6e 73 50 74 72 2c 20 68 interp, nsPtr, h
4db0: 61 6e 64 6c 65 72 50 74 72 29 0a 2b 20 20 20 20 andlerPtr).+
4dc0: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 Tcl_Interp *inte
4dd0: 72 70 3b 09 09 2f 2a 20 49 6e 74 65 72 70 72 65 rp;../* Interpre
4de0: 74 65 72 20 69 6e 20 77 68 69 63 68 20 74 68 65 ter in which the
4df0: 20 6e 61 6d 65 73 70 61 63 65 20 0a 2b 09 09 09 namespace .+...
4e00: 09 20 2a 20 65 78 69 73 74 73 2e 20 2a 2f 0a 2b . * exists. */.+
4e10: 20 20 20 20 54 63 6c 5f 4e 61 6d 65 73 70 61 63 Tcl_Namespac
4e20: 65 20 2a 6e 73 50 74 72 3b 09 2f 2a 20 4e 61 6d e *nsPtr;./* Nam
4e30: 65 73 70 61 63 65 20 77 68 69 63 68 20 69 73 20 espace which is
4e40: 62 65 69 6e 67 20 75 70 64 61 74 65 64 2e 20 2a being updated. *
4e50: 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a /.+ Tcl_Obj *
4e60: 68 61 6e 64 6c 65 72 50 74 72 3b 09 2f 2a 20 54 handlerPtr;./* T
4e70: 68 65 20 6e 65 77 20 68 61 6e 64 6c 65 72 2c 20 he new handler,
4e80: 6f 72 20 4e 55 4c 4c 20 74 6f 20 72 65 73 65 74 or NULL to reset
4e90: 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 69 6e 74 . */.+{.+ int
4ea0: 20 6c 73 74 6c 65 6e 3b 0a 2b 20 20 20 20 4e 61 lstlen;.+ Na
4eb0: 6d 65 73 70 61 63 65 20 2a 63 75 72 72 4e 73 50 mespace *currNsP
4ec0: 74 72 20 3d 20 28 4e 61 6d 65 73 70 61 63 65 20 tr = (Namespace
4ed0: 2a 29 6e 73 50 74 72 3b 0a 2b 0a 2b 20 20 20 20 *)nsPtr;.+.+
4ee0: 69 66 20 28 63 75 72 72 4e 73 50 74 72 2d 3e 75 if (currNsPtr->u
4ef0: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 nknownHandlerPtr
4f00: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 2f 2a != NULL) {.+./*
4f10: 20 52 65 6d 6f 76 65 20 6f 6c 64 20 68 61 6e 64 Remove old hand
4f20: 6c 65 72 20 66 69 72 73 74 2e 20 2a 2f 0a 2b 09 ler first. */.+.
4f30: 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 Tcl_DecrRefCount
4f40: 28 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e (currNsPtr->unkn
4f50: 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 29 3b 0a ownHandlerPtr);.
4f60: 2b 20 20 20 20 7d 0a 2b 20 20 20 20 2f 2a 0a 2b + }.+ /*.+
4f70: 20 20 20 20 20 2a 20 49 66 20 4e 55 4c 4c 20 6f * If NULL o
4f80: 72 20 61 6e 20 65 6d 70 74 79 20 6c 69 73 74 20 r an empty list
4f90: 69 73 20 70 61 73 73 65 64 2c 20 74 68 65 6e 20 is passed, then
4fa0: 72 65 73 65 74 20 74 6f 20 74 68 65 20 64 65 66 reset to the def
4fb0: 61 75 6c 74 0a 2b 20 20 20 20 20 2a 20 68 61 6e ault.+ * han
4fc0: 64 6c 65 72 2e 0a 2b 20 20 20 20 20 2a 2f 0a 2b dler..+ */.+
4fd0: 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 72 50 if (handlerP
4fe0: 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 tr == NULL) {.+.
4ff0: 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f currNsPtr->unkno
5000: 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 3d 20 4e wnHandlerPtr = N
5010: 55 4c 4c 3b 0a 2b 20 20 20 20 7d 20 65 6c 73 65 ULL;.+ } else
5020: 20 7b 0a 2b 09 69 66 20 28 54 63 6c 5f 4c 69 73 {.+.if (Tcl_Lis
5030: 74 4f 62 6a 4c 65 6e 67 74 68 28 69 6e 74 65 72 tObjLength(inter
5040: 70 2c 20 68 61 6e 64 6c 65 72 50 74 72 2c 20 26 p, handlerPtr, &
5050: 6c 73 74 6c 65 6e 29 20 21 3d 20 54 43 4c 5f 4f lstlen) != TCL_O
5060: 4b 29 20 7b 0a 2b 09 20 20 20 20 2f 2a 20 4e 6f K) {.+. /* No
5070: 74 20 61 20 6c 69 73 74 20 2a 2f 0a 2b 09 20 20 t a list */.+.
5080: 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 return TCL_ERR
5090: 4f 52 3b 0a 2b 09 7d 20 65 6c 73 65 20 69 66 20 OR;.+.} else if
50a0: 28 6c 73 74 6c 65 6e 20 3d 3d 20 30 29 20 7b 0a (lstlen == 0) {.
50b0: 2b 09 20 20 20 20 2f 2a 20 45 6d 70 74 79 20 6c +. /* Empty l
50c0: 69 73 74 20 2d 20 72 65 73 65 74 20 74 6f 20 64 ist - reset to d
50d0: 65 66 61 75 6c 74 2e 20 2a 2f 0a 2b 09 20 20 20 efault. */.+.
50e0: 20 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e currNsPtr->unkn
50f0: 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 3d 20 ownHandlerPtr =
5100: 4e 55 4c 4c 3b 0a 2b 09 7d 20 65 6c 73 65 20 7b NULL;.+.} else {
5110: 0a 2b 09 20 20 20 20 2f 2a 20 0a 2b 09 20 20 20 .+. /* .+.
5120: 20 20 2a 20 49 6e 63 72 65 6d 65 6e 74 20 72 65 * Increment re
5130: 66 20 63 6f 75 6e 74 20 61 6e 64 20 73 74 6f 72 f count and stor
5140: 65 2e 20 54 68 65 20 72 65 66 65 72 65 6e 63 65 e. The reference
5150: 20 63 6f 75 6e 74 20 69 73 20 0a 2b 09 20 20 20 count is .+.
5160: 20 20 2a 20 64 65 63 72 65 6d 65 6e 74 65 64 20 * decremented
5170: 65 69 74 68 65 72 20 69 6e 20 74 68 65 20 63 6f either in the co
5180: 64 65 20 61 62 6f 76 65 2c 20 6f 72 20 77 68 65 de above, or whe
5190: 6e 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 n the namespace
51a0: 0a 2b 09 20 20 20 20 20 2a 20 69 73 20 64 65 6c .+. * is del
51b0: 65 74 65 64 2e 0a 2b 09 20 20 20 20 20 2a 2f 0a eted..+. */.
51c0: 2b 09 20 20 20 20 54 63 6c 5f 49 6e 63 72 52 65 +. Tcl_IncrRe
51d0: 66 43 6f 75 6e 74 28 68 61 6e 64 6c 65 72 50 74 fCount(handlerPt
51e0: 72 29 3b 0a 2b 09 20 20 20 20 63 75 72 72 4e 73 r);.+. currNs
51f0: 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 Ptr->unknownHand
5200: 6c 65 72 50 74 72 20 3d 20 68 61 6e 64 6c 65 72 lerPtr = handler
5210: 50 74 72 3b 0a 2b 09 7d 0a 2b 20 20 20 20 7d 0a Ptr;.+.}.+ }.
5220: 2b 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f + return TCL_
5230: 4f 4b 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f 2a 0a 2b 20 OK;.+}.+..+/*.+
5240: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *---------------
5250: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5260: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5280: 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 20 20 2a 20 -------.+ *. *
5290: 4e 61 6d 65 73 70 61 63 65 54 61 69 6c 43 6d 64 NamespaceTailCmd
52a0: 20 2d 2d 0a 20 20 2a 0a 20 20 2a 09 49 6e 76 6f --. *. *.Invo
52b0: 6b 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 ked to implement
52c0: 20 74 68 65 20 22 6e 61 6d 65 73 70 61 63 65 20 the "namespace
52d0: 74 61 69 6c 22 20 63 6f 6d 6d 61 6e 64 20 74 68 tail" command th
52e0: 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 0a 49 at returns the.I
52f0: 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 ndex: generic/tc
5300: 6c 53 74 75 62 49 6e 69 74 2e 63 0a 3d 3d 3d 3d lStubInit.c.====
5310: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5320: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5330: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5340: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a ===============.
5350: 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f RCS file: /cvsro
5360: 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 ot/tcl/tcl/gener
5370: 69 63 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 ic/tclStubInit.c
5380: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 ,v.retrieving re
5390: 76 69 73 69 6f 6e 20 31 2e 31 32 37 0a 64 69 66 vision 1.127.dif
53a0: 66 20 2d 75 20 2d 72 31 2e 31 32 37 20 74 63 6c f -u -r1.127 tcl
53b0: 53 74 75 62 49 6e 69 74 2e 63 0a 2d 2d 2d 20 67 StubInit.c.--- g
53c0: 65 6e 65 72 69 63 2f 74 63 6c 53 74 75 62 49 6e eneric/tclStubIn
53d0: 69 74 2e 63 09 32 37 20 44 65 63 20 32 30 30 35 it.c.27 Dec 2005
53e0: 20 32 30 3a 31 34 3a 30 39 20 2d 30 30 30 30 09 20:14:09 -0000.
53f0: 31 2e 31 32 37 0a 2b 2b 2b 20 67 65 6e 65 72 69 1.127.+++ generi
5400: 63 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 09 c/tclStubInit.c.
5410: 31 38 20 4a 61 6e 20 32 30 30 36 20 31 36 3a 35 18 Jan 2006 16:5
5420: 37 3a 32 34 20 2d 30 30 30 30 0a 40 40 20 2d 31 7:24 -0000.@@ -1
5430: 30 36 33 2c 36 20 2b 31 30 36 33 2c 38 20 40 40 063,6 +1063,8 @@
5440: 0a 20 20 20 20 20 54 63 6c 5f 53 65 74 43 68 61 . Tcl_SetCha
5450: 6e 6e 65 6c 45 72 72 6f 72 2c 20 2f 2a 20 35 36 nnelError, /* 56
5460: 34 20 2a 2f 0a 20 20 20 20 20 54 63 6c 5f 47 65 4 */. Tcl_Ge
5470: 74 43 68 61 6e 6e 65 6c 45 72 72 6f 72 2c 20 2f tChannelError, /
5480: 2a 20 35 36 35 20 2a 2f 0a 20 20 20 20 20 54 63 * 565 */. Tc
5490: 6c 5f 49 6e 69 74 42 69 67 6e 75 6d 46 72 6f 6d l_InitBignumFrom
54a0: 44 6f 75 62 6c 65 2c 20 2f 2a 20 35 36 36 20 2a Double, /* 566 *
54b0: 2f 0a 2b 20 20 20 20 54 63 6c 5f 47 65 74 4e 61 /.+ Tcl_GetNa
54c0: 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 mespaceUnknownHa
54d0: 6e 64 6c 65 72 2c 20 2f 2a 20 35 36 37 20 2a 2f ndler, /* 567 */
54e0: 0a 2b 20 20 20 20 54 63 6c 5f 53 65 74 4e 61 6d .+ Tcl_SetNam
54f0: 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e espaceUnknownHan
5500: 64 6c 65 72 2c 20 2f 2a 20 35 36 38 20 2a 2f 0a dler, /* 568 */.
5510: 20 7d 3b 0a 20 0a 20 2f 2a 20 21 45 4e 44 21 3a };. . /* !END!:
5520: 20 44 6f 20 6e 6f 74 20 65 64 69 74 20 61 62 6f Do not edit abo
5530: 76 65 20 74 68 69 73 20 6c 69 6e 65 2e 20 2a 2f ve this line. */
5540: 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 2f 6e 61 .Index: tests/na
5550: 6d 65 73 70 61 63 65 2e 74 65 73 74 0a 3d 3d 3d mespace.test.===
5560: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5570: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5580: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5590: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
55a0: 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 .RCS file: /cvsr
55b0: 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74 oot/tcl/tcl/test
55c0: 73 2f 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 74 s/namespace.test
55d0: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 ,v.retrieving re
55e0: 76 69 73 69 6f 6e 20 31 2e 35 30 0a 64 69 66 66 vision 1.50.diff
55f0: 20 2d 75 20 2d 72 31 2e 35 30 20 6e 61 6d 65 73 -u -r1.50 names
5600: 70 61 63 65 2e 74 65 73 74 0a 2d 2d 2d 20 74 65 pace.test.--- te
5610: 73 74 73 2f 6e 61 6d 65 73 70 61 63 65 2e 74 65 sts/namespace.te
5620: 73 74 09 39 20 4a 61 6e 20 32 30 30 36 20 31 38 st.9 Jan 2006 18
5630: 3a 33 35 3a 30 31 20 2d 30 30 30 30 09 31 2e 35 :35:01 -0000.1.5
5640: 30 0a 2b 2b 2b 20 74 65 73 74 73 2f 6e 61 6d 65 0.+++ tests/name
5650: 73 70 61 63 65 2e 74 65 73 74 09 31 38 20 4a 61 space.test.18 Ja
5660: 6e 20 32 30 30 36 20 31 36 3a 35 37 3a 33 31 20 n 2006 16:57:31
5670: 2d 30 30 30 30 0a 40 40 20 2d 38 37 33 2c 37 20 -0000.@@ -873,7
5680: 2b 38 37 33 2c 37 20 40 40 0a 20 7d 20 7b 31 20 +873,7 @@. } {1
5690: 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 {wrong # args: s
56a0: 68 6f 75 6c 64 20 62 65 20 22 6e 61 6d 65 73 70 hould be "namesp
56b0: 61 63 65 20 73 75 62 63 6f 6d 6d 61 6e 64 20 3f ace subcommand ?
56c0: 61 72 67 20 2e 2e 2e 3f 22 7d 7d 0a 20 74 65 73 arg ...?"}}. tes
56d0: 74 20 6e 61 6d 65 73 70 61 63 65 2d 32 30 2e 32 t namespace-20.2
56e0: 20 7b 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 4f {Tcl_NamespaceO
56f0: 62 6a 43 6d 64 2c 20 62 61 64 20 73 75 62 63 6f bjCmd, bad subco
5700: 6d 6d 61 6e 64 7d 20 7b 0a 20 20 20 20 20 6c 69 mmand} {. li
5710: 73 74 20 5b 63 61 74 63 68 20 7b 6e 61 6d 65 73 st [catch {names
5720: 70 61 63 65 20 77 6f 6d 62 61 74 20 7b 7d 7d 20 pace wombat {}}
5730: 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 msg] $msg.-} {1
5740: 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 77 6f 6d {bad option "wom
5750: 62 61 74 22 3a 20 6d 75 73 74 20 62 65 20 63 68 bat": must be ch
5760: 69 6c 64 72 65 6e 2c 20 63 6f 64 65 2c 20 63 75 ildren, code, cu
5770: 72 72 65 6e 74 2c 20 64 65 6c 65 74 65 2c 20 65 rrent, delete, e
5780: 6e 73 65 6d 62 6c 65 2c 20 65 76 61 6c 2c 20 65 nsemble, eval, e
5790: 78 69 73 74 73 2c 20 65 78 70 6f 72 74 2c 20 66 xists, export, f
57a0: 6f 72 67 65 74 2c 20 69 6d 70 6f 72 74 2c 20 69 orget, import, i
57b0: 6e 73 63 6f 70 65 2c 20 6f 72 69 67 69 6e 2c 20 nscope, origin,
57c0: 70 61 72 65 6e 74 2c 20 70 61 74 68 2c 20 71 75 parent, path, qu
57d0: 61 6c 69 66 69 65 72 73 2c 20 74 61 69 6c 2c 20 alifiers, tail,
57e0: 6f 72 20 77 68 69 63 68 7d 7d 0a 2b 7d 20 7b 31 or which}}.+} {1
57f0: 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 77 6f {bad option "wo
5800: 6d 62 61 74 22 3a 20 6d 75 73 74 20 62 65 20 63 mbat": must be c
5810: 68 69 6c 64 72 65 6e 2c 20 63 6f 64 65 2c 20 63 hildren, code, c
5820: 75 72 72 65 6e 74 2c 20 64 65 6c 65 74 65 2c 20 urrent, delete,
5830: 65 6e 73 65 6d 62 6c 65 2c 20 65 76 61 6c 2c 20 ensemble, eval,
5840: 65 78 69 73 74 73 2c 20 65 78 70 6f 72 74 2c 20 exists, export,
5850: 66 6f 72 67 65 74 2c 20 69 6d 70 6f 72 74 2c 20 forget, import,
5860: 69 6e 73 63 6f 70 65 2c 20 6f 72 69 67 69 6e 2c inscope, origin,
5870: 20 70 61 72 65 6e 74 2c 20 70 61 74 68 2c 20 71 parent, path, q
5880: 75 61 6c 69 66 69 65 72 73 2c 20 74 61 69 6c 2c ualifiers, tail,
5890: 20 75 6e 6b 6e 6f 77 6e 2c 20 6f 72 20 77 68 69 unknown, or whi
58a0: 63 68 7d 7d 0a 20 74 65 73 74 20 6e 61 6d 65 73 ch}}. test names
58b0: 70 61 63 65 2d 32 30 2e 33 20 7b 54 63 6c 5f 4e pace-20.3 {Tcl_N
58c0: 61 6d 65 73 70 61 63 65 4f 62 6a 43 6d 64 2c 20 amespaceObjCmd,
58d0: 61 62 62 72 65 76 69 61 74 69 6f 6e 73 20 61 72 abbreviations ar
58e0: 65 20 6f 6b 61 79 7d 20 7b 0a 20 20 20 20 20 6e e okay} {. n
58f0: 61 6d 65 73 70 61 63 65 20 63 68 20 3a 3a 20 74 amespace ch :: t
5900: 65 73 74 5f 6e 73 5f 2a 0a 20 7d 20 7b 7d 0a 40 est_ns_*. } {}.@
5910: 40 20 2d 39 38 30 2c 37 20 2b 39 38 30 2c 37 20 @ -980,7 +980,7
5920: 40 40 0a 20 7d 20 7b 31 20 7b 77 72 6f 6e 67 20 @@. } {1 {wrong
5930: 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 # args: should b
5940: 65 20 22 6e 61 6d 65 73 70 61 63 65 20 65 76 61 e "namespace eva
5950: 6c 20 6e 61 6d 65 20 61 72 67 20 3f 61 72 67 2e l name arg ?arg.
5960: 2e 2e 3f 22 7d 7d 0a 20 74 65 73 74 20 6e 61 6d ..?"}}. test nam
5970: 65 73 70 61 63 65 2d 32 35 2e 32 20 7b 4e 61 6d espace-25.2 {Nam
5980: 65 73 70 61 63 65 45 76 61 6c 43 6d 64 2c 20 62 espaceEvalCmd, b
5990: 61 64 20 61 72 67 73 7d 20 7b 0a 20 20 20 20 20 ad args} {.
59a0: 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 6e 61 6d list [catch {nam
59b0: 65 73 70 61 63 65 20 74 65 73 74 5f 6e 73 5f 31 espace test_ns_1
59c0: 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b } msg] $msg.-} {
59d0: 31 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 74 1 {bad option "t
59e0: 65 73 74 5f 6e 73 5f 31 22 3a 20 6d 75 73 74 20 est_ns_1": must
59f0: 62 65 20 63 68 69 6c 64 72 65 6e 2c 20 63 6f 64 be children, cod
5a00: 65 2c 20 63 75 72 72 65 6e 74 2c 20 64 65 6c 65 e, current, dele
5a10: 74 65 2c 20 65 6e 73 65 6d 62 6c 65 2c 20 65 76 te, ensemble, ev
5a20: 61 6c 2c 20 65 78 69 73 74 73 2c 20 65 78 70 6f al, exists, expo
5a30: 72 74 2c 20 66 6f 72 67 65 74 2c 20 69 6d 70 6f rt, forget, impo
5a40: 72 74 2c 20 69 6e 73 63 6f 70 65 2c 20 6f 72 69 rt, inscope, ori
5a50: 67 69 6e 2c 20 70 61 72 65 6e 74 2c 20 70 61 74 gin, parent, pat
5a60: 68 2c 20 71 75 61 6c 69 66 69 65 72 73 2c 20 74 h, qualifiers, t
5a70: 61 69 6c 2c 20 6f 72 20 77 68 69 63 68 7d 7d 0a ail, or which}}.
5a80: 2b 7d 20 7b 31 20 7b 62 61 64 20 6f 70 74 69 6f +} {1 {bad optio
5a90: 6e 20 22 74 65 73 74 5f 6e 73 5f 31 22 3a 20 6d n "test_ns_1": m
5aa0: 75 73 74 20 62 65 20 63 68 69 6c 64 72 65 6e 2c ust be children,
5ab0: 20 63 6f 64 65 2c 20 63 75 72 72 65 6e 74 2c 20 code, current,
5ac0: 64 65 6c 65 74 65 2c 20 65 6e 73 65 6d 62 6c 65 delete, ensemble
5ad0: 2c 20 65 76 61 6c 2c 20 65 78 69 73 74 73 2c 20 , eval, exists,
5ae0: 65 78 70 6f 72 74 2c 20 66 6f 72 67 65 74 2c 20 export, forget,
5af0: 69 6d 70 6f 72 74 2c 20 69 6e 73 63 6f 70 65 2c import, inscope,
5b00: 20 6f 72 69 67 69 6e 2c 20 70 61 72 65 6e 74 2c origin, parent,
5b10: 20 70 61 74 68 2c 20 71 75 61 6c 69 66 69 65 72 path, qualifier
5b20: 73 2c 20 74 61 69 6c 2c 20 75 6e 6b 6e 6f 77 6e s, tail, unknown
5b30: 2c 20 6f 72 20 77 68 69 63 68 7d 7d 0a 20 63 61 , or which}}. ca
5b40: 74 63 68 20 7b 75 6e 73 65 74 20 76 7d 0a 20 74 tch {unset v}. t
5b50: 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 32 35 est namespace-25
5b60: 2e 33 20 7b 4e 61 6d 65 73 70 61 63 65 45 76 61 .3 {NamespaceEva
5b70: 6c 43 6d 64 2c 20 6e 65 77 20 6e 61 6d 65 73 70 lCmd, new namesp
5b80: 61 63 65 7d 20 7b 0a 20 20 20 20 20 73 65 74 20 ace} {. set
5b90: 76 20 31 32 33 0a 40 40 20 2d 32 33 39 35 2c 36 v 123.@@ -2395,6
5ba0: 20 2b 32 33 39 35 2c 38 36 20 40 40 0a 20 20 20 +2395,86 @@.
5bb0: 20 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 namespace dele
5bc0: 74 65 20 3a 3a 74 65 73 74 5f 6e 73 5f 32 0a 20 te ::test_ns_2.
5bd0: 7d 0a 20 0a 2b 23 20 54 49 50 20 31 38 31 20 2d }. .+# TIP 181 -
5be0: 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f namespace unkno
5bf0: 77 6e 20 74 65 73 74 73 0a 2b 74 65 73 74 20 6e wn tests.+test n
5c00: 61 6d 65 73 70 61 63 65 2d 35 32 2e 31 20 7b 75 amespace-52.1 {u
5c10: 6e 6b 6e 6f 77 6e 3a 20 64 65 66 61 75 6c 74 20 nknown: default
5c20: 68 61 6e 64 6c 65 72 20 3a 3a 75 6e 6b 6e 6f 77 handler ::unknow
5c30: 6e 7d 20 7b 0a 2b 20 20 20 20 73 65 74 20 72 65 n} {.+ set re
5c40: 73 75 6c 74 20 5b 6c 69 73 74 20 5b 6e 61 6d 65 sult [list [name
5c50: 73 70 61 63 65 20 65 76 61 6c 20 66 6f 6f 62 61 space eval fooba
5c60: 72 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 75 6e r { namespace un
5c70: 6b 6e 6f 77 6e 20 7d 5d 5d 0a 2b 20 20 20 20 6c known }]].+ l
5c80: 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 6e append result [n
5c90: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a amespace eval ::
5ca0: 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b { namespace unk
5cb0: 6e 6f 77 6e 20 7d 5d 0a 2b 20 20 20 20 6e 61 6d nown }].+ nam
5cc0: 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 66 6f espace delete fo
5cd0: 6f 62 61 72 0a 2b 20 20 20 20 73 65 74 20 72 65 obar.+ set re
5ce0: 73 75 6c 74 0a 2b 7d 20 7b 7b 7d 20 3a 3a 75 6e sult.+} {{} ::un
5cf0: 6b 6e 6f 77 6e 7d 0a 2b 74 65 73 74 20 6e 61 6d known}.+test nam
5d00: 65 73 70 61 63 65 2d 35 32 2e 32 20 7b 75 6e 6b espace-52.2 {unk
5d10: 6e 6f 77 6e 3a 20 64 65 66 61 75 6c 74 20 72 65 nown: default re
5d20: 73 6f 6c 75 74 69 6f 6e 20 67 6c 6f 62 61 6c 7d solution global}
5d30: 20 7b 0a 2b 20 20 20 20 70 72 6f 63 20 3a 3a 66 {.+ proc ::f
5d40: 6f 6f 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 22 oo {} { return "
5d50: 47 4c 4f 42 41 4c 22 20 7d 0a 2b 20 20 20 20 6e GLOBAL" }.+ n
5d60: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a amespace eval ::
5d70: 62 61 72 20 7b 20 70 72 6f 63 20 66 6f 6f 20 7b bar { proc foo {
5d80: 7d 20 7b 20 72 65 74 75 72 6e 20 22 4e 41 4d 45 } { return "NAME
5d90: 53 50 41 43 45 22 20 7d 20 7d 0a 2b 20 20 20 20 SPACE" } }.+
5da0: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a namespace eval :
5db0: 3a 62 61 72 3a 3a 6a 69 6d 20 7b 20 70 72 6f 63 :bar::jim { proc
5dc0: 20 74 65 73 74 20 7b 7d 20 7b 20 66 6f 6f 20 7d test {} { foo }
5dd0: 20 7d 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75 }.+ set resu
5de0: 6c 74 20 5b 3a 3a 62 61 72 3a 3a 6a 69 6d 3a 3a lt [::bar::jim::
5df0: 74 65 73 74 5d 0a 2b 20 20 20 20 6e 61 6d 65 73 test].+ names
5e00: 70 61 63 65 20 64 65 6c 65 74 65 20 3a 3a 62 61 pace delete ::ba
5e10: 72 0a 2b 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a r.+ rename ::
5e20: 66 6f 6f 20 7b 7d 0a 2b 20 20 20 20 73 65 74 20 foo {}.+ set
5e30: 72 65 73 75 6c 74 0a 2b 7d 20 7b 47 4c 4f 42 41 result.+} {GLOBA
5e40: 4c 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 L}.+test namespa
5e50: 63 65 2d 35 32 2e 33 20 7b 75 6e 6b 6e 6f 77 6e ce-52.3 {unknown
5e60: 3a 20 64 65 66 61 75 6c 74 20 72 65 73 6f 6c 75 : default resolu
5e70: 74 69 6f 6e 20 6c 6f 63 61 6c 7d 20 7b 0a 2b 20 tion local} {.+
5e80: 20 20 20 70 72 6f 63 20 3a 3a 66 6f 6f 20 7b 7d proc ::foo {}
5e90: 20 7b 20 72 65 74 75 72 6e 20 22 47 4c 4f 42 41 { return "GLOBA
5ea0: 4c 22 20 7d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 L" }.+ namesp
5eb0: 61 63 65 20 65 76 61 6c 20 3a 3a 62 61 72 20 7b ace eval ::bar {
5ec0: 0a 2b 09 70 72 6f 63 20 66 6f 6f 20 7b 7d 20 7b .+.proc foo {} {
5ed0: 20 72 65 74 75 72 6e 20 22 4e 41 4d 45 53 50 41 return "NAMESPA
5ee0: 43 45 22 20 7d 0a 2b 09 70 72 6f 63 20 74 65 73 CE" }.+.proc tes
5ef0: 74 20 7b 7d 20 7b 20 66 6f 6f 20 7d 0a 2b 20 20 t {} { foo }.+
5f00: 20 20 7d 0a 2b 20 20 20 20 73 65 74 20 72 65 73 }.+ set res
5f10: 75 6c 74 20 5b 3a 3a 62 61 72 3a 3a 74 65 73 74 ult [::bar::test
5f20: 5d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65 ].+ namespace
5f30: 20 64 65 6c 65 74 65 20 3a 3a 62 61 72 0a 2b 20 delete ::bar.+
5f40: 20 20 20 72 65 6e 61 6d 65 20 3a 3a 66 6f 6f 20 rename ::foo
5f50: 7b 7d 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75 {}.+ set resu
5f60: 6c 74 0a 2b 7d 20 7b 4e 41 4d 45 53 50 41 43 45 lt.+} {NAMESPACE
5f70: 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 63 }.+test namespac
5f80: 65 2d 35 32 2e 34 20 7b 75 6e 6b 6e 6f 77 6e 3a e-52.4 {unknown:
5f90: 20 73 65 74 20 68 61 6e 64 6c 65 72 7d 20 7b 0a set handler} {.
5fa0: 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 + namespace e
5fb0: 76 61 6c 20 66 6f 6f 20 7b 0a 2b 09 6e 61 6d 65 val foo {.+.name
5fc0: 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 20 5b 6c space unknown [l
5fd0: 69 73 74 20 64 69 73 70 61 74 63 68 5d 0a 2b 09 ist dispatch].+.
5fe0: 70 72 6f 63 20 64 69 73 70 61 74 63 68 20 7b 61 proc dispatch {a
5ff0: 72 67 73 7d 20 7b 20 72 65 74 75 72 6e 20 24 61 rgs} { return $a
6000: 72 67 73 20 7d 0a 2b 09 70 72 6f 63 20 74 65 73 rgs }.+.proc tes
6010: 74 20 7b 7d 20 7b 0a 2b 09 20 20 20 20 55 6e 6b t {} {.+. Unk
6020: 6e 6f 77 6e 43 6d 64 20 61 20 62 20 63 0a 2b 09 nownCmd a b c.+.
6030: 7d 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 73 65 }.+ }.+ se
6040: 74 20 72 65 73 75 6c 74 20 5b 66 6f 6f 3a 3a 74 t result [foo::t
6050: 65 73 74 5d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 est].+ namesp
6060: 61 63 65 20 64 65 6c 65 74 65 20 66 6f 6f 0a 2b ace delete foo.+
6070: 20 20 20 20 73 65 74 20 72 65 73 75 6c 74 0a 2b set result.+
6080: 7d 20 7b 55 6e 6b 6e 6f 77 6e 43 6d 64 20 61 20 } {UnknownCmd a
6090: 62 20 63 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 b c}.+test names
60a0: 70 61 63 65 2d 35 32 2e 35 20 7b 75 6e 6b 6e 6f pace-52.5 {unkno
60b0: 77 6e 3a 20 73 65 61 72 63 68 20 70 61 74 68 20 wn: search path
60c0: 62 65 66 6f 72 65 20 75 6e 6b 6e 6f 77 6e 20 69 before unknown i
60d0: 73 20 75 6e 61 6c 74 65 72 65 64 7d 20 7b 0a 2b s unaltered} {.+
60e0: 20 20 20 20 70 72 6f 63 20 3a 3a 74 65 73 74 32 proc ::test2
60f0: 20 7b 61 72 67 73 7d 20 7b 20 72 65 74 75 72 6e {args} { return
6100: 20 22 54 45 53 54 32 3a 20 24 61 72 67 73 22 20 "TEST2: $args"
6110: 7d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65 }.+ namespace
6120: 20 65 76 61 6c 20 66 6f 6f 20 7b 0a 2b 09 6e 61 eval foo {.+.na
6130: 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 20 mespace unknown
6140: 5b 6c 69 73 74 20 64 69 73 70 61 74 63 68 5d 0a [list dispatch].
6150: 2b 09 70 72 6f 63 20 64 69 73 70 61 74 63 68 20 +.proc dispatch
6160: 7b 61 72 67 73 7d 20 7b 20 72 65 74 75 72 6e 20 {args} { return
6170: 22 55 4e 4b 4e 4f 57 4e 3a 20 24 61 72 67 73 22 "UNKNOWN: $args"
6180: 20 7d 0a 2b 09 70 72 6f 63 20 74 65 73 74 31 20 }.+.proc test1
6190: 7b 61 72 67 73 7d 20 7b 20 72 65 74 75 72 6e 20 {args} { return
61a0: 22 54 45 53 54 31 3a 20 24 61 72 67 73 22 20 7d "TEST1: $args" }
61b0: 0a 2b 09 70 72 6f 63 20 74 65 73 74 20 7b 7d 20 .+.proc test {}
61c0: 7b 0a 2b 09 20 20 20 20 73 65 74 20 72 65 73 75 {.+. set resu
61d0: 6c 74 20 5b 6c 69 73 74 20 5b 74 65 73 74 31 20 lt [list [test1
61e0: 61 20 62 20 63 5d 5d 0a 2b 09 20 20 20 20 6c 61 a b c]].+. la
61f0: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 74 65 ppend result [te
6200: 73 74 32 20 61 20 62 20 63 5d 0a 2b 09 20 20 20 st2 a b c].+.
6210: 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 lappend result
6220: 5b 74 65 73 74 33 20 61 20 62 20 63 5d 0a 2b 09 [test3 a b c].+.
6230: 20 20 20 20 72 65 74 75 72 6e 20 24 72 65 73 75 return $resu
6240: 6c 74 0a 2b 09 7d 0a 2b 20 20 20 20 7d 0a 2b 20 lt.+.}.+ }.+
6250: 20 20 20 73 65 74 20 72 65 73 75 6c 74 20 5b 66 set result [f
6260: 6f 6f 3a 3a 74 65 73 74 5d 0a 2b 20 20 20 20 6e oo::test].+ n
6270: 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 amespace delete
6280: 66 6f 6f 0a 2b 20 20 20 20 72 65 6e 61 6d 65 20 foo.+ rename
6290: 3a 3a 74 65 73 74 32 20 7b 7d 0a 2b 20 20 20 20 ::test2 {}.+
62a0: 73 65 74 20 72 65 73 75 6c 74 0a 2b 7d 20 7b 7b set result.+} {{
62b0: 54 45 53 54 31 3a 20 61 20 62 20 63 7d 20 7b 54 TEST1: a b c} {T
62c0: 45 53 54 32 3a 20 61 20 62 20 63 7d 20 7b 55 4e EST2: a b c} {UN
62d0: 4b 4e 4f 57 4e 3a 20 74 65 73 74 33 20 61 20 62 KNOWN: test3 a b
62e0: 20 63 7d 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 c}}.+test names
62f0: 70 61 63 65 2d 35 32 2e 36 20 7b 75 6e 6b 6e 6f pace-52.6 {unkno
6300: 77 6e 3a 20 64 65 6c 65 74 69 6e 67 20 68 61 6e wn: deleting han
6310: 64 6c 65 72 20 72 65 73 74 6f 72 65 73 20 64 65 dler restores de
6320: 66 61 75 6c 74 7d 20 7b 0a 2b 20 20 20 20 72 65 fault} {.+ re
6330: 6e 61 6d 65 20 3a 3a 75 6e 6b 6e 6f 77 6e 20 3a name ::unknown :
6340: 3a 5f 75 6e 6b 6e 6f 77 6e 5f 6f 72 69 67 0a 2b :_unknown_orig.+
6350: 20 20 20 20 70 72 6f 63 20 3a 3a 75 6e 6b 6e 6f proc ::unkno
6360: 77 6e 20 7b 61 72 67 73 7d 20 7b 20 72 65 74 75 wn {args} { retu
6370: 72 6e 20 22 44 45 46 41 55 4c 54 3a 20 24 61 72 rn "DEFAULT: $ar
6380: 67 73 22 20 7d 0a 2b 20 20 20 20 6e 61 6d 65 73 gs" }.+ names
6390: 70 61 63 65 20 65 76 61 6c 20 66 6f 6f 20 7b 0a pace eval foo {.
63a0: 2b 09 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e +.namespace unkn
63b0: 6f 77 6e 20 64 75 6d 6d 79 0a 2b 09 6e 61 6d 65 own dummy.+.name
63c0: 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 20 7b 7d space unknown {}
63d0: 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 73 65 74 .+ }.+ set
63e0: 20 72 65 73 75 6c 74 20 5b 6e 61 6d 65 73 70 61 result [namespa
63f0: 63 65 20 65 76 61 6c 20 66 6f 6f 20 7b 20 64 75 ce eval foo { du
6400: 6d 6d 79 20 61 20 62 20 63 20 7d 5d 0a 2b 20 20 mmy a b c }].+
6410: 20 20 72 65 6e 61 6d 65 20 3a 3a 75 6e 6b 6e 6f rename ::unkno
6420: 77 6e 20 7b 7d 0a 2b 20 20 20 20 72 65 6e 61 6d wn {}.+ renam
6430: 65 20 3a 3a 5f 75 6e 6b 6e 6f 77 6e 5f 6f 72 69 e ::_unknown_ori
6440: 67 20 3a 3a 75 6e 6b 6e 6f 77 6e 0a 2b 20 20 20 g ::unknown.+
6450: 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 namespace delet
6460: 65 20 66 6f 6f 0a 2b 20 20 20 20 73 65 74 20 72 e foo.+ set r
6470: 65 73 75 6c 74 0a 2b 7d 20 7b 44 45 46 41 55 4c esult.+} {DEFAUL
6480: 54 3a 20 64 75 6d 6d 79 20 61 20 62 20 63 7d 0a T: dummy a b c}.
6490: 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d +test namespace-
64a0: 35 32 2e 37 20 7b 75 6e 6b 6e 6f 77 6e 3a 20 73 52.7 {unknown: s
64b0: 65 74 74 69 6e 67 20 67 6c 6f 62 61 6c 20 75 6e etting global un
64c0: 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 7d 20 7b known handler} {
64d0: 0a 2b 20 20 20 20 70 72 6f 63 20 3a 3a 6d 79 75 .+ proc ::myu
64e0: 6e 6b 6e 6f 77 6e 20 7b 61 72 67 73 7d 20 7b 20 nknown {args} {
64f0: 72 65 74 75 72 6e 20 22 4d 59 55 4e 4b 4e 4f 57 return "MYUNKNOW
6500: 4e 3a 20 24 61 72 67 73 22 20 7d 0a 2b 20 20 20 N: $args" }.+
6510: 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 namespace eval
6520: 3a 3a 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 75 :: { namespace u
6530: 6e 6b 6e 6f 77 6e 20 3a 3a 6d 79 75 6e 6b 6e 6f nknown ::myunkno
6540: 77 6e 20 7d 0a 2b 20 20 20 20 73 65 74 20 72 65 wn }.+ set re
6550: 73 75 6c 74 20 5b 6e 61 6d 65 73 70 61 63 65 20 sult [namespace
6560: 65 76 61 6c 20 66 6f 6f 20 7b 20 64 75 6d 6d 79 eval foo { dummy
6570: 20 61 20 62 20 63 20 7d 5d 0a 2b 20 20 20 20 6e a b c }].+ n
6580: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a amespace eval ::
6590: 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b { namespace unk
65a0: 6e 6f 77 6e 20 7b 7d 20 7d 0a 2b 20 20 20 20 72 nown {} }.+ r
65b0: 65 6e 61 6d 65 20 3a 3a 6d 79 75 6e 6b 6e 6f 77 ename ::myunknow
65c0: 6e 20 7b 7d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 n {}.+ namesp
65d0: 61 63 65 20 64 65 6c 65 74 65 20 66 6f 6f 0a 2b ace delete foo.+
65e0: 20 20 20 20 73 65 74 20 72 65 73 75 6c 74 0a 2b set result.+
65f0: 7d 20 7b 4d 59 55 4e 4b 4e 4f 57 4e 3a 20 64 75 } {MYUNKNOWN: du
6600: 6d 6d 79 20 61 20 62 20 63 7d 0a 2b 20 20 20 20 mmy a b c}.+
6610: 0a 20 23 20 63 6c 65 61 6e 75 70 0a 20 63 61 74 . # cleanup. cat
6620: 63 68 20 7b 72 65 6e 61 6d 65 20 63 6d 64 31 20 ch {rename cmd1
6630: 7b 7d 7d 0a 20 63 61 74 63 68 20 7b 75 6e 73 65 {}}. catch {unse
6640: 74 20 6c 7d 0a t l}.