Tcl Source Code

Hex Artifact Content
Login

Artifact ced19582ccccf21bdc60173c99bfa1352b6f593b:

Attachment "tip181-5.patch" to ticket [958222ffff] added by tallniel 2006-01-19 00:00:13.
0000: 49 6e 64 65 78 3a 20 64 6f 63 2f 4e 61 6d 65 73  Index: doc/Names
0010: 70 61 63 65 2e 33 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d  pace.3.=========
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66  ==========.RCS f
0060: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63  ile: /cvsroot/tc
0070: 6c 2f 74 63 6c 2f 64 6f 63 2f 4e 61 6d 65 73 70  l/tcl/doc/Namesp
0080: 61 63 65 2e 33 2c 76 0a 72 65 74 72 69 65 76 69  ace.3,v.retrievi
0090: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 37 0a  ng revision 1.7.
00a0: 64 69 66 66 20 2d 75 20 2d 72 31 2e 37 20 4e 61  diff -u -r1.7 Na
00b0: 6d 65 73 70 61 63 65 2e 33 0a 2d 2d 2d 20 64 6f  mespace.3.--- do
00c0: 63 2f 4e 61 6d 65 73 70 61 63 65 2e 33 09 37 20  c/Namespace.3.7 
00d0: 4f 63 74 20 32 30 30 34 20 31 35 3a 31 35 3a 33  Oct 2004 15:15:3
00e0: 38 20 2d 30 30 30 30 09 31 2e 37 0a 2b 2b 2b 20  8 -0000.1.7.+++ 
00f0: 64 6f 63 2f 4e 61 6d 65 73 70 61 63 65 2e 33 09  doc/Namespace.3.
0100: 31 38 20 4a 61 6e 20 32 30 30 36 20 31 36 3a 35  18 Jan 2006 16:5
0110: 36 3a 34 32 20 2d 30 30 30 30 0a 40 40 20 2d 31  6:42 -0000.@@ -1
0120: 33 2c 37 20 2b 31 33 2c 37 20 40 40 0a 20 2e 54  3,7 +13,7 @@. .T
0130: 48 20 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 20  H Tcl_Namespace 
0140: 33 20 38 2e 35 20 54 63 6c 20 22 54 63 6c 20 4c  3 8.5 Tcl "Tcl L
0150: 69 62 72 61 72 79 20 50 72 6f 63 65 64 75 72 65  ibrary Procedure
0160: 73 22 0a 20 2e 42 53 0a 20 2e 53 48 20 4e 41 4d  s". .BS. .SH NAM
0170: 45 0a 2d 54 63 6c 5f 41 70 70 65 6e 64 45 78 70  E.-Tcl_AppendExp
0180: 6f 72 74 4c 69 73 74 2c 20 54 63 6c 5f 43 72 65  ortList, Tcl_Cre
0190: 61 74 65 4e 61 6d 65 73 70 61 63 65 2c 20 54 63  ateNamespace, Tc
01a0: 6c 5f 44 65 6c 65 74 65 4e 61 6d 65 73 70 61 63  l_DeleteNamespac
01b0: 65 2c 20 54 63 6c 5f 45 78 70 6f 72 74 2c 20 54  e, Tcl_Export, T
01c0: 63 6c 5f 46 69 6e 64 43 6f 6d 6d 61 6e 64 2c 20  cl_FindCommand, 
01d0: 54 63 6c 5f 46 69 6e 64 4e 61 6d 65 73 70 61 63  Tcl_FindNamespac
01e0: 65 2c 20 54 63 6c 5f 46 6f 72 67 65 74 49 6d 70  e, Tcl_ForgetImp
01f0: 6f 72 74 2c 20 54 63 6c 5f 47 65 74 43 75 72 72  ort, Tcl_GetCurr
0200: 65 6e 74 4e 61 6d 65 73 70 61 63 65 2c 20 54 63  entNamespace, Tc
0210: 6c 5f 47 65 74 47 6c 6f 62 6c 61 4e 61 6d 65 73  l_GetGloblaNames
0220: 70 61 63 65 2c 20 54 63 6c 5f 49 6d 70 6f 72 74  pace, Tcl_Import
0230: 20 5c 2d 20 6d 61 6e 69 70 75 6c 61 74 65 20 6e   \- manipulate n
0240: 61 6d 65 73 70 61 63 65 73 0a 2b 54 63 6c 5f 41  amespaces.+Tcl_A
0250: 70 70 65 6e 64 45 78 70 6f 72 74 4c 69 73 74 2c  ppendExportList,
0260: 20 54 63 6c 5f 43 72 65 61 74 65 4e 61 6d 65 73   Tcl_CreateNames
0270: 70 61 63 65 2c 20 54 63 6c 5f 44 65 6c 65 74 65  pace, Tcl_Delete
0280: 4e 61 6d 65 73 70 61 63 65 2c 20 54 63 6c 5f 45  Namespace, Tcl_E
0290: 78 70 6f 72 74 2c 20 54 63 6c 5f 46 69 6e 64 43  xport, Tcl_FindC
02a0: 6f 6d 6d 61 6e 64 2c 20 54 63 6c 5f 46 69 6e 64  ommand, Tcl_Find
02b0: 4e 61 6d 65 73 70 61 63 65 2c 20 54 63 6c 5f 46  Namespace, Tcl_F
02c0: 6f 72 67 65 74 49 6d 70 6f 72 74 2c 20 54 63 6c  orgetImport, Tcl
02d0: 5f 47 65 74 43 75 72 72 65 6e 74 4e 61 6d 65 73  _GetCurrentNames
02e0: 70 61 63 65 2c 20 54 63 6c 5f 47 65 74 47 6c 6f  pace, Tcl_GetGlo
02f0: 62 6c 61 4e 61 6d 65 73 70 61 63 65 2c 20 54 63  blaNamespace, Tc
0300: 6c 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e  l_GetNamespaceUn
0310: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 2c 20 54 63  knownHandler, Tc
0320: 6c 5f 49 6d 70 6f 72 74 2c 20 54 63 6c 5f 53 65  l_Import, Tcl_Se
0330: 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77  tNamespaceUnknow
0340: 6e 48 61 6e 64 6c 65 72 20 5c 2d 20 6d 61 6e 69  nHandler \- mani
0350: 70 75 6c 61 74 65 20 6e 61 6d 65 73 70 61 63 65  pulate namespace
0360: 73 0a 20 2e 53 48 20 53 59 4e 4f 50 53 49 53 0a  s. .SH SYNOPSIS.
0370: 20 2e 6e 66 0a 20 5c 66 42 23 69 6e 63 6c 75 64   .nf. \fB#includ
0380: 65 20 3c 74 63 6c 2e 68 3e 5c 66 52 0a 40 40 20  e <tcl.h>\fR.@@ 
0390: 2d 34 36 2c 36 20 2b 34 36 2c 31 32 20 40 40 0a  -46,6 +46,12 @@.
03a0: 20 2e 73 70 0a 20 54 63 6c 5f 43 6f 6d 6d 61 6e   .sp. Tcl_Comman
03b0: 64 0a 20 5c 66 42 54 63 6c 5f 46 69 6e 64 43 6f  d. \fBTcl_FindCo
03c0: 6d 6d 61 6e 64 5c 66 52 28 5c 66 49 69 6e 74 65  mmand\fR(\fIinte
03d0: 72 70 2c 20 6e 61 6d 65 2c 20 63 6f 6e 74 65 78  rp, name, contex
03e0: 74 4e 73 50 74 72 2c 20 66 6c 61 67 73 5c 66 52  tNsPtr, flags\fR
03f0: 29 0a 2b 2e 73 70 0a 2b 54 63 6c 5f 4f 62 6a 20  ).+.sp.+Tcl_Obj 
0400: 2a 0a 2b 5c 66 42 54 63 6c 5f 47 65 74 4e 61 6d  *.+\fBTcl_GetNam
0410: 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e  espaceUnknownHan
0420: 64 6c 65 72 28 5c 66 49 69 6e 74 65 72 70 2c 20  dler(\fIinterp, 
0430: 6e 73 50 74 72 5c 66 52 29 0a 2b 2e 73 70 0a 2b  nsPtr\fR).+.sp.+
0440: 69 6e 74 0a 2b 5c 66 42 54 63 6c 5f 53 65 74 4e  int.+\fBTcl_SetN
0450: 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48  amespaceUnknownH
0460: 61 6e 64 6c 65 72 28 5c 66 49 69 6e 74 65 72 70  andler(\fIinterp
0470: 2c 20 6e 73 50 74 72 2c 20 68 61 6e 64 6c 65 72  , nsPtr, handler
0480: 50 74 72 5c 66 52 29 0a 20 2e 53 48 20 41 52 47  Ptr\fR). .SH ARG
0490: 55 4d 45 4e 54 53 0a 20 2e 41 53 20 54 63 6c 5f  UMENTS. .AS Tcl_
04a0: 4e 61 6d 65 73 70 61 63 65 44 65 6c 65 74 65 50  NamespaceDeleteP
04b0: 72 6f 63 20 61 6c 6c 6f 77 4f 76 65 72 77 72 69  roc allowOverwri
04c0: 74 65 20 69 6e 2f 6f 75 74 0a 20 2e 41 50 20 54  te in/out. .AP T
04d0: 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72  cl_Interp *inter
04e0: 70 20 69 6e 2f 6f 75 74 0a 40 40 20 2d 38 37 2c  p in/out.@@ -87,
04f0: 36 20 2b 39 33 2c 39 20 40 40 0a 20 69 6e 64 69  6 +93,9 @@. indi
0500: 63 61 74 65 73 20 74 68 61 74 20 74 68 65 20 73  cates that the s
0510: 65 61 72 63 68 20 69 73 20 61 6c 77 61 79 73 20  earch is always 
0520: 74 6f 20 62 65 20 63 6f 6e 64 75 63 74 65 64 20  to be conducted 
0530: 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65 0a  relative to the.
0540: 20 63 6f 6e 74 65 78 74 20 6e 61 6d 65 73 70 61   context namespa
0550: 63 65 29 2c 20 61 6e 64 20 5c 66 42 54 43 4c 5f  ce), and \fBTCL_
0560: 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 5c 66 52  LEAVE_ERR_MSG\fR
0570: 20 28 69 6e 64 69 63 61 74 65 73 20 74 68 61 74   (indicates that
0580: 20 61 6e 20 65 72 72 6f 72 0a 20 6d 65 73 73 61   an error. messa
0590: 67 65 20 73 68 6f 75 6c 64 20 62 65 20 6c 65 66  ge should be lef
05a0: 74 20 69 6e 20 74 68 65 20 69 6e 74 65 72 70 72  t in the interpr
05b0: 65 74 65 72 20 69 66 20 74 68 65 20 73 65 61 72  eter if the sear
05c0: 63 68 20 66 61 69 6c 73 2e 29 0a 2b 2e 41 50 20  ch fails.).+.AP 
05d0: 54 63 6c 5f 4f 62 6a 20 2a 68 61 6e 64 6c 65 72  Tcl_Obj *handler
05e0: 50 74 72 20 69 6e 0a 2b 41 20 73 63 72 69 70 74  Ptr in.+A script
05f0: 20 66 72 61 67 6d 65 6e 74 20 74 6f 20 62 65 20   fragment to be 
0600: 69 6e 73 74 61 6c 6c 65 64 20 61 73 20 74 68 65  installed as the
0610: 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64   unknown command
0620: 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 65   handler for the
0630: 0a 2b 6e 61 6d 65 73 70 61 63 65 2c 20 6f 72 20  .+namespace, or 
0640: 4e 55 4c 4c 20 74 6f 20 72 65 73 65 74 20 74 68  NULL to reset th
0650: 65 20 68 61 6e 64 6c 65 72 20 74 6f 20 69 74 73  e handler to its
0660: 20 64 65 66 61 75 6c 74 2e 0a 20 2e 42 45 0a 20   default.. .BE. 
0670: 0a 20 2e 53 48 20 44 45 53 43 52 49 50 54 49 4f  . .SH DESCRIPTIO
0680: 4e 0a 40 40 20 2d 31 34 33 2c 36 20 2b 31 35 32  N.@@ -143,6 +152
0690: 2c 31 33 20 40 40 0a 20 5c 66 42 54 63 6c 5f 46  ,13 @@. \fBTcl_F
06a0: 69 6e 64 43 6f 6d 6d 61 6e 64 5c 66 52 20 73 65  indCommand\fR se
06b0: 61 72 63 68 65 73 20 66 6f 72 20 61 20 63 6f 6d  arches for a com
06c0: 6d 61 6e 64 20 6e 61 6d 65 64 20 5c 66 49 6e 61  mand named \fIna
06d0: 6d 65 5c 66 52 20 77 69 74 68 69 6e 0a 20 74 68  me\fR within. th
06e0: 65 20 63 6f 6e 74 65 78 74 20 6f 66 20 74 68 65  e context of the
06f0: 20 6e 61 6d 65 73 70 61 63 65 20 5c 66 49 63 6f   namespace \fIco
0700: 6e 74 65 78 74 4e 73 50 74 72 5c 66 52 2e 20 20  ntextNsPtr\fR.  
0710: 49 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 0a 20  If the command. 
0720: 63 61 6e 6e 6f 74 20 62 65 20 66 6f 75 6e 64 2c  cannot be found,
0730: 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65   NULL is returne
0740: 64 2e 0a 2b 2e 50 50 0a 2b 5c 66 42 54 63 6c 5f  d..+.PP.+\fBTcl_
0750: 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e  GetNamespaceUnkn
0760: 6f 77 6e 48 61 6e 64 6c 65 72 5c 66 52 20 72 65  ownHandler\fR re
0770: 74 75 72 6e 73 20 74 68 65 20 75 6e 6b 6e 6f 77  turns the unknow
0780: 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65  n command handle
0790: 72 0a 2b 66 6f 72 20 74 68 65 20 6e 61 6d 65 73  r.+for the names
07a0: 70 61 63 65 2c 20 6f 72 20 4e 55 4c 4c 20 69 66  pace, or NULL if
07b0: 20 6e 6f 6e 65 20 69 73 20 73 65 74 2e 0a 2b 2e   none is set..+.
07c0: 50 50 0a 2b 5c 66 42 54 63 6c 5f 53 65 74 4e 61  PP.+\fBTcl_SetNa
07d0: 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61  mespaceUnknownHa
07e0: 6e 64 6c 65 72 5c 66 52 20 73 65 74 73 20 74 68  ndler\fR sets th
07f0: 65 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e  e unknown comman
0800: 64 20 68 61 6e 64 6c 65 72 20 66 6f 72 0a 2b 74  d handler for.+t
0810: 68 65 20 6e 61 6d 65 73 70 61 63 65 2e 20 49 66  he namespace. If
0820: 20 5c 66 49 68 61 6e 64 6c 65 72 50 74 72 5c 66   \fIhandlerPtr\f
0830: 52 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20  R is NULL, then 
0840: 74 68 65 20 68 61 6e 64 6c 65 72 20 69 73 20 72  the handler is r
0850: 65 73 65 74 20 74 6f 0a 2b 69 74 73 20 64 65 66  eset to.+its def
0860: 61 75 6c 74 2e 0a 20 0a 20 2e 53 48 20 22 53 45  ault.. . .SH "SE
0870: 45 20 41 4c 53 4f 22 0a 20 54 63 6c 5f 43 72 65  E ALSO". Tcl_Cre
0880: 61 74 65 43 6f 6d 6d 61 6e 64 2c 20 54 63 6c 5f  ateCommand, Tcl_
0890: 4c 69 73 74 4f 62 6a 41 70 70 65 6e 64 45 6c 65  ListObjAppendEle
08a0: 6d 65 6e 74 73 2c 20 54 63 6c 5f 53 65 74 56 61  ments, Tcl_SetVa
08b0: 72 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 6e 61 6d  r.Index: doc/nam
08c0: 65 73 70 61 63 65 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d  espace.n.=======
08d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
08e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
08f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0900: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53  ============.RCS
0910: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f   file: /cvsroot/
0920: 74 63 6c 2f 74 63 6c 2f 64 6f 63 2f 6e 61 6d 65  tcl/tcl/doc/name
0930: 73 70 61 63 65 2e 6e 2c 76 0a 72 65 74 72 69 65  space.n,v.retrie
0940: 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e  ving revision 1.
0950: 31 38 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 31  18.diff -u -r1.1
0960: 38 20 6e 61 6d 65 73 70 61 63 65 2e 6e 0a 2d 2d  8 namespace.n.--
0970: 2d 20 64 6f 63 2f 6e 61 6d 65 73 70 61 63 65 2e  - doc/namespace.
0980: 6e 09 33 30 20 4d 61 79 20 32 30 30 35 20 30 30  n.30 May 2005 00
0990: 3a 30 34 3a 34 35 20 2d 30 30 30 30 09 31 2e 31  :04:45 -0000.1.1
09a0: 38 0a 2b 2b 2b 20 64 6f 63 2f 6e 61 6d 65 73 70  8.+++ doc/namesp
09b0: 61 63 65 2e 6e 09 31 38 20 4a 61 6e 20 32 30 30  ace.n.18 Jan 200
09c0: 36 20 31 36 3a 35 36 3a 34 34 20 2d 30 30 30 30  6 16:56:44 -0000
09d0: 0a 40 40 20 2d 32 34 39 2c 36 20 2b 32 34 39 2c  .@@ -249,6 +249,
09e0: 31 37 20 40 40 0a 20 49 74 20 64 6f 65 73 20 6e  17 @@. It does n
09f0: 6f 74 20 63 68 65 63 6b 20 77 68 65 74 68 65 72  ot check whether
0a00: 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 6e   the namespace n
0a10: 61 6d 65 73 20 61 72 65 2c 20 69 6e 20 66 61 63  ames are, in fac
0a20: 74 2c 0a 20 74 68 65 20 6e 61 6d 65 73 20 6f 66  t,. the names of
0a30: 20 63 75 72 72 65 6e 74 6c 79 20 64 65 66 69 6e   currently defin
0a40: 65 64 20 6e 61 6d 65 73 70 61 63 65 73 2e 0a 20  ed namespaces.. 
0a50: 2e 54 50 0a 2b 5c 66 42 6e 61 6d 65 73 70 61 63  .TP.+\fBnamespac
0a60: 65 20 75 6e 6b 6e 6f 77 6e 5c 66 52 20 3f 5c 66  e unknown\fR ?\f
0a70: 49 73 63 72 69 70 74 5c 66 52 3f 0a 2b 53 65 74  Iscript\fR?.+Set
0a80: 73 20 6f 72 20 72 65 74 75 72 6e 73 20 74 68 65  s or returns the
0a90: 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64   unknown command
0aa0: 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 65   handler for the
0ab0: 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61   current namespa
0ac0: 63 65 2e 0a 2b 54 68 65 20 68 61 6e 64 6c 65 72  ce..+The handler
0ad0: 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e   is invoked when
0ae0: 20 61 20 63 6f 6d 6d 61 6e 64 20 63 61 6c 6c 65   a command calle
0af0: 64 20 66 72 6f 6d 20 77 69 74 68 69 6e 20 74 68  d from within th
0b00: 65 20 6e 61 6d 65 73 70 61 63 65 0a 2b 63 61 6e  e namespace.+can
0b10: 6e 6f 74 20 62 65 20 66 6f 75 6e 64 20 28 69 6e  not be found (in
0b20: 20 65 69 74 68 65 72 20 74 68 65 20 63 75 72 72   either the curr
0b30: 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 20 6f 72  ent namespace or
0b40: 20 74 68 65 20 67 6c 6f 62 61 6c 20 6e 61 6d 65   the global name
0b50: 73 70 61 63 65 29 2e 20 0a 2b 54 68 65 20 5c 66  space). .+The \f
0b60: 49 73 63 72 69 70 74 5c 66 52 20 61 72 67 75 6d  Iscript\fR argum
0b70: 65 6e 74 2c 20 69 66 20 67 69 76 65 6e 2c 20 73  ent, if given, s
0b80: 68 6f 75 6c 64 20 62 65 20 61 20 77 65 6c 6c 0a  hould be a well.
0b90: 2b 66 6f 72 6d 65 64 20 6c 69 73 74 20 72 65 70  +formed list rep
0ba0: 72 65 73 65 6e 74 69 6e 67 20 61 20 63 6f 6d 6d  resenting a comm
0bb0: 61 6e 64 20 6e 61 6d 65 20 61 6e 64 20 6f 70 74  and name and opt
0bc0: 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 2e  ional arguments.
0bd0: 20 57 68 65 6e 0a 2b 74 68 65 20 68 61 6e 64 6c   When.+the handl
0be0: 65 72 20 69 73 20 69 6e 76 6f 6b 65 64 2c 20 74  er is invoked, t
0bf0: 68 65 20 66 75 6c 6c 20 69 6e 76 6f 63 61 74 69  he full invocati
0c00: 6f 6e 20 6c 69 6e 65 20 77 69 6c 6c 20 62 65 20  on line will be 
0c10: 61 70 70 65 6e 64 65 64 20 74 6f 20 74 68 65 0a  appended to the.
0c20: 2b 73 63 72 69 70 74 20 61 6e 64 20 74 68 65 20  +script and the 
0c30: 72 65 73 75 6c 74 20 65 76 61 6c 75 61 74 65 64  result evaluated
0c40: 20 69 6e 20 74 68 65 20 63 6f 6e 74 65 78 74 20   in the context 
0c50: 6f 66 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65  of the namespace
0c60: 2e 20 54 68 65 20 0a 2b 64 65 66 61 75 6c 74 20  . The .+default 
0c70: 68 61 6e 64 6c 65 72 20 66 6f 72 20 61 6c 6c 20  handler for all 
0c80: 6e 61 6d 65 73 70 61 63 65 73 20 69 73 20 5c 66  namespaces is \f
0c90: 42 3a 3a 75 6e 6b 6e 6f 77 6e 5c 66 52 2e 20 49  B::unknown\fR. I
0ca0: 66 20 6e 6f 20 61 72 67 75 6d 65 6e 74 0a 2b 69  f no argument.+i
0cb0: 73 20 67 69 76 65 6e 2c 20 69 74 20 72 65 74 75  s given, it retu
0cc0: 72 6e 73 20 74 68 65 20 68 61 6e 64 6c 65 72 20  rns the handler 
0cd0: 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
0ce0: 6e 61 6d 65 73 70 61 63 65 2e 0a 2b 2e 54 50 0a  namespace..+.TP.
0cf0: 20 5c 66 42 6e 61 6d 65 73 70 61 63 65 20 77 68   \fBnamespace wh
0d00: 69 63 68 5c 66 52 20 3f 5c 2d 5c 66 42 63 6f 6d  ich\fR ?\-\fBcom
0d10: 6d 61 6e 64 5c 66 52 3f 20 3f 5c 2d 5c 66 42 76  mand\fR? ?\-\fBv
0d20: 61 72 69 61 62 6c 65 5c 66 52 3f 20 5c 66 49 6e  ariable\fR? \fIn
0d30: 61 6d 65 5c 66 52 0a 20 4c 6f 6f 6b 73 20 75 70  ame\fR. Looks up
0d40: 20 5c 66 49 6e 61 6d 65 5c 66 52 20 61 73 20 65   \fIname\fR as e
0d50: 69 74 68 65 72 20 61 20 63 6f 6d 6d 61 6e 64 20  ither a command 
0d60: 6f 72 20 76 61 72 69 61 62 6c 65 0a 20 61 6e 64  or variable. and
0d70: 20 72 65 74 75 72 6e 73 20 69 74 73 20 66 75 6c   returns its ful
0d80: 6c 79 2d 71 75 61 6c 69 66 69 65 64 20 6e 61 6d  ly-qualified nam
0d90: 65 2e 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 75 6e  e..Index: doc/un
0da0: 6b 6e 6f 77 6e 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d  known.n.========
0db0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0dc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0dd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0de0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20  ===========.RCS 
0df0: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74  file: /cvsroot/t
0e00: 63 6c 2f 74 63 6c 2f 64 6f 63 2f 75 6e 6b 6e 6f  cl/tcl/doc/unkno
0e10: 77 6e 2e 6e 2c 76 0a 72 65 74 72 69 65 76 69 6e  wn.n,v.retrievin
0e20: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 35 0a 64  g revision 1.5.d
0e30: 69 66 66 20 2d 75 20 2d 72 31 2e 35 20 75 6e 6b  iff -u -r1.5 unk
0e40: 6e 6f 77 6e 2e 6e 0a 2d 2d 2d 20 64 6f 63 2f 75  nown.n.--- doc/u
0e50: 6e 6b 6e 6f 77 6e 2e 6e 09 33 30 20 4d 61 79 20  nknown.n.30 May 
0e60: 32 30 30 34 20 31 34 3a 31 33 3a 35 32 20 2d 30  2004 14:13:52 -0
0e70: 30 30 30 09 31 2e 35 0a 2b 2b 2b 20 64 6f 63 2f  000.1.5.+++ doc/
0e80: 75 6e 6b 6e 6f 77 6e 2e 6e 09 31 38 20 4a 61 6e  unknown.n.18 Jan
0e90: 20 32 30 30 36 20 31 36 3a 35 36 3a 34 34 20 2d   2006 16:56:44 -
0ea0: 30 30 30 30 0a 40 40 20 2d 32 33 2c 31 35 20 2b  0000.@@ -23,15 +
0eb0: 32 33 2c 31 38 20 40 40 0a 20 74 72 69 65 73 20  23,18 @@. tries 
0ec0: 74 6f 20 69 6e 76 6f 6b 65 20 61 20 63 6f 6d 6d  to invoke a comm
0ed0: 61 6e 64 20 74 68 61 74 20 64 6f 65 73 6e 27 74  and that doesn't
0ee0: 20 65 78 69 73 74 2e 20 20 54 68 65 20 64 65 66   exist.  The def
0ef0: 61 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74  ault implementat
0f00: 69 6f 6e 0a 20 6f 66 20 5c 66 42 75 6e 6b 6e 6f  ion. of \fBunkno
0f10: 77 6e 5c 66 52 20 69 73 20 61 20 6c 69 62 72 61  wn\fR is a libra
0f20: 72 79 20 70 72 6f 63 65 64 75 72 65 20 64 65 66  ry procedure def
0f30: 69 6e 65 64 20 77 68 65 6e 20 54 63 6c 20 69 6e  ined when Tcl in
0f40: 69 74 69 61 6c 69 7a 65 73 20 61 6e 0a 20 69 6e  itializes an. in
0f50: 74 65 72 70 72 65 74 65 72 2e 20 20 59 6f 75 20  terpreter.  You 
0f60: 63 61 6e 20 6f 76 65 72 72 69 64 65 20 74 68 65  can override the
0f70: 20 64 65 66 61 75 6c 74 20 5c 66 42 75 6e 6b 6e   default \fBunkn
0f80: 6f 77 6e 5c 66 52 20 74 6f 20 63 68 61 6e 67 65  own\fR to change
0f90: 20 69 74 73 0a 2d 66 75 6e 63 74 69 6f 6e 61 6c   its.-functional
0fa0: 69 74 79 2e 20 20 4e 6f 74 65 20 74 68 61 74 20  ity.  Note that 
0fb0: 74 68 65 72 65 20 69 73 20 6e 6f 20 64 65 66 61  there is no defa
0fc0: 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ult implementati
0fd0: 6f 6e 20 6f 66 0a 2d 5c 66 42 75 6e 6b 6e 6f 77  on of.-\fBunknow
0fe0: 6e 5c 66 52 20 69 6e 20 61 20 73 61 66 65 20 69  n\fR in a safe i
0ff0: 6e 74 65 72 70 72 65 74 65 72 2e 0a 2b 66 75 6e  nterpreter..+fun
1000: 63 74 69 6f 6e 61 6c 69 74 79 2c 20 6f 72 20 79  ctionality, or y
1010: 6f 75 20 63 61 6e 20 72 65 67 69 73 74 65 72 20  ou can register 
1020: 61 20 6e 65 77 20 68 61 6e 64 6c 65 72 20 66 6f  a new handler fo
1030: 72 20 69 6e 64 69 76 69 64 75 61 6c 20 6e 61 6d  r individual nam
1040: 65 73 70 61 63 65 73 0a 2b 75 73 69 6e 67 20 74  espaces.+using t
1050: 68 65 20 5c 66 42 6e 61 6d 65 73 70 61 63 65 20  he \fBnamespace 
1060: 75 6e 6b 6e 6f 77 6e 5c 66 52 20 63 6f 6d 6d 61  unknown\fR comma
1070: 6e 64 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 74  nd.  Note that t
1080: 68 65 72 65 20 69 73 20 6e 6f 20 64 65 66 61 75  here is no defau
1090: 6c 74 20 0a 2b 69 6d 70 6c 65 6d 65 6e 74 61 74  lt .+implementat
10a0: 69 6f 6e 20 6f 66 20 5c 66 42 75 6e 6b 6e 6f 77  ion of \fBunknow
10b0: 6e 5c 66 52 20 69 6e 20 61 20 73 61 66 65 20 69  n\fR in a safe i
10c0: 6e 74 65 72 70 72 65 74 65 72 2e 0a 20 2e 50 50  nterpreter.. .PP
10d0: 0a 20 49 66 20 74 68 65 20 54 63 6c 20 69 6e 74  . If the Tcl int
10e0: 65 72 70 72 65 74 65 72 20 65 6e 63 6f 75 6e 74  erpreter encount
10f0: 65 72 73 20 61 20 63 6f 6d 6d 61 6e 64 20 6e 61  ers a command na
1100: 6d 65 20 66 6f 72 20 77 68 69 63 68 20 74 68 65  me for which the
1110: 72 65 0a 2d 69 73 20 6e 6f 74 20 61 20 64 65 66  re.-is not a def
1120: 69 6e 65 64 20 63 6f 6d 6d 61 6e 64 2c 20 74 68  ined command, th
1130: 65 6e 20 54 63 6c 20 63 68 65 63 6b 73 20 66 6f  en Tcl checks fo
1140: 72 20 74 68 65 20 65 78 69 73 74 65 6e 63 65 20  r the existence 
1150: 6f 66 0a 2d 61 20 63 6f 6d 6d 61 6e 64 20 6e 61  of.-a command na
1160: 6d 65 64 20 5c 66 42 75 6e 6b 6e 6f 77 6e 5c 66  med \fBunknown\f
1170: 52 2e 0a 2d 49 66 20 74 68 65 72 65 20 69 73 20  R..-If there is 
1180: 6e 6f 20 73 75 63 68 20 63 6f 6d 6d 61 6e 64 2c  no such command,
1190: 20 74 68 65 6e 20 74 68 65 20 69 6e 74 65 72 70   then the interp
11a0: 72 65 74 65 72 20 72 65 74 75 72 6e 73 20 61 6e  reter returns an
11b0: 0a 2d 65 72 72 6f 72 2e 0a 2d 49 66 20 74 68 65  .-error..-If the
11c0: 20 5c 66 42 75 6e 6b 6e 6f 77 6e 5c 66 52 20 63   \fBunknown\fR c
11d0: 6f 6d 6d 61 6e 64 20 65 78 69 73 74 73 2c 20 74  ommand exists, t
11e0: 68 65 6e 20 69 74 20 69 73 20 69 6e 76 6f 6b 65  hen it is invoke
11f0: 64 20 77 69 74 68 0a 2b 69 73 20 6e 6f 74 20 61  d with.+is not a
1200: 20 64 65 66 69 6e 65 64 20 63 6f 6d 6d 61 6e 64   defined command
1210: 20 28 69 6e 20 65 69 74 68 65 72 20 74 68 65 20   (in either the 
1220: 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63  current namespac
1230: 65 2c 20 6f 72 20 74 68 65 20 0a 2b 67 6c 6f 62  e, or the .+glob
1240: 61 6c 20 6e 61 6d 65 73 70 61 63 65 29 2c 20 74  al namespace), t
1250: 68 65 6e 20 54 63 6c 20 63 68 65 63 6b 73 20 66  hen Tcl checks f
1260: 6f 72 20 74 68 65 20 65 78 69 73 74 65 6e 63 65  or the existence
1270: 20 6f 66 0a 2b 61 6e 20 75 6e 6b 6e 6f 77 6e 20   of.+an unknown 
1280: 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 65 20  handler for the 
1290: 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63  current namespac
12a0: 65 2e 20 42 79 20 64 65 66 61 75 6c 74 2c 20 74  e. By default, t
12b0: 68 69 73 0a 2b 68 61 6e 64 6c 65 72 20 69 73 20  his.+handler is 
12c0: 61 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 64 20  a command named 
12d0: 5c 66 42 3a 3a 75 6e 6b 6e 6f 77 6e 5c 66 52 2e  \fB::unknown\fR.
12e0: 20 20 49 66 20 74 68 65 72 65 20 69 73 20 6e 6f    If there is no
12f0: 20 73 75 63 68 20 0a 2b 63 6f 6d 6d 61 6e 64 2c   such .+command,
1300: 20 74 68 65 6e 20 74 68 65 20 69 6e 74 65 72 70   then the interp
1310: 72 65 74 65 72 20 72 65 74 75 72 6e 73 20 61 6e  reter returns an
1320: 20 65 72 72 6f 72 2e 0a 2b 49 66 20 74 68 65 20   error..+If the 
1330: 5c 66 42 75 6e 6b 6e 6f 77 6e 5c 66 52 20 63 6f  \fBunknown\fR co
1340: 6d 6d 61 6e 64 20 65 78 69 73 74 73 20 28 6f 72  mmand exists (or
1350: 20 61 20 6e 65 77 20 68 61 6e 64 6c 65 72 20 68   a new handler h
1360: 61 73 20 62 65 65 6e 0a 2b 72 65 67 69 73 74 65  as been.+registe
1370: 72 65 64 20 66 6f 72 20 74 68 65 20 63 75 72 72  red for the curr
1380: 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 29 2c 20  ent namespace), 
1390: 74 68 65 6e 20 69 74 20 69 73 20 69 6e 76 6f 6b  then it is invok
13a0: 65 64 20 77 69 74 68 0a 20 61 72 67 75 6d 65 6e  ed with. argumen
13b0: 74 73 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66  ts consisting of
13c0: 20 74 68 65 20 66 75 6c 6c 79 2d 73 75 62 73 74   the fully-subst
13d0: 69 74 75 74 65 64 20 6e 61 6d 65 20 61 6e 64 20  ituted name and 
13e0: 61 72 67 75 6d 65 6e 74 73 0a 20 66 6f 72 20 74  arguments. for t
13f0: 68 65 20 6f 72 69 67 69 6e 61 6c 20 6e 6f 6e 2d  he original non-
1400: 65 78 69 73 74 65 6e 74 20 63 6f 6d 6d 61 6e 64  existent command
1410: 2e 0a 20 54 68 65 20 5c 66 42 75 6e 6b 6e 6f 77  .. The \fBunknow
1420: 6e 5c 66 52 20 63 6f 6d 6d 61 6e 64 20 74 79 70  n\fR command typ
1430: 69 63 61 6c 6c 79 20 64 6f 65 73 20 74 68 69 6e  ically does thin
1440: 67 73 20 6c 69 6b 65 20 73 65 61 72 63 68 69 6e  gs like searchin
1450: 67 0a 40 40 20 2d 38 37 2c 37 20 2b 39 30 2c 37  g.@@ -87,7 +90,7
1460: 20 40 40 0a 20 2e 43 45 0a 20 0a 20 2e 53 48 20   @@. .CE. . .SH 
1470: 22 53 45 45 20 41 4c 53 4f 22 0a 2d 69 6e 66 6f  "SEE ALSO".-info
1480: 28 6e 29 2c 20 70 72 6f 63 28 6e 29 2c 20 69 6e  (n), proc(n), in
1490: 74 65 72 70 28 6e 29 2c 20 6c 69 62 72 61 72 79  terp(n), library
14a0: 28 6e 29 0a 2b 69 6e 66 6f 28 6e 29 2c 20 70 72  (n).+info(n), pr
14b0: 6f 63 28 6e 29 2c 20 69 6e 74 65 72 70 28 6e 29  oc(n), interp(n)
14c0: 2c 20 6c 69 62 72 61 72 79 28 6e 29 2c 20 6e 61  , library(n), na
14d0: 6d 65 73 70 61 63 65 28 6e 29 0a 20 0a 20 2e 53  mespace(n). . .S
14e0: 48 20 4b 45 59 57 4f 52 44 53 0a 20 65 72 72 6f  H KEYWORDS. erro
14f0: 72 2c 20 6e 6f 6e 2d 65 78 69 73 74 65 6e 74 20  r, non-existent 
1500: 63 6f 6d 6d 61 6e 64 0a 49 6e 64 65 78 3a 20 67  command.Index: g
1510: 65 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63 6c 73  eneric/tcl.decls
1520: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  .===============
1530: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1540: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1550: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1560: 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f  ====.RCS file: /
1570: 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f  cvsroot/tcl/tcl/
1580: 67 65 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63 6c  generic/tcl.decl
1590: 73 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72  s,v.retrieving r
15a0: 65 76 69 73 69 6f 6e 20 31 2e 31 31 38 0a 64 69  evision 1.118.di
15b0: 66 66 20 2d 75 20 2d 72 31 2e 31 31 38 20 74 63  ff -u -r1.118 tc
15c0: 6c 2e 64 65 63 6c 73 0a 2d 2d 2d 20 67 65 6e 65  l.decls.--- gene
15d0: 72 69 63 2f 74 63 6c 2e 64 65 63 6c 73 09 32 37  ric/tcl.decls.27
15e0: 20 44 65 63 20 32 30 30 35 20 32 30 3a 31 34 3a   Dec 2005 20:14:
15f0: 30 38 20 2d 30 30 30 30 09 31 2e 31 31 38 0a 2b  08 -0000.1.118.+
1600: 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 2e 64  ++ generic/tcl.d
1610: 65 63 6c 73 09 31 38 20 4a 61 6e 20 32 30 30 36  ecls.18 Jan 2006
1620: 20 31 36 3a 35 36 3a 34 37 20 2d 30 30 30 30 0a   16:56:47 -0000.
1630: 40 40 20 2d 32 30 33 37 2c 37 20 2b 32 30 33 37  @@ -2037,7 +2037
1640: 2c 31 37 20 40 40 0a 20 20 20 20 20 69 6e 74 20  ,17 @@.     int 
1650: 54 63 6c 5f 49 6e 69 74 42 69 67 6e 75 6d 46 72  Tcl_InitBignumFr
1660: 6f 6d 44 6f 75 62 6c 65 28 54 63 6c 5f 49 6e 74  omDouble(Tcl_Int
1670: 65 72 70 2a 20 69 6e 74 65 72 70 2c 20 64 6f 75  erp* interp, dou
1680: 62 6c 65 20 69 6e 69 74 76 61 6c 2c 20 0a 20 09  ble initval, . .
1690: 09 6d 70 5f 69 6e 74 20 2a 74 6f 49 6e 69 74 29  .mp_int *toInit)
16a0: 0a 20 7d 0a 2d 20 20 0a 2b 0a 2b 23 20 54 49 50  . }.-  .+.+# TIP
16b0: 20 31 38 31 0a 2b 64 65 63 6c 61 72 65 20 35 36   181.+declare 56
16c0: 37 20 67 65 6e 65 72 69 63 20 7b 0a 2b 20 20 20  7 generic {.+   
16d0: 20 54 63 6c 5f 4f 62 6a 20 2a 54 63 6c 5f 47 65   Tcl_Obj *Tcl_Ge
16e0: 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77  tNamespaceUnknow
16f0: 6e 48 61 6e 64 6c 65 72 28 54 63 6c 5f 49 6e 74  nHandler(Tcl_Int
1700: 65 72 70 20 2a 69 6e 74 65 72 70 2c 0a 2b 20 20  erp *interp,.+  
1710: 20 20 20 20 20 20 54 63 6c 5f 4e 61 6d 65 73 70        Tcl_Namesp
1720: 61 63 65 20 2a 6e 73 50 74 72 29 0a 2b 7d 0a 2b  ace *nsPtr).+}.+
1730: 64 65 63 6c 61 72 65 20 35 36 38 20 67 65 6e 65  declare 568 gene
1740: 72 69 63 20 7b 0a 2b 20 20 20 20 69 6e 74 20 54  ric {.+    int T
1750: 63 6c 5f 53 65 74 4e 61 6d 65 73 70 61 63 65 55  cl_SetNamespaceU
1760: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 28 0a 2b  nknownHandler(.+
1770: 20 20 20 20 20 20 20 20 54 63 6c 5f 49 6e 74 65          Tcl_Inte
1780: 72 70 20 2a 69 6e 74 65 72 70 2c 20 54 63 6c 5f  rp *interp, Tcl_
1790: 4e 61 6d 65 73 70 61 63 65 20 2a 6e 73 50 74 72  Namespace *nsPtr
17a0: 2c 0a 2b 20 20 20 20 20 20 20 20 54 63 6c 5f 4f  ,.+        Tcl_O
17b0: 62 6a 20 2a 68 61 6e 64 6c 65 72 50 74 72 29 0a  bj *handlerPtr).
17c0: 2b 7d 0a 20 0a 20 23 23 23 23 23 23 23 23 23 23  +}. . ##########
17d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1800: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1810: 23 23 23 23 0a 20 0a 40 40 20 2d 32 30 37 38 2c  ####. .@@ -2078,
1820: 36 20 2b 32 30 38 38 2c 37 20 40 40 0a 20 09 20  6 +2088,7 @@. . 
1830: 20 20 20 63 68 61 72 20 2a 6c 69 62 72 61 72 79     char *library
1840: 50 61 74 68 29 0a 20 7d 0a 20 0a 2b 0a 20 23 23  Path). }. .+. ##
1850: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1860: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1870: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1880: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1890: 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 0a 20  ############. . 
18a0: 23 20 50 75 62 6c 69 63 20 66 75 6e 63 74 69 6f  # Public functio
18b0: 6e 73 20 74 68 61 74 20 61 72 65 20 6e 6f 74 20  ns that are not 
18c0: 61 63 63 65 73 73 69 62 6c 65 20 76 69 61 20 74  accessible via t
18d0: 68 65 20 73 74 75 62 73 20 74 61 62 6c 65 3a 0a  he stubs table:.
18e0: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74  Index: generic/t
18f0: 63 6c 42 61 73 69 63 2e 63 0a 3d 3d 3d 3d 3d 3d  clBasic.c.======
1900: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1910: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1920: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1930: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43  =============.RC
1940: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74  S file: /cvsroot
1950: 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63  /tcl/tcl/generic
1960: 2f 74 63 6c 42 61 73 69 63 2e 63 2c 76 0a 72 65  /tclBasic.c,v.re
1970: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f  trieving revisio
1980: 6e 20 31 2e 31 38 37 0a 64 69 66 66 20 2d 75 20  n 1.187.diff -u 
1990: 2d 72 31 2e 31 38 37 20 74 63 6c 42 61 73 69 63  -r1.187 tclBasic
19a0: 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74  .c.--- generic/t
19b0: 63 6c 42 61 73 69 63 2e 63 09 31 31 20 4a 61 6e  clBasic.c.11 Jan
19c0: 20 32 30 30 36 20 31 37 3a 33 34 3a 35 33 20 2d   2006 17:34:53 -
19d0: 30 30 30 30 09 31 2e 31 38 37 0a 2b 2b 2b 20 67  0000.1.187.+++ g
19e0: 65 6e 65 72 69 63 2f 74 63 6c 42 61 73 69 63 2e  eneric/tclBasic.
19f0: 63 09 31 38 20 4a 61 6e 20 32 30 30 36 20 31 36  c.18 Jan 2006 16
1a00: 3a 35 36 3a 35 34 20 2d 30 30 30 30 0a 40 40 20  :56:54 -0000.@@ 
1a10: 2d 33 32 34 36 2c 36 20 2b 33 32 34 36 2c 31 30  -3246,6 +3246,10
1a20: 20 40 40 0a 20 20 20 20 20 69 6e 74 20 69 3b 0a   @@.     int i;.
1a30: 20 20 20 20 20 43 61 6c 6c 46 72 61 6d 65 20 2a       CallFrame *
1a40: 73 61 76 65 64 56 61 72 46 72 61 6d 65 50 74 72  savedVarFramePtr
1a50: 3b 2f 2a 20 53 61 76 65 73 20 6f 6c 64 20 63 6f  ;/* Saves old co
1a60: 70 79 20 6f 66 20 69 50 74 72 2d 3e 76 61 72 46  py of iPtr->varF
1a70: 72 61 6d 65 50 74 72 20 69 6e 20 63 61 73 65 0a  ramePtr in case.
1a80: 20 09 09 09 09 20 2a 20 54 43 4c 5f 45 56 41 4c   .... * TCL_EVAL
1a90: 5f 47 4c 4f 42 41 4c 20 77 61 73 20 73 65 74 2e  _GLOBAL was set.
1aa0: 20 2a 2f 0a 2b 20 20 20 20 4e 61 6d 65 73 70 61   */.+    Namespa
1ab0: 63 65 20 2a 63 75 72 72 4e 73 50 74 72 20 3d 20  ce *currNsPtr = 
1ac0: 4e 55 4c 4c 3b 2f 2a 20 55 73 65 64 20 74 6f 20  NULL;/* Used to 
1ad0: 63 68 65 63 6b 20 66 6f 72 20 61 6e 64 20 69 6e  check for and in
1ae0: 76 6f 6b 65 20 61 6e 79 0a 2b 20 20 20 20 20 20  voke any.+      
1af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b00: 20 20 20 20 20 20 20 20 20 20 20 2a 20 72 65 67             * reg
1b10: 69 73 74 65 72 65 64 20 75 6e 6b 6e 6f 77 6e 20  istered unknown 
1b20: 63 6f 6d 6d 61 6e 64 0a 2b 20 20 20 20 20 20 20  command.+       
1b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b40: 20 20 20 20 20 20 20 20 20 20 2a 20 68 61 6e 64            * hand
1b50: 6c 65 72 20 66 6f 72 20 74 68 65 20 63 75 72 72  ler for the curr
1b60: 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 0a 2b 20  ent namespace.+ 
1b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b90: 2a 20 28 73 65 65 20 54 49 50 20 31 38 31 29 2e  * (see TIP 181).
1ba0: 20 2a 2f 0a 20 20 20 20 20 69 6e 74 20 63 6f 64   */.     int cod
1bb0: 65 20 3d 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20  e = TCL_OK;.    
1bc0: 20 69 6e 74 20 74 72 61 63 65 43 6f 64 65 20 3d   int traceCode =
1bd0: 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20 20 69 6e   TCL_OK;.     in
1be0: 74 20 63 68 65 63 6b 54 72 61 63 65 73 20 3d 20  t checkTraces = 
1bf0: 31 3b 0a 40 40 20 2d 33 32 36 30 2c 39 20 2b 33  1;.@@ -3260,9 +3
1c00: 32 36 34 2c 31 30 20 40 40 0a 20 0a 20 20 20 20  264,10 @@. .    
1c10: 20 2f 2a 0a 20 20 20 20 20 20 2a 20 46 69 6e 64   /*.      * Find
1c20: 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 74 6f   the function to
1c30: 20 65 78 65 63 75 74 65 20 74 68 69 73 20 63 6f   execute this co
1c40: 6d 6d 61 6e 64 2e 20 49 66 20 74 68 65 72 65 20  mmand. If there 
1c50: 69 73 6e 27 74 20 6f 6e 65 2c 20 74 68 65 6e 20  isn't one, then 
1c60: 73 65 65 0a 2d 20 20 20 20 20 2a 20 69 66 20 74  see.-     * if t
1c70: 68 65 72 65 20 69 73 20 61 20 63 6f 6d 6d 61 6e  here is a comman
1c80: 64 20 22 75 6e 6b 6e 6f 77 6e 22 2e 20 49 66 20  d "unknown". If 
1c90: 73 6f 2c 20 63 72 65 61 74 65 20 61 20 6e 65 77  so, create a new
1ca0: 20 77 6f 72 64 20 61 72 72 61 79 20 77 69 74 68   word array with
1cb0: 0a 2d 20 20 20 20 20 2a 20 22 75 6e 6b 6e 6f 77  .-     * "unknow
1cc0: 6e 22 20 61 73 20 74 68 65 20 66 69 72 73 74 20  n" as the first 
1cd0: 77 6f 72 64 20 61 6e 64 20 74 68 65 20 6f 72 69  word and the ori
1ce0: 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e 64 20 77 6f  ginal command wo
1cf0: 72 64 73 20 61 73 0a 2d 20 20 20 20 20 2a 20 61  rds as.-     * a
1d00: 72 67 75 6d 65 6e 74 73 2e 20 54 68 65 6e 20 63  rguments. Then c
1d10: 61 6c 6c 20 6f 75 72 73 65 6c 76 65 73 20 72 65  all ourselves re
1d20: 63 75 72 73 69 76 65 6c 79 20 74 6f 20 65 78 65  cursively to exe
1d30: 63 75 74 65 20 69 74 2e 0a 2b 20 20 20 20 20 2a  cute it..+     *
1d40: 20 69 66 20 74 68 65 72 65 20 69 73 20 61 6e 20   if there is an 
1d50: 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20  unknown command 
1d60: 68 61 6e 64 6c 65 72 20 72 65 67 69 73 74 65 72  handler register
1d70: 65 64 20 66 6f 72 20 74 68 69 73 20 6e 61 6d 65  ed for this name
1d80: 73 70 61 63 65 2e 0a 2b 20 20 20 20 20 2a 20 49  space..+     * I
1d90: 66 20 73 6f 2c 20 63 72 65 61 74 65 20 61 20 6e  f so, create a n
1da0: 65 77 20 77 6f 72 64 20 61 72 72 61 79 20 77 69  ew word array wi
1db0: 74 68 20 74 68 65 20 68 61 6e 64 6c 65 72 20 61  th the handler a
1dc0: 73 20 74 68 65 20 66 69 72 73 74 20 77 6f 72 64  s the first word
1dd0: 73 20 61 6e 64 0a 2b 20 20 20 20 20 2a 20 74 68  s and.+     * th
1de0: 65 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61  e original comma
1df0: 6e 64 20 77 6f 72 64 73 20 61 73 20 61 72 67 75  nd words as argu
1e00: 6d 65 6e 74 73 2e 20 54 68 65 6e 20 63 61 6c 6c  ments. Then call
1e10: 20 6f 75 72 73 65 6c 76 65 73 0a 2b 20 20 20 20   ourselves.+    
1e20: 20 2a 20 72 65 63 75 72 73 69 76 65 6c 79 20 74   * recursively t
1e30: 6f 20 65 78 65 63 75 74 65 20 69 74 2e 0a 20 20  o execute it..  
1e40: 20 20 20 20 2a 0a 20 20 20 20 20 20 2a 20 49 66      *.      * If
1e50: 20 63 61 6c 6c 65 72 20 72 65 71 75 65 73 74 73   caller requests
1e60: 2c 20 6f 72 20 69 66 20 77 65 27 72 65 20 72 65  , or if we're re
1e70: 73 6f 6c 76 69 6e 67 20 74 68 65 20 74 61 72 67  solving the targ
1e80: 65 74 20 65 6e 64 20 6f 66 20 61 6e 0a 20 20 20  et end of an.   
1e90: 20 20 20 2a 20 69 6e 74 65 72 70 65 74 65 72 20     * interpeter 
1ea0: 61 6c 69 61 73 20 28 54 43 4c 5f 45 56 41 4c 5f  alias (TCL_EVAL_
1eb0: 49 4e 56 4f 4b 45 29 2c 20 62 65 20 73 75 72 65  INVOKE), be sure
1ec0: 20 74 6f 20 64 6f 20 63 6f 6d 6d 61 6e 64 20 6e   to do command n
1ed0: 61 6d 65 0a 40 40 20 2d 33 32 37 38 2c 32 35 20  ame.@@ -3278,25 
1ee0: 2b 33 32 38 33 2c 36 32 20 40 40 0a 20 09 69 50  +3283,62 @@. .iP
1ef0: 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 20  tr->varFramePtr 
1f00: 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 7d 0a 20  = NULL;.     }. 
1f10: 20 20 20 20 63 6d 64 50 74 72 20 3d 20 28 43 6f      cmdPtr = (Co
1f20: 6d 6d 61 6e 64 20 2a 29 20 54 63 6c 5f 47 65 74  mmand *) Tcl_Get
1f30: 43 6f 6d 6d 61 6e 64 46 72 6f 6d 4f 62 6a 28 69  CommandFromObj(i
1f40: 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 30 5d 29 3b  nterp, objv[0]);
1f50: 0a 2b 20 20 20 20 2f 2a 0a 2b 20 20 20 20 20 2a  .+    /*.+     *
1f60: 20 47 72 61 62 20 63 75 72 72 65 6e 74 20 6e 61   Grab current na
1f70: 6d 65 73 70 61 63 65 20 62 65 66 6f 72 65 20 72  mespace before r
1f80: 65 73 74 6f 72 69 6e 67 20 76 61 72 20 66 72 61  estoring var fra
1f90: 6d 65 2c 20 66 6f 72 20 75 6e 6b 6e 6f 77 6e 0a  me, for unknown.
1fa0: 2b 20 20 20 20 20 2a 20 68 61 6e 64 6c 65 72 20  +     * handler 
1fb0: 63 68 65 63 6b 20 62 65 6c 6f 77 2e 0a 2b 20 20  check below..+  
1fc0: 20 20 20 2a 2f 0a 2b 20 20 20 20 69 66 20 28 69     */.+    if (i
1fd0: 50 74 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72  Ptr->varFramePtr
1fe0: 20 21 3d 20 4e 55 4c 4c 20 26 26 20 69 50 74 72   != NULL && iPtr
1ff0: 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 2d 3e 6e  ->varFramePtr->n
2000: 73 50 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a  sPtr != NULL) {.
2010: 2b 20 20 20 20 20 20 20 20 63 75 72 72 4e 73 50  +        currNsP
2020: 74 72 20 3d 20 69 50 74 72 2d 3e 76 61 72 46 72  tr = iPtr->varFr
2030: 61 6d 65 50 74 72 2d 3e 6e 73 50 74 72 3b 0a 2b  amePtr->nsPtr;.+
2040: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 2b 20 20      } else {.+  
2050: 20 20 20 20 20 20 2f 2a 20 4e 6f 74 65 3a 20 61        /* Note: a
2060: 73 73 75 6d 65 73 20 67 6c 6f 62 61 6c 4e 73 50  ssumes globalNsP
2070: 74 72 20 63 61 6e 20 6e 65 76 65 72 20 62 65 20  tr can never be 
2080: 4e 55 4c 4c 2e 20 2a 2f 0a 2b 20 20 20 20 20 20  NULL. */.+      
2090: 20 20 63 75 72 72 4e 73 50 74 72 20 3d 20 69 50    currNsPtr = iP
20a0: 74 72 2d 3e 67 6c 6f 62 61 6c 4e 73 50 74 72 3b  tr->globalNsPtr;
20b0: 0a 2b 20 20 20 20 7d 0a 20 20 20 20 20 69 50 74  .+    }.     iPt
20c0: 72 2d 3e 76 61 72 46 72 61 6d 65 50 74 72 20 3d  r->varFramePtr =
20d0: 20 73 61 76 65 64 56 61 72 46 72 61 6d 65 50 74   savedVarFramePt
20e0: 72 3b 0a 20 0a 20 20 20 20 20 69 66 20 28 63 6d  r;. .     if (cm
20f0: 64 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a  dPtr == NULL) {.
2100: 2d 09 6e 65 77 4f 62 6a 76 20 3d 20 28 54 63 6c  -.newObjv = (Tcl
2110: 5f 4f 62 6a 20 2a 2a 29 0a 2d 09 09 63 6b 61 6c  _Obj **).-..ckal
2120: 6c 6f 63 28 28 75 6e 73 69 67 6e 65 64 29 20 28  loc((unsigned) (
2130: 28 6f 62 6a 63 20 2b 20 31 29 20 2a 20 73 69 7a  (objc + 1) * siz
2140: 65 6f 66 28 54 63 6c 5f 4f 62 6a 20 2a 29 29 29  eof(Tcl_Obj *)))
2150: 3b 0a 2d 09 66 6f 72 20 28 69 20 3d 20 6f 62 6a  ;.-.for (i = obj
2160: 63 2d 31 3b 20 69 20 3e 3d 20 30 3b 20 69 2d 2d  c-1; i >= 0; i--
2170: 29 20 7b 0a 2d 09 20 20 20 20 6e 65 77 4f 62 6a  ) {.-.    newObj
2180: 76 5b 69 2b 31 5d 20 3d 20 6f 62 6a 76 5b 69 5d  v[i+1] = objv[i]
2190: 3b 0a 2d 09 7d 0a 2d 09 6e 65 77 4f 62 6a 76 5b  ;.-.}.-.newObjv[
21a0: 30 5d 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 69  0] = Tcl_NewStri
21b0: 6e 67 4f 62 6a 28 22 3a 3a 75 6e 6b 6e 6f 77 6e  ngObj("::unknown
21c0: 22 2c 20 2d 31 29 3b 0a 2b 20 20 20 20 20 20 20  ", -1);.+       
21d0: 20 69 6e 74 20 6e 65 77 4f 62 6a 63 2c 20 68 61   int newObjc, ha
21e0: 6e 64 6c 65 72 4f 62 6a 63 3b 0a 2b 20 20 20 20  ndlerObjc;.+    
21f0: 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 2a 68 61      Tcl_Obj **ha
2200: 6e 64 6c 65 72 4f 62 6a 76 3b 0a 2b 20 20 20 20  ndlerObjv;.+    
2210: 20 20 20 20 2f 2a 0a 2b 20 20 20 20 20 20 20 20      /*.+        
2220: 20 2a 20 43 68 65 63 6b 20 69 66 20 74 68 65 72   * Check if ther
2230: 65 20 69 73 20 61 6e 20 75 6e 6b 6e 6f 77 6e 20  e is an unknown 
2240: 68 61 6e 64 6c 65 72 20 72 65 67 69 73 74 65 72  handler register
2250: 65 64 20 66 6f 72 20 74 68 69 73 20 6e 61 6d 65  ed for this name
2260: 73 70 61 63 65 2e 0a 2b 20 20 20 20 20 20 20 20  space..+        
2270: 20 2a 20 4f 74 68 65 72 77 69 73 65 2c 20 75 73   * Otherwise, us
2280: 65 20 74 68 65 20 67 6c 6f 62 61 6c 20 6e 61 6d  e the global nam
2290: 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 20 68  espace unknown h
22a0: 61 6e 64 6c 65 72 2e 0a 2b 20 20 20 20 20 20 20  andler..+       
22b0: 20 20 2a 2f 0a 2b 20 20 20 20 20 20 20 20 69 66    */.+        if
22c0: 20 28 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b   (currNsPtr->unk
22d0: 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 3d  nownHandlerPtr =
22e0: 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 20 20 20 20 20  = NULL) {.+     
22f0: 20 20 20 20 20 20 20 63 75 72 72 4e 73 50 74 72         currNsPtr
2300: 20 3d 20 69 50 74 72 2d 3e 67 6c 6f 62 61 6c 4e   = iPtr->globalN
2310: 73 50 74 72 3b 0a 2b 20 20 20 20 20 20 20 20 7d  sPtr;.+        }
2320: 0a 2b 20 20 20 20 20 20 20 20 69 66 20 28 63 75  .+        if (cu
2330: 72 72 4e 73 50 74 72 20 3d 3d 20 69 50 74 72 2d  rrNsPtr == iPtr-
2340: 3e 67 6c 6f 62 61 6c 4e 73 50 74 72 20 26 26 0a  >globalNsPtr &&.
2350: 2b 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72  +            cur
2360: 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48  rNsPtr->unknownH
2370: 61 6e 64 6c 65 72 50 74 72 20 3d 3d 20 4e 55 4c  andlerPtr == NUL
2380: 4c 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20  L) {.+          
2390: 20 20 2f 2a 20 47 6c 6f 62 61 6c 20 6e 61 6d 65    /* Global name
23a0: 73 70 61 63 65 20 68 61 73 20 6c 6f 73 74 20 75  space has lost u
23b0: 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 2c 20  nknown handler, 
23c0: 72 65 73 65 74 2e 20 2a 2f 0a 2b 20 20 20 20 20  reset. */.+     
23d0: 20 20 20 20 20 20 20 63 75 72 72 4e 73 50 74 72         currNsPtr
23e0: 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72  ->unknownHandler
23f0: 50 74 72 20 3d 0a 2b 20 20 20 20 20 20 20 20 20  Ptr =.+         
2400: 20 20 20 20 20 20 20 54 63 6c 5f 4e 65 77 53 74         Tcl_NewSt
2410: 72 69 6e 67 4f 62 6a 28 22 3a 3a 75 6e 6b 6e 6f  ringObj("::unkno
2420: 77 6e 22 2c 20 2d 31 29 3b 0a 2b 20 20 20 20 20  wn", -1);.+     
2430: 20 20 20 20 20 20 20 54 63 6c 5f 49 6e 63 72 52         Tcl_IncrR
2440: 65 66 43 6f 75 6e 74 28 63 75 72 72 4e 73 50 74  efCount(currNsPt
2450: 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65  r->unknownHandle
2460: 72 50 74 72 29 3b 0a 2b 20 20 20 20 20 20 20 20  rPtr);.+        
2470: 7d 0a 2b 20 20 20 20 20 20 20 20 69 66 20 28 54  }.+        if (T
2480: 63 6c 5f 4c 69 73 74 4f 62 6a 47 65 74 45 6c 65  cl_ListObjGetEle
2490: 6d 65 6e 74 73 28 69 6e 74 65 72 70 2c 0a 2b 20  ments(interp,.+ 
24a0: 20 20 20 20 20 20 20 20 20 20 20 63 75 72 72 4e             currN
24b0: 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e  sPtr->unknownHan
24c0: 64 6c 65 72 50 74 72 2c 20 26 68 61 6e 64 6c 65  dlerPtr, &handle
24d0: 72 4f 62 6a 63 2c 20 26 68 61 6e 64 6c 65 72 4f  rObjc, &handlerO
24e0: 62 6a 76 29 0a 2b 20 20 20 20 20 20 20 20 20 20  bjv).+          
24f0: 20 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2b    != TCL_OK) {.+
2500: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2510: 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b 20  rn TCL_ERROR;.+ 
2520: 20 20 20 20 20 20 20 7d 0a 2b 20 20 20 20 20 20         }.+      
2530: 20 20 6e 65 77 4f 62 6a 63 20 3d 20 6f 62 6a 63    newObjc = objc
2540: 20 2b 20 68 61 6e 64 6c 65 72 4f 62 6a 63 3b 0a   + handlerObjc;.
2550: 2b 09 6e 65 77 4f 62 6a 76 20 3d 20 28 54 63 6c  +.newObjv = (Tcl
2560: 5f 4f 62 6a 20 2a 2a 29 20 63 6b 61 6c 6c 6f 63  _Obj **) ckalloc
2570: 28 28 75 6e 73 69 67 6e 65 64 29 0a 2b 20 20 20  ((unsigned).+   
2580: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 65               (ne
2590: 77 4f 62 6a 63 20 2a 20 73 69 7a 65 6f 66 28 54  wObjc * sizeof(T
25a0: 63 6c 5f 4f 62 6a 20 2a 29 29 29 3b 0a 2b 20 20  cl_Obj *)));.+  
25b0: 20 20 20 20 20 20 2f 2a 20 43 6f 70 79 20 63 6f        /* Copy co
25c0: 6d 6d 61 6e 64 20 70 72 65 66 69 78 20 66 72 6f  mmand prefix fro
25d0: 6d 20 75 6e 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65  m unknown handle
25e0: 72 2e 20 2a 2f 0a 2b 20 20 20 20 20 20 20 20 66  r. */.+        f
25f0: 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 68  or (i = 0; i < h
2600: 61 6e 64 6c 65 72 4f 62 6a 63 3b 20 2b 2b 69 29  andlerObjc; ++i)
2610: 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20   {.+            
2620: 6e 65 77 4f 62 6a 76 5b 69 5d 20 3d 20 68 61 6e  newObjv[i] = han
2630: 64 6c 65 72 4f 62 6a 76 5b 69 5d 3b 0a 2b 20 20  dlerObjv[i];.+  
2640: 20 20 20 20 20 20 7d 0a 2b 20 20 20 20 20 20 20        }.+       
2650: 20 2f 2a 20 41 64 64 20 69 6e 20 63 6f 6d 6d 61   /* Add in comma
2660: 6e 64 20 6e 61 6d 65 20 61 6e 64 20 61 72 67 75  nd name and argu
2670: 6d 65 6e 74 73 2e 20 2a 2f 0a 2b 20 20 20 20 20  ments. */.+     
2680: 20 20 20 66 6f 72 20 28 69 20 3d 20 6f 62 6a 63     for (i = objc
2690: 2d 31 3b 20 69 20 3e 3d 20 30 3b 20 2d 2d 69 29  -1; i >= 0; --i)
26a0: 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20   {.+            
26b0: 6e 65 77 4f 62 6a 76 5b 69 2b 68 61 6e 64 6c 65  newObjv[i+handle
26c0: 72 4f 62 6a 63 5d 20 3d 20 6f 62 6a 76 5b 69 5d  rObjc] = objv[i]
26d0: 3b 0a 2b 20 20 20 20 20 20 20 20 7d 0a 20 09 54  ;.+        }. .T
26e0: 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28  cl_IncrRefCount(
26f0: 6e 65 77 4f 62 6a 76 5b 30 5d 29 3b 0a 20 09 63  newObjv[0]);. .c
2700: 6d 64 50 74 72 20 3d 20 28 43 6f 6d 6d 61 6e 64  mdPtr = (Command
2710: 20 2a 29 20 54 63 6c 5f 47 65 74 43 6f 6d 6d 61   *) Tcl_GetComma
2720: 6e 64 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70  ndFromObj(interp
2730: 2c 20 6e 65 77 4f 62 6a 76 5b 30 5d 29 3b 0a 2b  , newObjv[0]);.+
2740: 20 20 20 20 20 20 20 20 0a 20 09 69 66 20 28 63          . .if (c
2750: 6d 64 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b  mdPtr == NULL) {
2760: 0a 20 09 20 20 20 20 54 63 6c 5f 41 70 70 65 6e  . .    Tcl_Appen
2770: 64 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20  dResult(interp, 
2780: 22 69 6e 76 61 6c 69 64 20 63 6f 6d 6d 61 6e 64  "invalid command
2790: 20 6e 61 6d 65 20 5c 22 22 2c 0a 20 09 09 20 20   name \"",. ..  
27a0: 20 20 54 63 6c 47 65 74 53 74 72 69 6e 67 28 6f    TclGetString(o
27b0: 62 6a 76 5b 30 5d 29 2c 20 22 5c 22 22 2c 20 4e  bjv[0]), "\"", N
27c0: 55 4c 4c 29 3b 0a 20 09 20 20 20 20 63 6f 64 65  ULL);. .    code
27d0: 20 3d 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 09   = TCL_ERROR;. .
27e0: 7d 20 65 6c 73 65 20 7b 0a 20 09 20 20 20 20 69  } else {. .    i
27f0: 50 74 72 2d 3e 6e 75 6d 4c 65 76 65 6c 73 2b 2b  Ptr->numLevels++
2800: 3b 0a 2d 09 20 20 20 20 63 6f 64 65 20 3d 20 54  ;.-.    code = T
2810: 63 6c 45 76 61 6c 4f 62 6a 76 49 6e 74 65 72 6e  clEvalObjvIntern
2820: 61 6c 28 69 6e 74 65 72 70 2c 20 6f 62 6a 63 2b  al(interp, objc+
2830: 31 2c 20 6e 65 77 4f 62 6a 76 2c 0a 2d 09 09 20  1, newObjv,.-.. 
2840: 20 20 20 63 6f 6d 6d 61 6e 64 2c 20 6c 65 6e 67     command, leng
2850: 74 68 2c 20 30 29 3b 0a 2b 09 20 20 20 20 63 6f  th, 0);.+.    co
2860: 64 65 20 3d 20 54 63 6c 45 76 61 6c 4f 62 6a 76  de = TclEvalObjv
2870: 49 6e 74 65 72 6e 61 6c 28 69 6e 74 65 72 70 2c  Internal(interp,
2880: 20 6e 65 77 4f 62 6a 63 2c 20 6e 65 77 4f 62 6a   newObjc, newObj
2890: 76 2c 20 63 6f 6d 6d 61 6e 64 2c 0a 2b 09 09 09  v, command,.+...
28a0: 20 20 20 20 6c 65 6e 67 74 68 2c 20 30 29 3b 0a      length, 0);.
28b0: 20 09 20 20 20 20 69 50 74 72 2d 3e 6e 75 6d 4c   .    iPtr->numL
28c0: 65 76 65 6c 73 2d 2d 3b 0a 20 09 7d 0a 20 09 54  evels--;. .}. .T
28d0: 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28  cl_DecrRefCount(
28e0: 6e 65 77 4f 62 6a 76 5b 30 5d 29 3b 0a 49 6e 64  newObjv[0]);.Ind
28f0: 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 44  ex: generic/tclD
2900: 65 63 6c 73 2e 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d  ecls.h.=========
2910: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2920: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2930: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2940: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66  ==========.RCS f
2950: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63  ile: /cvsroot/tc
2960: 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63  l/tcl/generic/tc
2970: 6c 44 65 63 6c 73 2e 68 2c 76 0a 72 65 74 72 69  lDecls.h,v.retri
2980: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31  eving revision 1
2990: 2e 31 32 30 0a 64 69 66 66 20 2d 75 20 2d 72 31  .120.diff -u -r1
29a0: 2e 31 32 30 20 74 63 6c 44 65 63 6c 73 2e 68 0a  .120 tclDecls.h.
29b0: 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 44  --- generic/tclD
29c0: 65 63 6c 73 2e 68 09 32 37 20 44 65 63 20 32 30  ecls.h.27 Dec 20
29d0: 30 35 20 32 30 3a 31 34 3a 30 38 20 2d 30 30 30  05 20:14:08 -000
29e0: 30 09 31 2e 31 32 30 0a 2b 2b 2b 20 67 65 6e 65  0.1.120.+++ gene
29f0: 72 69 63 2f 74 63 6c 44 65 63 6c 73 2e 68 09 31  ric/tclDecls.h.1
2a00: 38 20 4a 61 6e 20 32 30 30 36 20 31 36 3a 35 37  8 Jan 2006 16:57
2a10: 3a 30 34 20 2d 30 30 30 30 0a 40 40 20 2d 33 35  :04 -0000.@@ -35
2a20: 33 34 2c 36 20 2b 33 35 33 34 2c 31 39 20 40 40  34,6 +3534,19 @@
2a30: 0a 20 09 09 09 09 54 63 6c 5f 49 6e 74 65 72 70  . ....Tcl_Interp
2a40: 2a 20 69 6e 74 65 72 70 2c 20 64 6f 75 62 6c 65  * interp, double
2a50: 20 69 6e 69 74 76 61 6c 2c 20 0a 20 09 09 09 09   initval, . ....
2a60: 6d 70 5f 69 6e 74 20 2a 20 74 6f 49 6e 69 74 29  mp_int * toInit)
2a70: 29 3b 0a 20 23 65 6e 64 69 66 0a 2b 23 69 66 6e  );. #endif.+#ifn
2a80: 64 65 66 20 54 63 6c 5f 47 65 74 4e 61 6d 65 73  def Tcl_GetNames
2a90: 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c  paceUnknownHandl
2aa0: 65 72 5f 54 43 4c 5f 44 45 43 4c 41 52 45 44 0a  er_TCL_DECLARED.
2ab0: 2b 23 64 65 66 69 6e 65 20 54 63 6c 5f 47 65 74  +#define Tcl_Get
2ac0: 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e  NamespaceUnknown
2ad0: 48 61 6e 64 6c 65 72 5f 54 43 4c 5f 44 45 43 4c  Handler_TCL_DECL
2ae0: 41 52 45 44 0a 2b 2f 2a 20 35 36 37 20 2a 2f 0a  ARED.+/* 567 */.
2af0: 2b 45 58 54 45 52 4e 20 54 63 6c 5f 4f 62 6a 20  +EXTERN Tcl_Obj 
2b00: 2a 09 54 63 6c 5f 47 65 74 4e 61 6d 65 73 70 61  *.Tcl_GetNamespa
2b10: 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72  ceUnknownHandler
2b20: 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 0a 2b   _ANSI_ARGS_((.+
2b30: 09 09 09 09 54 63 6c 5f 49 6e 74 65 72 70 20 2a  ....Tcl_Interp *
2b40: 20 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4e 61 6d   interp, Tcl_Nam
2b50: 65 73 70 61 63 65 20 2a 20 6e 73 50 74 72 29 29  espace * nsPtr))
2b60: 3b 0a 2b 23 65 6e 64 69 66 0a 2b 23 69 66 6e 64  ;.+#endif.+#ifnd
2b70: 65 66 20 54 63 6c 5f 53 65 74 4e 61 6d 65 73 70  ef Tcl_SetNamesp
2b80: 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65  aceUnknownHandle
2b90: 72 5f 54 43 4c 5f 44 45 43 4c 41 52 45 44 0a 2b  r_TCL_DECLARED.+
2ba0: 23 64 65 66 69 6e 65 20 54 63 6c 5f 53 65 74 4e  #define Tcl_SetN
2bb0: 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48  amespaceUnknownH
2bc0: 61 6e 64 6c 65 72 5f 54 43 4c 5f 44 45 43 4c 41  andler_TCL_DECLA
2bd0: 52 45 44 0a 2b 2f 2a 20 35 36 38 20 2a 2f 0a 2b  RED.+/* 568 */.+
2be0: 45 58 54 45 52 4e 20 69 6e 74 09 09 54 63 6c 5f  EXTERN int..Tcl_
2bf0: 53 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e  SetNamespaceUnkn
2c00: 6f 77 6e 48 61 6e 64 6c 65 72 20 5f 41 4e 53 49  ownHandler _ANSI
2c10: 5f 41 52 47 53 5f 28 28 0a 2b 09 09 09 09 54 63  _ARGS_((.+....Tc
2c20: 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 65 72  l_Interp * inter
2c30: 70 2c 20 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65  p, Tcl_Namespace
2c40: 20 2a 20 6e 73 50 74 72 2c 20 0a 2b 09 09 09 09   * nsPtr, .+....
2c50: 54 63 6c 5f 4f 62 6a 20 2a 20 68 61 6e 64 6c 65  Tcl_Obj * handle
2c60: 72 50 74 72 29 29 3b 0a 2b 23 65 6e 64 69 66 0a  rPtr));.+#endif.
2c70: 20 0a 20 74 79 70 65 64 65 66 20 73 74 72 75 63   . typedef struc
2c80: 74 20 54 63 6c 53 74 75 62 48 6f 6f 6b 73 20 7b  t TclStubHooks {
2c90: 0a 20 20 20 20 20 73 74 72 75 63 74 20 54 63 6c  .     struct Tcl
2ca0: 50 6c 61 74 53 74 75 62 73 20 2a 74 63 6c 50 6c  PlatStubs *tclPl
2cb0: 61 74 53 74 75 62 73 3b 0a 40 40 20 2d 34 31 34  atStubs;.@@ -414
2cc0: 32 2c 36 20 2b 34 31 35 35 2c 38 20 40 40 0a 20  2,6 +4155,8 @@. 
2cd0: 20 20 20 20 76 6f 69 64 20 28 2a 74 63 6c 5f 53      void (*tcl_S
2ce0: 65 74 43 68 61 6e 6e 65 6c 45 72 72 6f 72 29 20  etChannelError) 
2cf0: 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c  _ANSI_ARGS_((Tcl
2d00: 5f 43 68 61 6e 6e 65 6c 20 63 68 61 6e 2c 20 54  _Channel chan, T
2d10: 63 6c 5f 4f 62 6a 2a 20 6d 73 67 29 29 3b 20 2f  cl_Obj* msg)); /
2d20: 2a 20 35 36 34 20 2a 2f 0a 20 20 20 20 20 76 6f  * 564 */.     vo
2d30: 69 64 20 28 2a 74 63 6c 5f 47 65 74 43 68 61 6e  id (*tcl_GetChan
2d40: 6e 65 6c 45 72 72 6f 72 29 20 5f 41 4e 53 49 5f  nelError) _ANSI_
2d50: 41 52 47 53 5f 28 28 54 63 6c 5f 43 68 61 6e 6e  ARGS_((Tcl_Chann
2d60: 65 6c 20 63 68 61 6e 2c 20 54 63 6c 5f 4f 62 6a  el chan, Tcl_Obj
2d70: 2a 2a 20 6d 73 67 29 29 3b 20 2f 2a 20 35 36 35  ** msg)); /* 565
2d80: 20 2a 2f 0a 20 20 20 20 20 69 6e 74 20 28 2a 74   */.     int (*t
2d90: 63 6c 5f 49 6e 69 74 42 69 67 6e 75 6d 46 72 6f  cl_InitBignumFro
2da0: 6d 44 6f 75 62 6c 65 29 20 5f 41 4e 53 49 5f 41  mDouble) _ANSI_A
2db0: 52 47 53 5f 28 28 54 63 6c 5f 49 6e 74 65 72 70  RGS_((Tcl_Interp
2dc0: 2a 20 69 6e 74 65 72 70 2c 20 64 6f 75 62 6c 65  * interp, double
2dd0: 20 69 6e 69 74 76 61 6c 2c 20 6d 70 5f 69 6e 74   initval, mp_int
2de0: 20 2a 20 74 6f 49 6e 69 74 29 29 3b 20 2f 2a 20   * toInit)); /* 
2df0: 35 36 36 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f  566 */.+    Tcl_
2e00: 4f 62 6a 20 2a 20 28 2a 74 63 6c 5f 47 65 74 4e  Obj * (*tcl_GetN
2e10: 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48  amespaceUnknownH
2e20: 61 6e 64 6c 65 72 29 20 5f 41 4e 53 49 5f 41 52  andler) _ANSI_AR
2e30: 47 53 5f 28 28 54 63 6c 5f 49 6e 74 65 72 70 20  GS_((Tcl_Interp 
2e40: 2a 20 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4e 61  * interp, Tcl_Na
2e50: 6d 65 73 70 61 63 65 20 2a 20 6e 73 50 74 72 29  mespace * nsPtr)
2e60: 29 3b 20 2f 2a 20 35 36 37 20 2a 2f 0a 2b 20 20  ); /* 567 */.+  
2e70: 20 20 69 6e 74 20 28 2a 74 63 6c 5f 53 65 74 4e    int (*tcl_SetN
2e80: 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48  amespaceUnknownH
2e90: 61 6e 64 6c 65 72 29 20 5f 41 4e 53 49 5f 41 52  andler) _ANSI_AR
2ea0: 47 53 5f 28 28 54 63 6c 5f 49 6e 74 65 72 70 20  GS_((Tcl_Interp 
2eb0: 2a 20 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4e 61  * interp, Tcl_Na
2ec0: 6d 65 73 70 61 63 65 20 2a 20 6e 73 50 74 72 2c  mespace * nsPtr,
2ed0: 20 54 63 6c 5f 4f 62 6a 20 2a 20 68 61 6e 64 6c   Tcl_Obj * handl
2ee0: 65 72 50 74 72 29 29 3b 20 2f 2a 20 35 36 38 20  erPtr)); /* 568 
2ef0: 2a 2f 0a 20 7d 20 54 63 6c 53 74 75 62 73 3b 0a  */. } TclStubs;.
2f00: 20 0a 20 23 69 66 64 65 66 20 5f 5f 63 70 6c 75   . #ifdef __cplu
2f10: 73 70 6c 75 73 0a 40 40 20 2d 36 34 35 30 2c 36  splus.@@ -6450,6
2f20: 20 2b 36 34 36 35 2c 31 34 20 40 40 0a 20 23 64   +6465,14 @@. #d
2f30: 65 66 69 6e 65 20 54 63 6c 5f 49 6e 69 74 42 69  efine Tcl_InitBi
2f40: 67 6e 75 6d 46 72 6f 6d 44 6f 75 62 6c 65 20 5c  gnumFromDouble \
2f50: 0a 20 09 28 74 63 6c 53 74 75 62 73 50 74 72 2d  . .(tclStubsPtr-
2f60: 3e 74 63 6c 5f 49 6e 69 74 42 69 67 6e 75 6d 46  >tcl_InitBignumF
2f70: 72 6f 6d 44 6f 75 62 6c 65 29 20 2f 2a 20 35 36  romDouble) /* 56
2f80: 36 20 2a 2f 0a 20 23 65 6e 64 69 66 0a 2b 23 69  6 */. #endif.+#i
2f90: 66 6e 64 65 66 20 54 63 6c 5f 47 65 74 4e 61 6d  fndef Tcl_GetNam
2fa0: 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e  espaceUnknownHan
2fb0: 64 6c 65 72 0a 2b 23 64 65 66 69 6e 65 20 54 63  dler.+#define Tc
2fc0: 6c 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e  l_GetNamespaceUn
2fd0: 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 20 5c 0a 2b  knownHandler \.+
2fe0: 09 28 74 63 6c 53 74 75 62 73 50 74 72 2d 3e 74  .(tclStubsPtr->t
2ff0: 63 6c 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55  cl_GetNamespaceU
3000: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 29 20 2f  nknownHandler) /
3010: 2a 20 35 36 37 20 2a 2f 0a 2b 23 65 6e 64 69 66  * 567 */.+#endif
3020: 0a 2b 23 69 66 6e 64 65 66 20 54 63 6c 5f 53 65  .+#ifndef Tcl_Se
3030: 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77  tNamespaceUnknow
3040: 6e 48 61 6e 64 6c 65 72 0a 2b 23 64 65 66 69 6e  nHandler.+#defin
3050: 65 20 54 63 6c 5f 53 65 74 4e 61 6d 65 73 70 61  e Tcl_SetNamespa
3060: 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72  ceUnknownHandler
3070: 20 5c 0a 2b 09 28 74 63 6c 53 74 75 62 73 50 74   \.+.(tclStubsPt
3080: 72 2d 3e 74 63 6c 5f 53 65 74 4e 61 6d 65 73 70  r->tcl_SetNamesp
3090: 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65  aceUnknownHandle
30a0: 72 29 20 2f 2a 20 35 36 38 20 2a 2f 0a 2b 23 65  r) /* 568 */.+#e
30b0: 6e 64 69 66 0a 20 0a 20 23 65 6e 64 69 66 20 2f  ndif. . #endif /
30c0: 2a 20 64 65 66 69 6e 65 64 28 55 53 45 5f 54 43  * defined(USE_TC
30d0: 4c 5f 53 54 55 42 53 29 20 26 26 20 21 64 65 66  L_STUBS) && !def
30e0: 69 6e 65 64 28 55 53 45 5f 54 43 4c 5f 53 54 55  ined(USE_TCL_STU
30f0: 42 5f 50 52 4f 43 53 29 20 2a 2f 0a 20 0a 49 6e  B_PROCS) */. .In
3100: 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c  dex: generic/tcl
3110: 49 6e 74 2e 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  Int.h.==========
3120: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3130: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3140: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3150: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69  =========.RCS fi
3160: 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c  le: /cvsroot/tcl
3170: 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c  /tcl/generic/tcl
3180: 49 6e 74 2e 68 2c 76 0a 72 65 74 72 69 65 76 69  Int.h,v.retrievi
3190: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 32 36  ng revision 1.26
31a0: 34 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 32 36  4.diff -u -r1.26
31b0: 34 20 74 63 6c 49 6e 74 2e 68 0a 2d 2d 2d 20 67  4 tclInt.h.--- g
31c0: 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e 68 09  eneric/tclInt.h.
31d0: 32 37 20 44 65 63 20 32 30 30 35 20 32 30 3a 31  27 Dec 2005 20:1
31e0: 34 3a 30 39 20 2d 30 30 30 30 09 31 2e 32 36 34  4:09 -0000.1.264
31f0: 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c  .+++ generic/tcl
3200: 49 6e 74 2e 68 09 31 38 20 4a 61 6e 20 32 30 30  Int.h.18 Jan 200
3210: 36 20 31 36 3a 35 37 3a 31 30 20 2d 30 30 30 30  6 16:57:10 -0000
3220: 0a 40 40 20 2d 32 36 33 2c 36 20 2b 32 36 33 2c  .@@ -263,6 +263,
3230: 39 20 40 40 0a 20 20 20 20 20 54 63 6c 5f 45 6e  9 @@.     Tcl_En
3240: 73 65 6d 62 6c 65 20 2a 65 6e 73 65 6d 62 6c 65  semble *ensemble
3250: 73 3b 09 2f 2a 20 4c 69 73 74 20 6f 66 20 73 74  s;./* List of st
3260: 72 75 63 74 75 72 65 73 20 74 68 61 74 20 63 6f  ructures that co
3270: 6e 74 61 69 6e 20 74 68 65 20 64 65 74 61 69 6c  ntain the detail
3280: 73 0a 20 09 09 09 09 20 2a 20 6f 66 20 74 68 65  s. .... * of the
3290: 20 65 6e 73 65 6d 62 6c 65 73 20 74 68 61 74 20   ensembles that 
32a0: 61 72 65 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20  are implemented 
32b0: 6f 6e 0a 20 09 09 09 09 20 2a 20 74 6f 70 20 6f  on. .... * top o
32c0: 66 20 74 68 69 73 20 6e 61 6d 65 73 70 61 63 65  f this namespace
32d0: 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f 62  . */.+    Tcl_Ob
32e0: 6a 20 2a 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65  j *unknownHandle
32f0: 72 50 74 72 3b 09 2f 2a 20 41 20 73 63 72 69 70  rPtr;./* A scrip
3300: 74 20 66 72 61 67 6d 65 6e 74 20 74 6f 20 62 65  t fragment to be
3310: 20 75 73 65 64 20 77 68 65 6e 20 63 6f 6d 6d 61   used when comma
3320: 6e 64 0a 2b 09 09 09 09 20 2a 20 72 65 73 6f 6c  nd.+.... * resol
3330: 75 74 69 6f 6e 20 69 6e 20 74 68 69 73 20 6e 61  ution in this na
3340: 6d 65 73 70 61 63 65 20 66 61 69 6c 73 2e 20 54  mespace fails. T
3350: 49 50 0a 2b 09 09 09 09 20 2a 20 31 38 31 2e 20  IP.+.... * 181. 
3360: 2a 2f 0a 20 20 20 20 20 69 6e 74 20 63 6f 6d 6d  */.     int comm
3370: 61 6e 64 50 61 74 68 4c 65 6e 67 74 68 3b 09 2f  andPathLength;./
3380: 2a 20 54 68 65 20 6c 65 6e 67 74 68 20 6f 66 20  * The length of 
3390: 74 68 65 20 65 78 70 6c 69 63 69 74 20 70 61 74  the explicit pat
33a0: 68 2e 20 2a 2f 0a 20 20 20 20 20 4e 61 6d 65 73  h. */.     Names
33b0: 70 61 63 65 50 61 74 68 45 6e 74 72 79 20 2a 63  pacePathEntry *c
33c0: 6f 6d 6d 61 6e 64 50 61 74 68 41 72 72 61 79 3b  ommandPathArray;
33d0: 0a 20 09 09 09 09 2f 2a 20 54 68 65 20 65 78 70  . ..../* The exp
33e0: 6c 69 63 69 74 20 70 61 74 68 20 6f 66 20 74 68  licit path of th
33f0: 65 20 6e 61 6d 65 73 70 61 63 65 20 61 73 20 61  e namespace as a
3400: 6e 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63  n.Index: generic
3410: 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 0a 3d 3d 3d  /tclNamesp.c.===
3420: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3430: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3440: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3450: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3460: 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72  .RCS file: /cvsr
3470: 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65  oot/tcl/tcl/gene
3480: 72 69 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 2c  ric/tclNamesp.c,
3490: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76  v.retrieving rev
34a0: 69 73 69 6f 6e 20 31 2e 39 31 0a 64 69 66 66 20  ision 1.91.diff 
34b0: 2d 75 20 2d 72 31 2e 39 31 20 74 63 6c 4e 61 6d  -u -r1.91 tclNam
34c0: 65 73 70 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69  esp.c.--- generi
34d0: 63 2f 74 63 6c 4e 61 6d 65 73 70 2e 63 09 31 31  c/tclNamesp.c.11
34e0: 20 4a 61 6e 20 32 30 30 36 20 31 37 3a 33 34 3a   Jan 2006 17:34:
34f0: 35 33 20 2d 30 30 30 30 09 31 2e 39 31 0a 2b 2b  53 -0000.1.91.++
3500: 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 4e 61 6d  + generic/tclNam
3510: 65 73 70 2e 63 09 31 38 20 4a 61 6e 20 32 30 30  esp.c.18 Jan 200
3520: 36 20 31 36 3a 35 37 3a 32 32 20 2d 30 30 30 30  6 16:57:22 -0000
3530: 0a 40 40 20 2d 31 32 2c 36 20 2b 31 32 2c 37 20  .@@ -12,6 +12,7 
3540: 40 40 0a 20 20 2a 20 43 6f 70 79 72 69 67 68 74  @@.  * Copyright
3550: 20 28 63 29 20 31 39 39 37 20 53 75 6e 20 4d 69   (c) 1997 Sun Mi
3560: 63 72 6f 73 79 73 74 65 6d 73 2c 20 49 6e 63 2e  crosystems, Inc.
3570: 0a 20 20 2a 20 43 6f 70 79 72 69 67 68 74 20 28  .  * Copyright (
3580: 63 29 20 31 39 39 38 2d 31 39 39 39 20 62 79 20  c) 1998-1999 by 
3590: 53 63 72 69 70 74 69 63 73 20 43 6f 72 70 6f 72  Scriptics Corpor
35a0: 61 74 69 6f 6e 2e 0a 20 20 2a 20 43 6f 70 79 72  ation..  * Copyr
35b0: 69 67 68 74 20 28 63 29 20 32 30 30 32 2d 32 30  ight (c) 2002-20
35c0: 30 35 20 44 6f 6e 61 6c 20 4b 2e 20 46 65 6c 6c  05 Donal K. Fell
35d0: 6f 77 73 2e 0a 2b 20 2a 20 43 6f 70 79 72 69 67  ows..+ * Copyrig
35e0: 68 74 20 28 63 29 20 32 30 30 36 20 4e 65 69 6c  ht (c) 2006 Neil
35f0: 20 4d 61 64 64 65 6e 2e 0a 20 20 2a 0a 20 20 2a   Madden..  *.  *
3600: 20 4f 72 69 67 69 6e 61 6c 6c 79 20 69 6d 70 6c   Originally impl
3610: 65 6d 65 6e 74 65 64 20 62 79 0a 20 20 2a 20 20  emented by.  *  
3620: 20 4d 69 63 68 61 65 6c 20 4a 2e 20 4d 63 4c 65   Michael J. McLe
3630: 6e 6e 61 6e 0a 40 40 20 2d 32 32 38 2c 36 20 2b  nnan.@@ -228,6 +
3640: 32 32 39 2c 39 20 40 40 0a 20 09 09 09 20 20 20  229,9 @@. ...   
3650: 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74   Tcl_Interp *int
3660: 65 72 70 2c 69 6e 74 20 6f 62 6a 63 2c 54 63 6c  erp,int objc,Tcl
3670: 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76  _Obj *CONST objv
3680: 5b 5d 29 3b 0a 20 73 74 61 74 69 63 20 69 6e 74  []);. static int
3690: 09 09 4e 61 6d 65 73 70 61 63 65 54 61 69 6c 43  ..NamespaceTailC
36a0: 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 20 64 75  md(ClientData du
36b0: 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74 65 72 70 20  mmy, Tcl_Interp 
36c0: 2a 69 6e 74 65 72 70 2c 0a 20 09 09 09 20 20 20  *interp,. ...   
36d0: 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f   int objc, Tcl_O
36e0: 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d  bj *CONST objv[]
36f0: 29 3b 0a 2b 73 74 61 74 69 63 20 69 6e 74 20 20  );.+static int  
3700: 20 20 20 20 20 20 20 20 20 20 20 20 4e 61 6d 65              Name
3710: 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 43 6d 64 28  spaceUnknownCmd(
3720: 43 6c 69 65 6e 74 44 61 74 61 20 64 75 6d 6d 79  ClientData dummy
3730: 2c 20 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20  , .+            
3740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3750: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65  Tcl_Interp *inte
3760: 72 70 2c 20 69 6e 74 20 6f 62 6a 63 2c 20 0a 2b  rp, int objc, .+
3770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3780: 20 20 20 20 20 20 20 20 20 20 20 20 54 63 6c 5f              Tcl_
3790: 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b  Obj *CONST objv[
37a0: 5d 29 3b 0a 20 73 74 61 74 69 63 20 69 6e 74 09  ]);. static int.
37b0: 09 4e 61 6d 65 73 70 61 63 65 57 68 69 63 68 43  .NamespaceWhichC
37c0: 6d 64 28 43 6c 69 65 6e 74 44 61 74 61 20 64 75  md(ClientData du
37d0: 6d 6d 79 2c 20 54 63 6c 5f 49 6e 74 65 72 70 20  mmy, Tcl_Interp 
37e0: 2a 69 6e 74 65 72 70 2c 0a 20 09 09 09 20 20 20  *interp,. ...   
37f0: 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63 6c 5f 4f   int objc, Tcl_O
3800: 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d  bj *CONST objv[]
3810: 29 3b 0a 20 73 74 61 74 69 63 20 69 6e 74 09 09  );. static int..
3820: 53 65 74 4e 73 4e 61 6d 65 46 72 6f 6d 41 6e 79  SetNsNameFromAny
3830: 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74  (Tcl_Interp *int
3840: 65 72 70 2c 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62  erp, Tcl_Obj *ob
3850: 6a 50 74 72 29 3b 0a 40 40 20 2d 38 31 34 2c 36  jPtr);.@@ -814,6
3860: 20 2b 38 31 38 2c 37 20 40 40 0a 20 20 20 20 20   +818,7 @@.     
3870: 6e 73 50 74 72 2d 3e 63 6f 6d 70 69 6c 65 64 56  nsPtr->compiledV
3880: 61 72 52 65 73 50 72 6f 63 20 3d 20 4e 55 4c 4c  arResProc = NULL
3890: 3b 0a 20 20 20 20 20 6e 73 50 74 72 2d 3e 65 78  ;.     nsPtr->ex
38a0: 70 6f 72 74 4c 6f 6f 6b 75 70 45 70 6f 63 68 20  portLookupEpoch 
38b0: 3d 20 30 3b 0a 20 20 20 20 20 6e 73 50 74 72 2d  = 0;.     nsPtr-
38c0: 3e 65 6e 73 65 6d 62 6c 65 73 20 3d 20 4e 55 4c  >ensembles = NUL
38d0: 4c 3b 0a 2b 20 20 20 20 6e 73 50 74 72 2d 3e 75  L;.+    nsPtr->u
38e0: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72  nknownHandlerPtr
38f0: 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 6e 73   = NULL;.     ns
3900: 50 74 72 2d 3e 63 6f 6d 6d 61 6e 64 50 61 74 68  Ptr->commandPath
3910: 4c 65 6e 67 74 68 20 3d 20 30 3b 0a 20 20 20 20  Length = 0;.    
3920: 20 6e 73 50 74 72 2d 3e 63 6f 6d 6d 61 6e 64 50   nsPtr->commandP
3930: 61 74 68 41 72 72 61 79 20 3d 20 4e 55 4c 4c 3b  athArray = NULL;
3940: 0a 20 20 20 20 20 6e 73 50 74 72 2d 3e 63 6f 6d  .     nsPtr->com
3950: 6d 61 6e 64 50 61 74 68 53 6f 75 72 63 65 4c 69  mandPathSourceLi
3960: 73 74 20 3d 20 4e 55 4c 4c 3b 0a 40 40 20 2d 39  st = NULL;.@@ -9
3970: 31 35 2c 36 20 2b 39 32 30 2c 31 34 20 40 40 0a  15,6 +920,14 @@.
3980: 20 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 2f 2a       }. .     /*
3990: 0a 2b 20 20 20 20 20 2a 20 49 66 20 74 68 65 20  .+     * If the 
39a0: 6e 61 6d 65 73 70 61 63 65 20 68 61 73 20 61 20  namespace has a 
39b0: 72 65 67 69 73 74 65 72 65 64 20 75 6e 6b 6e 6f  registered unkno
39c0: 77 6e 20 68 61 6e 64 6c 65 72 20 28 54 49 50 20  wn handler (TIP 
39d0: 31 38 31 29 2c 20 74 68 65 6e 20 66 72 65 65 0a  181), then free.
39e0: 2b 20 20 20 20 20 2a 20 69 74 20 68 65 72 65 2e  +     * it here.
39f0: 0a 2b 20 20 20 20 20 2a 2f 0a 2b 20 20 20 20 69  .+     */.+    i
3a00: 66 20 28 6e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77  f (nsPtr->unknow
3a10: 6e 48 61 6e 64 6c 65 72 50 74 72 20 21 3d 20 4e  nHandlerPtr != N
3a20: 55 4c 4c 29 20 7b 0a 2b 09 54 63 6c 5f 44 65 63  ULL) {.+.Tcl_Dec
3a30: 72 52 65 66 43 6f 75 6e 74 28 6e 73 50 74 72 2d  rRefCount(nsPtr-
3a40: 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50  >unknownHandlerP
3a50: 74 72 29 3b 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20  tr);.+    }.+.+ 
3a60: 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 49 66     /*.      * If
3a70: 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 69   the namespace i
3a80: 73 20 6f 6e 20 74 68 65 20 63 61 6c 6c 20 66 72  s on the call fr
3a90: 61 6d 65 20 73 74 61 63 6b 2c 20 69 74 20 69 73  ame stack, it is
3aa0: 20 6d 61 72 6b 65 64 20 61 73 20 22 64 79 69 6e   marked as "dyin
3ab0: 67 22 0a 20 20 20 20 20 20 2a 20 28 4e 53 5f 44  g".      * (NS_D
3ac0: 59 49 4e 47 20 69 73 20 4f 52 27 64 20 69 6e 74  YING is OR'd int
3ad0: 6f 20 69 74 73 20 66 6c 61 67 73 29 3a 20 74 68  o its flags): th
3ae0: 65 20 6e 61 6d 65 73 70 61 63 65 20 63 61 6e 27  e namespace can'
3af0: 74 20 62 65 20 6c 6f 6f 6b 65 64 20 75 70 20 62  t be looked up b
3b00: 79 0a 20 20 20 20 20 20 2a 20 6e 61 6d 65 20 62  y.      * name b
3b10: 75 74 20 69 74 73 20 63 6f 6d 6d 61 6e 64 73 20  ut its commands 
3b20: 61 6e 64 20 76 61 72 69 61 62 6c 65 73 20 61 72  and variables ar
3b30: 65 20 73 74 69 6c 6c 20 75 73 61 62 6c 65 20 62  e still usable b
3b40: 79 20 74 68 6f 73 65 20 61 63 74 69 76 65 0a 40  y those active.@
3b50: 40 20 2d 32 38 39 36 2c 31 33 20 2b 32 39 30 39  @ -2896,13 +2909
3b60: 2c 31 33 20 40 40 0a 20 09 22 63 68 69 6c 64 72  ,13 @@. ."childr
3b70: 65 6e 22 2c 20 22 63 6f 64 65 22 2c 20 22 63 75  en", "code", "cu
3b80: 72 72 65 6e 74 22 2c 20 22 64 65 6c 65 74 65 22  rrent", "delete"
3b90: 2c 20 22 65 6e 73 65 6d 62 6c 65 22 2c 0a 20 09  , "ensemble",. .
3ba0: 22 65 76 61 6c 22 2c 20 22 65 78 69 73 74 73 22  "eval", "exists"
3bb0: 2c 20 22 65 78 70 6f 72 74 22 2c 20 22 66 6f 72  , "export", "for
3bc0: 67 65 74 22 2c 20 22 69 6d 70 6f 72 74 22 2c 0a  get", "import",.
3bd0: 20 09 22 69 6e 73 63 6f 70 65 22 2c 20 22 6f 72   ."inscope", "or
3be0: 69 67 69 6e 22 2c 20 22 70 61 72 65 6e 74 22 2c  igin", "parent",
3bf0: 20 22 70 61 74 68 22 2c 20 22 71 75 61 6c 69 66   "path", "qualif
3c00: 69 65 72 73 22 2c 0a 2d 09 22 74 61 69 6c 22 2c  iers",.-."tail",
3c10: 20 22 77 68 69 63 68 22 2c 20 4e 55 4c 4c 0a 2b   "which", NULL.+
3c20: 09 22 74 61 69 6c 22 2c 20 22 75 6e 6b 6e 6f 77  ."tail", "unknow
3c30: 6e 22 2c 20 22 77 68 69 63 68 22 2c 20 4e 55 4c  n", "which", NUL
3c40: 4c 0a 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 65  L.     };.     e
3c50: 6e 75 6d 20 4e 53 53 75 62 43 6d 64 49 64 78 20  num NSSubCmdIdx 
3c60: 7b 0a 20 09 4e 53 43 68 69 6c 64 72 65 6e 49 64  {. .NSChildrenId
3c70: 78 2c 20 4e 53 43 6f 64 65 49 64 78 2c 20 4e 53  x, NSCodeIdx, NS
3c80: 43 75 72 72 65 6e 74 49 64 78 2c 20 4e 53 44 65  CurrentIdx, NSDe
3c90: 6c 65 74 65 49 64 78 2c 20 4e 53 45 6e 73 65 6d  leteIdx, NSEnsem
3ca0: 62 6c 65 49 64 78 2c 0a 20 09 4e 53 45 76 61 6c  bleIdx,. .NSEval
3cb0: 49 64 78 2c 20 4e 53 45 78 69 73 74 73 49 64 78  Idx, NSExistsIdx
3cc0: 2c 20 4e 53 45 78 70 6f 72 74 49 64 78 2c 20 4e  , NSExportIdx, N
3cd0: 53 46 6f 72 67 65 74 49 64 78 2c 20 4e 53 49 6d  SForgetIdx, NSIm
3ce0: 70 6f 72 74 49 64 78 2c 0a 20 09 4e 53 49 6e 73  portIdx,. .NSIns
3cf0: 63 6f 70 65 49 64 78 2c 20 4e 53 4f 72 69 67 69  copeIdx, NSOrigi
3d00: 6e 49 64 78 2c 20 4e 53 50 61 72 65 6e 74 49 64  nIdx, NSParentId
3d10: 78 2c 20 4e 53 50 61 74 68 49 64 78 2c 20 4e 53  x, NSPathIdx, NS
3d20: 51 75 61 6c 69 66 69 65 72 73 49 64 78 2c 0a 2d  QualifiersIdx,.-
3d30: 09 4e 53 54 61 69 6c 49 64 78 2c 20 4e 53 57 68  .NSTailIdx, NSWh
3d40: 69 63 68 49 64 78 0a 2b 09 4e 53 54 61 69 6c 49  ichIdx.+.NSTailI
3d50: 64 78 2c 20 4e 53 55 6e 6b 6e 6f 77 6e 49 64 78  dx, NSUnknownIdx
3d60: 2c 20 4e 53 57 68 69 63 68 49 64 78 0a 20 20 20  , NSWhichIdx.   
3d70: 20 20 7d 3b 0a 20 20 20 20 20 69 6e 74 20 69 6e    };.     int in
3d80: 64 65 78 2c 20 72 65 73 75 6c 74 3b 0a 20 0a 40  dex, result;. .@
3d90: 40 20 2d 32 39 37 30 2c 36 20 2b 32 39 38 33 2c  @ -2970,6 +2983,
3da0: 39 20 40 40 0a 20 20 20 20 20 63 61 73 65 20 4e  9 @@.     case N
3db0: 53 54 61 69 6c 49 64 78 3a 0a 20 09 72 65 73 75  STailIdx:. .resu
3dc0: 6c 74 20 3d 20 4e 61 6d 65 73 70 61 63 65 54 61  lt = NamespaceTa
3dd0: 69 6c 43 6d 64 28 63 6c 69 65 6e 74 44 61 74 61  ilCmd(clientData
3de0: 2c 20 69 6e 74 65 72 70 2c 20 6f 62 6a 63 2c 20  , interp, objc, 
3df0: 6f 62 6a 76 29 3b 0a 20 09 62 72 65 61 6b 3b 0a  objv);. .break;.
3e00: 2b 20 20 20 20 63 61 73 65 20 4e 53 55 6e 6b 6e  +    case NSUnkn
3e10: 6f 77 6e 49 64 78 3a 0a 2b 09 72 65 73 75 6c 74  ownIdx:.+.result
3e20: 20 3d 20 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e   = NamespaceUnkn
3e30: 6f 77 6e 43 6d 64 28 63 6c 69 65 6e 74 44 61 74  ownCmd(clientDat
3e40: 61 2c 20 69 6e 74 65 72 70 2c 20 6f 62 6a 63 2c  a, interp, objc,
3e50: 20 6f 62 6a 76 29 3b 0a 2b 09 62 72 65 61 6b 3b   objv);.+.break;
3e60: 0a 20 20 20 20 20 63 61 73 65 20 4e 53 57 68 69  .     case NSWhi
3e70: 63 68 49 64 78 3a 0a 20 09 72 65 73 75 6c 74 20  chIdx:. .result 
3e80: 3d 20 4e 61 6d 65 73 70 61 63 65 57 68 69 63 68  = NamespaceWhich
3e90: 43 6d 64 28 63 6c 69 65 6e 74 44 61 74 61 2c 20  Cmd(clientData, 
3ea0: 69 6e 74 65 72 70 2c 20 6f 62 6a 63 2c 20 6f 62  interp, objc, ob
3eb0: 6a 76 29 3b 0a 20 09 62 72 65 61 6b 3b 0a 40 40  jv);. .break;.@@
3ec0: 20 2d 34 32 37 30 2c 36 20 2b 34 32 38 36 2c 31   -4270,6 +4286,1
3ed0: 36 37 20 40 40 0a 20 2f 2a 0a 20 20 2a 2d 2d 2d  67 @@. /*.  *---
3ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3ef0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3f10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3f20: 2d 2d 2d 0a 20 20 2a 0a 2b 20 2a 20 4e 61 6d 65  ---.  *.+ * Name
3f30: 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 43 6d 64 20  spaceUnknownCmd 
3f40: 2d 2d 0a 2b 20 2a 0a 2b 20 2a 09 49 6e 76 6f 6b  --.+ *.+ *.Invok
3f50: 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20  ed to implement 
3f60: 74 68 65 20 22 6e 61 6d 65 73 70 61 63 65 20 75  the "namespace u
3f70: 6e 6b 6e 6f 77 6e 22 20 63 6f 6d 6d 61 6e 64 20  nknown" command 
3f80: 28 54 49 50 20 31 38 31 29 20 74 68 61 74 0a 2b  (TIP 181) that.+
3f90: 20 2a 09 73 65 74 73 20 6f 72 20 71 75 65 72 69   *.sets or queri
3fa0: 65 73 20 61 20 70 65 72 2d 6e 61 6d 65 73 70 61  es a per-namespa
3fb0: 63 65 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61  ce unknown comma
3fc0: 6e 64 20 68 61 6e 64 6c 65 72 2e 20 54 68 69 73  nd handler. This
3fd0: 20 68 61 6e 64 6c 65 72 0a 2b 20 2a 09 69 73 20   handler.+ *.is 
3fe0: 63 61 6c 6c 65 64 20 77 68 65 6e 20 63 6f 6d 6d  called when comm
3ff0: 61 6e 64 20 6c 6f 6f 6b 75 70 20 66 61 69 6c 73  and lookup fails
4000: 20 28 63 75 72 72 65 6e 74 20 61 6e 64 20 67 6c   (current and gl
4010: 6f 62 61 6c 20 6e 73 29 2e 20 54 68 65 0a 2b 20  obal ns). The.+ 
4020: 2a 09 64 65 66 61 75 6c 74 20 68 61 6e 64 6c 65  *.default handle
4030: 72 20 66 6f 72 20 74 68 65 20 67 6c 6f 62 61 6c  r for the global
4040: 20 6e 61 6d 65 73 70 61 63 65 20 69 73 20 3a 3a   namespace is ::
4050: 75 6e 6b 6e 6f 77 6e 2e 20 54 68 65 20 64 65 66  unknown. The def
4060: 61 75 6c 74 0a 2b 20 2a 09 68 61 6e 64 6c 65 72  ault.+ *.handler
4070: 20 66 6f 72 20 6f 74 68 65 72 20 6e 61 6d 65 73   for other names
4080: 70 61 63 65 73 20 69 73 20 74 6f 20 63 61 6c 6c  paces is to call
4090: 20 74 68 65 20 67 6c 6f 62 61 6c 20 6e 61 6d 65   the global name
40a0: 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 0a 2b 20  space unknown.+ 
40b0: 2a 09 68 61 6e 64 6c 65 72 2e 20 50 61 73 73 69  *.handler. Passi
40c0: 6e 67 20 61 6e 20 65 6d 70 74 79 20 6c 69 73 74  ng an empty list
40d0: 20 72 65 73 75 6c 74 73 20 69 6e 20 72 65 73 65   results in rese
40e0: 74 74 69 6e 67 20 74 68 65 20 68 61 6e 64 6c 65  tting the handle
40f0: 72 20 74 6f 0a 2b 20 2a 09 69 74 73 20 64 65 66  r to.+ *.its def
4100: 61 75 6c 74 2e 0a 2b 20 2a 0a 2b 20 2a 09 20 20  ault..+ *.+ *.  
4110: 20 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e    namespace unkn
4120: 6f 77 6e 20 3f 68 61 6e 64 6c 65 72 3f 0a 2b 20  own ?handler?.+ 
4130: 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73 3a 0a 2b  *.+ * Results:.+
4140: 20 2a 09 52 65 74 75 72 6e 73 20 54 43 4c 5f 4f   *.Returns TCL_O
4150: 4b 20 69 66 20 73 75 63 63 65 73 73 66 75 6c 2c  K if successful,
4160: 20 61 6e 64 20 54 43 4c 5f 45 52 52 4f 52 20 69   and TCL_ERROR i
4170: 66 20 61 6e 79 74 68 69 6e 67 20 67 6f 65 73 20  f anything goes 
4180: 77 72 6f 6e 67 2e 0a 2b 20 2a 0a 2b 20 2a 20 53  wrong..+ *.+ * S
4190: 69 64 65 20 65 66 66 65 63 74 73 3a 0a 2b 20 2a  ide effects:.+ *
41a0: 09 49 66 20 6e 6f 20 68 61 6e 64 6c 65 72 20 69  .If no handler i
41b0: 73 20 73 70 65 63 69 66 69 65 64 2c 20 72 65 74  s specified, ret
41c0: 75 72 6e 73 20 61 20 72 65 73 75 6c 74 20 69 6e  urns a result in
41d0: 20 74 68 65 20 69 6e 74 65 72 70 72 65 74 65 72   the interpreter
41e0: 27 73 0a 2b 20 2a 09 72 65 73 75 6c 74 20 6f 62  's.+ *.result ob
41f0: 6a 65 63 74 2c 20 6f 74 68 65 72 77 69 73 65 20  ject, otherwise 
4200: 69 74 20 73 65 74 73 20 74 68 65 20 75 6e 6b 6e  it sets the unkn
4210: 6f 77 6e 20 68 61 6e 64 6c 65 72 20 70 6f 69 6e  own handler poin
4220: 74 65 72 20 69 6e 20 74 68 65 0a 2b 20 2a 09 63  ter in the.+ *.c
4230: 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 65  urrent namespace
4240: 20 74 6f 20 74 68 65 20 73 63 72 69 70 74 20 66   to the script f
4250: 72 61 67 6d 65 6e 74 20 70 72 6f 76 69 64 65 64  ragment provided
4260: 2e 20 49 66 20 61 6e 79 74 68 69 6e 67 20 67 6f  . If anything go
4270: 65 73 0a 2b 20 2a 09 77 72 6f 6e 67 2c 20 74 68  es.+ *.wrong, th
4280: 65 20 72 65 73 75 6c 74 20 69 73 20 61 6e 20 65  e result is an e
4290: 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0a 2b 20  rror message..+ 
42a0: 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  *.+ *-----------
42b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
42c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
42d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
42e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f  -----------.+ */
42f0: 0a 2b 73 74 61 74 69 63 20 69 6e 74 0a 2b 4e 61  .+static int.+Na
4300: 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 43 6d  mespaceUnknownCm
4310: 64 28 64 75 6d 6d 79 2c 20 69 6e 74 65 72 70 2c  d(dummy, interp,
4320: 20 6f 62 6a 63 2c 20 6f 62 6a 76 29 0a 2b 20 20   objc, objv).+  
4330: 20 20 43 6c 69 65 6e 74 44 61 74 61 20 64 75 6d    ClientData dum
4340: 6d 79 3b 09 09 2f 2a 20 4e 6f 74 20 75 73 65 64  my;../* Not used
4350: 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 49 6e  . */.+    Tcl_In
4360: 74 65 72 70 20 2a 69 6e 74 65 72 70 3b 09 09 2f  terp *interp;../
4370: 2a 20 43 75 72 72 65 6e 74 20 69 6e 74 65 72 70  * Current interp
4380: 72 65 74 65 72 2e 20 2a 2f 0a 2b 20 20 20 20 69  reter. */.+    i
4390: 6e 74 20 6f 62 6a 63 3b 09 09 09 2f 2a 20 4e 75  nt objc;.../* Nu
43a0: 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74  mber of argument
43b0: 73 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f  s. */.+    Tcl_O
43c0: 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d  bj *CONST objv[]
43d0: 3b 09 2f 2a 20 41 72 67 75 6d 65 6e 74 20 6f 62  ;./* Argument ob
43e0: 6a 65 63 74 73 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20  jects. */.+{.+  
43f0: 20 20 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 20    Tcl_Namespace 
4400: 2a 63 75 72 72 4e 73 50 74 72 3b 0a 2b 20 20 20  *currNsPtr;.+   
4410: 20 54 63 6c 5f 4f 62 6a 20 2a 72 65 73 75 6c 74   Tcl_Obj *result
4420: 50 74 72 3b 0a 2b 20 20 20 20 69 6e 74 20 72 63  Ptr;.+    int rc
4430: 3b 0a 2b 0a 2b 20 20 20 20 69 66 20 28 6f 62 6a  ;.+.+    if (obj
4440: 63 20 3e 20 33 29 20 7b 0a 2b 09 54 63 6c 5f 57  c > 3) {.+.Tcl_W
4450: 72 6f 6e 67 4e 75 6d 41 72 67 73 28 69 6e 74 65  rongNumArgs(inte
4460: 72 70 2c 20 32 2c 20 6f 62 6a 76 2c 20 22 3f 73  rp, 2, objv, "?s
4470: 63 72 69 70 74 3f 22 29 3b 0a 2b 20 20 20 20 20  cript?");.+     
4480: 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52     return TCL_ER
4490: 52 4f 52 3b 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20  ROR;.+    }.+.+ 
44a0: 20 20 20 63 75 72 72 4e 73 50 74 72 20 3d 20 54     currNsPtr = T
44b0: 63 6c 5f 47 65 74 43 75 72 72 65 6e 74 4e 61 6d  cl_GetCurrentNam
44c0: 65 73 70 61 63 65 28 69 6e 74 65 72 70 29 3b 0a  espace(interp);.
44d0: 2b 0a 2b 20 20 20 20 69 66 20 28 6f 62 6a 63 20  +.+    if (objc 
44e0: 3d 3d 20 32 29 20 7b 0a 2b 09 2f 2a 0a 2b 09 20  == 2) {.+./*.+. 
44f0: 2a 20 49 6e 74 72 6f 73 70 65 63 74 69 6f 6e 20  * Introspection 
4500: 2d 20 72 65 74 75 72 6e 20 74 68 65 20 63 75 72  - return the cur
4510: 72 65 6e 74 20 6e 61 6d 65 73 70 61 63 65 20 68  rent namespace h
4520: 61 6e 64 6c 65 72 2e 0a 2b 09 20 2a 2f 0a 2b 09  andler..+. */.+.
4530: 72 65 73 75 6c 74 50 74 72 20 3d 20 54 63 6c 5f  resultPtr = Tcl_
4540: 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e  GetNamespaceUnkn
4550: 6f 77 6e 48 61 6e 64 6c 65 72 28 69 6e 74 65 72  ownHandler(inter
4560: 70 2c 20 63 75 72 72 4e 73 50 74 72 29 3b 0a 2b  p, currNsPtr);.+
4570: 09 69 66 20 28 72 65 73 75 6c 74 50 74 72 20 3d  .if (resultPtr =
4580: 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 20 20 20 20  = NULL) {.+.    
4590: 72 65 73 75 6c 74 50 74 72 20 3d 20 54 63 6c 5f  resultPtr = Tcl_
45a0: 4e 65 77 4f 62 6a 28 29 3b 0a 2b 09 7d 0a 2b 09  NewObj();.+.}.+.
45b0: 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 75 6c 74  Tcl_SetObjResult
45c0: 28 69 6e 74 65 72 70 2c 20 72 65 73 75 6c 74 50  (interp, resultP
45d0: 74 72 29 3b 0a 2b 20 20 20 20 7d 20 65 6c 73 65  tr);.+    } else
45e0: 20 7b 0a 2b 09 72 63 20 3d 20 54 63 6c 5f 53 65   {.+.rc = Tcl_Se
45f0: 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77  tNamespaceUnknow
4600: 6e 48 61 6e 64 6c 65 72 28 69 6e 74 65 72 70 2c  nHandler(interp,
4610: 20 63 75 72 72 4e 73 50 74 72 2c 20 6f 62 6a 76   currNsPtr, objv
4620: 5b 32 5d 29 3b 0a 2b 09 69 66 20 28 72 63 20 3d  [2]);.+.if (rc =
4630: 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2b 09 20 20  = TCL_OK) {.+.  
4640: 20 20 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 75    Tcl_SetObjResu
4650: 6c 74 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b  lt(interp, objv[
4660: 32 5d 29 3b 0a 2b 09 7d 0a 2b 09 72 65 74 75 72  2]);.+.}.+.retur
4670: 6e 20 72 63 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20  n rc;.+    }.+  
4680: 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b 3b    return TCL_OK;
4690: 0a 2b 7d 0a 2b 0c 0a 2b 2f 2a 0a 2b 20 2a 2d 2d  .+}.+..+/*.+ *--
46a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
46b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
46c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
46d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
46e0: 2d 2d 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20 54 63 6c  ----.+ *.+ * Tcl
46f0: 5f 47 65 74 4e 61 6d 65 73 70 61 63 65 55 6e 6b  _GetNamespaceUnk
4700: 6e 6f 77 6e 48 61 6e 64 6c 65 72 20 2d 2d 0a 2b  nownHandler --.+
4710: 20 2a 0a 2b 20 2a 09 52 65 74 75 72 6e 73 20 74   *.+ *.Returns t
4720: 68 65 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61  he unknown comma
4730: 6e 64 20 68 61 6e 64 6c 65 72 20 72 65 67 69 73  nd handler regis
4740: 74 65 72 65 64 20 66 6f 72 20 74 68 65 20 67 69  tered for the gi
4750: 76 65 6e 0a 2b 20 2a 09 6e 61 6d 65 73 70 61 63  ven.+ *.namespac
4760: 65 2e 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 6c  e..+ *.+ * Resul
4770: 74 73 3a 0a 2b 20 2a 09 52 65 74 75 72 6e 73 20  ts:.+ *.Returns 
4780: 74 68 65 20 63 75 72 72 65 6e 74 20 75 6e 6b 6e  the current unkn
4790: 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 6e 64  own command hand
47a0: 6c 65 72 2c 20 6f 72 20 4e 55 4c 4c 20 69 66 20  ler, or NULL if 
47b0: 6e 6f 6e 65 0a 2b 20 2a 09 65 78 69 73 74 73 20  none.+ *.exists 
47c0: 66 6f 72 20 74 68 65 20 6e 61 6d 65 73 70 61 63  for the namespac
47d0: 65 2e 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64 65 20  e..+ *.+ * Side 
47e0: 65 66 66 65 63 74 73 3a 0a 2b 20 2a 09 4e 6f 6e  effects:.+ *.Non
47f0: 65 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d  e..+ *.+ *------
4800: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4810: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4820: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4830: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4840: 0a 2b 20 2a 2f 0a 2b 54 63 6c 5f 4f 62 6a 20 2a  .+ */.+Tcl_Obj *
4850: 0a 2b 54 63 6c 5f 47 65 74 4e 61 6d 65 73 70 61  .+Tcl_GetNamespa
4860: 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72  ceUnknownHandler
4870: 28 69 6e 74 65 72 70 2c 20 6e 73 50 74 72 29 0a  (interp, nsPtr).
4880: 2b 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20  +    Tcl_Interp 
4890: 2a 69 6e 74 65 72 70 3b 09 09 2f 2a 20 54 68 65  *interp;../* The
48a0: 20 69 6e 74 65 72 70 72 65 74 65 72 20 69 6e 20   interpreter in 
48b0: 77 68 69 63 68 20 74 68 65 20 6e 61 6d 65 73 70  which the namesp
48c0: 61 63 65 0a 2b 09 09 09 09 20 2a 20 65 78 69 73  ace.+.... * exis
48d0: 74 73 2e 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f  ts. */.+    Tcl_
48e0: 4e 61 6d 65 73 70 61 63 65 20 2a 6e 73 50 74 72  Namespace *nsPtr
48f0: 3b 09 2f 2a 20 54 68 65 20 6e 61 6d 65 73 70 61  ;./* The namespa
4900: 63 65 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 4e  ce. */.+{.+    N
4910: 61 6d 65 73 70 61 63 65 20 2a 63 75 72 72 4e 73  amespace *currNs
4920: 50 74 72 20 3d 20 28 4e 61 6d 65 73 70 61 63 65  Ptr = (Namespace
4930: 20 2a 29 6e 73 50 74 72 3b 0a 2b 0a 2b 20 20 20   *)nsPtr;.+.+   
4940: 20 69 66 20 28 63 75 72 72 4e 73 50 74 72 2d 3e   if (currNsPtr->
4950: 75 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74  unknownHandlerPt
4960: 72 20 3d 3d 20 4e 55 4c 4c 20 26 26 0a 2b 09 63  r == NULL &&.+.c
4970: 75 72 72 4e 73 50 74 72 20 3d 3d 20 28 28 49 6e  urrNsPtr == ((In
4980: 74 65 72 70 20 2a 29 69 6e 74 65 72 70 29 2d 3e  terp *)interp)->
4990: 67 6c 6f 62 61 6c 4e 73 50 74 72 29 20 7b 0a 2b  globalNsPtr) {.+
49a0: 09 2f 2a 20 44 65 66 61 75 6c 74 20 68 61 6e 64  ./* Default hand
49b0: 6c 65 72 20 66 6f 72 20 67 6c 6f 62 61 6c 20 6e  ler for global n
49c0: 61 6d 65 73 70 61 63 65 20 69 73 20 22 3a 3a 75  amespace is "::u
49d0: 6e 6b 6e 6f 77 6e 22 2e 20 46 6f 72 20 61 6c 6c  nknown". For all
49e0: 0a 2b 09 20 2a 20 6f 74 68 65 72 20 6e 61 6d 65  .+. * other name
49f0: 73 70 61 63 65 73 2c 20 69 74 20 69 73 20 4e 55  spaces, it is NU
4a00: 4c 4c 20 28 77 68 69 63 68 20 66 61 6c 6c 73 20  LL (which falls 
4a10: 62 61 63 6b 20 6f 6e 20 74 68 65 20 67 6c 6f 62  back on the glob
4a20: 61 6c 0a 2b 09 20 2a 20 75 6e 6b 6e 6f 77 6e 20  al.+. * unknown 
4a30: 68 61 6e 64 6c 65 72 29 2e 0a 2b 09 20 2a 2f 0a  handler)..+. */.
4a40: 2b 09 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b  +.currNsPtr->unk
4a50: 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 3d  nownHandlerPtr =
4a60: 0a 2b 09 20 20 20 20 54 63 6c 5f 4e 65 77 53 74  .+.    Tcl_NewSt
4a70: 72 69 6e 67 4f 62 6a 28 22 3a 3a 75 6e 6b 6e 6f  ringObj("::unkno
4a80: 77 6e 22 2c 20 2d 31 29 3b 0a 2b 09 54 63 6c 5f  wn", -1);.+.Tcl_
4a90: 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 63 75 72  IncrRefCount(cur
4aa0: 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48  rNsPtr->unknownH
4ab0: 61 6e 64 6c 65 72 50 74 72 29 3b 0a 2b 20 20 20  andlerPtr);.+   
4ac0: 20 7d 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 63   }.+    return c
4ad0: 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f 77  urrNsPtr->unknow
4ae0: 6e 48 61 6e 64 6c 65 72 50 74 72 3b 0a 2b 7d 0a  nHandlerPtr;.+}.
4af0: 2b 0c 0a 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d  +..+/*.+ *------
4b00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4b10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4b20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4b30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4b40: 0a 2b 20 2a 0a 2b 20 2a 20 54 63 6c 5f 53 65 74  .+ *.+ * Tcl_Set
4b50: 4e 61 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e  NamespaceUnknown
4b60: 48 61 6e 64 6c 65 72 20 2d 2d 0a 2b 20 2a 0a 2b  Handler --.+ *.+
4b70: 20 2a 09 53 65 74 73 20 74 68 65 20 75 6e 6b 6e   *.Sets the unkn
4b80: 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20 68 61 6e 64  own command hand
4b90: 6c 65 72 20 66 6f 72 20 74 68 65 20 67 69 76 65  ler for the give
4ba0: 6e 20 6e 61 6d 65 73 70 61 63 65 20 74 6f 20 74  n namespace to t
4bb0: 68 65 0a 2b 20 2a 09 63 6f 6d 6d 61 6e 64 20 70  he.+ *.command p
4bc0: 72 65 66 69 78 20 70 61 73 73 65 64 2e 0a 2b 20  refix passed..+ 
4bd0: 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73 3a 0a 2b  *.+ * Results:.+
4be0: 20 2a 09 52 65 74 75 72 6e 73 20 54 43 4c 5f 4f   *.Returns TCL_O
4bf0: 4b 20 69 66 20 73 75 63 63 65 73 73 66 75 6c 2c  K if successful,
4c00: 20 61 6e 64 20 54 43 4c 5f 45 52 52 4f 52 20 69   and TCL_ERROR i
4c10: 66 20 61 6e 79 74 68 69 6e 67 20 67 6f 65 73 20  f anything goes 
4c20: 0a 2b 20 2a 09 77 72 6f 6e 67 2e 0a 2b 20 2a 0a  .+ *.wrong..+ *.
4c30: 2b 20 2a 20 53 69 64 65 20 65 66 66 65 63 74 73  + * Side effects
4c40: 3a 0a 2b 20 2a 09 53 65 74 73 20 74 68 65 20 6e  :.+ *.Sets the n
4c50: 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e  amespace unknown
4c60: 20 63 6f 6d 6d 61 6e 64 20 68 61 6e 64 6c 65 72   command handler
4c70: 2e 20 49 66 20 74 68 65 20 70 61 73 73 65 64 20  . If the passed 
4c80: 69 6e 0a 2b 20 2a 09 68 61 6e 64 6c 65 72 20 69  in.+ *.handler i
4c90: 73 20 4e 55 4c 4c 20 6f 72 20 61 6e 20 65 6d 70  s NULL or an emp
4ca0: 74 79 20 6c 69 73 74 2c 20 74 68 65 6e 20 74 68  ty list, then th
4cb0: 65 20 68 61 6e 64 6c 65 72 20 69 73 20 72 65 73  e handler is res
4cc0: 65 74 20 74 6f 0a 2b 20 2a 09 69 74 73 20 64 65  et to.+ *.its de
4cd0: 66 61 75 6c 74 2e 20 49 66 20 61 6e 20 65 72 72  fault. If an err
4ce0: 6f 72 20 6f 63 63 75 72 73 2c 20 74 68 65 6e 20  or occurs, then 
4cf0: 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  an error message
4d00: 20 69 73 20 6c 65 66 74 0a 2b 20 2a 09 69 6e 20   is left.+ *.in 
4d10: 74 68 65 20 69 6e 74 65 72 70 72 65 74 65 72 20  the interpreter 
4d20: 72 65 73 75 6c 74 2e 0a 2b 20 2a 0a 2b 20 2a 2d  result..+ *.+ *-
4d30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4d40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4d50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4d60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4d70: 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 69 6e 74 0a  -----.+ */.+int.
4d80: 2b 54 63 6c 5f 53 65 74 4e 61 6d 65 73 70 61 63  +Tcl_SetNamespac
4d90: 65 55 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 28  eUnknownHandler(
4da0: 69 6e 74 65 72 70 2c 20 6e 73 50 74 72 2c 20 68  interp, nsPtr, h
4db0: 61 6e 64 6c 65 72 50 74 72 29 0a 2b 20 20 20 20  andlerPtr).+    
4dc0: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65  Tcl_Interp *inte
4dd0: 72 70 3b 09 09 2f 2a 20 49 6e 74 65 72 70 72 65  rp;../* Interpre
4de0: 74 65 72 20 69 6e 20 77 68 69 63 68 20 74 68 65  ter in which the
4df0: 20 6e 61 6d 65 73 70 61 63 65 20 0a 2b 09 09 09   namespace .+...
4e00: 09 20 2a 20 65 78 69 73 74 73 2e 20 2a 2f 0a 2b  . * exists. */.+
4e10: 20 20 20 20 54 63 6c 5f 4e 61 6d 65 73 70 61 63      Tcl_Namespac
4e20: 65 20 2a 6e 73 50 74 72 3b 09 2f 2a 20 4e 61 6d  e *nsPtr;./* Nam
4e30: 65 73 70 61 63 65 20 77 68 69 63 68 20 69 73 20  espace which is 
4e40: 62 65 69 6e 67 20 75 70 64 61 74 65 64 2e 20 2a  being updated. *
4e50: 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a  /.+    Tcl_Obj *
4e60: 68 61 6e 64 6c 65 72 50 74 72 3b 09 2f 2a 20 54  handlerPtr;./* T
4e70: 68 65 20 6e 65 77 20 68 61 6e 64 6c 65 72 2c 20  he new handler, 
4e80: 6f 72 20 4e 55 4c 4c 20 74 6f 20 72 65 73 65 74  or NULL to reset
4e90: 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 69 6e 74  . */.+{.+    int
4ea0: 20 6c 73 74 6c 65 6e 3b 0a 2b 20 20 20 20 4e 61   lstlen;.+    Na
4eb0: 6d 65 73 70 61 63 65 20 2a 63 75 72 72 4e 73 50  mespace *currNsP
4ec0: 74 72 20 3d 20 28 4e 61 6d 65 73 70 61 63 65 20  tr = (Namespace 
4ed0: 2a 29 6e 73 50 74 72 3b 0a 2b 0a 2b 20 20 20 20  *)nsPtr;.+.+    
4ee0: 69 66 20 28 63 75 72 72 4e 73 50 74 72 2d 3e 75  if (currNsPtr->u
4ef0: 6e 6b 6e 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72  nknownHandlerPtr
4f00: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 2f 2a   != NULL) {.+./*
4f10: 20 52 65 6d 6f 76 65 20 6f 6c 64 20 68 61 6e 64   Remove old hand
4f20: 6c 65 72 20 66 69 72 73 74 2e 20 2a 2f 0a 2b 09  ler first. */.+.
4f30: 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74  Tcl_DecrRefCount
4f40: 28 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e  (currNsPtr->unkn
4f50: 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 29 3b 0a  ownHandlerPtr);.
4f60: 2b 20 20 20 20 7d 0a 2b 20 20 20 20 2f 2a 0a 2b  +    }.+    /*.+
4f70: 20 20 20 20 20 2a 20 49 66 20 4e 55 4c 4c 20 6f       * If NULL o
4f80: 72 20 61 6e 20 65 6d 70 74 79 20 6c 69 73 74 20  r an empty list 
4f90: 69 73 20 70 61 73 73 65 64 2c 20 74 68 65 6e 20  is passed, then 
4fa0: 72 65 73 65 74 20 74 6f 20 74 68 65 20 64 65 66  reset to the def
4fb0: 61 75 6c 74 0a 2b 20 20 20 20 20 2a 20 68 61 6e  ault.+     * han
4fc0: 64 6c 65 72 2e 0a 2b 20 20 20 20 20 2a 2f 0a 2b  dler..+     */.+
4fd0: 20 20 20 20 69 66 20 28 68 61 6e 64 6c 65 72 50      if (handlerP
4fe0: 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09  tr == NULL) {.+.
4ff0: 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e 6f  currNsPtr->unkno
5000: 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 3d 20 4e  wnHandlerPtr = N
5010: 55 4c 4c 3b 0a 2b 20 20 20 20 7d 20 65 6c 73 65  ULL;.+    } else
5020: 20 7b 0a 2b 09 69 66 20 28 54 63 6c 5f 4c 69 73   {.+.if (Tcl_Lis
5030: 74 4f 62 6a 4c 65 6e 67 74 68 28 69 6e 74 65 72  tObjLength(inter
5040: 70 2c 20 68 61 6e 64 6c 65 72 50 74 72 2c 20 26  p, handlerPtr, &
5050: 6c 73 74 6c 65 6e 29 20 21 3d 20 54 43 4c 5f 4f  lstlen) != TCL_O
5060: 4b 29 20 7b 0a 2b 09 20 20 20 20 2f 2a 20 4e 6f  K) {.+.    /* No
5070: 74 20 61 20 6c 69 73 74 20 2a 2f 0a 2b 09 20 20  t a list */.+.  
5080: 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52    return TCL_ERR
5090: 4f 52 3b 0a 2b 09 7d 20 65 6c 73 65 20 69 66 20  OR;.+.} else if 
50a0: 28 6c 73 74 6c 65 6e 20 3d 3d 20 30 29 20 7b 0a  (lstlen == 0) {.
50b0: 2b 09 20 20 20 20 2f 2a 20 45 6d 70 74 79 20 6c  +.    /* Empty l
50c0: 69 73 74 20 2d 20 72 65 73 65 74 20 74 6f 20 64  ist - reset to d
50d0: 65 66 61 75 6c 74 2e 20 2a 2f 0a 2b 09 20 20 20  efault. */.+.   
50e0: 20 63 75 72 72 4e 73 50 74 72 2d 3e 75 6e 6b 6e   currNsPtr->unkn
50f0: 6f 77 6e 48 61 6e 64 6c 65 72 50 74 72 20 3d 20  ownHandlerPtr = 
5100: 4e 55 4c 4c 3b 0a 2b 09 7d 20 65 6c 73 65 20 7b  NULL;.+.} else {
5110: 0a 2b 09 20 20 20 20 2f 2a 20 0a 2b 09 20 20 20  .+.    /* .+.   
5120: 20 20 2a 20 49 6e 63 72 65 6d 65 6e 74 20 72 65    * Increment re
5130: 66 20 63 6f 75 6e 74 20 61 6e 64 20 73 74 6f 72  f count and stor
5140: 65 2e 20 54 68 65 20 72 65 66 65 72 65 6e 63 65  e. The reference
5150: 20 63 6f 75 6e 74 20 69 73 20 0a 2b 09 20 20 20   count is .+.   
5160: 20 20 2a 20 64 65 63 72 65 6d 65 6e 74 65 64 20    * decremented 
5170: 65 69 74 68 65 72 20 69 6e 20 74 68 65 20 63 6f  either in the co
5180: 64 65 20 61 62 6f 76 65 2c 20 6f 72 20 77 68 65  de above, or whe
5190: 6e 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20  n the namespace 
51a0: 0a 2b 09 20 20 20 20 20 2a 20 69 73 20 64 65 6c  .+.     * is del
51b0: 65 74 65 64 2e 0a 2b 09 20 20 20 20 20 2a 2f 0a  eted..+.     */.
51c0: 2b 09 20 20 20 20 54 63 6c 5f 49 6e 63 72 52 65  +.    Tcl_IncrRe
51d0: 66 43 6f 75 6e 74 28 68 61 6e 64 6c 65 72 50 74  fCount(handlerPt
51e0: 72 29 3b 0a 2b 09 20 20 20 20 63 75 72 72 4e 73  r);.+.    currNs
51f0: 50 74 72 2d 3e 75 6e 6b 6e 6f 77 6e 48 61 6e 64  Ptr->unknownHand
5200: 6c 65 72 50 74 72 20 3d 20 68 61 6e 64 6c 65 72  lerPtr = handler
5210: 50 74 72 3b 0a 2b 09 7d 0a 2b 20 20 20 20 7d 0a  Ptr;.+.}.+    }.
5220: 2b 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f  +    return TCL_
5230: 4f 4b 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f 2a 0a 2b 20  OK;.+}.+..+/*.+ 
5240: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  *---------------
5250: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5260: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5280: 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 20 20 2a 20  -------.+ *.  * 
5290: 4e 61 6d 65 73 70 61 63 65 54 61 69 6c 43 6d 64  NamespaceTailCmd
52a0: 20 2d 2d 0a 20 20 2a 0a 20 20 2a 09 49 6e 76 6f   --.  *.  *.Invo
52b0: 6b 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  ked to implement
52c0: 20 74 68 65 20 22 6e 61 6d 65 73 70 61 63 65 20   the "namespace 
52d0: 74 61 69 6c 22 20 63 6f 6d 6d 61 6e 64 20 74 68  tail" command th
52e0: 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 0a 49  at returns the.I
52f0: 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63  ndex: generic/tc
5300: 6c 53 74 75 62 49 6e 69 74 2e 63 0a 3d 3d 3d 3d  lStubInit.c.====
5310: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5320: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5330: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5340: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a  ===============.
5350: 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f  RCS file: /cvsro
5360: 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72  ot/tcl/tcl/gener
5370: 69 63 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e 63  ic/tclStubInit.c
5380: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65  ,v.retrieving re
5390: 76 69 73 69 6f 6e 20 31 2e 31 32 37 0a 64 69 66  vision 1.127.dif
53a0: 66 20 2d 75 20 2d 72 31 2e 31 32 37 20 74 63 6c  f -u -r1.127 tcl
53b0: 53 74 75 62 49 6e 69 74 2e 63 0a 2d 2d 2d 20 67  StubInit.c.--- g
53c0: 65 6e 65 72 69 63 2f 74 63 6c 53 74 75 62 49 6e  eneric/tclStubIn
53d0: 69 74 2e 63 09 32 37 20 44 65 63 20 32 30 30 35  it.c.27 Dec 2005
53e0: 20 32 30 3a 31 34 3a 30 39 20 2d 30 30 30 30 09   20:14:09 -0000.
53f0: 31 2e 31 32 37 0a 2b 2b 2b 20 67 65 6e 65 72 69  1.127.+++ generi
5400: 63 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 09  c/tclStubInit.c.
5410: 31 38 20 4a 61 6e 20 32 30 30 36 20 31 36 3a 35  18 Jan 2006 16:5
5420: 37 3a 32 34 20 2d 30 30 30 30 0a 40 40 20 2d 31  7:24 -0000.@@ -1
5430: 30 36 33 2c 36 20 2b 31 30 36 33 2c 38 20 40 40  063,6 +1063,8 @@
5440: 0a 20 20 20 20 20 54 63 6c 5f 53 65 74 43 68 61  .     Tcl_SetCha
5450: 6e 6e 65 6c 45 72 72 6f 72 2c 20 2f 2a 20 35 36  nnelError, /* 56
5460: 34 20 2a 2f 0a 20 20 20 20 20 54 63 6c 5f 47 65  4 */.     Tcl_Ge
5470: 74 43 68 61 6e 6e 65 6c 45 72 72 6f 72 2c 20 2f  tChannelError, /
5480: 2a 20 35 36 35 20 2a 2f 0a 20 20 20 20 20 54 63  * 565 */.     Tc
5490: 6c 5f 49 6e 69 74 42 69 67 6e 75 6d 46 72 6f 6d  l_InitBignumFrom
54a0: 44 6f 75 62 6c 65 2c 20 2f 2a 20 35 36 36 20 2a  Double, /* 566 *
54b0: 2f 0a 2b 20 20 20 20 54 63 6c 5f 47 65 74 4e 61  /.+    Tcl_GetNa
54c0: 6d 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61  mespaceUnknownHa
54d0: 6e 64 6c 65 72 2c 20 2f 2a 20 35 36 37 20 2a 2f  ndler, /* 567 */
54e0: 0a 2b 20 20 20 20 54 63 6c 5f 53 65 74 4e 61 6d  .+    Tcl_SetNam
54f0: 65 73 70 61 63 65 55 6e 6b 6e 6f 77 6e 48 61 6e  espaceUnknownHan
5500: 64 6c 65 72 2c 20 2f 2a 20 35 36 38 20 2a 2f 0a  dler, /* 568 */.
5510: 20 7d 3b 0a 20 0a 20 2f 2a 20 21 45 4e 44 21 3a   };. . /* !END!:
5520: 20 44 6f 20 6e 6f 74 20 65 64 69 74 20 61 62 6f   Do not edit abo
5530: 76 65 20 74 68 69 73 20 6c 69 6e 65 2e 20 2a 2f  ve this line. */
5540: 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 2f 6e 61  .Index: tests/na
5550: 6d 65 73 70 61 63 65 2e 74 65 73 74 0a 3d 3d 3d  mespace.test.===
5560: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5570: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5580: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5590: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
55a0: 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72  .RCS file: /cvsr
55b0: 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74  oot/tcl/tcl/test
55c0: 73 2f 6e 61 6d 65 73 70 61 63 65 2e 74 65 73 74  s/namespace.test
55d0: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65  ,v.retrieving re
55e0: 76 69 73 69 6f 6e 20 31 2e 35 30 0a 64 69 66 66  vision 1.50.diff
55f0: 20 2d 75 20 2d 72 31 2e 35 30 20 6e 61 6d 65 73   -u -r1.50 names
5600: 70 61 63 65 2e 74 65 73 74 0a 2d 2d 2d 20 74 65  pace.test.--- te
5610: 73 74 73 2f 6e 61 6d 65 73 70 61 63 65 2e 74 65  sts/namespace.te
5620: 73 74 09 39 20 4a 61 6e 20 32 30 30 36 20 31 38  st.9 Jan 2006 18
5630: 3a 33 35 3a 30 31 20 2d 30 30 30 30 09 31 2e 35  :35:01 -0000.1.5
5640: 30 0a 2b 2b 2b 20 74 65 73 74 73 2f 6e 61 6d 65  0.+++ tests/name
5650: 73 70 61 63 65 2e 74 65 73 74 09 31 38 20 4a 61  space.test.18 Ja
5660: 6e 20 32 30 30 36 20 31 36 3a 35 37 3a 33 31 20  n 2006 16:57:31 
5670: 2d 30 30 30 30 0a 40 40 20 2d 38 37 33 2c 37 20  -0000.@@ -873,7 
5680: 2b 38 37 33 2c 37 20 40 40 0a 20 7d 20 7b 31 20  +873,7 @@. } {1 
5690: 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73  {wrong # args: s
56a0: 68 6f 75 6c 64 20 62 65 20 22 6e 61 6d 65 73 70  hould be "namesp
56b0: 61 63 65 20 73 75 62 63 6f 6d 6d 61 6e 64 20 3f  ace subcommand ?
56c0: 61 72 67 20 2e 2e 2e 3f 22 7d 7d 0a 20 74 65 73  arg ...?"}}. tes
56d0: 74 20 6e 61 6d 65 73 70 61 63 65 2d 32 30 2e 32  t namespace-20.2
56e0: 20 7b 54 63 6c 5f 4e 61 6d 65 73 70 61 63 65 4f   {Tcl_NamespaceO
56f0: 62 6a 43 6d 64 2c 20 62 61 64 20 73 75 62 63 6f  bjCmd, bad subco
5700: 6d 6d 61 6e 64 7d 20 7b 0a 20 20 20 20 20 6c 69  mmand} {.     li
5710: 73 74 20 5b 63 61 74 63 68 20 7b 6e 61 6d 65 73  st [catch {names
5720: 70 61 63 65 20 77 6f 6d 62 61 74 20 7b 7d 7d 20  pace wombat {}} 
5730: 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20  msg] $msg.-} {1 
5740: 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 77 6f 6d  {bad option "wom
5750: 62 61 74 22 3a 20 6d 75 73 74 20 62 65 20 63 68  bat": must be ch
5760: 69 6c 64 72 65 6e 2c 20 63 6f 64 65 2c 20 63 75  ildren, code, cu
5770: 72 72 65 6e 74 2c 20 64 65 6c 65 74 65 2c 20 65  rrent, delete, e
5780: 6e 73 65 6d 62 6c 65 2c 20 65 76 61 6c 2c 20 65  nsemble, eval, e
5790: 78 69 73 74 73 2c 20 65 78 70 6f 72 74 2c 20 66  xists, export, f
57a0: 6f 72 67 65 74 2c 20 69 6d 70 6f 72 74 2c 20 69  orget, import, i
57b0: 6e 73 63 6f 70 65 2c 20 6f 72 69 67 69 6e 2c 20  nscope, origin, 
57c0: 70 61 72 65 6e 74 2c 20 70 61 74 68 2c 20 71 75  parent, path, qu
57d0: 61 6c 69 66 69 65 72 73 2c 20 74 61 69 6c 2c 20  alifiers, tail, 
57e0: 6f 72 20 77 68 69 63 68 7d 7d 0a 2b 7d 20 7b 31  or which}}.+} {1
57f0: 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 77 6f   {bad option "wo
5800: 6d 62 61 74 22 3a 20 6d 75 73 74 20 62 65 20 63  mbat": must be c
5810: 68 69 6c 64 72 65 6e 2c 20 63 6f 64 65 2c 20 63  hildren, code, c
5820: 75 72 72 65 6e 74 2c 20 64 65 6c 65 74 65 2c 20  urrent, delete, 
5830: 65 6e 73 65 6d 62 6c 65 2c 20 65 76 61 6c 2c 20  ensemble, eval, 
5840: 65 78 69 73 74 73 2c 20 65 78 70 6f 72 74 2c 20  exists, export, 
5850: 66 6f 72 67 65 74 2c 20 69 6d 70 6f 72 74 2c 20  forget, import, 
5860: 69 6e 73 63 6f 70 65 2c 20 6f 72 69 67 69 6e 2c  inscope, origin,
5870: 20 70 61 72 65 6e 74 2c 20 70 61 74 68 2c 20 71   parent, path, q
5880: 75 61 6c 69 66 69 65 72 73 2c 20 74 61 69 6c 2c  ualifiers, tail,
5890: 20 75 6e 6b 6e 6f 77 6e 2c 20 6f 72 20 77 68 69   unknown, or whi
58a0: 63 68 7d 7d 0a 20 74 65 73 74 20 6e 61 6d 65 73  ch}}. test names
58b0: 70 61 63 65 2d 32 30 2e 33 20 7b 54 63 6c 5f 4e  pace-20.3 {Tcl_N
58c0: 61 6d 65 73 70 61 63 65 4f 62 6a 43 6d 64 2c 20  amespaceObjCmd, 
58d0: 61 62 62 72 65 76 69 61 74 69 6f 6e 73 20 61 72  abbreviations ar
58e0: 65 20 6f 6b 61 79 7d 20 7b 0a 20 20 20 20 20 6e  e okay} {.     n
58f0: 61 6d 65 73 70 61 63 65 20 63 68 20 3a 3a 20 74  amespace ch :: t
5900: 65 73 74 5f 6e 73 5f 2a 0a 20 7d 20 7b 7d 0a 40  est_ns_*. } {}.@
5910: 40 20 2d 39 38 30 2c 37 20 2b 39 38 30 2c 37 20  @ -980,7 +980,7 
5920: 40 40 0a 20 7d 20 7b 31 20 7b 77 72 6f 6e 67 20  @@. } {1 {wrong 
5930: 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62  # args: should b
5940: 65 20 22 6e 61 6d 65 73 70 61 63 65 20 65 76 61  e "namespace eva
5950: 6c 20 6e 61 6d 65 20 61 72 67 20 3f 61 72 67 2e  l name arg ?arg.
5960: 2e 2e 3f 22 7d 7d 0a 20 74 65 73 74 20 6e 61 6d  ..?"}}. test nam
5970: 65 73 70 61 63 65 2d 32 35 2e 32 20 7b 4e 61 6d  espace-25.2 {Nam
5980: 65 73 70 61 63 65 45 76 61 6c 43 6d 64 2c 20 62  espaceEvalCmd, b
5990: 61 64 20 61 72 67 73 7d 20 7b 0a 20 20 20 20 20  ad args} {.     
59a0: 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 6e 61 6d  list [catch {nam
59b0: 65 73 70 61 63 65 20 74 65 73 74 5f 6e 73 5f 31  espace test_ns_1
59c0: 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b  } msg] $msg.-} {
59d0: 31 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 74  1 {bad option "t
59e0: 65 73 74 5f 6e 73 5f 31 22 3a 20 6d 75 73 74 20  est_ns_1": must 
59f0: 62 65 20 63 68 69 6c 64 72 65 6e 2c 20 63 6f 64  be children, cod
5a00: 65 2c 20 63 75 72 72 65 6e 74 2c 20 64 65 6c 65  e, current, dele
5a10: 74 65 2c 20 65 6e 73 65 6d 62 6c 65 2c 20 65 76  te, ensemble, ev
5a20: 61 6c 2c 20 65 78 69 73 74 73 2c 20 65 78 70 6f  al, exists, expo
5a30: 72 74 2c 20 66 6f 72 67 65 74 2c 20 69 6d 70 6f  rt, forget, impo
5a40: 72 74 2c 20 69 6e 73 63 6f 70 65 2c 20 6f 72 69  rt, inscope, ori
5a50: 67 69 6e 2c 20 70 61 72 65 6e 74 2c 20 70 61 74  gin, parent, pat
5a60: 68 2c 20 71 75 61 6c 69 66 69 65 72 73 2c 20 74  h, qualifiers, t
5a70: 61 69 6c 2c 20 6f 72 20 77 68 69 63 68 7d 7d 0a  ail, or which}}.
5a80: 2b 7d 20 7b 31 20 7b 62 61 64 20 6f 70 74 69 6f  +} {1 {bad optio
5a90: 6e 20 22 74 65 73 74 5f 6e 73 5f 31 22 3a 20 6d  n "test_ns_1": m
5aa0: 75 73 74 20 62 65 20 63 68 69 6c 64 72 65 6e 2c  ust be children,
5ab0: 20 63 6f 64 65 2c 20 63 75 72 72 65 6e 74 2c 20   code, current, 
5ac0: 64 65 6c 65 74 65 2c 20 65 6e 73 65 6d 62 6c 65  delete, ensemble
5ad0: 2c 20 65 76 61 6c 2c 20 65 78 69 73 74 73 2c 20  , eval, exists, 
5ae0: 65 78 70 6f 72 74 2c 20 66 6f 72 67 65 74 2c 20  export, forget, 
5af0: 69 6d 70 6f 72 74 2c 20 69 6e 73 63 6f 70 65 2c  import, inscope,
5b00: 20 6f 72 69 67 69 6e 2c 20 70 61 72 65 6e 74 2c   origin, parent,
5b10: 20 70 61 74 68 2c 20 71 75 61 6c 69 66 69 65 72   path, qualifier
5b20: 73 2c 20 74 61 69 6c 2c 20 75 6e 6b 6e 6f 77 6e  s, tail, unknown
5b30: 2c 20 6f 72 20 77 68 69 63 68 7d 7d 0a 20 63 61  , or which}}. ca
5b40: 74 63 68 20 7b 75 6e 73 65 74 20 76 7d 0a 20 74  tch {unset v}. t
5b50: 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d 32 35  est namespace-25
5b60: 2e 33 20 7b 4e 61 6d 65 73 70 61 63 65 45 76 61  .3 {NamespaceEva
5b70: 6c 43 6d 64 2c 20 6e 65 77 20 6e 61 6d 65 73 70  lCmd, new namesp
5b80: 61 63 65 7d 20 7b 0a 20 20 20 20 20 73 65 74 20  ace} {.     set 
5b90: 76 20 31 32 33 0a 40 40 20 2d 32 33 39 35 2c 36  v 123.@@ -2395,6
5ba0: 20 2b 32 33 39 35 2c 38 36 20 40 40 0a 20 20 20   +2395,86 @@.   
5bb0: 20 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65    namespace dele
5bc0: 74 65 20 3a 3a 74 65 73 74 5f 6e 73 5f 32 0a 20  te ::test_ns_2. 
5bd0: 7d 0a 20 0a 2b 23 20 54 49 50 20 31 38 31 20 2d  }. .+# TIP 181 -
5be0: 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f   namespace unkno
5bf0: 77 6e 20 74 65 73 74 73 0a 2b 74 65 73 74 20 6e  wn tests.+test n
5c00: 61 6d 65 73 70 61 63 65 2d 35 32 2e 31 20 7b 75  amespace-52.1 {u
5c10: 6e 6b 6e 6f 77 6e 3a 20 64 65 66 61 75 6c 74 20  nknown: default 
5c20: 68 61 6e 64 6c 65 72 20 3a 3a 75 6e 6b 6e 6f 77  handler ::unknow
5c30: 6e 7d 20 7b 0a 2b 20 20 20 20 73 65 74 20 72 65  n} {.+    set re
5c40: 73 75 6c 74 20 5b 6c 69 73 74 20 5b 6e 61 6d 65  sult [list [name
5c50: 73 70 61 63 65 20 65 76 61 6c 20 66 6f 6f 62 61  space eval fooba
5c60: 72 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 75 6e  r { namespace un
5c70: 6b 6e 6f 77 6e 20 7d 5d 5d 0a 2b 20 20 20 20 6c  known }]].+    l
5c80: 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 6e  append result [n
5c90: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a  amespace eval ::
5ca0: 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b   { namespace unk
5cb0: 6e 6f 77 6e 20 7d 5d 0a 2b 20 20 20 20 6e 61 6d  nown }].+    nam
5cc0: 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 66 6f  espace delete fo
5cd0: 6f 62 61 72 0a 2b 20 20 20 20 73 65 74 20 72 65  obar.+    set re
5ce0: 73 75 6c 74 0a 2b 7d 20 7b 7b 7d 20 3a 3a 75 6e  sult.+} {{} ::un
5cf0: 6b 6e 6f 77 6e 7d 0a 2b 74 65 73 74 20 6e 61 6d  known}.+test nam
5d00: 65 73 70 61 63 65 2d 35 32 2e 32 20 7b 75 6e 6b  espace-52.2 {unk
5d10: 6e 6f 77 6e 3a 20 64 65 66 61 75 6c 74 20 72 65  nown: default re
5d20: 73 6f 6c 75 74 69 6f 6e 20 67 6c 6f 62 61 6c 7d  solution global}
5d30: 20 7b 0a 2b 20 20 20 20 70 72 6f 63 20 3a 3a 66   {.+    proc ::f
5d40: 6f 6f 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 22  oo {} { return "
5d50: 47 4c 4f 42 41 4c 22 20 7d 0a 2b 20 20 20 20 6e  GLOBAL" }.+    n
5d60: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a  amespace eval ::
5d70: 62 61 72 20 7b 20 70 72 6f 63 20 66 6f 6f 20 7b  bar { proc foo {
5d80: 7d 20 7b 20 72 65 74 75 72 6e 20 22 4e 41 4d 45  } { return "NAME
5d90: 53 50 41 43 45 22 20 7d 20 7d 0a 2b 20 20 20 20  SPACE" } }.+    
5da0: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a  namespace eval :
5db0: 3a 62 61 72 3a 3a 6a 69 6d 20 7b 20 70 72 6f 63  :bar::jim { proc
5dc0: 20 74 65 73 74 20 7b 7d 20 7b 20 66 6f 6f 20 7d   test {} { foo }
5dd0: 20 7d 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75   }.+    set resu
5de0: 6c 74 20 5b 3a 3a 62 61 72 3a 3a 6a 69 6d 3a 3a  lt [::bar::jim::
5df0: 74 65 73 74 5d 0a 2b 20 20 20 20 6e 61 6d 65 73  test].+    names
5e00: 70 61 63 65 20 64 65 6c 65 74 65 20 3a 3a 62 61  pace delete ::ba
5e10: 72 0a 2b 20 20 20 20 72 65 6e 61 6d 65 20 3a 3a  r.+    rename ::
5e20: 66 6f 6f 20 7b 7d 0a 2b 20 20 20 20 73 65 74 20  foo {}.+    set 
5e30: 72 65 73 75 6c 74 0a 2b 7d 20 7b 47 4c 4f 42 41  result.+} {GLOBA
5e40: 4c 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 61  L}.+test namespa
5e50: 63 65 2d 35 32 2e 33 20 7b 75 6e 6b 6e 6f 77 6e  ce-52.3 {unknown
5e60: 3a 20 64 65 66 61 75 6c 74 20 72 65 73 6f 6c 75  : default resolu
5e70: 74 69 6f 6e 20 6c 6f 63 61 6c 7d 20 7b 0a 2b 20  tion local} {.+ 
5e80: 20 20 20 70 72 6f 63 20 3a 3a 66 6f 6f 20 7b 7d     proc ::foo {}
5e90: 20 7b 20 72 65 74 75 72 6e 20 22 47 4c 4f 42 41   { return "GLOBA
5ea0: 4c 22 20 7d 0a 2b 20 20 20 20 6e 61 6d 65 73 70  L" }.+    namesp
5eb0: 61 63 65 20 65 76 61 6c 20 3a 3a 62 61 72 20 7b  ace eval ::bar {
5ec0: 0a 2b 09 70 72 6f 63 20 66 6f 6f 20 7b 7d 20 7b  .+.proc foo {} {
5ed0: 20 72 65 74 75 72 6e 20 22 4e 41 4d 45 53 50 41   return "NAMESPA
5ee0: 43 45 22 20 7d 0a 2b 09 70 72 6f 63 20 74 65 73  CE" }.+.proc tes
5ef0: 74 20 7b 7d 20 7b 20 66 6f 6f 20 7d 0a 2b 20 20  t {} { foo }.+  
5f00: 20 20 7d 0a 2b 20 20 20 20 73 65 74 20 72 65 73    }.+    set res
5f10: 75 6c 74 20 5b 3a 3a 62 61 72 3a 3a 74 65 73 74  ult [::bar::test
5f20: 5d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65  ].+    namespace
5f30: 20 64 65 6c 65 74 65 20 3a 3a 62 61 72 0a 2b 20   delete ::bar.+ 
5f40: 20 20 20 72 65 6e 61 6d 65 20 3a 3a 66 6f 6f 20     rename ::foo 
5f50: 7b 7d 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75  {}.+    set resu
5f60: 6c 74 0a 2b 7d 20 7b 4e 41 4d 45 53 50 41 43 45  lt.+} {NAMESPACE
5f70: 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 63  }.+test namespac
5f80: 65 2d 35 32 2e 34 20 7b 75 6e 6b 6e 6f 77 6e 3a  e-52.4 {unknown:
5f90: 20 73 65 74 20 68 61 6e 64 6c 65 72 7d 20 7b 0a   set handler} {.
5fa0: 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65  +    namespace e
5fb0: 76 61 6c 20 66 6f 6f 20 7b 0a 2b 09 6e 61 6d 65  val foo {.+.name
5fc0: 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 20 5b 6c  space unknown [l
5fd0: 69 73 74 20 64 69 73 70 61 74 63 68 5d 0a 2b 09  ist dispatch].+.
5fe0: 70 72 6f 63 20 64 69 73 70 61 74 63 68 20 7b 61  proc dispatch {a
5ff0: 72 67 73 7d 20 7b 20 72 65 74 75 72 6e 20 24 61  rgs} { return $a
6000: 72 67 73 20 7d 0a 2b 09 70 72 6f 63 20 74 65 73  rgs }.+.proc tes
6010: 74 20 7b 7d 20 7b 0a 2b 09 20 20 20 20 55 6e 6b  t {} {.+.    Unk
6020: 6e 6f 77 6e 43 6d 64 20 61 20 62 20 63 0a 2b 09  nownCmd a b c.+.
6030: 7d 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 73 65  }.+    }.+    se
6040: 74 20 72 65 73 75 6c 74 20 5b 66 6f 6f 3a 3a 74  t result [foo::t
6050: 65 73 74 5d 0a 2b 20 20 20 20 6e 61 6d 65 73 70  est].+    namesp
6060: 61 63 65 20 64 65 6c 65 74 65 20 66 6f 6f 0a 2b  ace delete foo.+
6070: 20 20 20 20 73 65 74 20 72 65 73 75 6c 74 0a 2b      set result.+
6080: 7d 20 7b 55 6e 6b 6e 6f 77 6e 43 6d 64 20 61 20  } {UnknownCmd a 
6090: 62 20 63 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73  b c}.+test names
60a0: 70 61 63 65 2d 35 32 2e 35 20 7b 75 6e 6b 6e 6f  pace-52.5 {unkno
60b0: 77 6e 3a 20 73 65 61 72 63 68 20 70 61 74 68 20  wn: search path 
60c0: 62 65 66 6f 72 65 20 75 6e 6b 6e 6f 77 6e 20 69  before unknown i
60d0: 73 20 75 6e 61 6c 74 65 72 65 64 7d 20 7b 0a 2b  s unaltered} {.+
60e0: 20 20 20 20 70 72 6f 63 20 3a 3a 74 65 73 74 32      proc ::test2
60f0: 20 7b 61 72 67 73 7d 20 7b 20 72 65 74 75 72 6e   {args} { return
6100: 20 22 54 45 53 54 32 3a 20 24 61 72 67 73 22 20   "TEST2: $args" 
6110: 7d 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65  }.+    namespace
6120: 20 65 76 61 6c 20 66 6f 6f 20 7b 0a 2b 09 6e 61   eval foo {.+.na
6130: 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 20  mespace unknown 
6140: 5b 6c 69 73 74 20 64 69 73 70 61 74 63 68 5d 0a  [list dispatch].
6150: 2b 09 70 72 6f 63 20 64 69 73 70 61 74 63 68 20  +.proc dispatch 
6160: 7b 61 72 67 73 7d 20 7b 20 72 65 74 75 72 6e 20  {args} { return 
6170: 22 55 4e 4b 4e 4f 57 4e 3a 20 24 61 72 67 73 22  "UNKNOWN: $args"
6180: 20 7d 0a 2b 09 70 72 6f 63 20 74 65 73 74 31 20   }.+.proc test1 
6190: 7b 61 72 67 73 7d 20 7b 20 72 65 74 75 72 6e 20  {args} { return 
61a0: 22 54 45 53 54 31 3a 20 24 61 72 67 73 22 20 7d  "TEST1: $args" }
61b0: 0a 2b 09 70 72 6f 63 20 74 65 73 74 20 7b 7d 20  .+.proc test {} 
61c0: 7b 0a 2b 09 20 20 20 20 73 65 74 20 72 65 73 75  {.+.    set resu
61d0: 6c 74 20 5b 6c 69 73 74 20 5b 74 65 73 74 31 20  lt [list [test1 
61e0: 61 20 62 20 63 5d 5d 0a 2b 09 20 20 20 20 6c 61  a b c]].+.    la
61f0: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 74 65  ppend result [te
6200: 73 74 32 20 61 20 62 20 63 5d 0a 2b 09 20 20 20  st2 a b c].+.   
6210: 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20   lappend result 
6220: 5b 74 65 73 74 33 20 61 20 62 20 63 5d 0a 2b 09  [test3 a b c].+.
6230: 20 20 20 20 72 65 74 75 72 6e 20 24 72 65 73 75      return $resu
6240: 6c 74 0a 2b 09 7d 0a 2b 20 20 20 20 7d 0a 2b 20  lt.+.}.+    }.+ 
6250: 20 20 20 73 65 74 20 72 65 73 75 6c 74 20 5b 66     set result [f
6260: 6f 6f 3a 3a 74 65 73 74 5d 0a 2b 20 20 20 20 6e  oo::test].+    n
6270: 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20  amespace delete 
6280: 66 6f 6f 0a 2b 20 20 20 20 72 65 6e 61 6d 65 20  foo.+    rename 
6290: 3a 3a 74 65 73 74 32 20 7b 7d 0a 2b 20 20 20 20  ::test2 {}.+    
62a0: 73 65 74 20 72 65 73 75 6c 74 0a 2b 7d 20 7b 7b  set result.+} {{
62b0: 54 45 53 54 31 3a 20 61 20 62 20 63 7d 20 7b 54  TEST1: a b c} {T
62c0: 45 53 54 32 3a 20 61 20 62 20 63 7d 20 7b 55 4e  EST2: a b c} {UN
62d0: 4b 4e 4f 57 4e 3a 20 74 65 73 74 33 20 61 20 62  KNOWN: test3 a b
62e0: 20 63 7d 7d 0a 2b 74 65 73 74 20 6e 61 6d 65 73   c}}.+test names
62f0: 70 61 63 65 2d 35 32 2e 36 20 7b 75 6e 6b 6e 6f  pace-52.6 {unkno
6300: 77 6e 3a 20 64 65 6c 65 74 69 6e 67 20 68 61 6e  wn: deleting han
6310: 64 6c 65 72 20 72 65 73 74 6f 72 65 73 20 64 65  dler restores de
6320: 66 61 75 6c 74 7d 20 7b 0a 2b 20 20 20 20 72 65  fault} {.+    re
6330: 6e 61 6d 65 20 3a 3a 75 6e 6b 6e 6f 77 6e 20 3a  name ::unknown :
6340: 3a 5f 75 6e 6b 6e 6f 77 6e 5f 6f 72 69 67 0a 2b  :_unknown_orig.+
6350: 20 20 20 20 70 72 6f 63 20 3a 3a 75 6e 6b 6e 6f      proc ::unkno
6360: 77 6e 20 7b 61 72 67 73 7d 20 7b 20 72 65 74 75  wn {args} { retu
6370: 72 6e 20 22 44 45 46 41 55 4c 54 3a 20 24 61 72  rn "DEFAULT: $ar
6380: 67 73 22 20 7d 0a 2b 20 20 20 20 6e 61 6d 65 73  gs" }.+    names
6390: 70 61 63 65 20 65 76 61 6c 20 66 6f 6f 20 7b 0a  pace eval foo {.
63a0: 2b 09 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e  +.namespace unkn
63b0: 6f 77 6e 20 64 75 6d 6d 79 0a 2b 09 6e 61 6d 65  own dummy.+.name
63c0: 73 70 61 63 65 20 75 6e 6b 6e 6f 77 6e 20 7b 7d  space unknown {}
63d0: 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 73 65 74  .+    }.+    set
63e0: 20 72 65 73 75 6c 74 20 5b 6e 61 6d 65 73 70 61   result [namespa
63f0: 63 65 20 65 76 61 6c 20 66 6f 6f 20 7b 20 64 75  ce eval foo { du
6400: 6d 6d 79 20 61 20 62 20 63 20 7d 5d 0a 2b 20 20  mmy a b c }].+  
6410: 20 20 72 65 6e 61 6d 65 20 3a 3a 75 6e 6b 6e 6f    rename ::unkno
6420: 77 6e 20 7b 7d 0a 2b 20 20 20 20 72 65 6e 61 6d  wn {}.+    renam
6430: 65 20 3a 3a 5f 75 6e 6b 6e 6f 77 6e 5f 6f 72 69  e ::_unknown_ori
6440: 67 20 3a 3a 75 6e 6b 6e 6f 77 6e 0a 2b 20 20 20  g ::unknown.+   
6450: 20 6e 61 6d 65 73 70 61 63 65 20 64 65 6c 65 74   namespace delet
6460: 65 20 66 6f 6f 0a 2b 20 20 20 20 73 65 74 20 72  e foo.+    set r
6470: 65 73 75 6c 74 0a 2b 7d 20 7b 44 45 46 41 55 4c  esult.+} {DEFAUL
6480: 54 3a 20 64 75 6d 6d 79 20 61 20 62 20 63 7d 0a  T: dummy a b c}.
6490: 2b 74 65 73 74 20 6e 61 6d 65 73 70 61 63 65 2d  +test namespace-
64a0: 35 32 2e 37 20 7b 75 6e 6b 6e 6f 77 6e 3a 20 73  52.7 {unknown: s
64b0: 65 74 74 69 6e 67 20 67 6c 6f 62 61 6c 20 75 6e  etting global un
64c0: 6b 6e 6f 77 6e 20 68 61 6e 64 6c 65 72 7d 20 7b  known handler} {
64d0: 0a 2b 20 20 20 20 70 72 6f 63 20 3a 3a 6d 79 75  .+    proc ::myu
64e0: 6e 6b 6e 6f 77 6e 20 7b 61 72 67 73 7d 20 7b 20  nknown {args} { 
64f0: 72 65 74 75 72 6e 20 22 4d 59 55 4e 4b 4e 4f 57  return "MYUNKNOW
6500: 4e 3a 20 24 61 72 67 73 22 20 7d 0a 2b 20 20 20  N: $args" }.+   
6510: 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20   namespace eval 
6520: 3a 3a 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 75  :: { namespace u
6530: 6e 6b 6e 6f 77 6e 20 3a 3a 6d 79 75 6e 6b 6e 6f  nknown ::myunkno
6540: 77 6e 20 7d 0a 2b 20 20 20 20 73 65 74 20 72 65  wn }.+    set re
6550: 73 75 6c 74 20 5b 6e 61 6d 65 73 70 61 63 65 20  sult [namespace 
6560: 65 76 61 6c 20 66 6f 6f 20 7b 20 64 75 6d 6d 79  eval foo { dummy
6570: 20 61 20 62 20 63 20 7d 5d 0a 2b 20 20 20 20 6e   a b c }].+    n
6580: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a  amespace eval ::
6590: 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b   { namespace unk
65a0: 6e 6f 77 6e 20 7b 7d 20 7d 0a 2b 20 20 20 20 72  nown {} }.+    r
65b0: 65 6e 61 6d 65 20 3a 3a 6d 79 75 6e 6b 6e 6f 77  ename ::myunknow
65c0: 6e 20 7b 7d 0a 2b 20 20 20 20 6e 61 6d 65 73 70  n {}.+    namesp
65d0: 61 63 65 20 64 65 6c 65 74 65 20 66 6f 6f 0a 2b  ace delete foo.+
65e0: 20 20 20 20 73 65 74 20 72 65 73 75 6c 74 0a 2b      set result.+
65f0: 7d 20 7b 4d 59 55 4e 4b 4e 4f 57 4e 3a 20 64 75  } {MYUNKNOWN: du
6600: 6d 6d 79 20 61 20 62 20 63 7d 0a 2b 20 20 20 20  mmy a b c}.+    
6610: 0a 20 23 20 63 6c 65 61 6e 75 70 0a 20 63 61 74  . # cleanup. cat
6620: 63 68 20 7b 72 65 6e 61 6d 65 20 63 6d 64 31 20  ch {rename cmd1 
6630: 7b 7d 7d 0a 20 63 61 74 63 68 20 7b 75 6e 73 65  {}}. catch {unse
6640: 74 20 6c 7d 0a                                   t l}.