Tcl Source Code

Hex Artifact Content
Login

Artifact ca0562894a637a8c435c84b8c2b44c265d2306c8:

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