Tcl Source Code

Hex Artifact Content
Login

Artifact f944965d920238e72f0671b8cf7232dd6b318883:

Attachment "tips.patch" to ticket [1060579fff] added by dgp 2004-11-05 05:37:23.
0000: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74  Index: generic/t
0010: 63 6c 2e 64 65 63 6c 73 0a 3d 3d 3d 3d 3d 3d 3d  cl.decls.=======
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 3d 3d 0a 52 43 53  ============.RCS
0060: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f   file: /cvsroot/
0070: 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f  tcl/tcl/generic/
0080: 74 63 6c 2e 64 65 63 6c 73 2c 76 0a 72 65 74 72  tcl.decls,v.retr
0090: 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20  ieving revision 
00a0: 31 2e 31 30 34 0a 64 69 66 66 20 2d 75 20 2d 72  1.104.diff -u -r
00b0: 31 2e 31 30 34 20 74 63 6c 2e 64 65 63 6c 73 0a  1.104 tcl.decls.
00c0: 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 2e  --- generic/tcl.
00d0: 64 65 63 6c 73 09 31 33 20 4d 61 79 20 32 30 30  decls.13 May 200
00e0: 34 20 31 32 3a 35 39 3a 32 30 20 2d 30 30 30 30  4 12:59:20 -0000
00f0: 09 31 2e 31 30 34 0a 2b 2b 2b 20 67 65 6e 65 72  .1.104.+++ gener
0100: 69 63 2f 74 63 6c 2e 64 65 63 6c 73 09 34 20 4e  ic/tcl.decls.4 N
0110: 6f 76 20 32 30 30 34 20 32 32 3a 33 31 3a 35 36  ov 2004 22:31:56
0120: 20 2d 30 30 30 30 0a 40 40 20 2d 31 39 30 39 2c   -0000.@@ -1909,
0130: 36 20 2b 31 39 30 39 2c 32 33 20 40 40 0a 20 64  6 +1909,23 @@. d
0140: 65 63 6c 61 72 65 20 35 33 34 20 67 65 6e 65 72  eclare 534 gener
0150: 69 63 20 7b 0a 20 20 20 20 20 69 6e 74 20 54 63  ic {.     int Tc
0160: 6c 5f 4c 69 6d 69 74 47 65 74 47 72 61 6e 75 6c  l_LimitGetGranul
0170: 61 72 69 74 79 28 54 63 6c 5f 49 6e 74 65 72 70  arity(Tcl_Interp
0180: 20 2a 69 6e 74 65 72 70 2c 20 69 6e 74 20 74 79   *interp, int ty
0190: 70 65 29 0a 20 7d 0a 2b 23 20 54 49 50 23 32 32  pe). }.+# TIP#22
01a0: 36 20 41 50 49 0a 2b 64 65 63 6c 61 72 65 20 35  6 API.+declare 5
01b0: 33 35 20 67 65 6e 65 72 69 63 20 7b 0a 2b 20 20  35 generic {.+  
01c0: 20 20 54 63 6c 5f 49 6e 74 65 72 70 53 74 61 74    Tcl_InterpStat
01d0: 65 20 54 63 6c 5f 53 61 76 65 49 6e 74 65 72 70  e Tcl_SaveInterp
01e0: 53 74 61 74 65 28 54 63 6c 5f 49 6e 74 65 72 70  State(Tcl_Interp
01f0: 20 2a 69 6e 74 65 72 70 2c 20 69 6e 74 20 73 74   *interp, int st
0200: 61 74 75 73 29 0a 2b 7d 0a 2b 64 65 63 6c 61 72  atus).+}.+declar
0210: 65 20 35 33 36 20 67 65 6e 65 72 69 63 20 7b 0a  e 536 generic {.
0220: 2b 20 20 20 20 69 6e 74 20 54 63 6c 5f 52 65 73  +    int Tcl_Res
0230: 74 6f 72 65 49 6e 74 65 72 70 53 74 61 74 65 28  toreInterpState(
0240: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65  Tcl_Interp *inte
0250: 72 70 2c 20 54 63 6c 5f 49 6e 74 65 72 70 53 74  rp, Tcl_InterpSt
0260: 61 74 65 20 73 74 61 74 65 29 0a 2b 7d 0a 2b 64  ate state).+}.+d
0270: 65 63 6c 61 72 65 20 35 33 37 20 67 65 6e 65 72  eclare 537 gener
0280: 69 63 20 7b 0a 2b 20 20 20 20 76 6f 69 64 20 54  ic {.+    void T
0290: 63 6c 5f 44 69 73 63 61 72 64 49 6e 74 65 72 70  cl_DiscardInterp
02a0: 53 74 61 74 65 28 54 63 6c 5f 49 6e 74 65 72 70  State(Tcl_Interp
02b0: 53 74 61 74 65 20 73 74 61 74 65 29 0a 2b 7d 0a  State state).+}.
02c0: 2b 23 20 54 49 50 23 32 32 37 20 41 50 49 0a 2b  +# TIP#227 API.+
02d0: 64 65 63 6c 61 72 65 20 35 33 38 20 67 65 6e 65  declare 538 gene
02e0: 72 69 63 20 7b 0a 2b 20 20 20 20 69 6e 74 20 54  ric {.+    int T
02f0: 63 6c 5f 53 65 74 52 65 74 75 72 6e 4f 70 74 69  cl_SetReturnOpti
0300: 6f 6e 73 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a  ons(Tcl_Interp *
0310: 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4f 62 6a 20  interp, Tcl_Obj 
0320: 2a 6f 70 74 69 6f 6e 73 29 0a 2b 7d 0a 2b 64 65  *options).+}.+de
0330: 63 6c 61 72 65 20 35 33 39 20 67 65 6e 65 72 69  clare 539 generi
0340: 63 20 7b 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a  c {.+    Tcl_Obj
0350: 20 2a 54 63 6c 5f 47 65 74 52 65 74 75 72 6e 4f   *Tcl_GetReturnO
0360: 70 74 69 6f 6e 73 28 54 63 6c 5f 49 6e 74 65 72  ptions(Tcl_Inter
0370: 70 20 2a 69 6e 74 65 72 70 2c 20 69 6e 74 20 72  p *interp, int r
0380: 65 73 75 6c 74 29 0a 2b 7d 0a 20 0a 20 23 23 23  esult).+}. . ###
0390: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
03a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
03b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
03c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
03d0: 23 23 23 23 23 23 23 23 23 23 23 0a 20 0a 49 6e  ###########. .In
03e0: 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c  dex: generic/tcl
03f0: 2e 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  .h.=============
0400: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0410: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0420: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0430: 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a  ======.RCS file:
0440: 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63   /cvsroot/tcl/tc
0450: 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 2e 68 2c  l/generic/tcl.h,
0460: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76  v.retrieving rev
0470: 69 73 69 6f 6e 20 31 2e 31 38 37 0a 64 69 66 66  ision 1.187.diff
0480: 20 2d 75 20 2d 72 31 2e 31 38 37 20 74 63 6c 2e   -u -r1.187 tcl.
0490: 68 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63  h.--- generic/tc
04a0: 6c 2e 68 09 33 20 4e 6f 76 20 32 30 30 34 20 31  l.h.3 Nov 2004 1
04b0: 39 3a 31 33 3a 33 33 20 2d 30 30 30 30 09 31 2e  9:13:33 -0000.1.
04c0: 31 38 37 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f  187.+++ generic/
04d0: 74 63 6c 2e 68 09 34 20 4e 6f 76 20 32 30 30 34  tcl.h.4 Nov 2004
04e0: 20 32 32 3a 33 31 3a 35 36 20 2d 30 30 30 30 0a   22:31:56 -0000.
04f0: 40 40 20 2d 34 35 37 2c 31 31 20 2b 34 35 37 2c  @@ -457,11 +457,
0500: 31 35 20 40 40 0a 20 0a 20 74 79 70 65 64 65 66  15 @@. . typedef
0510: 20 73 74 72 75 63 74 20 54 63 6c 5f 41 73 79 6e   struct Tcl_Asyn
0520: 63 48 61 6e 64 6c 65 72 5f 20 2a 54 63 6c 5f 41  cHandler_ *Tcl_A
0530: 73 79 6e 63 48 61 6e 64 6c 65 72 3b 0a 20 74 79  syncHandler;. ty
0540: 70 65 64 65 66 20 73 74 72 75 63 74 20 54 63 6c  pedef struct Tcl
0550: 5f 43 68 61 6e 6e 65 6c 5f 20 2a 54 63 6c 5f 43  _Channel_ *Tcl_C
0560: 68 61 6e 6e 65 6c 3b 0a 2b 74 79 70 65 64 65 66  hannel;.+typedef
0570: 20 73 74 72 75 63 74 20 54 63 6c 5f 43 68 61 6e   struct Tcl_Chan
0580: 6e 65 6c 54 79 70 65 56 65 72 73 69 6f 6e 5f 20  nelTypeVersion_ 
0590: 2a 54 63 6c 5f 43 68 61 6e 6e 65 6c 54 79 70 65  *Tcl_ChannelType
05a0: 56 65 72 73 69 6f 6e 3b 0a 20 74 79 70 65 64 65  Version;. typede
05b0: 66 20 73 74 72 75 63 74 20 54 63 6c 5f 43 6f 6d  f struct Tcl_Com
05c0: 6d 61 6e 64 5f 20 2a 54 63 6c 5f 43 6f 6d 6d 61  mand_ *Tcl_Comma
05d0: 6e 64 3b 0a 20 74 79 70 65 64 65 66 20 73 74 72  nd;. typedef str
05e0: 75 63 74 20 54 63 6c 5f 43 6f 6e 64 69 74 69 6f  uct Tcl_Conditio
05f0: 6e 5f 20 2a 54 63 6c 5f 43 6f 6e 64 69 74 69 6f  n_ *Tcl_Conditio
0600: 6e 3b 0a 2b 74 79 70 65 64 65 66 20 73 74 72 75  n;.+typedef stru
0610: 63 74 20 54 63 6c 5f 44 69 63 74 5f 20 2a 54 63  ct Tcl_Dict_ *Tc
0620: 6c 5f 44 69 63 74 3b 0a 20 74 79 70 65 64 65 66  l_Dict;. typedef
0630: 20 73 74 72 75 63 74 20 54 63 6c 5f 45 6e 63 6f   struct Tcl_Enco
0640: 64 69 6e 67 53 74 61 74 65 5f 20 2a 54 63 6c 5f  dingState_ *Tcl_
0650: 45 6e 63 6f 64 69 6e 67 53 74 61 74 65 3b 0a 20  EncodingState;. 
0660: 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 54  typedef struct T
0670: 63 6c 5f 45 6e 63 6f 64 69 6e 67 5f 20 2a 54 63  cl_Encoding_ *Tc
0680: 6c 5f 45 6e 63 6f 64 69 6e 67 3b 0a 20 74 79 70  l_Encoding;. typ
0690: 65 64 65 66 20 73 74 72 75 63 74 20 54 63 6c 5f  edef struct Tcl_
06a0: 45 76 65 6e 74 20 54 63 6c 5f 45 76 65 6e 74 3b  Event Tcl_Event;
06b0: 0a 2b 74 79 70 65 64 65 66 20 73 74 72 75 63 74  .+typedef struct
06c0: 20 54 63 6c 5f 49 6e 74 65 72 70 53 74 61 74 65   Tcl_InterpState
06d0: 5f 20 2a 54 63 6c 5f 49 6e 74 65 72 70 53 74 61  _ *Tcl_InterpSta
06e0: 74 65 3b 0a 2b 74 79 70 65 64 65 66 20 73 74 72  te;.+typedef str
06f0: 75 63 74 20 54 63 6c 5f 4c 6f 61 64 48 61 6e 64  uct Tcl_LoadHand
0700: 6c 65 5f 20 2a 54 63 6c 5f 4c 6f 61 64 48 61 6e  le_ *Tcl_LoadHan
0710: 64 6c 65 3b 0a 20 74 79 70 65 64 65 66 20 73 74  dle;. typedef st
0720: 72 75 63 74 20 54 63 6c 5f 4d 75 74 65 78 5f 20  ruct Tcl_Mutex_ 
0730: 2a 54 63 6c 5f 4d 75 74 65 78 3b 0a 20 74 79 70  *Tcl_Mutex;. typ
0740: 65 64 65 66 20 73 74 72 75 63 74 20 54 63 6c 5f  edef struct Tcl_
0750: 50 69 64 5f 20 2a 54 63 6c 5f 50 69 64 3b 0a 20  Pid_ *Tcl_Pid;. 
0760: 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 54  typedef struct T
0770: 63 6c 5f 52 65 67 45 78 70 5f 20 2a 54 63 6c 5f  cl_RegExp_ *Tcl_
0780: 52 65 67 45 78 70 3b 0a 40 40 20 2d 34 37 30 2c  RegExp;.@@ -470,
0790: 39 20 2b 34 37 34 2c 36 20 40 40 0a 20 74 79 70  9 +474,6 @@. typ
07a0: 65 64 65 66 20 73 74 72 75 63 74 20 54 63 6c 5f  edef struct Tcl_
07b0: 54 69 6d 65 72 54 6f 6b 65 6e 5f 20 2a 54 63 6c  TimerToken_ *Tcl
07c0: 5f 54 69 6d 65 72 54 6f 6b 65 6e 3b 0a 20 74 79  _TimerToken;. ty
07d0: 70 65 64 65 66 20 73 74 72 75 63 74 20 54 63 6c  pedef struct Tcl
07e0: 5f 54 72 61 63 65 5f 20 2a 54 63 6c 5f 54 72 61  _Trace_ *Tcl_Tra
07f0: 63 65 3b 0a 20 74 79 70 65 64 65 66 20 73 74 72  ce;. typedef str
0800: 75 63 74 20 54 63 6c 5f 56 61 72 5f 20 2a 54 63  uct Tcl_Var_ *Tc
0810: 6c 5f 56 61 72 3b 0a 2d 74 79 70 65 64 65 66 20  l_Var;.-typedef 
0820: 73 74 72 75 63 74 20 54 63 6c 5f 43 68 61 6e 6e  struct Tcl_Chann
0830: 65 6c 54 79 70 65 56 65 72 73 69 6f 6e 5f 20 2a  elTypeVersion_ *
0840: 54 63 6c 5f 43 68 61 6e 6e 65 6c 54 79 70 65 56  Tcl_ChannelTypeV
0850: 65 72 73 69 6f 6e 3b 0a 2d 74 79 70 65 64 65 66  ersion;.-typedef
0860: 20 73 74 72 75 63 74 20 54 63 6c 5f 4c 6f 61 64   struct Tcl_Load
0870: 48 61 6e 64 6c 65 5f 20 2a 54 63 6c 5f 4c 6f 61  Handle_ *Tcl_Loa
0880: 64 48 61 6e 64 6c 65 3b 0a 2d 74 79 70 65 64 65  dHandle;.-typede
0890: 66 20 73 74 72 75 63 74 20 54 63 6c 5f 44 69 63  f struct Tcl_Dic
08a0: 74 5f 20 2a 54 63 6c 5f 44 69 63 74 3b 0a 20 0a  t_ *Tcl_Dict;. .
08b0: 20 2f 2a 0a 20 20 2a 20 44 65 66 69 6e 69 74 69   /*.  * Definiti
08c0: 6f 6e 20 6f 66 20 74 68 65 20 69 6e 74 65 72 66  on of the interf
08d0: 61 63 65 20 74 6f 20 70 72 6f 63 65 64 75 72 65  ace to procedure
08e0: 73 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 74  s implementing t
08f0: 68 72 65 61 64 73 2e 0a 49 6e 64 65 78 3a 20 67  hreads..Index: g
0900: 65 6e 65 72 69 63 2f 74 63 6c 42 61 73 69 63 2e  eneric/tclBasic.
0910: 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  c.==============
0920: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0930: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0940: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0950: 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20  =====.RCS file: 
0960: 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c  /cvsroot/tcl/tcl
0970: 2f 67 65 6e 65 72 69 63 2f 74 63 6c 42 61 73 69  /generic/tclBasi
0980: 63 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67  c.c,v.retrieving
0990: 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 33 34 0a   revision 1.134.
09a0: 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 33 34 20  diff -u -r1.134 
09b0: 74 63 6c 42 61 73 69 63 2e 63 0a 2d 2d 2d 20 67  tclBasic.c.--- g
09c0: 65 6e 65 72 69 63 2f 74 63 6c 42 61 73 69 63 2e  eneric/tclBasic.
09d0: 63 09 32 39 20 4f 63 74 20 32 30 30 34 20 31 35  c.29 Oct 2004 15
09e0: 3a 33 39 3a 30 34 20 2d 30 30 30 30 09 31 2e 31  :39:04 -0000.1.1
09f0: 33 34 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74  34.+++ generic/t
0a00: 63 6c 42 61 73 69 63 2e 63 09 34 20 4e 6f 76 20  clBasic.c.4 Nov 
0a10: 32 30 30 34 20 32 32 3a 33 31 3a 35 37 20 2d 30  2004 22:31:57 -0
0a20: 30 30 30 0a 40 40 20 2d 33 39 39 2c 36 20 2b 33  000.@@ -399,6 +3
0a30: 39 39 2c 31 32 20 40 40 0a 20 09 20 20 20 20 54  99,12 @@. .    T
0a40: 63 6c 43 6c 6f 63 6b 4f 6c 64 73 63 61 6e 4f 62  clClockOldscanOb
0a50: 6a 43 6d 64 2c 09 28 43 6c 69 65 6e 74 44 61 74  jCmd,.(ClientDat
0a60: 61 29 20 4e 55 4c 4c 2c 0a 20 09 20 20 20 20 28  a) NULL,. .    (
0a70: 54 63 6c 5f 43 6d 64 44 65 6c 65 74 65 50 72 6f  Tcl_CmdDeletePro
0a80: 63 2a 29 20 4e 55 4c 4c 20 29 3b 0a 20 0a 2b 20  c*) NULL );. .+ 
0a90: 20 20 20 2f 2a 20 52 65 67 69 73 74 65 72 20 74     /* Register t
0aa0: 68 65 20 64 65 66 61 75 6c 74 20 5b 69 6e 74 65  he default [inte
0ab0: 72 70 20 62 67 65 72 72 6f 72 5d 20 68 61 6e 64  rp bgerror] hand
0ac0: 6c 65 72 2e 20 2a 2f 0a 2b 0a 2b 20 20 20 20 54  ler. */.+.+    T
0ad0: 63 6c 5f 43 72 65 61 74 65 4f 62 6a 43 6f 6d 6d  cl_CreateObjComm
0ae0: 61 6e 64 28 20 69 6e 74 65 72 70 2c 09 22 3a 3a  and( interp,."::
0af0: 74 63 6c 3a 3a 42 67 65 72 72 6f 72 22 2c 0a 2b  tcl::Bgerror",.+
0b00: 09 20 20 20 20 54 63 6c 44 65 66 61 75 6c 74 42  .    TclDefaultB
0b10: 67 45 72 72 6f 72 48 61 6e 64 6c 65 72 4f 62 6a  gErrorHandlerObj
0b20: 43 6d 64 2c 09 28 43 6c 69 65 6e 74 44 61 74 61  Cmd,.(ClientData
0b30: 29 20 4e 55 4c 4c 2c 0a 2b 09 20 20 20 20 28 54  ) NULL,.+.    (T
0b40: 63 6c 5f 43 6d 64 44 65 6c 65 74 65 50 72 6f 63  cl_CmdDeleteProc
0b50: 2a 29 20 4e 55 4c 4c 20 29 3b 0a 2b 0a 20 20 20  *) NULL );.+.   
0b60: 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 52 65 67    /*.      * Reg
0b70: 69 73 74 65 72 20 74 68 65 20 62 75 69 6c 74 69  ister the builti
0b80: 6e 20 6d 61 74 68 20 66 75 6e 63 74 69 6f 6e 73  n math functions
0b90: 2e 0a 20 20 20 20 20 20 2a 2f 0a 49 6e 64 65 78  ..      */.Index
0ba0: 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64  : generic/tclCmd
0bb0: 41 48 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  AH.c.===========
0bc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0bd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0be0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0bf0: 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c  ========.RCS fil
0c00: 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f  e: /cvsroot/tcl/
0c10: 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 43  tcl/generic/tclC
0c20: 6d 64 41 48 2e 63 2c 76 0a 72 65 74 72 69 65 76  mdAH.c,v.retriev
0c30: 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 35  ing revision 1.5
0c40: 36 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 35 36  6.diff -u -r1.56
0c50: 20 74 63 6c 43 6d 64 41 48 2e 63 0a 2d 2d 2d 20   tclCmdAH.c.--- 
0c60: 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64 41 48  generic/tclCmdAH
0c70: 2e 63 09 32 31 20 4f 63 74 20 32 30 30 34 20 31  .c.21 Oct 2004 1
0c80: 35 3a 31 39 3a 34 36 20 2d 30 30 30 30 09 31 2e  5:19:46 -0000.1.
0c90: 35 36 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74  56.+++ generic/t
0ca0: 63 6c 43 6d 64 41 48 2e 63 09 34 20 4e 6f 76 20  clCmdAH.c.4 Nov 
0cb0: 32 30 30 34 20 32 32 3a 33 31 3a 35 37 20 2d 30  2004 22:31:57 -0
0cc0: 30 30 30 0a 40 40 20 2d 32 36 39 2c 37 20 2b 32  000.@@ -269,7 +2
0cd0: 36 39 2c 37 20 40 40 0a 20 09 7d 0a 20 20 20 20  69,7 @@. .}.    
0ce0: 20 7d 0a 20 20 20 20 20 69 66 20 28 6f 62 6a 63   }.     if (objc
0cf0: 20 3d 3d 20 34 29 20 7b 0a 2d 09 54 63 6c 5f 4f   == 4) {.-.Tcl_O
0d00: 62 6a 20 2a 6f 70 74 69 6f 6e 73 20 3d 20 54 63  bj *options = Tc
0d10: 6c 47 65 74 52 65 74 75 72 6e 4f 70 74 69 6f 6e  lGetReturnOption
0d20: 73 28 69 6e 74 65 72 70 2c 20 72 65 73 75 6c 74  s(interp, result
0d30: 29 3b 0a 2b 09 54 63 6c 5f 4f 62 6a 20 2a 6f 70  );.+.Tcl_Obj *op
0d40: 74 69 6f 6e 73 20 3d 20 54 63 6c 5f 47 65 74 52  tions = Tcl_GetR
0d50: 65 74 75 72 6e 4f 70 74 69 6f 6e 73 28 69 6e 74  eturnOptions(int
0d60: 65 72 70 2c 20 72 65 73 75 6c 74 29 3b 0a 20 09  erp, result);. .
0d70: 69 66 20 28 4e 55 4c 4c 20 3d 3d 20 54 63 6c 5f  if (NULL == Tcl_
0d80: 4f 62 6a 53 65 74 56 61 72 32 28 69 6e 74 65 72  ObjSetVar2(inter
0d90: 70 2c 20 6f 70 74 69 6f 6e 56 61 72 4e 61 6d 65  p, optionVarName
0da0: 50 74 72 2c 20 4e 55 4c 4c 2c 0a 20 09 09 6f 70  Ptr, NULL,. ..op
0db0: 74 69 6f 6e 73 2c 20 30 29 29 20 7b 0a 20 09 20  tions, 0)) {. . 
0dc0: 20 20 20 54 63 6c 5f 44 65 63 72 52 65 66 43 6f     Tcl_DecrRefCo
0dd0: 75 6e 74 28 6f 70 74 69 6f 6e 73 29 3b 0a 40 40  unt(options);.@@
0de0: 20 2d 35 37 37 2c 37 20 2b 35 37 37 2c 37 20 40   -577,7 +577,7 @
0df0: 40 0a 20 20 20 20 20 7d 0a 20 0a 20 20 20 20 20  @.     }. .     
0e00: 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 75 6c 74  Tcl_SetObjResult
0e10: 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 31 5d  (interp, objv[1]
0e20: 29 3b 0a 2d 20 20 20 20 72 65 74 75 72 6e 20 54  );.-    return T
0e30: 63 6c 53 65 74 52 65 74 75 72 6e 4f 70 74 69 6f  clSetReturnOptio
0e40: 6e 73 28 69 6e 74 65 72 70 2c 20 6f 70 74 69 6f  ns(interp, optio
0e50: 6e 73 29 3b 0a 2b 20 20 20 20 72 65 74 75 72 6e  ns);.+    return
0e60: 20 54 63 6c 5f 53 65 74 52 65 74 75 72 6e 4f 70   Tcl_SetReturnOp
0e70: 74 69 6f 6e 73 28 69 6e 74 65 72 70 2c 20 6f 70  tions(interp, op
0e80: 74 69 6f 6e 73 29 3b 0a 20 7d 0a 20 0c 0a 20 2f  tions);. }. .. /
0e90: 2a 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63  *.Index: generic
0ea0: 2f 74 63 6c 44 65 63 6c 73 2e 68 0a 3d 3d 3d 3d  /tclDecls.h.====
0eb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0ec0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0ed0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0ee0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a  ===============.
0ef0: 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f  RCS file: /cvsro
0f00: 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72  ot/tcl/tcl/gener
0f10: 69 63 2f 74 63 6c 44 65 63 6c 73 2e 68 2c 76 0a  ic/tclDecls.h,v.
0f20: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73  retrieving revis
0f30: 69 6f 6e 20 31 2e 31 30 36 0a 64 69 66 66 20 2d  ion 1.106.diff -
0f40: 75 20 2d 72 31 2e 31 30 36 20 74 63 6c 44 65 63  u -r1.106 tclDec
0f50: 6c 73 2e 68 0a 2d 2d 2d 20 67 65 6e 65 72 69 63  ls.h.--- generic
0f60: 2f 74 63 6c 44 65 63 6c 73 2e 68 09 33 20 4e 6f  /tclDecls.h.3 No
0f70: 76 20 32 30 30 34 20 31 39 3a 31 33 3a 33 34 20  v 2004 19:13:34 
0f80: 2d 30 30 30 30 09 31 2e 31 30 36 0a 2b 2b 2b 20  -0000.1.106.+++ 
0f90: 67 65 6e 65 72 69 63 2f 74 63 6c 44 65 63 6c 73  generic/tclDecls
0fa0: 2e 68 09 34 20 4e 6f 76 20 32 30 30 34 20 32 32  .h.4 Nov 2004 22
0fb0: 3a 33 31 3a 35 38 20 2d 30 30 30 30 0a 40 40 20  :31:58 -0000.@@ 
0fc0: 2d 33 33 32 35 2c 36 20 2b 33 33 32 35 2c 33 36  -3325,6 +3325,36
0fd0: 20 40 40 0a 20 45 58 54 45 52 4e 20 69 6e 74 09   @@. EXTERN int.
0fe0: 09 54 63 6c 5f 4c 69 6d 69 74 47 65 74 47 72 61  .Tcl_LimitGetGra
0ff0: 6e 75 6c 61 72 69 74 79 20 5f 41 4e 53 49 5f 41  nularity _ANSI_A
1000: 52 47 53 5f 28 28 0a 20 09 09 09 09 54 63 6c 5f  RGS_((. ....Tcl_
1010: 49 6e 74 65 72 70 20 2a 20 69 6e 74 65 72 70 2c  Interp * interp,
1020: 20 69 6e 74 20 74 79 70 65 29 29 3b 0a 20 23 65   int type));. #e
1030: 6e 64 69 66 0a 2b 23 69 66 6e 64 65 66 20 54 63  ndif.+#ifndef Tc
1040: 6c 5f 53 61 76 65 49 6e 74 65 72 70 53 74 61 74  l_SaveInterpStat
1050: 65 5f 54 43 4c 5f 44 45 43 4c 41 52 45 44 0a 2b  e_TCL_DECLARED.+
1060: 23 64 65 66 69 6e 65 20 54 63 6c 5f 53 61 76 65  #define Tcl_Save
1070: 49 6e 74 65 72 70 53 74 61 74 65 5f 54 43 4c 5f  InterpState_TCL_
1080: 44 45 43 4c 41 52 45 44 0a 2b 2f 2a 20 35 33 35  DECLARED.+/* 535
1090: 20 2a 2f 0a 2b 45 58 54 45 52 4e 20 54 63 6c 5f   */.+EXTERN Tcl_
10a0: 49 6e 74 65 72 70 53 74 61 74 65 09 54 63 6c 5f  InterpState.Tcl_
10b0: 53 61 76 65 49 6e 74 65 72 70 53 74 61 74 65 20  SaveInterpState 
10c0: 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c  _ANSI_ARGS_((Tcl
10d0: 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 65 72 70  _Interp * interp
10e0: 2c 20 0a 2b 09 09 09 09 69 6e 74 20 73 74 61 74  , .+....int stat
10f0: 75 73 29 29 3b 0a 2b 23 65 6e 64 69 66 0a 2b 23  us));.+#endif.+#
1100: 69 66 6e 64 65 66 20 54 63 6c 5f 52 65 73 74 6f  ifndef Tcl_Resto
1110: 72 65 49 6e 74 65 72 70 53 74 61 74 65 5f 54 43  reInterpState_TC
1120: 4c 5f 44 45 43 4c 41 52 45 44 0a 2b 23 64 65 66  L_DECLARED.+#def
1130: 69 6e 65 20 54 63 6c 5f 52 65 73 74 6f 72 65 49  ine Tcl_RestoreI
1140: 6e 74 65 72 70 53 74 61 74 65 5f 54 43 4c 5f 44  nterpState_TCL_D
1150: 45 43 4c 41 52 45 44 0a 2b 2f 2a 20 35 33 36 20  ECLARED.+/* 536 
1160: 2a 2f 0a 2b 45 58 54 45 52 4e 20 69 6e 74 09 09  */.+EXTERN int..
1170: 54 63 6c 5f 52 65 73 74 6f 72 65 49 6e 74 65 72  Tcl_RestoreInter
1180: 70 53 74 61 74 65 20 5f 41 4e 53 49 5f 41 52 47  pState _ANSI_ARG
1190: 53 5f 28 28 0a 2b 09 09 09 09 54 63 6c 5f 49 6e  S_((.+....Tcl_In
11a0: 74 65 72 70 20 2a 20 69 6e 74 65 72 70 2c 20 54  terp * interp, T
11b0: 63 6c 5f 49 6e 74 65 72 70 53 74 61 74 65 20 73  cl_InterpState s
11c0: 74 61 74 65 29 29 3b 0a 2b 23 65 6e 64 69 66 0a  tate));.+#endif.
11d0: 2b 23 69 66 6e 64 65 66 20 54 63 6c 5f 44 69 73  +#ifndef Tcl_Dis
11e0: 63 61 72 64 49 6e 74 65 72 70 53 74 61 74 65 5f  cardInterpState_
11f0: 54 43 4c 5f 44 45 43 4c 41 52 45 44 0a 2b 23 64  TCL_DECLARED.+#d
1200: 65 66 69 6e 65 20 54 63 6c 5f 44 69 73 63 61 72  efine Tcl_Discar
1210: 64 49 6e 74 65 72 70 53 74 61 74 65 5f 54 43 4c  dInterpState_TCL
1220: 5f 44 45 43 4c 41 52 45 44 0a 2b 2f 2a 20 35 33  _DECLARED.+/* 53
1230: 37 20 2a 2f 0a 2b 45 58 54 45 52 4e 20 76 6f 69  7 */.+EXTERN voi
1240: 64 09 09 54 63 6c 5f 44 69 73 63 61 72 64 49 6e  d..Tcl_DiscardIn
1250: 74 65 72 70 53 74 61 74 65 20 5f 41 4e 53 49 5f  terpState _ANSI_
1260: 41 52 47 53 5f 28 28 0a 2b 09 09 09 09 54 63 6c  ARGS_((.+....Tcl
1270: 5f 49 6e 74 65 72 70 53 74 61 74 65 20 73 74 61  _InterpState sta
1280: 74 65 29 29 3b 0a 2b 23 65 6e 64 69 66 0a 2b 23  te));.+#endif.+#
1290: 69 66 6e 64 65 66 20 54 63 6c 5f 53 65 74 52 65  ifndef Tcl_SetRe
12a0: 74 75 72 6e 4f 70 74 69 6f 6e 73 5f 54 43 4c 5f  turnOptions_TCL_
12b0: 44 45 43 4c 41 52 45 44 0a 2b 23 64 65 66 69 6e  DECLARED.+#defin
12c0: 65 20 54 63 6c 5f 53 65 74 52 65 74 75 72 6e 4f  e Tcl_SetReturnO
12d0: 70 74 69 6f 6e 73 5f 54 43 4c 5f 44 45 43 4c 41  ptions_TCL_DECLA
12e0: 52 45 44 0a 2b 2f 2a 20 35 33 38 20 2a 2f 0a 2b  RED.+/* 538 */.+
12f0: 45 58 54 45 52 4e 20 69 6e 74 09 09 54 63 6c 5f  EXTERN int..Tcl_
1300: 53 65 74 52 65 74 75 72 6e 4f 70 74 69 6f 6e 73  SetReturnOptions
1310: 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 0a 2b   _ANSI_ARGS_((.+
1320: 09 09 09 09 54 63 6c 5f 49 6e 74 65 72 70 20 2a  ....Tcl_Interp *
1330: 20 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4f 62 6a   interp, Tcl_Obj
1340: 20 2a 20 6f 70 74 69 6f 6e 73 29 29 3b 0a 2b 23   * options));.+#
1350: 65 6e 64 69 66 0a 2b 23 69 66 6e 64 65 66 20 54  endif.+#ifndef T
1360: 63 6c 5f 47 65 74 52 65 74 75 72 6e 4f 70 74 69  cl_GetReturnOpti
1370: 6f 6e 73 5f 54 43 4c 5f 44 45 43 4c 41 52 45 44  ons_TCL_DECLARED
1380: 0a 2b 23 64 65 66 69 6e 65 20 54 63 6c 5f 47 65  .+#define Tcl_Ge
1390: 74 52 65 74 75 72 6e 4f 70 74 69 6f 6e 73 5f 54  tReturnOptions_T
13a0: 43 4c 5f 44 45 43 4c 41 52 45 44 0a 2b 2f 2a 20  CL_DECLARED.+/* 
13b0: 35 33 39 20 2a 2f 0a 2b 45 58 54 45 52 4e 20 54  539 */.+EXTERN T
13c0: 63 6c 5f 4f 62 6a 20 2a 09 54 63 6c 5f 47 65 74  cl_Obj *.Tcl_Get
13d0: 52 65 74 75 72 6e 4f 70 74 69 6f 6e 73 20 5f 41  ReturnOptions _A
13e0: 4e 53 49 5f 41 52 47 53 5f 28 28 0a 2b 09 09 09  NSI_ARGS_((.+...
13f0: 09 54 63 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e  .Tcl_Interp * in
1400: 74 65 72 70 2c 20 69 6e 74 20 72 65 73 75 6c 74  terp, int result
1410: 29 29 3b 0a 2b 23 65 6e 64 69 66 0a 20 0a 20 74  ));.+#endif. . t
1420: 79 70 65 64 65 66 20 73 74 72 75 63 74 20 54 63  ypedef struct Tc
1430: 6c 53 74 75 62 48 6f 6f 6b 73 20 7b 0a 20 20 20  lStubHooks {.   
1440: 20 20 73 74 72 75 63 74 20 54 63 6c 50 6c 61 74    struct TclPlat
1450: 53 74 75 62 73 20 2a 74 63 6c 50 6c 61 74 53 74  Stubs *tclPlatSt
1460: 75 62 73 3b 0a 40 40 20 2d 33 39 30 31 2c 36 20  ubs;.@@ -3901,6 
1470: 2b 33 39 33 31 2c 31 31 20 40 40 0a 20 20 20 20  +3931,11 @@.    
1480: 20 69 6e 74 20 28 2a 74 63 6c 5f 4c 69 6d 69 74   int (*tcl_Limit
1490: 47 65 74 43 6f 6d 6d 61 6e 64 73 29 20 5f 41 4e  GetCommands) _AN
14a0: 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 49 6e  SI_ARGS_((Tcl_In
14b0: 74 65 72 70 20 2a 20 69 6e 74 65 72 70 29 29 3b  terp * interp));
14c0: 20 2f 2a 20 35 33 32 20 2a 2f 0a 20 20 20 20 20   /* 532 */.     
14d0: 76 6f 69 64 20 28 2a 74 63 6c 5f 4c 69 6d 69 74  void (*tcl_Limit
14e0: 47 65 74 54 69 6d 65 29 20 5f 41 4e 53 49 5f 41  GetTime) _ANSI_A
14f0: 52 47 53 5f 28 28 54 63 6c 5f 49 6e 74 65 72 70  RGS_((Tcl_Interp
1500: 20 2a 20 69 6e 74 65 72 70 2c 20 54 63 6c 5f 54   * interp, Tcl_T
1510: 69 6d 65 20 2a 20 74 69 6d 65 4c 69 6d 69 74 50  ime * timeLimitP
1520: 74 72 29 29 3b 20 2f 2a 20 35 33 33 20 2a 2f 0a  tr)); /* 533 */.
1530: 20 20 20 20 20 69 6e 74 20 28 2a 74 63 6c 5f 4c       int (*tcl_L
1540: 69 6d 69 74 47 65 74 47 72 61 6e 75 6c 61 72 69  imitGetGranulari
1550: 74 79 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28  ty) _ANSI_ARGS_(
1560: 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e  (Tcl_Interp * in
1570: 74 65 72 70 2c 20 69 6e 74 20 74 79 70 65 29 29  terp, int type))
1580: 3b 20 2f 2a 20 35 33 34 20 2a 2f 0a 2b 20 20 20  ; /* 534 */.+   
1590: 20 54 63 6c 5f 49 6e 74 65 72 70 53 74 61 74 65   Tcl_InterpState
15a0: 20 28 2a 74 63 6c 5f 53 61 76 65 49 6e 74 65 72   (*tcl_SaveInter
15b0: 70 53 74 61 74 65 29 20 5f 41 4e 53 49 5f 41 52  pState) _ANSI_AR
15c0: 47 53 5f 28 28 54 63 6c 5f 49 6e 74 65 72 70 20  GS_((Tcl_Interp 
15d0: 2a 20 69 6e 74 65 72 70 2c 20 69 6e 74 20 73 74  * interp, int st
15e0: 61 74 75 73 29 29 3b 20 2f 2a 20 35 33 35 20 2a  atus)); /* 535 *
15f0: 2f 0a 2b 20 20 20 20 69 6e 74 20 28 2a 74 63 6c  /.+    int (*tcl
1600: 5f 52 65 73 74 6f 72 65 49 6e 74 65 72 70 53 74  _RestoreInterpSt
1610: 61 74 65 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f  ate) _ANSI_ARGS_
1620: 28 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 20 69  ((Tcl_Interp * i
1630: 6e 74 65 72 70 2c 20 54 63 6c 5f 49 6e 74 65 72  nterp, Tcl_Inter
1640: 70 53 74 61 74 65 20 73 74 61 74 65 29 29 3b 20  pState state)); 
1650: 2f 2a 20 35 33 36 20 2a 2f 0a 2b 20 20 20 20 76  /* 536 */.+    v
1660: 6f 69 64 20 28 2a 74 63 6c 5f 44 69 73 63 61 72  oid (*tcl_Discar
1670: 64 49 6e 74 65 72 70 53 74 61 74 65 29 20 5f 41  dInterpState) _A
1680: 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 49  NSI_ARGS_((Tcl_I
1690: 6e 74 65 72 70 53 74 61 74 65 20 73 74 61 74 65  nterpState state
16a0: 29 29 3b 20 2f 2a 20 35 33 37 20 2a 2f 0a 2b 20  )); /* 537 */.+ 
16b0: 20 20 20 69 6e 74 20 28 2a 74 63 6c 5f 53 65 74     int (*tcl_Set
16c0: 52 65 74 75 72 6e 4f 70 74 69 6f 6e 73 29 20 5f  ReturnOptions) _
16d0: 41 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f  ANSI_ARGS_((Tcl_
16e0: 49 6e 74 65 72 70 20 2a 20 69 6e 74 65 72 70 2c  Interp * interp,
16f0: 20 54 63 6c 5f 4f 62 6a 20 2a 20 6f 70 74 69 6f   Tcl_Obj * optio
1700: 6e 73 29 29 3b 20 2f 2a 20 35 33 38 20 2a 2f 0a  ns)); /* 538 */.
1710: 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 20 28  +    Tcl_Obj * (
1720: 2a 74 63 6c 5f 47 65 74 52 65 74 75 72 6e 4f 70  *tcl_GetReturnOp
1730: 74 69 6f 6e 73 29 20 5f 41 4e 53 49 5f 41 52 47  tions) _ANSI_ARG
1740: 53 5f 28 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a  S_((Tcl_Interp *
1750: 20 69 6e 74 65 72 70 2c 20 69 6e 74 20 72 65 73   interp, int res
1760: 75 6c 74 29 29 3b 20 2f 2a 20 35 33 39 20 2a 2f  ult)); /* 539 */
1770: 0a 20 7d 20 54 63 6c 53 74 75 62 73 3b 0a 20 0a  . } TclStubs;. .
1780: 20 23 69 66 64 65 66 20 5f 5f 63 70 6c 75 73 70   #ifdef __cplusp
1790: 6c 75 73 0a 40 40 20 2d 36 30 38 31 2c 36 20 2b  lus.@@ -6081,6 +
17a0: 36 31 31 36 2c 32 36 20 40 40 0a 20 23 64 65 66  6116,26 @@. #def
17b0: 69 6e 65 20 54 63 6c 5f 4c 69 6d 69 74 47 65 74  ine Tcl_LimitGet
17c0: 47 72 61 6e 75 6c 61 72 69 74 79 20 5c 0a 20 09  Granularity \. .
17d0: 28 74 63 6c 53 74 75 62 73 50 74 72 2d 3e 74 63  (tclStubsPtr->tc
17e0: 6c 5f 4c 69 6d 69 74 47 65 74 47 72 61 6e 75 6c  l_LimitGetGranul
17f0: 61 72 69 74 79 29 20 2f 2a 20 35 33 34 20 2a 2f  arity) /* 534 */
1800: 0a 20 23 65 6e 64 69 66 0a 2b 23 69 66 6e 64 65  . #endif.+#ifnde
1810: 66 20 54 63 6c 5f 53 61 76 65 49 6e 74 65 72 70  f Tcl_SaveInterp
1820: 53 74 61 74 65 0a 2b 23 64 65 66 69 6e 65 20 54  State.+#define T
1830: 63 6c 5f 53 61 76 65 49 6e 74 65 72 70 53 74 61  cl_SaveInterpSta
1840: 74 65 20 5c 0a 2b 09 28 74 63 6c 53 74 75 62 73  te \.+.(tclStubs
1850: 50 74 72 2d 3e 74 63 6c 5f 53 61 76 65 49 6e 74  Ptr->tcl_SaveInt
1860: 65 72 70 53 74 61 74 65 29 20 2f 2a 20 35 33 35  erpState) /* 535
1870: 20 2a 2f 0a 2b 23 65 6e 64 69 66 0a 2b 23 69 66   */.+#endif.+#if
1880: 6e 64 65 66 20 54 63 6c 5f 52 65 73 74 6f 72 65  ndef Tcl_Restore
1890: 49 6e 74 65 72 70 53 74 61 74 65 0a 2b 23 64 65  InterpState.+#de
18a0: 66 69 6e 65 20 54 63 6c 5f 52 65 73 74 6f 72 65  fine Tcl_Restore
18b0: 49 6e 74 65 72 70 53 74 61 74 65 20 5c 0a 2b 09  InterpState \.+.
18c0: 28 74 63 6c 53 74 75 62 73 50 74 72 2d 3e 74 63  (tclStubsPtr->tc
18d0: 6c 5f 52 65 73 74 6f 72 65 49 6e 74 65 72 70 53  l_RestoreInterpS
18e0: 74 61 74 65 29 20 2f 2a 20 35 33 36 20 2a 2f 0a  tate) /* 536 */.
18f0: 2b 23 65 6e 64 69 66 0a 2b 23 69 66 6e 64 65 66  +#endif.+#ifndef
1900: 20 54 63 6c 5f 44 69 73 63 61 72 64 49 6e 74 65   Tcl_DiscardInte
1910: 72 70 53 74 61 74 65 0a 2b 23 64 65 66 69 6e 65  rpState.+#define
1920: 20 54 63 6c 5f 44 69 73 63 61 72 64 49 6e 74 65   Tcl_DiscardInte
1930: 72 70 53 74 61 74 65 20 5c 0a 2b 09 28 74 63 6c  rpState \.+.(tcl
1940: 53 74 75 62 73 50 74 72 2d 3e 74 63 6c 5f 44 69  StubsPtr->tcl_Di
1950: 73 63 61 72 64 49 6e 74 65 72 70 53 74 61 74 65  scardInterpState
1960: 29 20 2f 2a 20 35 33 37 20 2a 2f 0a 2b 23 65 6e  ) /* 537 */.+#en
1970: 64 69 66 0a 2b 23 69 66 6e 64 65 66 20 54 63 6c  dif.+#ifndef Tcl
1980: 5f 53 65 74 52 65 74 75 72 6e 4f 70 74 69 6f 6e  _SetReturnOption
1990: 73 0a 2b 23 64 65 66 69 6e 65 20 54 63 6c 5f 53  s.+#define Tcl_S
19a0: 65 74 52 65 74 75 72 6e 4f 70 74 69 6f 6e 73 20  etReturnOptions 
19b0: 5c 0a 2b 09 28 74 63 6c 53 74 75 62 73 50 74 72  \.+.(tclStubsPtr
19c0: 2d 3e 74 63 6c 5f 53 65 74 52 65 74 75 72 6e 4f  ->tcl_SetReturnO
19d0: 70 74 69 6f 6e 73 29 20 2f 2a 20 35 33 38 20 2a  ptions) /* 538 *
19e0: 2f 0a 2b 23 65 6e 64 69 66 0a 2b 23 69 66 6e 64  /.+#endif.+#ifnd
19f0: 65 66 20 54 63 6c 5f 47 65 74 52 65 74 75 72 6e  ef Tcl_GetReturn
1a00: 4f 70 74 69 6f 6e 73 0a 2b 23 64 65 66 69 6e 65  Options.+#define
1a10: 20 54 63 6c 5f 47 65 74 52 65 74 75 72 6e 4f 70   Tcl_GetReturnOp
1a20: 74 69 6f 6e 73 20 5c 0a 2b 09 28 74 63 6c 53 74  tions \.+.(tclSt
1a30: 75 62 73 50 74 72 2d 3e 74 63 6c 5f 47 65 74 52  ubsPtr->tcl_GetR
1a40: 65 74 75 72 6e 4f 70 74 69 6f 6e 73 29 20 2f 2a  eturnOptions) /*
1a50: 20 35 33 39 20 2a 2f 0a 2b 23 65 6e 64 69 66 0a   539 */.+#endif.
1a60: 20 0a 20 23 65 6e 64 69 66 20 2f 2a 20 64 65 66   . #endif /* def
1a70: 69 6e 65 64 28 55 53 45 5f 54 43 4c 5f 53 54 55  ined(USE_TCL_STU
1a80: 42 53 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  BS) && !defined(
1a90: 55 53 45 5f 54 43 4c 5f 53 54 55 42 5f 50 52 4f  USE_TCL_STUB_PRO
1aa0: 43 53 29 20 2a 2f 0a 20 0a 49 6e 64 65 78 3a 20  CS) */. .Index: 
1ab0: 67 65 6e 65 72 69 63 2f 74 63 6c 44 69 63 74 4f  generic/tclDictO
1ac0: 62 6a 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  bj.c.===========
1ad0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1ae0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1af0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1b00: 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c  ========.RCS fil
1b10: 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f  e: /cvsroot/tcl/
1b20: 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 44  tcl/generic/tclD
1b30: 69 63 74 4f 62 6a 2e 63 2c 76 0a 72 65 74 72 69  ictObj.c,v.retri
1b40: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31  eving revision 1
1b50: 2e 32 36 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e  .26.diff -u -r1.
1b60: 32 36 20 74 63 6c 44 69 63 74 4f 62 6a 2e 63 0a  26 tclDictObj.c.
1b70: 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 44  --- generic/tclD
1b80: 69 63 74 4f 62 6a 2e 63 09 31 39 20 4f 63 74 20  ictObj.c.19 Oct 
1b90: 32 30 30 34 20 32 32 3a 32 30 3a 30 34 20 2d 30  2004 22:20:04 -0
1ba0: 30 30 30 09 31 2e 32 36 0a 2b 2b 2b 20 67 65 6e  000.1.26.+++ gen
1bb0: 65 72 69 63 2f 74 63 6c 44 69 63 74 4f 62 6a 2e  eric/tclDictObj.
1bc0: 63 09 34 20 4e 6f 76 20 32 30 30 34 20 32 32 3a  c.4 Nov 2004 22:
1bd0: 33 31 3a 35 38 20 2d 30 30 30 30 0a 40 40 20 2d  31:58 -0000.@@ -
1be0: 32 37 33 39 2c 37 20 2b 32 37 33 39 2c 37 20 40  2739,7 +2739,7 @
1bf0: 40 0a 20 7b 0a 20 20 20 20 20 54 63 6c 5f 4f 62  @. {.     Tcl_Ob
1c00: 6a 20 2a 64 69 63 74 50 74 72 2c 20 2a 6f 62 6a  j *dictPtr, *obj
1c10: 50 74 72 3b 0a 20 20 20 20 20 69 6e 74 20 69 2c  Ptr;.     int i,
1c20: 20 72 65 73 75 6c 74 2c 20 64 75 6d 6d 79 2c 20   result, dummy, 
1c30: 61 6c 6c 6f 63 64 69 63 74 20 3d 20 30 3b 0a 2d  allocdict = 0;.-
1c40: 20 20 20 20 54 63 6c 49 6e 74 65 72 70 53 74 61      TclInterpSta
1c50: 74 65 20 73 74 61 74 65 3b 0a 2b 20 20 20 20 54  te state;.+    T
1c60: 63 6c 5f 49 6e 74 65 72 70 53 74 61 74 65 20 73  cl_InterpState s
1c70: 74 61 74 65 3b 0a 20 0a 20 20 20 20 20 69 66 20  tate;. .     if 
1c80: 28 6f 62 6a 63 20 3c 20 36 20 7c 7c 20 6f 62 6a  (objc < 6 || obj
1c90: 63 20 26 20 31 29 20 7b 0a 20 09 54 63 6c 5f 57  c & 1) {. .Tcl_W
1ca0: 72 6f 6e 67 4e 75 6d 41 72 67 73 28 69 6e 74 65  rongNumArgs(inte
1cb0: 72 70 2c 20 32 2c 20 6f 62 6a 76 2c 0a 40 40 20  rp, 2, objv,.@@ 
1cc0: 2d 32 37 39 34 2c 39 20 2b 32 37 39 34 2c 39 20  -2794,9 +2794,9 
1cd0: 40 40 0a 20 20 20 20 20 20 2a 20 44 6f 75 62 6c  @@.      * Doubl
1ce0: 65 2d 63 68 65 63 6b 20 74 68 61 74 20 69 74 20  e-check that it 
1cf0: 69 73 20 73 74 69 6c 6c 20 61 20 64 69 63 74 69  is still a dicti
1d00: 6f 6e 61 72 79 2e 0a 20 20 20 20 20 20 2a 2f 0a  onary..      */.
1d10: 20 0a 2d 20 20 20 20 73 74 61 74 65 20 3d 20 54   .-    state = T
1d20: 63 6c 53 61 76 65 49 6e 74 65 72 70 53 74 61 74  clSaveInterpStat
1d30: 65 28 69 6e 74 65 72 70 2c 20 72 65 73 75 6c 74  e(interp, result
1d40: 29 3b 0a 2b 20 20 20 20 73 74 61 74 65 20 3d 20  );.+    state = 
1d50: 54 63 6c 5f 53 61 76 65 49 6e 74 65 72 70 53 74  Tcl_SaveInterpSt
1d60: 61 74 65 28 69 6e 74 65 72 70 2c 20 72 65 73 75  ate(interp, resu
1d70: 6c 74 29 3b 0a 20 20 20 20 20 69 66 20 28 54 63  lt);.     if (Tc
1d80: 6c 5f 44 69 63 74 4f 62 6a 53 69 7a 65 28 69 6e  l_DictObjSize(in
1d90: 74 65 72 70 2c 20 64 69 63 74 50 74 72 2c 20 26  terp, dictPtr, &
1da0: 64 75 6d 6d 79 29 20 21 3d 20 54 43 4c 5f 4f 4b  dummy) != TCL_OK
1db0: 29 20 7b 0a 2d 09 54 63 6c 44 69 73 63 61 72 64  ) {.-.TclDiscard
1dc0: 49 6e 74 65 72 70 53 74 61 74 65 28 73 74 61 74  InterpState(stat
1dd0: 65 29 3b 0a 2b 09 54 63 6c 5f 44 69 73 63 61 72  e);.+.Tcl_Discar
1de0: 64 49 6e 74 65 72 70 53 74 61 74 65 28 73 74 61  dInterpState(sta
1df0: 74 65 29 3b 0a 20 09 72 65 74 75 72 6e 20 54 43  te);. .return TC
1e00: 4c 5f 45 52 52 4f 52 3b 0a 20 20 20 20 20 7d 0a  L_ERROR;.     }.
1e10: 20 0a 40 40 20 2d 32 38 32 36 2c 31 34 20 2b 32   .@@ -2826,14 +2
1e20: 38 32 36 2c 31 34 20 40 40 0a 20 0a 20 20 20 20  826,14 @@. .    
1e30: 20 69 66 20 28 54 63 6c 5f 4f 62 6a 53 65 74 56   if (Tcl_ObjSetV
1e40: 61 72 32 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76  ar2(interp, objv
1e50: 5b 32 5d 2c 20 4e 55 4c 4c 2c 20 64 69 63 74 50  [2], NULL, dictP
1e60: 74 72 2c 0a 20 09 20 20 20 20 54 43 4c 5f 4c 45  tr,. .    TCL_LE
1e70: 41 56 45 5f 45 52 52 5f 4d 53 47 29 20 3d 3d 20  AVE_ERR_MSG) == 
1e80: 4e 55 4c 4c 29 20 7b 0a 2d 09 54 63 6c 44 69 73  NULL) {.-.TclDis
1e90: 63 61 72 64 49 6e 74 65 72 70 53 74 61 74 65 28  cardInterpState(
1ea0: 73 74 61 74 65 29 3b 0a 2b 09 54 63 6c 5f 44 69  state);.+.Tcl_Di
1eb0: 73 63 61 72 64 49 6e 74 65 72 70 53 74 61 74 65  scardInterpState
1ec0: 28 73 74 61 74 65 29 3b 0a 20 09 69 66 20 28 61  (state);. .if (a
1ed0: 6c 6c 6f 63 64 69 63 74 29 20 7b 0a 20 09 20 20  llocdict) {. .  
1ee0: 20 20 54 63 6c 44 65 63 72 52 65 66 43 6f 75 6e    TclDecrRefCoun
1ef0: 74 28 64 69 63 74 50 74 72 29 3b 0a 20 09 7d 0a  t(dictPtr);. .}.
1f00: 20 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52   .return TCL_ERR
1f10: 4f 52 3b 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20  OR;.     }. .-  
1f20: 20 20 72 65 74 75 72 6e 20 54 63 6c 52 65 73 74    return TclRest
1f30: 6f 72 65 49 6e 74 65 72 70 53 74 61 74 65 28 69  oreInterpState(i
1f40: 6e 74 65 72 70 2c 20 73 74 61 74 65 29 3b 0a 2b  nterp, state);.+
1f50: 20 20 20 20 72 65 74 75 72 6e 20 54 63 6c 5f 52      return Tcl_R
1f60: 65 73 74 6f 72 65 49 6e 74 65 72 70 53 74 61 74  estoreInterpStat
1f70: 65 28 69 6e 74 65 72 70 2c 20 73 74 61 74 65 29  e(interp, state)
1f80: 3b 0a 20 7d 0a 20 0c 0a 20 2f 2a 0a 40 40 20 2d  ;. }. .. /*.@@ -
1f90: 32 38 36 32 2c 37 20 2b 32 38 36 32 2c 37 20 40  2862,7 +2862,7 @
1fa0: 40 0a 20 7b 0a 20 20 20 20 20 54 63 6c 5f 4f 62  @. {.     Tcl_Ob
1fb0: 6a 20 2a 64 69 63 74 50 74 72 2c 20 2a 6b 65 79  j *dictPtr, *key
1fc0: 73 50 74 72 2c 20 2a 6b 65 79 50 74 72 2c 20 2a  sPtr, *keyPtr, *
1fd0: 76 61 6c 50 74 72 2c 20 2a 2a 6b 65 79 76 2c 20  valPtr, **keyv, 
1fe0: 2a 6c 65 61 66 50 74 72 3b 0a 20 20 20 20 20 54  *leafPtr;.     T
1ff0: 63 6c 5f 44 69 63 74 53 65 61 72 63 68 20 73 3b  cl_DictSearch s;
2000: 0a 2d 20 20 20 20 54 63 6c 49 6e 74 65 72 70 53  .-    TclInterpS
2010: 74 61 74 65 20 73 74 61 74 65 3b 0a 2b 20 20 20  tate state;.+   
2020: 20 54 63 6c 5f 49 6e 74 65 72 70 53 74 61 74 65   Tcl_InterpState
2030: 20 73 74 61 74 65 3b 0a 20 20 20 20 20 69 6e 74   state;.     int
2040: 20 64 6f 6e 65 2c 20 72 65 73 75 6c 74 2c 20 6b   done, result, k
2050: 65 79 63 2c 20 69 2c 20 61 6c 6c 6f 63 64 69 63  eyc, i, allocdic
2060: 74 3d 30 3b 0a 20 0a 20 20 20 20 20 69 66 20 28  t=0;. .     if (
2070: 6f 62 6a 63 20 3c 20 34 29 20 7b 0a 40 40 20 2d  objc < 4) {.@@ -
2080: 32 39 33 38 2c 31 30 20 2b 32 39 33 38 2c 31 30  2938,10 +2938,10
2090: 20 40 40 0a 20 20 20 20 20 20 2a 20 44 6f 75 62   @@.      * Doub
20a0: 6c 65 2d 63 68 65 63 6b 20 74 68 61 74 20 69 74  le-check that it
20b0: 20 69 73 20 73 74 69 6c 6c 20 61 20 64 69 63 74   is still a dict
20c0: 69 6f 6e 61 72 79 2e 0a 20 20 20 20 20 20 2a 2f  ionary..      */
20d0: 0a 20 0a 2d 20 20 20 20 73 74 61 74 65 20 3d 20  . .-    state = 
20e0: 54 63 6c 53 61 76 65 49 6e 74 65 72 70 53 74 61  TclSaveInterpSta
20f0: 74 65 28 69 6e 74 65 72 70 2c 20 72 65 73 75 6c  te(interp, resul
2100: 74 29 3b 0a 2b 20 20 20 20 73 74 61 74 65 20 3d  t);.+    state =
2110: 20 54 63 6c 5f 53 61 76 65 49 6e 74 65 72 70 53   Tcl_SaveInterpS
2120: 74 61 74 65 28 69 6e 74 65 72 70 2c 20 72 65 73  tate(interp, res
2130: 75 6c 74 29 3b 0a 20 20 20 20 20 69 66 20 28 54  ult);.     if (T
2140: 63 6c 5f 44 69 63 74 4f 62 6a 53 69 7a 65 28 69  cl_DictObjSize(i
2150: 6e 74 65 72 70 2c 20 64 69 63 74 50 74 72 2c 20  nterp, dictPtr, 
2160: 26 69 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b  &i) != TCL_OK) {
2170: 0a 20 09 54 63 6c 44 65 63 72 52 65 66 43 6f 75  . .TclDecrRefCou
2180: 6e 74 28 6b 65 79 73 50 74 72 29 3b 0a 2d 09 54  nt(keysPtr);.-.T
2190: 63 6c 44 69 73 63 61 72 64 49 6e 74 65 72 70 53  clDiscardInterpS
21a0: 74 61 74 65 28 73 74 61 74 65 29 3b 0a 2b 09 54  tate(state);.+.T
21b0: 63 6c 5f 44 69 73 63 61 72 64 49 6e 74 65 72 70  cl_DiscardInterp
21c0: 53 74 61 74 65 28 73 74 61 74 65 29 3b 0a 20 09  State(state);. .
21d0: 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52  return TCL_ERROR
21e0: 3b 0a 20 20 20 20 20 7d 0a 20 0a 40 40 20 2d 32  ;.     }. .@@ -2
21f0: 39 36 37 2c 37 20 2b 32 39 36 37 2c 37 20 40 40  967,7 +2967,7 @@
2200: 0a 20 09 20 20 20 20 69 66 20 28 61 6c 6c 6f 63  . .    if (alloc
2210: 64 69 63 74 29 20 7b 0a 20 09 09 54 63 6c 44 65  dict) {. ..TclDe
2220: 63 72 52 65 66 43 6f 75 6e 74 28 64 69 63 74 50  crRefCount(dictP
2230: 74 72 29 3b 0a 20 09 20 20 20 20 7d 0a 2d 09 20  tr);. .    }.-. 
2240: 20 20 20 54 63 6c 44 69 73 63 61 72 64 49 6e 74     TclDiscardInt
2250: 65 72 70 53 74 61 74 65 28 73 74 61 74 65 29 3b  erpState(state);
2260: 0a 2b 09 20 20 20 20 54 63 6c 5f 44 69 73 63 61  .+.    Tcl_Disca
2270: 72 64 49 6e 74 65 72 70 53 74 61 74 65 28 73 74  rdInterpState(st
2280: 61 74 65 29 3b 0a 20 09 20 20 20 20 72 65 74 75  ate);. .    retu
2290: 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 09  rn TCL_ERROR;. .
22a0: 7d 0a 20 09 69 66 20 28 6c 65 61 66 50 74 72 20  }. .if (leafPtr 
22b0: 3d 3d 20 44 49 43 54 5f 50 41 54 48 5f 4e 4f 4e  == DICT_PATH_NON
22c0: 5f 45 58 49 53 54 45 4e 54 29 20 7b 0a 40 40 20  _EXISTENT) {.@@ 
22d0: 2d 32 39 37 35 2c 37 20 2b 32 39 37 35 2c 37 20  -2975,7 +2975,7 
22e0: 40 40 0a 20 09 20 20 20 20 69 66 20 28 61 6c 6c  @@. .    if (all
22f0: 6f 63 64 69 63 74 29 20 7b 0a 20 09 09 54 63 6c  ocdict) {. ..Tcl
2300: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 64 69 63  DecrRefCount(dic
2310: 74 50 74 72 29 3b 0a 20 09 20 20 20 20 7d 0a 2d  tPtr);. .    }.-
2320: 09 20 20 20 20 72 65 74 75 72 6e 20 54 63 6c 52  .    return TclR
2330: 65 73 74 6f 72 65 49 6e 74 65 72 70 53 74 61 74  estoreInterpStat
2340: 65 28 69 6e 74 65 72 70 2c 20 73 74 61 74 65 29  e(interp, state)
2350: 3b 0a 2b 09 20 20 20 20 72 65 74 75 72 6e 20 54  ;.+.    return T
2360: 63 6c 5f 52 65 73 74 6f 72 65 49 6e 74 65 72 70  cl_RestoreInterp
2370: 53 74 61 74 65 28 69 6e 74 65 72 70 2c 20 73 74  State(interp, st
2380: 61 74 65 29 3b 0a 20 09 7d 0a 20 20 20 20 20 7d  ate);. .}.     }
2390: 20 65 6c 73 65 20 7b 0a 20 09 6c 65 61 66 50 74   else {. .leafPt
23a0: 72 20 3d 20 64 69 63 74 50 74 72 3b 0a 40 40 20  r = dictPtr;.@@ 
23b0: 2d 33 30 31 34 2c 31 30 20 2b 33 30 31 34 2c 31  -3014,10 +3014,1
23c0: 30 20 40 40 0a 20 09 69 66 20 28 61 6c 6c 6f 63  0 @@. .if (alloc
23d0: 64 69 63 74 29 20 7b 0a 20 09 20 20 20 20 54 63  dict) {. .    Tc
23e0: 6c 44 65 63 72 52 65 66 43 6f 75 6e 74 28 64 69  lDecrRefCount(di
23f0: 63 74 50 74 72 29 3b 0a 20 09 7d 0a 2d 09 54 63  ctPtr);. .}.-.Tc
2400: 6c 44 69 73 63 61 72 64 49 6e 74 65 72 70 53 74  lDiscardInterpSt
2410: 61 74 65 28 73 74 61 74 65 29 3b 0a 2b 09 54 63  ate(state);.+.Tc
2420: 6c 5f 44 69 73 63 61 72 64 49 6e 74 65 72 70 53  l_DiscardInterpS
2430: 74 61 74 65 28 73 74 61 74 65 29 3b 0a 20 09 72  tate(state);. .r
2440: 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b  eturn TCL_ERROR;
2450: 0a 20 20 20 20 20 7d 0a 2d 20 20 20 20 72 65 74  .     }.-    ret
2460: 75 72 6e 20 54 63 6c 52 65 73 74 6f 72 65 49 6e  urn TclRestoreIn
2470: 74 65 72 70 53 74 61 74 65 28 69 6e 74 65 72 70  terpState(interp
2480: 2c 20 73 74 61 74 65 29 3b 0a 2b 20 20 20 20 72  , state);.+    r
2490: 65 74 75 72 6e 20 54 63 6c 5f 52 65 73 74 6f 72  eturn Tcl_Restor
24a0: 65 49 6e 74 65 72 70 53 74 61 74 65 28 69 6e 74  eInterpState(int
24b0: 65 72 70 2c 20 73 74 61 74 65 29 3b 0a 20 7d 0a  erp, state);. }.
24c0: 20 0c 0a 20 2f 2a 0a 49 6e 64 65 78 3a 20 67 65   .. /*.Index: ge
24d0: 6e 65 72 69 63 2f 74 63 6c 45 76 65 6e 74 2e 63  neric/tclEvent.c
24e0: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  .===============
24f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2500: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2510: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2520: 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f  ====.RCS file: /
2530: 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f  cvsroot/tcl/tcl/
2540: 67 65 6e 65 72 69 63 2f 74 63 6c 45 76 65 6e 74  generic/tclEvent
2550: 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20  .c,v.retrieving 
2560: 72 65 76 69 73 69 6f 6e 20 31 2e 35 30 0a 64 69  revision 1.50.di
2570: 66 66 20 2d 75 20 2d 72 31 2e 35 30 20 74 63 6c  ff -u -r1.50 tcl
2580: 45 76 65 6e 74 2e 63 0a 2d 2d 2d 20 67 65 6e 65  Event.c.--- gene
2590: 72 69 63 2f 74 63 6c 45 76 65 6e 74 2e 63 09 32  ric/tclEvent.c.2
25a0: 34 20 4f 63 74 20 32 30 30 34 20 32 32 3a 32 35  4 Oct 2004 22:25
25b0: 3a 31 32 20 2d 30 30 30 30 09 31 2e 35 30 0a 2b  :12 -0000.1.50.+
25c0: 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 45 76  ++ generic/tclEv
25d0: 65 6e 74 2e 63 09 34 20 4e 6f 76 20 32 30 30 34  ent.c.4 Nov 2004
25e0: 20 32 32 3a 33 31 3a 35 38 20 2d 30 30 30 30 0a   22:31:58 -0000.
25f0: 40 40 20 2d 32 30 2c 38 20 2b 32 30 2c 38 20 40  @@ -20,8 +20,8 @
2600: 40 0a 20 2f 2a 0a 20 20 2a 20 54 68 65 20 64 61  @. /*.  * The da
2610: 74 61 20 73 74 72 75 63 74 75 72 65 20 62 65 6c  ta structure bel
2620: 6f 77 20 69 73 20 75 73 65 64 20 74 6f 20 72 65  ow is used to re
2630: 70 6f 72 74 20 62 61 63 6b 67 72 6f 75 6e 64 20  port background 
2640: 65 72 72 6f 72 73 2e 20 20 4f 6e 65 0a 20 20 2a  errors.  One.  *
2650: 20 73 75 63 68 20 73 74 72 75 63 74 75 72 65 20   such structure 
2660: 69 73 20 61 6c 6c 6f 63 61 74 65 64 20 66 6f 72  is allocated for
2670: 20 65 61 63 68 20 65 72 72 6f 72 3b 20 20 69 74   each error;  it
2680: 20 68 6f 6c 64 73 20 69 6e 66 6f 72 6d 61 74 69   holds informati
2690: 6f 6e 0a 2d 20 2a 20 61 62 6f 75 74 20 74 68 65  on.- * about the
26a0: 20 69 6e 74 65 72 70 72 65 74 65 72 20 61 6e 64   interpreter and
26b0: 20 74 68 65 20 65 72 72 6f 72 20 75 6e 74 69 6c   the error until
26c0: 20 62 67 65 72 72 6f 72 20 63 61 6e 20 62 65 20   bgerror can be 
26d0: 69 6e 76 6f 6b 65 64 0a 2d 20 2a 20 6c 61 74 65  invoked.- * late
26e0: 72 20 61 73 20 61 6e 20 69 64 6c 65 20 68 61 6e  r as an idle han
26f0: 64 6c 65 72 2e 0a 2b 20 2a 20 61 62 6f 75 74 20  dler..+ * about 
2700: 74 68 65 20 69 6e 74 65 72 70 72 65 74 65 72 20  the interpreter 
2710: 61 6e 64 20 74 68 65 20 65 72 72 6f 72 20 75 6e  and the error un
2720: 74 69 6c 20 61 6e 20 69 64 6c 65 20 68 61 6e 64  til an idle hand
2730: 6c 65 72 20 63 6f 6d 6d 61 6e 64 0a 2b 20 2a 20  ler command.+ * 
2740: 63 61 6e 20 62 65 20 69 6e 76 6f 6b 65 64 2e 0a  can be invoked..
2750: 20 20 2a 2f 0a 20 0a 20 74 79 70 65 64 65 66 20    */. . typedef 
2760: 73 74 72 75 63 74 20 42 67 45 72 72 6f 72 20 7b  struct BgError {
2770: 0a 40 40 20 2d 34 32 2c 36 20 2b 34 32 2c 37 20  .@@ -42,6 +42,7 
2780: 40 40 0a 20 0a 20 74 79 70 65 64 65 66 20 73 74  @@. . typedef st
2790: 72 75 63 74 20 45 72 72 41 73 73 6f 63 44 61 74  ruct ErrAssocDat
27a0: 61 20 7b 0a 20 20 20 20 20 54 63 6c 5f 49 6e 74  a {.     Tcl_Int
27b0: 65 72 70 20 2a 69 6e 74 65 72 70 3b 09 09 2f 2a  erp *interp;../*
27c0: 20 49 6e 74 65 72 70 72 65 74 65 72 20 69 6e 20   Interpreter in 
27d0: 77 68 69 63 68 20 65 72 72 6f 72 20 6f 63 63 75  which error occu
27e0: 72 72 65 64 2e 20 2a 2f 0a 2b 20 20 20 20 54 63  rred. */.+    Tc
27f0: 6c 5f 4f 62 6a 20 2a 63 6d 64 50 72 65 66 69 78  l_Obj *cmdPrefix
2800: 3b 09 09 2f 2a 20 46 69 72 73 74 20 77 6f 72 64  ;../* First word
2810: 28 73 29 20 6f 66 20 74 68 65 20 68 61 6e 64 6c  (s) of the handl
2820: 65 72 20 63 6f 6d 6d 61 6e 64 20 2a 2f 0a 20 20  er command */.  
2830: 20 20 20 42 67 45 72 72 6f 72 20 2a 66 69 72 73     BgError *firs
2840: 74 42 67 50 74 72 3b 09 2f 2a 20 46 69 72 73 74  tBgPtr;./* First
2850: 20 69 6e 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20   in list of all 
2860: 62 61 63 6b 67 72 6f 75 6e 64 20 65 72 72 6f 72  background error
2870: 73 0a 20 09 09 09 09 20 2a 20 77 61 69 74 69 6e  s. .... * waitin
2880: 67 20 74 6f 20 62 65 20 70 72 6f 63 65 73 73 65  g to be processe
2890: 64 20 66 6f 72 20 74 68 69 73 0a 20 09 09 09 09  d for this. ....
28a0: 20 2a 20 69 6e 74 65 72 70 72 65 74 65 72 20 28   * interpreter (
28b0: 4e 55 4c 4c 20 69 66 20 6e 6f 6e 65 29 2e 20 2a  NULL if none). *
28c0: 2f 0a 40 40 20 2d 31 34 32 2c 39 20 2b 31 34 33  /.@@ -142,9 +143
28d0: 2c 39 20 40 40 0a 20 20 2a 09 4e 6f 6e 65 2e 0a  ,9 @@.  *.None..
28e0: 20 20 2a 0a 20 20 2a 20 53 69 64 65 20 65 66 66    *.  * Side eff
28f0: 65 63 74 73 3a 0a 2d 20 2a 09 54 68 65 20 63 6f  ects:.- *.The co
2900: 6d 6d 61 6e 64 20 22 62 67 65 72 72 6f 72 22 20  mmand "bgerror" 
2910: 69 73 20 69 6e 76 6f 6b 65 64 20 6c 61 74 65 72  is invoked later
2920: 20 61 73 20 61 6e 20 69 64 6c 65 20 68 61 6e 64   as an idle hand
2930: 6c 65 72 20 74 6f 0a 2d 20 2a 09 70 72 6f 63 65  ler to.- *.proce
2940: 73 73 20 74 68 65 20 65 72 72 6f 72 2c 20 70 61  ss the error, pa
2950: 73 73 69 6e 67 20 69 74 20 74 68 65 20 65 72 72  ssing it the err
2960: 6f 72 20 6d 65 73 73 61 67 65 2e 20 20 49 66 20  or message.  If 
2970: 74 68 61 74 20 66 61 69 6c 73 2c 0a 2d 20 2a 09  that fails,.- *.
2980: 74 68 65 6e 20 61 6e 20 65 72 72 6f 72 20 6d 65  then an error me
2990: 73 73 61 67 65 20 69 73 20 6f 75 74 70 75 74 20  ssage is output 
29a0: 6f 6e 20 73 74 64 65 72 72 2e 0a 2b 20 2a 09 41  on stderr..+ *.A
29b0: 20 68 61 6e 64 6c 65 72 20 63 6f 6d 6d 61 6e 64   handler command
29c0: 20 69 73 20 69 6e 76 6f 6b 65 64 20 6c 61 74 65   is invoked late
29d0: 72 20 61 73 20 61 6e 20 69 64 6c 65 20 68 61 6e  r as an idle han
29e0: 64 6c 65 72 20 74 6f 0a 2b 20 2a 09 70 72 6f 63  dler to.+ *.proc
29f0: 65 73 73 20 74 68 65 20 65 72 72 6f 72 2c 20 70  ess the error, p
2a00: 61 73 73 69 6e 67 20 69 74 20 74 68 65 20 69 6e  assing it the in
2a10: 74 65 72 70 20 72 65 73 75 6c 74 20 61 6e 64 20  terp result and 
2a20: 72 65 74 75 72 6e 0a 2b 20 2a 09 6f 70 74 69 6f  return.+ *.optio
2a30: 6e 73 2e 20 20 0a 20 20 2a 0a 20 20 2a 2d 2d 2d  ns.  .  *.  *---
2a40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2a50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2a60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2a70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2a80: 2d 2d 2d 0a 20 20 2a 2f 0a 40 40 20 2d 31 36 30  ---.  */.@@ -160
2a90: 2c 32 37 20 2b 31 36 31 2c 31 33 20 40 40 0a 20  ,27 +161,13 @@. 
2aa0: 20 20 20 20 65 72 72 50 74 72 20 3d 20 28 42 67      errPtr = (Bg
2ab0: 45 72 72 6f 72 20 2a 29 20 63 6b 61 6c 6c 6f 63  Error *) ckalloc
2ac0: 28 73 69 7a 65 6f 66 28 42 67 45 72 72 6f 72 29  (sizeof(BgError)
2ad0: 29 3b 0a 20 20 20 20 20 65 72 72 50 74 72 2d 3e  );.     errPtr->
2ae0: 65 72 72 6f 72 4d 73 67 20 3d 20 54 63 6c 5f 47  errorMsg = Tcl_G
2af0: 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74 65  etObjResult(inte
2b00: 72 70 29 3b 0a 20 20 20 20 20 54 63 6c 5f 49 6e  rp);.     Tcl_In
2b10: 63 72 52 65 66 43 6f 75 6e 74 28 65 72 72 50 74  crRefCount(errPt
2b20: 72 2d 3e 65 72 72 6f 72 4d 73 67 29 3b 0a 2d 20  r->errorMsg);.- 
2b30: 20 20 20 65 72 72 50 74 72 2d 3e 72 65 74 75 72     errPtr->retur
2b40: 6e 4f 70 74 73 20 3d 20 54 63 6c 47 65 74 52 65  nOpts = TclGetRe
2b50: 74 75 72 6e 4f 70 74 69 6f 6e 73 28 69 6e 74 65  turnOptions(inte
2b60: 72 70 2c 20 54 43 4c 5f 45 52 52 4f 52 29 3b 0a  rp, TCL_ERROR);.
2b70: 2b 20 20 20 20 65 72 72 50 74 72 2d 3e 72 65 74  +    errPtr->ret
2b80: 75 72 6e 4f 70 74 73 20 3d 20 54 63 6c 5f 47 65  urnOpts = Tcl_Ge
2b90: 74 52 65 74 75 72 6e 4f 70 74 69 6f 6e 73 28 69  tReturnOptions(i
2ba0: 6e 74 65 72 70 2c 20 54 43 4c 5f 45 52 52 4f 52  nterp, TCL_ERROR
2bb0: 29 3b 0a 20 20 20 20 20 54 63 6c 5f 49 6e 63 72  );.     Tcl_Incr
2bc0: 52 65 66 43 6f 75 6e 74 28 65 72 72 50 74 72 2d  RefCount(errPtr-
2bd0: 3e 72 65 74 75 72 6e 4f 70 74 73 29 3b 0a 20 20  >returnOpts);.  
2be0: 20 20 20 65 72 72 50 74 72 2d 3e 6e 65 78 74 50     errPtr->nextP
2bf0: 74 72 20 3d 20 4e 55 4c 4c 3b 0a 20 0a 2b 20 20  tr = NULL;. .+  
2c00: 20 20 28 76 6f 69 64 29 20 54 63 6c 47 65 74 42    (void) TclGetB
2c10: 67 45 72 72 6f 72 48 61 6e 64 6c 65 72 28 69 6e  gErrorHandler(in
2c20: 74 65 72 70 29 3b 0a 20 20 20 20 20 61 73 73 6f  terp);.     asso
2c30: 63 50 74 72 20 3d 20 28 45 72 72 41 73 73 6f 63  cPtr = (ErrAssoc
2c40: 44 61 74 61 20 2a 29 20 54 63 6c 5f 47 65 74 41  Data *) Tcl_GetA
2c50: 73 73 6f 63 44 61 74 61 28 69 6e 74 65 72 70 2c  ssocData(interp,
2c60: 20 22 74 63 6c 42 67 45 72 72 6f 72 22 2c 0a 20   "tclBgError",. 
2c70: 09 20 20 20 20 28 54 63 6c 5f 49 6e 74 65 72 70  .    (Tcl_Interp
2c80: 44 65 6c 65 74 65 50 72 6f 63 20 2a 2a 29 20 4e  DeleteProc **) N
2c90: 55 4c 4c 29 3b 0a 2d 20 20 20 20 69 66 20 28 61  ULL);.-    if (a
2ca0: 73 73 6f 63 50 74 72 20 3d 3d 20 4e 55 4c 4c 29  ssocPtr == NULL)
2cb0: 20 7b 0a 2d 0a 2d 09 2f 2a 0a 2d 09 20 2a 20 54   {.-.-./*.-. * T
2cc0: 68 69 73 20 69 73 20 74 68 65 20 66 69 72 73 74  his is the first
2cd0: 20 74 69 6d 65 20 61 20 62 61 63 6b 67 72 6f 75   time a backgrou
2ce0: 6e 64 20 65 72 72 6f 72 20 68 61 73 20 6f 63 63  nd error has occ
2cf0: 75 72 72 65 64 20 69 6e 0a 2d 09 20 2a 20 74 68  urred in.-. * th
2d00: 69 73 20 69 6e 74 65 72 70 72 65 74 65 72 2e 20  is interpreter. 
2d10: 20 43 72 65 61 74 65 20 61 73 73 6f 63 69 61 74   Create associat
2d20: 65 64 20 64 61 74 61 20 74 6f 20 6b 65 65 70 20  ed data to keep 
2d30: 74 72 61 63 6b 20 6f 66 0a 2d 09 20 2a 20 70 65  track of.-. * pe
2d40: 6e 64 69 6e 67 20 65 72 72 6f 72 20 72 65 70 6f  nding error repo
2d50: 72 74 73 2e 0a 2d 09 20 2a 2f 0a 2d 0a 2d 09 61  rts..-. */.-.-.a
2d60: 73 73 6f 63 50 74 72 20 3d 20 28 45 72 72 41 73  ssocPtr = (ErrAs
2d70: 73 6f 63 44 61 74 61 20 2a 29 20 63 6b 61 6c 6c  socData *) ckall
2d80: 6f 63 28 73 69 7a 65 6f 66 28 45 72 72 41 73 73  oc(sizeof(ErrAss
2d90: 6f 63 44 61 74 61 29 29 3b 0a 2d 09 61 73 73 6f  ocData));.-.asso
2da0: 63 50 74 72 2d 3e 69 6e 74 65 72 70 20 3d 20 69  cPtr->interp = i
2db0: 6e 74 65 72 70 3b 0a 2d 09 61 73 73 6f 63 50 74  nterp;.-.assocPt
2dc0: 72 2d 3e 66 69 72 73 74 42 67 50 74 72 20 3d 20  r->firstBgPtr = 
2dd0: 4e 55 4c 4c 3b 0a 2d 09 61 73 73 6f 63 50 74 72  NULL;.-.assocPtr
2de0: 2d 3e 6c 61 73 74 42 67 50 74 72 20 3d 20 4e 55  ->lastBgPtr = NU
2df0: 4c 4c 3b 0a 2d 09 54 63 6c 5f 53 65 74 41 73 73  LL;.-.Tcl_SetAss
2e00: 6f 63 44 61 74 61 28 69 6e 74 65 72 70 2c 20 22  ocData(interp, "
2e10: 74 63 6c 42 67 45 72 72 6f 72 22 2c 20 42 67 45  tclBgError", BgE
2e20: 72 72 6f 72 44 65 6c 65 74 65 50 72 6f 63 2c 0a  rrorDeleteProc,.
2e30: 2d 09 09 28 43 6c 69 65 6e 74 44 61 74 61 29 20  -..(ClientData) 
2e40: 61 73 73 6f 63 50 74 72 29 3b 0a 2d 20 20 20 20  assocPtr);.-    
2e50: 7d 0a 20 20 20 20 20 69 66 20 28 61 73 73 6f 63  }.     if (assoc
2e60: 50 74 72 2d 3e 66 69 72 73 74 42 67 50 74 72 20  Ptr->firstBgPtr 
2e70: 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 61 73 73  == NULL) {. .ass
2e80: 6f 63 50 74 72 2d 3e 66 69 72 73 74 42 67 50 74  ocPtr->firstBgPt
2e90: 72 20 3d 20 65 72 72 50 74 72 3b 0a 20 09 54 63  r = errPtr;. .Tc
2ea0: 6c 5f 44 6f 57 68 65 6e 49 64 6c 65 28 48 61 6e  l_DoWhenIdle(Han
2eb0: 64 6c 65 42 67 45 72 72 6f 72 73 2c 20 28 43 6c  dleBgErrors, (Cl
2ec0: 69 65 6e 74 44 61 74 61 29 20 61 73 73 6f 63 50  ientData) assocP
2ed0: 74 72 29 3b 0a 40 40 20 2d 32 30 33 2c 37 20 2b  tr);.@@ -203,7 +
2ee0: 31 39 30 2c 37 20 40 40 0a 20 20 2a 09 4e 6f 6e  190,7 @@.  *.Non
2ef0: 65 2e 0a 20 20 2a 0a 20 20 2a 20 53 69 64 65 20  e..  *.  * Side 
2f00: 65 66 66 65 63 74 73 3a 0a 2d 20 2a 09 44 65 70  effects:.- *.Dep
2f10: 65 6e 64 73 20 6f 6e 20 77 68 61 74 20 61 63 74  ends on what act
2f20: 69 6f 6e 73 20 22 62 67 65 72 72 6f 72 22 20 74  ions "bgerror" t
2f30: 61 6b 65 73 20 66 6f 72 20 74 68 65 20 65 72 72  akes for the err
2f40: 6f 72 73 2e 0a 2b 20 2a 09 44 65 70 65 6e 64 73  ors..+ *.Depends
2f50: 20 6f 6e 20 77 68 61 74 20 61 63 74 69 6f 6e 73   on what actions
2f60: 20 74 68 65 20 68 61 6e 64 6c 65 72 20 63 6f 6d   the handler com
2f70: 6d 61 6e 64 20 74 61 6b 65 73 20 66 6f 72 20 74  mand takes for t
2f80: 68 65 20 65 72 72 6f 72 73 2e 0a 20 20 2a 0a 20  he errors..  *. 
2f90: 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   *--------------
2fa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2fb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2fc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2fd0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a 2f 0a 40 40  --------.  */.@@
2fe0: 20 2d 32 31 35 2c 37 20 2b 32 30 32 2c 36 20 40   -215,7 +202,6 @
2ff0: 40 0a 20 20 20 20 20 45 72 72 41 73 73 6f 63 44  @.     ErrAssocD
3000: 61 74 61 20 2a 61 73 73 6f 63 50 74 72 20 3d 20  ata *assocPtr = 
3010: 28 45 72 72 41 73 73 6f 63 44 61 74 61 20 2a 29  (ErrAssocData *)
3020: 20 63 6c 69 65 6e 74 44 61 74 61 3b 0a 20 20 20   clientData;.   
3030: 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e    Tcl_Interp *in
3040: 74 65 72 70 20 3d 20 61 73 73 6f 63 50 74 72 2d  terp = assocPtr-
3050: 3e 69 6e 74 65 72 70 3b 0a 20 20 20 20 20 42 67  >interp;.     Bg
3060: 45 72 72 6f 72 20 2a 65 72 72 50 74 72 3b 0a 2d  Error *errPtr;.-
3070: 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a      Tcl_Obj *obj
3080: 76 5b 32 5d 3b 0a 20 0a 20 20 20 20 20 2f 2a 0a  v[2];. .     /*.
3090: 20 20 20 20 20 20 2a 20 4e 6f 74 20 62 6f 74 68        * Not both
30a0: 65 72 69 6e 67 20 74 6f 20 73 61 76 65 2f 72 65  ering to save/re
30b0: 73 74 6f 72 65 20 74 68 65 20 69 6e 74 65 72 70  store the interp
30c0: 20 73 74 61 74 65 2e 20 20 41 73 73 75 6d 65 20   state.  Assume 
30d0: 74 68 61 74 0a 40 40 20 2d 32 32 34 2c 31 30 39  that.@@ -224,109
30e0: 20 2b 32 31 30 2c 32 39 20 40 40 0a 20 20 20 20   +210,29 @@.    
30f0: 20 20 2a 20 54 63 6c 5f 44 6f 4f 6e 65 45 76 65    * Tcl_DoOneEve
3100: 6e 74 28 29 20 74 68 61 74 20 63 6f 75 6c 64 20  nt() that could 
3110: 6c 65 61 64 20 75 73 20 68 65 72 65 2e 0a 20 20  lead us here..  
3120: 20 20 20 20 2a 2f 0a 20 0a 2d 20 20 20 20 6f 62      */. .-    ob
3130: 6a 76 5b 30 5d 20 3d 20 54 63 6c 5f 4e 65 77 53  jv[0] = Tcl_NewS
3140: 74 72 69 6e 67 4f 62 6a 28 22 62 67 65 72 72 6f  tringObj("bgerro
3150: 72 22 2c 20 2d 31 29 3b 0a 2d 20 20 20 20 54 63  r", -1);.-    Tc
3160: 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 6f  l_IncrRefCount(o
3170: 62 6a 76 5b 30 5d 29 3b 0a 2d 0a 20 20 20 20 20  bjv[0]);.-.     
3180: 54 63 6c 5f 50 72 65 73 65 72 76 65 28 28 43 6c  Tcl_Preserve((Cl
3190: 69 65 6e 74 44 61 74 61 29 20 61 73 73 6f 63 50  ientData) assocP
31a0: 74 72 29 3b 0a 20 20 20 20 20 54 63 6c 5f 50 72  tr);.     Tcl_Pr
31b0: 65 73 65 72 76 65 28 28 43 6c 69 65 6e 74 44 61  eserve((ClientDa
31c0: 74 61 29 20 69 6e 74 65 72 70 29 3b 0a 20 20 20  ta) interp);.   
31d0: 20 20 77 68 69 6c 65 20 28 61 73 73 6f 63 50 74    while (assocPt
31e0: 72 2d 3e 66 69 72 73 74 42 67 50 74 72 20 21 3d  r->firstBgPtr !=
31f0: 20 4e 55 4c 4c 29 20 7b 0a 2d 09 69 6e 74 20 63   NULL) {.-.int c
3200: 6f 64 65 3b 0a 2d 09 54 63 6c 5f 4f 62 6a 20 2a  ode;.-.Tcl_Obj *
3210: 6b 65 79 50 74 72 2c 20 2a 76 61 6c 75 65 50 74  keyPtr, *valuePt
3220: 72 3b 0a 2d 09 65 72 72 50 74 72 20 3d 20 61 73  r;.-.errPtr = as
3230: 73 6f 63 50 74 72 2d 3e 66 69 72 73 74 42 67 50  socPtr->firstBgP
3240: 74 72 3b 0a 2d 0a 2d 09 2f 2a 0a 2d 09 20 2a 20  tr;.-.-./*.-. * 
3250: 52 65 73 74 6f 72 65 20 69 6d 70 6f 72 74 61 6e  Restore importan
3260: 74 20 73 74 61 74 65 20 76 61 72 69 61 62 6c 65  t state variable
3270: 73 20 74 6f 20 77 68 61 74 20 74 68 65 79 20 77  s to what they w
3280: 65 72 65 20 61 74 0a 2d 09 20 2a 20 74 68 65 20  ere at.-. * the 
3290: 74 69 6d 65 20 74 68 65 20 65 72 72 6f 72 20 6f  time the error o
32a0: 63 63 75 72 72 65 64 2e 0a 2d 09 20 2a 0a 2d 09  ccurred..-. *.-.
32b0: 20 2a 20 4e 65 65 64 20 74 6f 20 73 65 74 20 74   * Need to set t
32c0: 68 65 20 76 61 72 69 61 62 6c 65 73 2c 20 6e 6f  he variables, no
32d0: 74 20 74 68 65 20 69 6e 74 65 72 70 20 66 69 65  t the interp fie
32e0: 6c 64 73 2c 20 62 65 63 61 75 73 65 0a 2d 09 20  lds, because.-. 
32f0: 2a 20 54 63 6c 5f 45 76 61 6c 4f 62 6a 76 28 29  * Tcl_EvalObjv()
3300: 20 63 61 6c 6c 73 20 54 63 6c 5f 52 65 73 65 74   calls Tcl_Reset
3310: 52 65 73 75 6c 74 28 29 20 77 68 69 63 68 20 77  Result() which w
3320: 6f 75 6c 64 20 64 65 73 74 72 6f 79 0a 2d 09 20  ould destroy.-. 
3330: 2a 20 61 6e 79 74 68 69 6e 67 20 77 65 20 77 72  * anything we wr
3340: 69 74 65 20 74 6f 20 74 68 65 20 69 6e 74 65 72  ite to the inter
3350: 70 20 66 69 65 6c 64 73 2e 0a 2d 09 20 2a 2f 0a  p fields..-. */.
3360: 2d 0a 2d 09 6b 65 79 50 74 72 20 3d 20 54 63 6c  -.-.keyPtr = Tcl
3370: 5f 4e 65 77 53 74 72 69 6e 67 4f 62 6a 28 22 2d  _NewStringObj("-
3380: 65 72 72 6f 72 63 6f 64 65 22 2c 20 2d 31 29 3b  errorcode", -1);
3390: 0a 2d 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f  .-.Tcl_IncrRefCo
33a0: 75 6e 74 28 6b 65 79 50 74 72 29 3b 0a 2d 09 54  unt(keyPtr);.-.T
33b0: 63 6c 5f 44 69 63 74 4f 62 6a 47 65 74 28 4e 55  cl_DictObjGet(NU
33c0: 4c 4c 2c 20 65 72 72 50 74 72 2d 3e 72 65 74 75  LL, errPtr->retu
33d0: 72 6e 4f 70 74 73 2c 20 6b 65 79 50 74 72 2c 20  rnOpts, keyPtr, 
33e0: 26 76 61 6c 75 65 50 74 72 29 3b 0a 2d 09 54 63  &valuePtr);.-.Tc
33f0: 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6b  l_DecrRefCount(k
3400: 65 79 50 74 72 29 3b 0a 2d 09 69 66 20 28 76 61  eyPtr);.-.if (va
3410: 6c 75 65 50 74 72 29 20 7b 0a 2d 09 20 20 20 20  luePtr) {.-.    
3420: 54 63 6c 5f 53 65 74 56 61 72 32 45 78 28 69 6e  Tcl_SetVar2Ex(in
3430: 74 65 72 70 2c 20 22 65 72 72 6f 72 43 6f 64 65  terp, "errorCode
3440: 22 2c 20 4e 55 4c 4c 2c 0a 2d 09 09 20 20 20 20  ", NULL,.-..    
3450: 76 61 6c 75 65 50 74 72 2c 20 54 43 4c 5f 47 4c  valuePtr, TCL_GL
3460: 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 2d 09 7d 0a  OBAL_ONLY);.-.}.
3470: 2d 09 6b 65 79 50 74 72 20 3d 20 54 63 6c 5f 4e  -.keyPtr = Tcl_N
3480: 65 77 53 74 72 69 6e 67 4f 62 6a 28 22 2d 65 72  ewStringObj("-er
3490: 72 6f 72 69 6e 66 6f 22 2c 20 2d 31 29 3b 0a 2d  rorinfo", -1);.-
34a0: 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e  .Tcl_IncrRefCoun
34b0: 74 28 6b 65 79 50 74 72 29 3b 0a 2d 09 54 63 6c  t(keyPtr);.-.Tcl
34c0: 5f 44 69 63 74 4f 62 6a 47 65 74 28 4e 55 4c 4c  _DictObjGet(NULL
34d0: 2c 20 65 72 72 50 74 72 2d 3e 72 65 74 75 72 6e  , errPtr->return
34e0: 4f 70 74 73 2c 20 6b 65 79 50 74 72 2c 20 26 76  Opts, keyPtr, &v
34f0: 61 6c 75 65 50 74 72 29 3b 0a 2d 09 54 63 6c 5f  aluePtr);.-.Tcl_
3500: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6b 65 79  DecrRefCount(key
3510: 50 74 72 29 3b 0a 2d 09 69 66 20 28 76 61 6c 75  Ptr);.-.if (valu
3520: 65 50 74 72 29 20 7b 0a 2d 09 20 20 20 20 54 63  ePtr) {.-.    Tc
3530: 6c 5f 53 65 74 56 61 72 32 45 78 28 69 6e 74 65  l_SetVar2Ex(inte
3540: 72 70 2c 20 22 65 72 72 6f 72 49 6e 66 6f 22 2c  rp, "errorInfo",
3550: 20 4e 55 4c 4c 2c 0a 2d 09 09 20 20 20 20 76 61   NULL,.-..    va
3560: 6c 75 65 50 74 72 2c 20 54 43 4c 5f 47 4c 4f 42  luePtr, TCL_GLOB
3570: 41 4c 5f 4f 4e 4c 59 29 3b 0a 2d 09 7d 0a 2b 09  AL_ONLY);.-.}.+.
3580: 69 6e 74 20 63 6f 64 65 2c 20 70 72 65 66 69 78  int code, prefix
3590: 4f 62 6a 63 3b 0a 2b 09 54 63 6c 5f 4f 62 6a 20  Objc;.+.Tcl_Obj 
35a0: 2a 2a 70 72 65 66 69 78 4f 62 6a 76 2c 20 2a 2a  **prefixObjv, **
35b0: 74 65 6d 70 4f 62 6a 76 3b 0a 20 0a 2d 09 2f 2a  tempObjv;. .-./*
35c0: 0a 2d 09 20 2a 20 43 72 65 61 74 65 20 61 6e 64  .-. * Create and
35d0: 20 69 6e 76 6f 6b 65 20 74 68 65 20 62 67 65 72   invoke the bger
35e0: 72 6f 72 20 63 6f 6d 6d 61 6e 64 2e 0a 2d 09 20  ror command..-. 
35f0: 2a 2f 0a 2b 09 65 72 72 50 74 72 20 3d 20 61 73  */.+.errPtr = as
3600: 73 6f 63 50 74 72 2d 3e 66 69 72 73 74 42 67 50  socPtr->firstBgP
3610: 74 72 3b 0a 20 0a 2d 09 6f 62 6a 76 5b 31 5d 20  tr;. .-.objv[1] 
3620: 3d 20 65 72 72 50 74 72 2d 3e 65 72 72 6f 72 4d  = errPtr->errorM
3630: 73 67 3b 0a 2d 09 54 63 6c 5f 49 6e 63 72 52 65  sg;.-.Tcl_IncrRe
3640: 66 43 6f 75 6e 74 28 6f 62 6a 76 5b 31 5d 29 3b  fCount(objv[1]);
3650: 0a 2d 09 0a 2b 09 54 63 6c 5f 49 6e 63 72 52 65  .-..+.Tcl_IncrRe
3660: 66 43 6f 75 6e 74 28 61 73 73 6f 63 50 74 72 2d  fCount(assocPtr-
3670: 3e 63 6d 64 50 72 65 66 69 78 29 3b 0a 2b 09 54  >cmdPrefix);.+.T
3680: 63 6c 5f 4c 69 73 74 4f 62 6a 47 65 74 45 6c 65  cl_ListObjGetEle
3690: 6d 65 6e 74 73 28 4e 55 4c 4c 2c 20 61 73 73 6f  ments(NULL, asso
36a0: 63 50 74 72 2d 3e 63 6d 64 50 72 65 66 69 78 2c  cPtr->cmdPrefix,
36b0: 0a 2b 09 09 26 70 72 65 66 69 78 4f 62 6a 63 2c  .+..&prefixObjc,
36c0: 20 26 70 72 65 66 69 78 4f 62 6a 76 29 3b 0a 2b   &prefixObjv);.+
36d0: 09 74 65 6d 70 4f 62 6a 76 20 3d 20 28 54 63 6c  .tempObjv = (Tcl
36e0: 5f 4f 62 6a 20 2a 2a 29 20 63 6b 61 6c 6c 6f 63  _Obj **) ckalloc
36f0: 28 28 70 72 65 66 69 78 4f 62 6a 63 2b 32 29 2a  ((prefixObjc+2)*
3700: 73 69 7a 65 6f 66 28 54 63 6c 5f 4f 62 6a 20 2a  sizeof(Tcl_Obj *
3710: 29 29 3b 0a 2b 09 6d 65 6d 63 70 79 28 74 65 6d  ));.+.memcpy(tem
3720: 70 4f 62 6a 76 2c 20 70 72 65 66 69 78 4f 62 6a  pObjv, prefixObj
3730: 76 2c 20 70 72 65 66 69 78 4f 62 6a 63 2a 73 69  v, prefixObjc*si
3740: 7a 65 6f 66 28 54 63 6c 5f 4f 62 6a 20 2a 29 29  zeof(Tcl_Obj *))
3750: 3b 0a 2b 09 74 65 6d 70 4f 62 6a 76 5b 70 72 65  ;.+.tempObjv[pre
3760: 66 69 78 4f 62 6a 63 5d 20 3d 20 65 72 72 50 74  fixObjc] = errPt
3770: 72 2d 3e 65 72 72 6f 72 4d 73 67 3b 0a 2b 09 74  r->errorMsg;.+.t
3780: 65 6d 70 4f 62 6a 76 5b 70 72 65 66 69 78 4f 62  empObjv[prefixOb
3790: 6a 63 2b 31 5d 20 3d 20 65 72 72 50 74 72 2d 3e  jc+1] = errPtr->
37a0: 72 65 74 75 72 6e 4f 70 74 73 3b 0a 20 09 54 63  returnOpts;. .Tc
37b0: 6c 5f 41 6c 6c 6f 77 45 78 63 65 70 74 69 6f 6e  l_AllowException
37c0: 73 28 69 6e 74 65 72 70 29 3b 0a 2d 09 63 6f 64  s(interp);.-.cod
37d0: 65 20 3d 20 54 63 6c 5f 45 76 61 6c 4f 62 6a 76  e = Tcl_EvalObjv
37e0: 28 69 6e 74 65 72 70 2c 20 32 2c 20 6f 62 6a 76  (interp, 2, objv
37f0: 2c 20 54 43 4c 5f 45 56 41 4c 5f 47 4c 4f 42 41  , TCL_EVAL_GLOBA
3800: 4c 29 3b 0a 2d 09 69 66 20 28 63 6f 64 65 20 3d  L);.-.if (code =
3810: 3d 20 54 43 4c 5f 45 52 52 4f 52 29 20 7b 0a 2d  = TCL_ERROR) {.-
3820: 0a 2d 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  .-            /*
3830: 0a 2d 20 20 20 20 20 20 20 20 20 20 20 20 20 2a  .-             *
3840: 20 49 66 20 74 68 65 20 69 6e 74 65 72 70 72 65   If the interpre
3850: 74 65 72 20 69 73 20 73 61 66 65 2c 20 77 65 20  ter is safe, we 
3860: 6c 6f 6f 6b 20 66 6f 72 20 61 20 68 69 64 64 65  look for a hidde
3870: 6e 20 63 6f 6d 6d 61 6e 64 0a 2d 20 20 20 20 20  n command.-     
3880: 20 20 20 20 20 20 20 20 2a 20 6e 61 6d 65 64 20          * named 
3890: 22 62 67 65 72 72 6f 72 22 20 61 6e 64 20 63 61  "bgerror" and ca
38a0: 6c 6c 20 74 68 61 74 20 77 69 74 68 20 74 68 65  ll that with the
38b0: 20 65 72 72 6f 72 20 69 6e 66 6f 72 6d 61 74 69   error informati
38c0: 6f 6e 2e 0a 2d 20 20 20 20 20 20 20 20 20 20 20  on..-           
38d0: 20 20 2a 20 4f 74 68 65 72 77 69 73 65 2c 20 73    * Otherwise, s
38e0: 69 6d 70 6c 79 20 69 67 6e 6f 72 65 20 74 68 65  imply ignore the
38f0: 20 65 72 72 6f 72 2e 20 54 68 65 20 72 61 74 69   error. The rati
3900: 6f 6e 61 6c 65 20 69 73 20 74 68 61 74 0a 2d 20  onale is that.- 
3910: 20 20 20 20 20 20 20 20 20 20 20 20 2a 20 74 68              * th
3920: 69 73 20 63 6f 75 6c 64 20 62 65 20 61 6e 20 65  is could be an e
3930: 72 72 6f 72 20 63 61 75 73 65 64 20 62 79 20 61  rror caused by a
3940: 20 6d 61 6c 69 63 69 6f 75 73 20 61 70 70 6c 65   malicious apple
3950: 74 20 74 72 79 69 6e 67 0a 2d 20 20 20 20 20 20  t trying.-      
3960: 20 20 20 20 20 20 20 2a 20 74 6f 20 63 61 75 73         * to caus
3970: 65 20 61 6e 20 69 6e 66 69 6e 69 74 65 20 62 61  e an infinite ba
3980: 72 72 61 67 65 20 6f 66 20 65 72 72 6f 72 20 6d  rrage of error m
3990: 65 73 73 61 67 65 73 2e 20 54 68 65 20 68 69 64  essages. The hid
39a0: 64 65 6e 0a 2d 20 20 20 20 20 20 20 20 20 20 20  den.-           
39b0: 20 20 2a 20 22 62 67 65 72 72 6f 72 22 20 63 6f    * "bgerror" co
39c0: 6d 6d 61 6e 64 20 63 61 6e 20 62 65 20 75 73 65  mmand can be use
39d0: 64 20 62 79 20 61 20 73 65 63 75 72 69 74 79 20  d by a security 
39e0: 70 6f 6c 69 63 79 20 74 6f 0a 2d 20 20 20 20 20  policy to.-     
39f0: 20 20 20 20 20 20 20 20 2a 20 69 6e 74 65 72 70          * interp
3a00: 6f 73 65 20 6f 6e 20 73 75 63 68 20 61 74 74 61  ose on such atta
3a10: 63 6b 73 20 61 6e 64 20 65 2e 67 2e 20 6b 69 6c  cks and e.g. kil
3a20: 6c 20 74 68 65 20 61 70 70 6c 65 74 20 61 66 74  l the applet aft
3a30: 65 72 20 61 0a 2d 20 20 20 20 20 20 20 20 20 20  er a.-          
3a40: 20 20 20 2a 20 66 65 77 20 61 74 74 65 6d 70 74     * few attempt
3a50: 73 2e 0a 2d 20 20 20 20 20 20 20 20 20 20 20 20  s..-            
3a60: 20 2a 2f 0a 2d 0a 2d 20 20 20 20 20 20 20 20 20   */.-.-         
3a70: 20 20 20 69 66 20 28 54 63 6c 5f 49 73 53 61 66     if (Tcl_IsSaf
3a80: 65 28 69 6e 74 65 72 70 29 29 20 7b 0a 2d 09 09  e(interp)) {.-..
3a90: 54 63 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28  Tcl_ResetResult(
3aa0: 69 6e 74 65 72 70 29 3b 0a 2d 20 20 20 20 20 20  interp);.-      
3ab0: 20 20 20 20 20 20 20 20 20 20 54 63 6c 4f 62 6a            TclObj
3ac0: 49 6e 76 6f 6b 65 28 69 6e 74 65 72 70 2c 20 32  Invoke(interp, 2
3ad0: 2c 20 6f 62 6a 76 2c 20 54 43 4c 5f 49 4e 56 4f  , objv, TCL_INVO
3ae0: 4b 45 5f 48 49 44 44 45 4e 29 3b 0a 2d 20 20 20  KE_HIDDEN);.-   
3af0: 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20           } else 
3b00: 7b 0a 2d 0a 2d 09 09 2f 2a 0a 2d 09 09 20 2a 20  {.-.-../*.-.. * 
3b10: 57 65 20 68 61 76 65 20 74 6f 20 67 65 74 20 74  We have to get t
3b20: 68 65 20 65 72 72 6f 72 20 6f 75 74 70 75 74 20  he error output 
3b30: 63 68 61 6e 6e 65 6c 20 61 74 20 74 68 65 20 6c  channel at the l
3b40: 61 74 65 73 74 0a 2d 09 09 20 2a 20 70 6f 73 73  atest.-.. * poss
3b50: 69 62 6c 65 20 74 69 6d 65 2c 20 62 65 63 61 75  ible time, becau
3b60: 73 65 20 74 68 65 20 65 76 61 6c 20 28 61 62 6f  se the eval (abo
3b70: 76 65 29 20 6d 69 67 68 74 20 68 61 76 65 0a 2d  ve) might have.-
3b80: 09 09 20 2a 20 63 68 61 6e 67 65 64 20 74 68 65  .. * changed the
3b90: 20 63 68 61 6e 6e 65 6c 2e 0a 2d 09 09 20 2a 2f   channel..-.. */
3ba0: 0a 2d 20 20 20 20 20 20 20 20 20 20 20 20 0a 2d  .-            .-
3bb0: 09 09 54 63 6c 5f 43 68 61 6e 6e 65 6c 20 65 72  ..Tcl_Channel er
3bc0: 72 43 68 61 6e 6e 65 6c 20 3d 20 54 63 6c 5f 47  rChannel = Tcl_G
3bd0: 65 74 53 74 64 43 68 61 6e 6e 65 6c 28 54 43 4c  etStdChannel(TCL
3be0: 5f 53 54 44 45 52 52 29 3b 0a 2d 09 09 69 66 20  _STDERR);.-..if 
3bf0: 28 65 72 72 43 68 61 6e 6e 65 6c 20 21 3d 20 28  (errChannel != (
3c00: 54 63 6c 5f 43 68 61 6e 6e 65 6c 29 20 4e 55 4c  Tcl_Channel) NUL
3c10: 4c 29 20 7b 0a 2d 09 09 20 20 20 20 54 63 6c 5f  L) {.-..    Tcl_
3c20: 4f 62 6a 20 2a 72 65 73 75 6c 74 50 74 72 20 3d  Obj *resultPtr =
3c30: 20 54 63 6c 5f 47 65 74 4f 62 6a 52 65 73 75 6c   Tcl_GetObjResul
3c40: 74 28 69 6e 74 65 72 70 29 3b 0a 2d 0a 2d 09 09  t(interp);.-.-..
3c50: 20 20 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43      Tcl_IncrRefC
3c60: 6f 75 6e 74 28 72 65 73 75 6c 74 50 74 72 29 3b  ount(resultPtr);
3c70: 0a 2d 09 09 20 20 20 20 69 66 20 28 54 63 6c 5f  .-..    if (Tcl_
3c80: 46 69 6e 64 43 6f 6d 6d 61 6e 64 28 69 6e 74 65  FindCommand(inte
3c90: 72 70 2c 20 22 62 67 65 72 72 6f 72 22 2c 0a 2d  rp, "bgerror",.-
3ca0: 09 09 09 20 20 20 20 4e 55 4c 4c 2c 20 54 43 4c  ...    NULL, TCL
3cb0: 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 20 3d 3d  _GLOBAL_ONLY) ==
3cc0: 20 4e 55 4c 4c 29 20 7b 0a 2d 09 09 09 69 66 20   NULL) {.-...if 
3cd0: 28 76 61 6c 75 65 50 74 72 29 20 7b 0a 2d 09 09  (valuePtr) {.-..
3ce0: 09 20 20 20 20 54 63 6c 5f 57 72 69 74 65 4f 62  .    Tcl_WriteOb
3cf0: 6a 28 65 72 72 43 68 61 6e 6e 65 6c 2c 20 76 61  j(errChannel, va
3d00: 6c 75 65 50 74 72 29 3b 0a 2d 09 09 09 7d 0a 2d  luePtr);.-...}.-
3d10: 09 09 09 54 63 6c 5f 57 72 69 74 65 43 68 61 72  ...Tcl_WriteChar
3d20: 73 28 65 72 72 43 68 61 6e 6e 65 6c 2c 20 22 5c  s(errChannel, "\
3d30: 6e 22 2c 20 2d 31 29 3b 0a 2d 20 20 20 20 20 20  n", -1);.-      
3d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20                } 
3d50: 65 6c 73 65 20 7b 0a 2d 09 09 09 54 63 6c 5f 57  else {.-...Tcl_W
3d60: 72 69 74 65 43 68 61 72 73 28 65 72 72 43 68 61  riteChars(errCha
3d70: 6e 6e 65 6c 2c 0a 2d 09 09 09 09 22 62 67 65 72  nnel,.-...."bger
3d80: 72 6f 72 20 66 61 69 6c 65 64 20 74 6f 20 68 61  ror failed to ha
3d90: 6e 64 6c 65 20 62 61 63 6b 67 72 6f 75 6e 64 20  ndle background 
3da0: 65 72 72 6f 72 2e 5c 6e 22 2c 0a 2d 09 09 09 09  error.\n",.-....
3db0: 2d 31 29 3b 0a 2d 09 09 09 54 63 6c 5f 57 72 69  -1);.-...Tcl_Wri
3dc0: 74 65 43 68 61 72 73 28 65 72 72 43 68 61 6e 6e  teChars(errChann
3dd0: 65 6c 2c 20 22 20 20 20 20 4f 72 69 67 69 6e 61  el, "    Origina
3de0: 6c 20 65 72 72 6f 72 3a 20 22 2c 20 2d 31 29 3b  l error: ", -1);
3df0: 0a 2d 09 09 09 54 63 6c 5f 57 72 69 74 65 4f 62  .-...Tcl_WriteOb
3e00: 6a 28 65 72 72 43 68 61 6e 6e 65 6c 2c 20 65 72  j(errChannel, er
3e10: 72 50 74 72 2d 3e 65 72 72 6f 72 4d 73 67 29 3b  rPtr->errorMsg);
3e20: 0a 2d 09 09 09 54 63 6c 5f 57 72 69 74 65 43 68  .-...Tcl_WriteCh
3e30: 61 72 73 28 65 72 72 43 68 61 6e 6e 65 6c 2c 20  ars(errChannel, 
3e40: 22 5c 6e 22 2c 20 2d 31 29 3b 0a 2d 09 09 09 54  "\n", -1);.-...T
3e50: 63 6c 5f 57 72 69 74 65 43 68 61 72 73 28 65 72  cl_WriteChars(er
3e60: 72 43 68 61 6e 6e 65 6c 2c 0a 2d 09 09 09 09 22  rChannel,.-...."
3e70: 20 20 20 20 45 72 72 6f 72 20 69 6e 20 62 67 65      Error in bge
3e80: 72 72 6f 72 3a 20 22 2c 20 2d 31 29 3b 0a 2d 09  rror: ", -1);.-.
3e90: 09 09 54 63 6c 5f 57 72 69 74 65 4f 62 6a 28 65  ..Tcl_WriteObj(e
3ea0: 72 72 43 68 61 6e 6e 65 6c 2c 20 72 65 73 75 6c  rrChannel, resul
3eb0: 74 50 74 72 29 3b 0a 2d 09 09 09 54 63 6c 5f 57  tPtr);.-...Tcl_W
3ec0: 72 69 74 65 43 68 61 72 73 28 65 72 72 43 68 61  riteChars(errCha
3ed0: 6e 6e 65 6c 2c 20 22 5c 6e 22 2c 20 2d 31 29 3b  nnel, "\n", -1);
3ee0: 0a 2d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .-              
3ef0: 20 20 20 20 20 20 7d 0a 2d 09 09 20 20 20 20 54        }.-..    T
3f00: 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28  cl_DecrRefCount(
3f10: 72 65 73 75 6c 74 50 74 72 29 3b 0a 2d 20 20 20  resultPtr);.-   
3f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f30: 20 54 63 6c 5f 46 6c 75 73 68 28 65 72 72 43 68   Tcl_Flush(errCh
3f40: 61 6e 6e 65 6c 29 3b 0a 2d 09 09 7d 0a 2d 09 20  annel);.-..}.-. 
3f50: 20 20 20 7d 0a 2d 09 7d 0a 2b 09 63 6f 64 65 20     }.-.}.+.code 
3f60: 3d 20 54 63 6c 5f 45 76 61 6c 4f 62 6a 76 28 69  = Tcl_EvalObjv(i
3f70: 6e 74 65 72 70 2c 20 70 72 65 66 69 78 4f 62 6a  nterp, prefixObj
3f80: 63 2b 32 2c 20 74 65 6d 70 4f 62 6a 76 2c 20 54  c+2, tempObjv, T
3f90: 43 4c 5f 45 56 41 4c 5f 47 4c 4f 42 41 4c 29 3b  CL_EVAL_GLOBAL);
3fa0: 0a 20 0a 20 09 2f 2a 0a 20 09 20 2a 20 44 69 73  . . ./*. . * Dis
3fb0: 63 61 72 64 20 74 68 65 20 63 6f 6d 6d 61 6e 64  card the command
3fc0: 20 61 6e 64 20 74 68 65 20 69 6e 66 6f 72 6d 61   and the informa
3fd0: 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 65  tion about the e
3fe0: 72 72 6f 72 20 72 65 70 6f 72 74 2e 0a 20 09 20  rror report.. . 
3ff0: 2a 2f 0a 20 0a 2d 09 54 63 6c 5f 44 65 63 72 52  */. .-.Tcl_DecrR
4000: 65 66 43 6f 75 6e 74 28 6f 62 6a 76 5b 31 5d 29  efCount(objv[1])
4010: 3b 0a 2b 09 54 63 6c 5f 44 65 63 72 52 65 66 43  ;.+.Tcl_DecrRefC
4020: 6f 75 6e 74 28 61 73 73 6f 63 50 74 72 2d 3e 63  ount(assocPtr->c
4030: 6d 64 50 72 65 66 69 78 29 3b 0a 20 09 54 63 6c  mdPrefix);. .Tcl
4040: 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 65 72  _DecrRefCount(er
4050: 72 50 74 72 2d 3e 65 72 72 6f 72 4d 73 67 29 3b  rPtr->errorMsg);
4060: 0a 20 09 54 63 6c 5f 44 65 63 72 52 65 66 43 6f  . .Tcl_DecrRefCo
4070: 75 6e 74 28 65 72 72 50 74 72 2d 3e 72 65 74 75  unt(errPtr->retu
4080: 72 6e 4f 70 74 73 29 3b 0a 20 09 61 73 73 6f 63  rnOpts);. .assoc
4090: 50 74 72 2d 3e 66 69 72 73 74 42 67 50 74 72 20  Ptr->firstBgPtr 
40a0: 3d 20 65 72 72 50 74 72 2d 3e 6e 65 78 74 50 74  = errPtr->nextPt
40b0: 72 3b 0a 40 40 20 2d 33 33 39 2c 39 20 2b 32 34  r;.@@ -339,9 +24
40c0: 35 2c 32 39 20 40 40 0a 20 09 20 20 20 20 20 2a  5,29 @@. .     *
40d0: 2f 0a 20 09 20 20 20 20 62 72 65 61 6b 3b 0a 20  /. .    break;. 
40e0: 09 7d 0a 2d 20 20 20 20 20 20 20 20 0a 2b 09 69  .}.-        .+.i
40f0: 66 20 28 28 63 6f 64 65 20 3d 3d 20 54 43 4c 5f  f ((code == TCL_
4100: 45 52 52 4f 52 29 20 26 26 20 21 54 63 6c 5f 49  ERROR) && !Tcl_I
4110: 73 53 61 66 65 28 69 6e 74 65 72 70 29 29 20 7b  sSafe(interp)) {
4120: 0a 2b 09 20 20 20 20 54 63 6c 5f 43 68 61 6e 6e  .+.    Tcl_Chann
4130: 65 6c 20 65 72 72 43 68 61 6e 6e 65 6c 20 3d 20  el errChannel = 
4140: 54 63 6c 5f 47 65 74 53 74 64 43 68 61 6e 6e 65  Tcl_GetStdChanne
4150: 6c 28 54 43 4c 5f 53 54 44 45 52 52 29 3b 0a 2b  l(TCL_STDERR);.+
4160: 09 20 20 20 20 69 66 20 28 65 72 72 43 68 61 6e  .    if (errChan
4170: 6e 65 6c 20 21 3d 20 28 54 63 6c 5f 43 68 61 6e  nel != (Tcl_Chan
4180: 6e 65 6c 29 20 4e 55 4c 4c 29 20 7b 0a 2b 09 09  nel) NULL) {.+..
4190: 54 63 6c 5f 4f 62 6a 20 2a 6f 70 74 69 6f 6e 73  Tcl_Obj *options
41a0: 20 3d 20 54 63 6c 5f 47 65 74 52 65 74 75 72 6e   = Tcl_GetReturn
41b0: 4f 70 74 69 6f 6e 73 28 69 6e 74 65 72 70 2c 20  Options(interp, 
41c0: 63 6f 64 65 29 3b 0a 2b 09 09 54 63 6c 5f 4f 62  code);.+..Tcl_Ob
41d0: 6a 20 2a 6b 65 79 50 74 72 20 3d 20 54 63 6c 5f  j *keyPtr = Tcl_
41e0: 4e 65 77 53 74 72 69 6e 67 4f 62 6a 28 22 2d 65  NewStringObj("-e
41f0: 72 72 6f 72 69 6e 66 6f 22 2c 20 2d 31 29 3b 0a  rrorinfo", -1);.
4200: 2b 09 09 54 63 6c 5f 4f 62 6a 20 2a 76 61 6c 75  +..Tcl_Obj *valu
4210: 65 50 74 72 3b 0a 2b 0a 2b 09 09 54 63 6c 5f 49  ePtr;.+.+..Tcl_I
4220: 6e 63 72 52 65 66 43 6f 75 6e 74 28 6b 65 79 50  ncrRefCount(keyP
4230: 74 72 29 3b 0a 2b 09 09 54 63 6c 5f 44 69 63 74  tr);.+..Tcl_Dict
4240: 4f 62 6a 47 65 74 28 4e 55 4c 4c 2c 20 6f 70 74  ObjGet(NULL, opt
4250: 69 6f 6e 73 2c 20 6b 65 79 50 74 72 2c 20 26 76  ions, keyPtr, &v
4260: 61 6c 75 65 50 74 72 29 3b 0a 2b 09 09 54 63 6c  aluePtr);.+..Tcl
4270: 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6b 65  _DecrRefCount(ke
4280: 79 50 74 72 29 3b 0a 2b 0a 2b 09 09 54 63 6c 5f  yPtr);.+.+..Tcl_
4290: 57 72 69 74 65 43 68 61 72 73 28 65 72 72 43 68  WriteChars(errCh
42a0: 61 6e 6e 65 6c 2c 0a 2b 09 09 09 22 65 72 72 6f  annel,.+..."erro
42b0: 72 20 69 6e 20 62 61 63 6b 67 72 6f 75 6e 64 20  r in background 
42c0: 65 72 72 6f 72 20 68 61 6e 64 6c 65 72 3a 5c 6e  error handler:\n
42d0: 22 2c 20 2d 31 29 3b 0a 2b 09 09 69 66 20 28 76  ", -1);.+..if (v
42e0: 61 6c 75 65 50 74 72 29 20 7b 0a 2b 09 09 20 20  aluePtr) {.+..  
42f0: 20 20 54 63 6c 5f 57 72 69 74 65 4f 62 6a 28 65    Tcl_WriteObj(e
4300: 72 72 43 68 61 6e 6e 65 6c 2c 20 76 61 6c 75 65  rrChannel, value
4310: 50 74 72 29 3b 0a 2b 09 09 7d 20 65 6c 73 65 20  Ptr);.+..} else 
4320: 7b 0a 2b 09 09 20 20 20 20 54 63 6c 5f 57 72 69  {.+..    Tcl_Wri
4330: 74 65 4f 62 6a 28 65 72 72 43 68 61 6e 6e 65 6c  teObj(errChannel
4340: 2c 20 54 63 6c 5f 47 65 74 4f 62 6a 52 65 73 75  , Tcl_GetObjResu
4350: 6c 74 28 69 6e 74 65 72 70 29 29 3b 0a 2b 09 09  lt(interp));.+..
4360: 7d 0a 2b 09 09 54 63 6c 5f 57 72 69 74 65 43 68  }.+..Tcl_WriteCh
4370: 61 72 73 28 65 72 72 43 68 61 6e 6e 65 6c 2c 20  ars(errChannel, 
4380: 22 5c 6e 22 2c 20 31 29 3b 0a 2b 20 20 20 20 20  "\n", 1);.+     
4390: 20 20 20 20 20 20 20 20 20 20 20 54 63 6c 5f 46             Tcl_F
43a0: 6c 75 73 68 28 65 72 72 43 68 61 6e 6e 65 6c 29  lush(errChannel)
43b0: 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 7d 0a 20 20  ;.+.    }.+.}.  
43c0: 20 20 20 7d 0a 2d 0a 20 20 20 20 20 2f 2a 20 43     }.-.     /* C
43d0: 6c 65 61 6e 75 70 20 61 6e 79 20 65 72 72 6f 72  leanup any error
43e0: 20 72 65 70 6f 72 74 73 20 77 65 20 64 69 64 6e   reports we didn
43f0: 27 74 20 64 6f 20 28 64 75 65 20 74 6f 20 61 20  't do (due to a 
4400: 54 43 4c 5f 42 52 45 41 4b 29 20 2a 2f 0a 20 20  TCL_BREAK) */.  
4410: 20 20 20 77 68 69 6c 65 20 28 61 73 73 6f 63 50     while (assocP
4420: 74 72 2d 3e 66 69 72 73 74 42 67 50 74 72 20 21  tr->firstBgPtr !
4430: 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 65 72 72 50  = NULL) {. .errP
4440: 74 72 20 3d 20 61 73 73 6f 63 50 74 72 2d 3e 66  tr = assocPtr->f
4450: 69 72 73 74 42 67 50 74 72 3b 0a 40 40 20 2d 33  irstBgPtr;.@@ -3
4460: 35 32 2c 38 20 2b 32 37 38 2c 36 20 40 40 0a 20  52,8 +278,6 @@. 
4470: 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 61 73 73      }. .     ass
4480: 6f 63 50 74 72 2d 3e 6c 61 73 74 42 67 50 74 72  ocPtr->lastBgPtr
4490: 20 3d 20 4e 55 4c 4c 3b 0a 2d 20 20 20 20 54 63   = NULL;.-    Tc
44a0: 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6f  l_DecrRefCount(o
44b0: 62 6a 76 5b 30 5d 29 3b 0a 2d 0a 20 20 20 20 20  bjv[0]);.-.     
44c0: 54 63 6c 5f 52 65 6c 65 61 73 65 28 28 43 6c 69  Tcl_Release((Cli
44d0: 65 6e 74 44 61 74 61 29 20 69 6e 74 65 72 70 29  entData) interp)
44e0: 3b 0a 20 20 20 20 20 54 63 6c 5f 52 65 6c 65 61  ;.     Tcl_Relea
44f0: 73 65 28 28 43 6c 69 65 6e 74 44 61 74 61 29 20  se((ClientData) 
4500: 61 73 73 6f 63 50 74 72 29 3b 0a 20 7d 0a 40 40  assocPtr);. }.@@
4510: 20 2d 33 36 31 2c 36 20 2b 32 38 35 2c 31 39 38   -361,6 +285,198
4520: 20 40 40 0a 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d   @@. /*.  *-----
4530: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4540: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4550: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4560: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4570: 2d 0a 20 20 2a 0a 2b 20 2a 20 54 63 6c 44 65 66  -.  *.+ * TclDef
4580: 61 75 6c 74 42 67 45 72 72 6f 72 48 61 6e 64 6c  aultBgErrorHandl
4590: 65 72 4f 62 6a 43 6d 64 20 2d 2d 0a 2b 20 2a 0a  erObjCmd --.+ *.
45a0: 2b 20 2a 09 54 68 69 73 20 70 72 6f 63 65 64 75  + *.This procedu
45b0: 72 65 20 69 73 20 69 6e 76 6f 6b 65 64 20 74 6f  re is invoked to
45c0: 20 70 72 6f 63 65 73 73 20 74 68 65 20 22 3a 3a   process the "::
45d0: 74 63 6c 3a 3a 42 67 65 72 72 6f 72 22 20 54 63  tcl::Bgerror" Tc
45e0: 6c 0a 2b 20 2a 09 63 6f 6d 6d 61 6e 64 2e 20 20  l.+ *.command.  
45f0: 49 74 20 69 73 20 74 68 65 20 64 65 66 61 75 6c  It is the defaul
4600: 74 20 68 61 6e 64 6c 65 72 20 63 6f 6d 6d 61 6e  t handler comman
4610: 64 20 72 65 67 69 73 74 65 72 65 64 20 77 69 74  d registered wit
4620: 68 0a 2b 20 2a 09 5b 69 6e 74 65 72 70 20 62 67  h.+ *.[interp bg
4630: 65 72 72 6f 72 5d 20 66 6f 72 20 74 68 65 20 73  error] for the s
4640: 61 6b 65 20 6f 66 20 63 6f 6d 70 61 74 69 62 69  ake of compatibi
4650: 6c 69 74 79 20 77 69 74 68 20 6f 6c 64 65 72 20  lity with older 
4660: 54 63 6c 0a 2b 20 2a 09 72 65 6c 65 61 73 65 73  Tcl.+ *.releases
4670: 2e 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 6c 74  ..+ *.+ * Result
4680: 73 3a 0a 2b 20 2a 09 41 20 73 74 61 6e 64 61 72  s:.+ *.A standar
4690: 64 20 54 63 6c 20 6f 62 6a 65 63 74 20 72 65 73  d Tcl object res
46a0: 75 6c 74 2e 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64  ult..+ *.+ * Sid
46b0: 65 20 65 66 66 65 63 74 73 3a 0a 2b 20 2a 09 44  e effects:.+ *.D
46c0: 65 70 65 6e 64 73 20 6f 6e 20 77 68 61 74 20 61  epends on what a
46d0: 63 74 69 6f 6e 73 20 74 68 65 20 22 62 67 65 72  ctions the "bger
46e0: 72 6f 72 22 20 63 6f 6d 6d 61 6e 64 20 74 61 6b  ror" command tak
46f0: 65 73 20 66 6f 72 20 74 68 65 20 65 72 72 6f 72  es for the error
4700: 73 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d  s..+ *.+ *------
4710: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4720: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4730: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4740: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4750: 0a 2b 20 2a 2f 0a 2b 0a 2b 69 6e 74 0a 2b 54 63  .+ */.+.+int.+Tc
4760: 6c 44 65 66 61 75 6c 74 42 67 45 72 72 6f 72 48  lDefaultBgErrorH
4770: 61 6e 64 6c 65 72 4f 62 6a 43 6d 64 28 64 75 6d  andlerObjCmd(dum
4780: 6d 79 2c 20 69 6e 74 65 72 70 2c 20 6f 62 6a 63  my, interp, objc
4790: 2c 20 6f 62 6a 76 29 0a 2b 20 20 20 20 43 6c 69  , objv).+    Cli
47a0: 65 6e 74 44 61 74 61 20 64 75 6d 6d 79 3b 20 20  entData dummy;  
47b0: 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 6f 74 20           /* Not 
47c0: 75 73 65 64 2e 20 2a 2f 0a 2b 20 20 20 20 54 63  used. */.+    Tc
47d0: 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70  l_Interp *interp
47e0: 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 43 75 72  ;         /* Cur
47f0: 72 65 6e 74 20 69 6e 74 65 72 70 72 65 74 65 72  rent interpreter
4800: 2e 20 2a 2f 0a 2b 20 20 20 20 69 6e 74 20 6f 62  . */.+    int ob
4810: 6a 63 3b 20 20 20 20 20 20 20 20 20 20 20 20 20  jc;             
4820: 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20        /* Number 
4830: 6f 66 20 61 72 67 75 6d 65 6e 74 73 2e 20 2a 2f  of arguments. */
4840: 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 43  .+    Tcl_Obj *C
4850: 4f 4e 53 54 20 6f 62 6a 76 5b 5d 3b 20 20 20 20  ONST objv[];    
4860: 20 20 2f 2a 20 41 72 67 75 6d 65 6e 74 20 6f 62    /* Argument ob
4870: 6a 65 63 74 73 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20  jects. */.+{.+  
4880: 20 20 54 63 6c 5f 4f 62 6a 20 2a 6b 65 79 50 74    Tcl_Obj *keyPt
4890: 72 2c 20 2a 76 61 6c 75 65 50 74 72 3b 0a 2b 20  r, *valuePtr;.+ 
48a0: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 74 65 6d 70     Tcl_Obj *temp
48b0: 4f 62 6a 76 5b 32 5d 3b 0a 2b 20 20 20 20 69 6e  Objv[2];.+    in
48c0: 74 20 63 6f 64 65 3b 0a 2b 0a 2b 20 20 20 20 69  t code;.+.+    i
48d0: 66 20 28 6f 62 6a 63 20 21 3d 20 33 29 20 7b 0a  f (objc != 3) {.
48e0: 2b 09 54 63 6c 5f 57 72 6f 6e 67 4e 75 6d 41 72  +.Tcl_WrongNumAr
48f0: 67 73 28 69 6e 74 65 72 70 2c 20 31 2c 20 6f 62  gs(interp, 1, ob
4900: 6a 76 2c 20 22 6d 73 67 20 6f 70 74 69 6f 6e 73  jv, "msg options
4910: 22 29 3b 0a 2b 09 72 65 74 75 72 6e 20 54 43 4c  ");.+.return TCL
4920: 5f 45 52 52 4f 52 3b 0a 2b 20 20 20 20 7d 0a 2b  _ERROR;.+    }.+
4930: 0a 2b 20 20 20 20 2f 2a 0a 2b 20 20 20 20 20 2a  .+    /*.+     *
4940: 20 52 65 73 74 6f 72 65 20 69 6d 70 6f 72 74 61   Restore importa
4950: 6e 74 20 73 74 61 74 65 20 76 61 72 69 61 62 6c  nt state variabl
4960: 65 73 20 74 6f 20 77 68 61 74 20 74 68 65 79 20  es to what they 
4970: 77 65 72 65 20 61 74 0a 2b 20 20 20 20 20 2a 20  were at.+     * 
4980: 74 68 65 20 74 69 6d 65 20 74 68 65 20 65 72 72  the time the err
4990: 6f 72 20 6f 63 63 75 72 72 65 64 2e 0a 2b 20 20  or occurred..+  
49a0: 20 20 20 2a 0a 2b 20 20 20 20 20 2a 20 4e 65 65     *.+     * Nee
49b0: 64 20 74 6f 20 73 65 74 20 74 68 65 20 76 61 72  d to set the var
49c0: 69 61 62 6c 65 73 2c 20 6e 6f 74 20 74 68 65 20  iables, not the 
49d0: 69 6e 74 65 72 70 20 66 69 65 6c 64 73 2c 20 62  interp fields, b
49e0: 65 63 61 75 73 65 0a 2b 20 20 20 20 20 2a 20 54  ecause.+     * T
49f0: 63 6c 5f 45 76 61 6c 4f 62 6a 76 28 29 20 63 61  cl_EvalObjv() ca
4a00: 6c 6c 73 20 54 63 6c 5f 52 65 73 65 74 52 65 73  lls Tcl_ResetRes
4a10: 75 6c 74 28 29 20 77 68 69 63 68 20 77 6f 75 6c  ult() which woul
4a20: 64 20 64 65 73 74 72 6f 79 0a 2b 20 20 20 20 20  d destroy.+     
4a30: 2a 20 61 6e 79 74 68 69 6e 67 20 77 65 20 77 72  * anything we wr
4a40: 69 74 65 20 74 6f 20 74 68 65 20 69 6e 74 65 72  ite to the inter
4a50: 70 20 66 69 65 6c 64 73 2e 0a 2b 20 20 20 20 20  p fields..+     
4a60: 2a 2f 0a 2b 0a 2b 20 20 20 20 6b 65 79 50 74 72  */.+.+    keyPtr
4a70: 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67   = Tcl_NewString
4a80: 4f 62 6a 28 22 2d 65 72 72 6f 72 63 6f 64 65 22  Obj("-errorcode"
4a90: 2c 20 2d 31 29 3b 0a 2b 20 20 20 20 54 63 6c 5f  , -1);.+    Tcl_
4aa0: 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 6b 65 79  IncrRefCount(key
4ab0: 50 74 72 29 3b 0a 2b 20 20 20 20 54 63 6c 5f 44  Ptr);.+    Tcl_D
4ac0: 69 63 74 4f 62 6a 47 65 74 28 4e 55 4c 4c 2c 20  ictObjGet(NULL, 
4ad0: 6f 62 6a 76 5b 32 5d 2c 20 6b 65 79 50 74 72 2c  objv[2], keyPtr,
4ae0: 20 26 76 61 6c 75 65 50 74 72 29 3b 0a 2b 20 20   &valuePtr);.+  
4af0: 20 20 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75    Tcl_DecrRefCou
4b00: 6e 74 28 6b 65 79 50 74 72 29 3b 0a 2b 20 20 20  nt(keyPtr);.+   
4b10: 20 69 66 20 28 76 61 6c 75 65 50 74 72 29 20 7b   if (valuePtr) {
4b20: 0a 2b 09 54 63 6c 5f 53 65 74 56 61 72 32 45 78  .+.Tcl_SetVar2Ex
4b30: 28 69 6e 74 65 72 70 2c 20 22 65 72 72 6f 72 43  (interp, "errorC
4b40: 6f 64 65 22 2c 20 4e 55 4c 4c 2c 20 76 61 6c 75  ode", NULL, valu
4b50: 65 50 74 72 2c 20 54 43 4c 5f 47 4c 4f 42 41 4c  ePtr, TCL_GLOBAL
4b60: 5f 4f 4e 4c 59 29 3b 0a 2b 20 20 20 20 7d 0a 2b  _ONLY);.+    }.+
4b70: 0a 2b 20 20 20 20 6b 65 79 50 74 72 20 3d 20 54  .+    keyPtr = T
4b80: 63 6c 5f 4e 65 77 53 74 72 69 6e 67 4f 62 6a 28  cl_NewStringObj(
4b90: 22 2d 65 72 72 6f 72 69 6e 66 6f 22 2c 20 2d 31  "-errorinfo", -1
4ba0: 29 3b 0a 2b 20 20 20 20 54 63 6c 5f 49 6e 63 72  );.+    Tcl_Incr
4bb0: 52 65 66 43 6f 75 6e 74 28 6b 65 79 50 74 72 29  RefCount(keyPtr)
4bc0: 3b 0a 2b 20 20 20 20 54 63 6c 5f 44 69 63 74 4f  ;.+    Tcl_DictO
4bd0: 62 6a 47 65 74 28 4e 55 4c 4c 2c 20 6f 62 6a 76  bjGet(NULL, objv
4be0: 5b 32 5d 2c 20 6b 65 79 50 74 72 2c 20 26 76 61  [2], keyPtr, &va
4bf0: 6c 75 65 50 74 72 29 3b 0a 2b 20 20 20 20 54 63  luePtr);.+    Tc
4c00: 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6b  l_DecrRefCount(k
4c10: 65 79 50 74 72 29 3b 0a 2b 20 20 20 20 69 66 20  eyPtr);.+    if 
4c20: 28 76 61 6c 75 65 50 74 72 29 20 7b 0a 2b 09 54  (valuePtr) {.+.T
4c30: 63 6c 5f 53 65 74 56 61 72 32 45 78 28 69 6e 74  cl_SetVar2Ex(int
4c40: 65 72 70 2c 20 22 65 72 72 6f 72 49 6e 66 6f 22  erp, "errorInfo"
4c50: 2c 20 4e 55 4c 4c 2c 20 76 61 6c 75 65 50 74 72  , NULL, valuePtr
4c60: 2c 20 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c  , TCL_GLOBAL_ONL
4c70: 59 29 3b 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 20 20  Y);.+    }.+.+  
4c80: 20 20 2f 2a 20 43 72 65 61 74 65 20 61 6e 64 20    /* Create and 
4c90: 69 6e 76 6f 6b 65 20 74 68 65 20 62 67 65 72 72  invoke the bgerr
4ca0: 6f 72 20 63 6f 6d 6d 61 6e 64 2e 20 2a 2f 0a 2b  or command. */.+
4cb0: 0a 2b 20 20 20 20 74 65 6d 70 4f 62 6a 76 5b 30  .+    tempObjv[0
4cc0: 5d 20 3d 20 54 63 6c 5f 4e 65 77 53 74 72 69 6e  ] = Tcl_NewStrin
4cd0: 67 4f 62 6a 28 22 62 67 65 72 72 6f 72 22 2c 20  gObj("bgerror", 
4ce0: 2d 31 29 3b 0a 2b 20 20 20 20 54 63 6c 5f 49 6e  -1);.+    Tcl_In
4cf0: 63 72 52 65 66 43 6f 75 6e 74 28 74 65 6d 70 4f  crRefCount(tempO
4d00: 62 6a 76 5b 30 5d 29 3b 0a 2b 20 20 20 20 74 65  bjv[0]);.+    te
4d10: 6d 70 4f 62 6a 76 5b 31 5d 20 3d 20 6f 62 6a 76  mpObjv[1] = objv
4d20: 5b 31 5d 3b 0a 2b 20 20 20 20 54 63 6c 5f 41 6c  [1];.+    Tcl_Al
4d30: 6c 6f 77 45 78 63 65 70 74 69 6f 6e 73 28 69 6e  lowExceptions(in
4d40: 74 65 72 70 29 3b 0a 2b 20 20 20 20 63 6f 64 65  terp);.+    code
4d50: 20 3d 20 54 63 6c 5f 45 76 61 6c 4f 62 6a 76 28   = Tcl_EvalObjv(
4d60: 69 6e 74 65 72 70 2c 20 32 2c 20 74 65 6d 70 4f  interp, 2, tempO
4d70: 62 6a 76 2c 20 54 43 4c 5f 45 56 41 4c 5f 47 4c  bjv, TCL_EVAL_GL
4d80: 4f 42 41 4c 29 3b 0a 2b 20 20 20 20 69 66 20 28  OBAL);.+    if (
4d90: 63 6f 64 65 20 3d 3d 20 54 43 4c 5f 45 52 52 4f  code == TCL_ERRO
4da0: 52 29 20 7b 0a 2b 20 20 20 20 20 20 20 20 2f 2a  R) {.+        /*
4db0: 0a 2b 20 20 20 20 20 20 20 20 20 2a 20 49 66 20  .+         * If 
4dc0: 74 68 65 20 69 6e 74 65 72 70 72 65 74 65 72 20  the interpreter 
4dd0: 69 73 20 73 61 66 65 2c 20 77 65 20 6c 6f 6f 6b  is safe, we look
4de0: 20 66 6f 72 20 61 20 68 69 64 64 65 6e 20 63 6f   for a hidden co
4df0: 6d 6d 61 6e 64 0a 2b 20 20 20 20 20 20 20 20 20  mmand.+         
4e00: 2a 20 6e 61 6d 65 64 20 22 62 67 65 72 72 6f 72  * named "bgerror
4e10: 22 20 61 6e 64 20 63 61 6c 6c 20 74 68 61 74 20  " and call that 
4e20: 77 69 74 68 20 74 68 65 20 65 72 72 6f 72 20 69  with the error i
4e30: 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 2b 20 20 20  nformation..+   
4e40: 20 20 20 20 20 20 2a 20 4f 74 68 65 72 77 69 73        * Otherwis
4e50: 65 2c 20 73 69 6d 70 6c 79 20 69 67 6e 6f 72 65  e, simply ignore
4e60: 20 74 68 65 20 65 72 72 6f 72 2e 20 54 68 65 20   the error. The 
4e70: 72 61 74 69 6f 6e 61 6c 65 20 69 73 20 74 68 61  rationale is tha
4e80: 74 0a 2b 20 20 20 20 20 20 20 20 20 2a 20 74 68  t.+         * th
4e90: 69 73 20 63 6f 75 6c 64 20 62 65 20 61 6e 20 65  is could be an e
4ea0: 72 72 6f 72 20 63 61 75 73 65 64 20 62 79 20 61  rror caused by a
4eb0: 20 6d 61 6c 69 63 69 6f 75 73 20 61 70 70 6c 65   malicious apple
4ec0: 74 20 74 72 79 69 6e 67 0a 2b 20 20 20 20 20 20  t trying.+      
4ed0: 20 20 20 2a 20 74 6f 20 63 61 75 73 65 20 61 6e     * to cause an
4ee0: 20 69 6e 66 69 6e 69 74 65 20 62 61 72 72 61 67   infinite barrag
4ef0: 65 20 6f 66 20 65 72 72 6f 72 20 6d 65 73 73 61  e of error messa
4f00: 67 65 73 2e 20 54 68 65 20 68 69 64 64 65 6e 0a  ges. The hidden.
4f10: 2b 20 20 20 20 20 20 20 20 20 2a 20 22 62 67 65  +         * "bge
4f20: 72 72 6f 72 22 20 63 6f 6d 6d 61 6e 64 20 63 61  rror" command ca
4f30: 6e 20 62 65 20 75 73 65 64 20 62 79 20 61 20 73  n be used by a s
4f40: 65 63 75 72 69 74 79 20 70 6f 6c 69 63 79 20 74  ecurity policy t
4f50: 6f 0a 2b 20 20 20 20 20 20 20 20 20 2a 20 69 6e  o.+         * in
4f60: 74 65 72 70 6f 73 65 20 6f 6e 20 73 75 63 68 20  terpose on such 
4f70: 61 74 74 61 63 6b 73 20 61 6e 64 20 65 2e 67 2e  attacks and e.g.
4f80: 20 6b 69 6c 6c 20 74 68 65 20 61 70 70 6c 65 74   kill the applet
4f90: 20 61 66 74 65 72 20 61 0a 2b 20 20 20 20 20 20   after a.+      
4fa0: 20 20 20 2a 20 66 65 77 20 61 74 74 65 6d 70 74     * few attempt
4fb0: 73 2e 0a 2b 20 20 20 20 20 20 20 20 20 2a 2f 0a  s..+         */.
4fc0: 2b 09 69 66 20 28 54 63 6c 5f 49 73 53 61 66 65  +.if (Tcl_IsSafe
4fd0: 28 69 6e 74 65 72 70 29 29 20 7b 0a 2b 09 20 20  (interp)) {.+.  
4fe0: 20 20 54 63 6c 5f 52 65 73 65 74 52 65 73 75 6c    Tcl_ResetResul
4ff0: 74 28 69 6e 74 65 72 70 29 3b 0a 2b 09 20 20 20  t(interp);.+.   
5000: 20 54 63 6c 4f 62 6a 49 6e 76 6f 6b 65 28 69 6e   TclObjInvoke(in
5010: 74 65 72 70 2c 20 32 2c 20 74 65 6d 70 4f 62 6a  terp, 2, tempObj
5020: 76 2c 20 54 43 4c 5f 49 4e 56 4f 4b 45 5f 48 49  v, TCL_INVOKE_HI
5030: 44 44 45 4e 29 3b 0a 2b 09 7d 20 65 6c 73 65 20  DDEN);.+.} else 
5040: 7b 0a 2b 09 20 20 20 20 54 63 6c 5f 43 68 61 6e  {.+.    Tcl_Chan
5050: 6e 65 6c 20 65 72 72 43 68 61 6e 6e 65 6c 20 3d  nel errChannel =
5060: 20 54 63 6c 5f 47 65 74 53 74 64 43 68 61 6e 6e   Tcl_GetStdChann
5070: 65 6c 28 54 43 4c 5f 53 54 44 45 52 52 29 3b 0a  el(TCL_STDERR);.
5080: 2b 09 20 20 20 20 69 66 20 28 65 72 72 43 68 61  +.    if (errCha
5090: 6e 6e 65 6c 20 21 3d 20 28 54 63 6c 5f 43 68 61  nnel != (Tcl_Cha
50a0: 6e 6e 65 6c 29 20 4e 55 4c 4c 29 20 7b 0a 2b 09  nnel) NULL) {.+.
50b0: 09 54 63 6c 5f 4f 62 6a 20 2a 72 65 73 75 6c 74  .Tcl_Obj *result
50c0: 50 74 72 20 3d 20 54 63 6c 5f 47 65 74 4f 62 6a  Ptr = Tcl_GetObj
50d0: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 29 3b 0a  Result(interp);.
50e0: 2b 0a 2b 09 09 54 63 6c 5f 49 6e 63 72 52 65 66  +.+..Tcl_IncrRef
50f0: 43 6f 75 6e 74 28 72 65 73 75 6c 74 50 74 72 29  Count(resultPtr)
5100: 3b 0a 2b 09 09 69 66 20 28 54 63 6c 5f 46 69 6e  ;.+..if (Tcl_Fin
5110: 64 43 6f 6d 6d 61 6e 64 28 69 6e 74 65 72 70 2c  dCommand(interp,
5120: 20 22 62 67 65 72 72 6f 72 22 2c 0a 2b 09 09 09   "bgerror",.+...
5130: 20 20 20 20 4e 55 4c 4c 2c 20 54 43 4c 5f 47 4c      NULL, TCL_GL
5140: 4f 42 41 4c 5f 4f 4e 4c 59 29 20 3d 3d 20 4e 55  OBAL_ONLY) == NU
5150: 4c 4c 29 20 7b 0a 2b 09 09 20 20 20 20 69 66 20  LL) {.+..    if 
5160: 28 76 61 6c 75 65 50 74 72 29 20 7b 0a 2b 09 09  (valuePtr) {.+..
5170: 09 54 63 6c 5f 57 72 69 74 65 4f 62 6a 28 65 72  .Tcl_WriteObj(er
5180: 72 43 68 61 6e 6e 65 6c 2c 20 76 61 6c 75 65 50  rChannel, valueP
5190: 74 72 29 3b 0a 2b 09 09 09 54 63 6c 5f 57 72 69  tr);.+...Tcl_Wri
51a0: 74 65 43 68 61 72 73 28 65 72 72 43 68 61 6e 6e  teChars(errChann
51b0: 65 6c 2c 20 22 5c 6e 22 2c 20 2d 31 29 3b 0a 2b  el, "\n", -1);.+
51c0: 09 09 20 20 20 20 7d 0a 2b 20 20 20 20 20 20 20  ..    }.+       
51d0: 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20           } else 
51e0: 7b 0a 2b 09 09 20 20 20 20 54 63 6c 5f 57 72 69  {.+..    Tcl_Wri
51f0: 74 65 43 68 61 72 73 28 65 72 72 43 68 61 6e 6e  teChars(errChann
5200: 65 6c 2c 0a 2b 09 09 09 20 20 20 20 22 62 67 65  el,.+...    "bge
5210: 72 72 6f 72 20 66 61 69 6c 65 64 20 74 6f 20 68  rror failed to h
5220: 61 6e 64 6c 65 20 62 61 63 6b 67 72 6f 75 6e 64  andle background
5230: 20 65 72 72 6f 72 2e 5c 6e 22 2c 20 2d 31 29 3b   error.\n", -1);
5240: 0a 2b 09 09 20 20 20 20 54 63 6c 5f 57 72 69 74  .+..    Tcl_Writ
5250: 65 43 68 61 72 73 28 65 72 72 43 68 61 6e 6e 65  eChars(errChanne
5260: 6c 2c 20 22 20 20 20 20 4f 72 69 67 69 6e 61 6c  l, "    Original
5270: 20 65 72 72 6f 72 3a 20 22 2c 20 2d 31 29 3b 0a   error: ", -1);.
5280: 2b 09 09 20 20 20 20 54 63 6c 5f 57 72 69 74 65  +..    Tcl_Write
5290: 4f 62 6a 28 65 72 72 43 68 61 6e 6e 65 6c 2c 20  Obj(errChannel, 
52a0: 6f 62 6a 76 5b 31 5d 29 3b 0a 2b 09 09 20 20 20  objv[1]);.+..   
52b0: 20 54 63 6c 5f 57 72 69 74 65 43 68 61 72 73 28   Tcl_WriteChars(
52c0: 65 72 72 43 68 61 6e 6e 65 6c 2c 20 22 5c 6e 22  errChannel, "\n"
52d0: 2c 20 2d 31 29 3b 0a 2b 09 09 20 20 20 20 54 63  , -1);.+..    Tc
52e0: 6c 5f 57 72 69 74 65 43 68 61 72 73 28 65 72 72  l_WriteChars(err
52f0: 43 68 61 6e 6e 65 6c 2c 0a 2b 09 09 09 09 22 20  Channel,.+...." 
5300: 20 20 20 45 72 72 6f 72 20 69 6e 20 62 67 65 72     Error in bger
5310: 72 6f 72 3a 20 22 2c 20 2d 31 29 3b 0a 2b 09 09  ror: ", -1);.+..
5320: 20 20 20 20 54 63 6c 5f 57 72 69 74 65 4f 62 6a      Tcl_WriteObj
5330: 28 65 72 72 43 68 61 6e 6e 65 6c 2c 20 72 65 73  (errChannel, res
5340: 75 6c 74 50 74 72 29 3b 0a 2b 09 09 20 20 20 20  ultPtr);.+..    
5350: 54 63 6c 5f 57 72 69 74 65 43 68 61 72 73 28 65  Tcl_WriteChars(e
5360: 72 72 43 68 61 6e 6e 65 6c 2c 20 22 5c 6e 22 2c  rrChannel, "\n",
5370: 20 2d 31 29 3b 0a 2b 20 20 20 20 20 20 20 20 20   -1);.+         
5380: 20 20 20 20 20 20 20 7d 0a 2b 09 09 54 63 6c 5f         }.+..Tcl_
5390: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 72 65 73  DecrRefCount(res
53a0: 75 6c 74 50 74 72 29 3b 0a 2b 20 20 20 20 20 20  ultPtr);.+      
53b0: 20 20 20 20 20 20 20 20 20 20 54 63 6c 5f 46 6c            Tcl_Fl
53c0: 75 73 68 28 65 72 72 43 68 61 6e 6e 65 6c 29 3b  ush(errChannel);
53d0: 0a 2b 09 20 20 20 20 7d 0a 2b 09 7d 0a 2b 09 63  .+.    }.+.}.+.c
53e0: 6f 64 65 20 3d 20 54 43 4c 5f 4f 4b 3b 0a 2b 20  ode = TCL_OK;.+ 
53f0: 20 20 20 7d 0a 2b 20 20 20 20 54 63 6c 5f 44 65     }.+    Tcl_De
5400: 63 72 52 65 66 43 6f 75 6e 74 28 74 65 6d 70 4f  crRefCount(tempO
5410: 62 6a 76 5b 30 5d 29 3b 0a 2b 20 20 20 20 54 63  bjv[0]);.+    Tc
5420: 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69 6e  l_ResetResult(in
5430: 74 65 72 70 29 3b 0a 2b 20 20 20 20 72 65 74 75  terp);.+    retu
5440: 72 6e 20 63 6f 64 65 3b 0a 2b 7d 0a 2b 0c 0a 2b  rn code;.+}.+..+
5450: 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /*.+ *----------
5460: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5470: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5480: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5490: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a  ------------.+ *
54a0: 0a 2b 20 2a 20 54 63 6c 53 65 74 42 67 45 72 72  .+ * TclSetBgErr
54b0: 6f 72 48 61 6e 64 6c 65 72 20 2d 2d 0a 2b 20 2a  orHandler --.+ *
54c0: 0a 2b 20 2a 09 54 68 69 73 20 70 72 6f 63 65 64  .+ *.This proced
54d0: 75 72 65 20 73 65 74 73 20 74 68 65 20 63 6f 6d  ure sets the com
54e0: 6d 61 6e 64 20 70 72 65 66 69 78 20 74 6f 20 62  mand prefix to b
54f0: 65 20 75 73 65 64 20 74 6f 20 68 61 6e 64 6c 65  e used to handle
5500: 0a 2b 20 2a 09 62 61 63 6b 67 72 6f 75 6e 64 20  .+ *.background 
5510: 65 72 72 6f 72 73 20 69 6e 20 69 6e 74 65 72 70  errors in interp
5520: 2e 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 6c 74  ..+ *.+ * Result
5530: 73 3a 0a 2b 20 2a 09 4e 6f 6e 65 2e 0a 2b 20 2a  s:.+ *.None..+ *
5540: 0a 2b 20 2a 20 53 69 64 65 20 65 66 66 65 63 74  .+ * Side effect
5550: 73 3a 0a 2b 20 2a 09 45 72 72 6f 72 20 68 61 6e  s:.+ *.Error han
5560: 64 6c 65 72 20 69 73 20 72 65 67 69 73 74 65 72  dler is register
5570: 65 64 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d  ed..+ *.+ *-----
5580: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5590: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
55a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
55b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
55c0: 2d 0a 2b 20 2a 2f 0a 2b 0a 2b 76 6f 69 64 0a 2b  -.+ */.+.+void.+
55d0: 54 63 6c 53 65 74 42 67 45 72 72 6f 72 48 61 6e  TclSetBgErrorHan
55e0: 64 6c 65 72 28 69 6e 74 65 72 70 2c 20 63 6d 64  dler(interp, cmd
55f0: 50 72 65 66 69 78 29 0a 2b 20 20 20 20 54 63 6c  Prefix).+    Tcl
5600: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 3b  _Interp *interp;
5610: 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 63  .+    Tcl_Obj *c
5620: 6d 64 50 72 65 66 69 78 3b 0a 2b 7b 0a 2b 20 20  mdPrefix;.+{.+  
5630: 20 20 45 72 72 41 73 73 6f 63 44 61 74 61 20 2a    ErrAssocData *
5640: 61 73 73 6f 63 50 74 72 20 3d 20 28 45 72 72 41  assocPtr = (ErrA
5650: 73 73 6f 63 44 61 74 61 20 2a 29 20 54 63 6c 5f  ssocData *) Tcl_
5660: 47 65 74 41 73 73 6f 63 44 61 74 61 28 69 6e 74  GetAssocData(int
5670: 65 72 70 2c 0a 2b 09 20 20 20 20 22 74 63 6c 42  erp,.+.    "tclB
5680: 67 45 72 72 6f 72 22 2c 20 28 54 63 6c 5f 49 6e  gError", (Tcl_In
5690: 74 65 72 70 44 65 6c 65 74 65 50 72 6f 63 20 2a  terpDeleteProc *
56a0: 2a 29 20 4e 55 4c 4c 29 3b 0a 2b 0a 2b 20 20 20  *) NULL);.+.+   
56b0: 20 69 66 20 28 63 6d 64 50 72 65 66 69 78 20 3d   if (cmdPrefix =
56c0: 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 54 63 6c 5f  = NULL) {.+.Tcl_
56d0: 50 61 6e 69 63 28 22 54 63 6c 53 65 74 42 67 45  Panic("TclSetBgE
56e0: 72 72 6f 72 48 61 6e 64 6c 65 72 3a 20 4e 55 4c  rrorHandler: NUL
56f0: 4c 20 63 6d 64 50 72 65 66 69 78 20 61 72 67 75  L cmdPrefix argu
5700: 6d 65 6e 74 22 29 3b 0a 2b 20 20 20 20 7d 0a 2b  ment");.+    }.+
5710: 20 20 20 20 69 66 20 28 61 73 73 6f 63 50 74 72      if (assocPtr
5720: 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 2f 2a   == NULL) {.+./*
5730: 20 46 69 72 73 74 20 61 63 63 65 73 73 3a 20 69   First access: i
5740: 6e 69 74 69 61 6c 69 7a 65 20 2a 2f 0a 2b 09 61  nitialize */.+.a
5750: 73 73 6f 63 50 74 72 20 3d 20 28 45 72 72 41 73  ssocPtr = (ErrAs
5760: 73 6f 63 44 61 74 61 20 2a 29 20 63 6b 61 6c 6c  socData *) ckall
5770: 6f 63 28 73 69 7a 65 6f 66 28 45 72 72 41 73 73  oc(sizeof(ErrAss
5780: 6f 63 44 61 74 61 29 29 3b 0a 2b 09 61 73 73 6f  ocData));.+.asso
5790: 63 50 74 72 2d 3e 69 6e 74 65 72 70 20 3d 20 69  cPtr->interp = i
57a0: 6e 74 65 72 70 3b 0a 2b 09 61 73 73 6f 63 50 74  nterp;.+.assocPt
57b0: 72 2d 3e 63 6d 64 50 72 65 66 69 78 20 3d 20 4e  r->cmdPrefix = N
57c0: 55 4c 4c 3b 0a 2b 09 61 73 73 6f 63 50 74 72 2d  ULL;.+.assocPtr-
57d0: 3e 66 69 72 73 74 42 67 50 74 72 20 3d 20 4e 55  >firstBgPtr = NU
57e0: 4c 4c 3b 0a 2b 09 61 73 73 6f 63 50 74 72 2d 3e  LL;.+.assocPtr->
57f0: 6c 61 73 74 42 67 50 74 72 20 3d 20 4e 55 4c 4c  lastBgPtr = NULL
5800: 3b 0a 2b 09 54 63 6c 5f 53 65 74 41 73 73 6f 63  ;.+.Tcl_SetAssoc
5810: 44 61 74 61 28 69 6e 74 65 72 70 2c 20 22 74 63  Data(interp, "tc
5820: 6c 42 67 45 72 72 6f 72 22 2c 20 42 67 45 72 72  lBgError", BgErr
5830: 6f 72 44 65 6c 65 74 65 50 72 6f 63 2c 0a 2b 09  orDeleteProc,.+.
5840: 09 28 43 6c 69 65 6e 74 44 61 74 61 29 20 61 73  .(ClientData) as
5850: 73 6f 63 50 74 72 29 3b 0a 2b 20 20 20 20 7d 0a  socPtr);.+    }.
5860: 2b 20 20 20 20 69 66 20 28 61 73 73 6f 63 50 74  +    if (assocPt
5870: 72 2d 3e 63 6d 64 50 72 65 66 69 78 29 20 7b 0a  r->cmdPrefix) {.
5880: 2b 09 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75  +.Tcl_DecrRefCou
5890: 6e 74 28 61 73 73 6f 63 50 74 72 2d 3e 63 6d 64  nt(assocPtr->cmd
58a0: 50 72 65 66 69 78 29 3b 0a 2b 20 20 20 20 7d 0a  Prefix);.+    }.
58b0: 2b 20 20 20 20 61 73 73 6f 63 50 74 72 2d 3e 63  +    assocPtr->c
58c0: 6d 64 50 72 65 66 69 78 20 3d 20 63 6d 64 50 72  mdPrefix = cmdPr
58d0: 65 66 69 78 3b 0a 2b 20 20 20 20 54 63 6c 5f 49  efix;.+    Tcl_I
58e0: 6e 63 72 52 65 66 43 6f 75 6e 74 28 61 73 73 6f  ncrRefCount(asso
58f0: 63 50 74 72 2d 3e 63 6d 64 50 72 65 66 69 78 29  cPtr->cmdPrefix)
5900: 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f 2a 0a 2b 20 2a 2d  ;.+}.+..+/*.+ *-
5910: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5920: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5930: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5940: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5950: 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20 54 63  -----.+ *.+ * Tc
5960: 6c 47 65 74 42 67 45 72 72 6f 72 48 61 6e 64 6c  lGetBgErrorHandl
5970: 65 72 20 2d 2d 0a 2b 20 2a 0a 2b 20 2a 09 54 68  er --.+ *.+ *.Th
5980: 69 73 20 70 72 6f 63 65 64 75 72 65 20 72 65 74  is procedure ret
5990: 72 69 65 76 65 73 20 74 68 65 20 63 6f 6d 6d 61  rieves the comma
59a0: 6e 64 20 70 72 65 66 69 78 20 63 75 72 72 65 6e  nd prefix curren
59b0: 74 6c 79 20 75 73 65 64 0a 2b 20 2a 09 74 6f 20  tly used.+ *.to 
59c0: 68 61 6e 64 6c 65 20 62 61 63 6b 67 72 6f 75 6e  handle backgroun
59d0: 64 20 65 72 72 6f 72 73 20 69 6e 20 69 6e 74 65  d errors in inte
59e0: 72 70 2e 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75  rp..+ *.+ * Resu
59f0: 6c 74 73 3a 0a 2b 20 2a 09 41 20 28 54 63 6c 5f  lts:.+ *.A (Tcl_
5a00: 4f 62 6a 20 2a 29 20 74 6f 20 61 20 6c 69 73 74  Obj *) to a list
5a10: 20 6f 66 20 77 6f 72 64 73 20 28 63 6f 6d 6d 61   of words (comma
5a20: 6e 64 20 70 72 65 66 69 78 29 2e 0a 2b 20 2a 0a  nd prefix)..+ *.
5a30: 2b 20 2a 20 53 69 64 65 20 65 66 66 65 63 74 73  + * Side effects
5a40: 3a 0a 2b 20 2a 09 4e 6f 6e 65 2e 0a 2b 20 2a 0a  :.+ *.None..+ *.
5a50: 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  + *-------------
5a60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5a70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5a80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5a90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b  ---------.+ */.+
5aa0: 0a 2b 54 63 6c 5f 4f 62 6a 20 2a 0a 2b 54 63 6c  .+Tcl_Obj *.+Tcl
5ab0: 47 65 74 42 67 45 72 72 6f 72 48 61 6e 64 6c 65  GetBgErrorHandle
5ac0: 72 28 69 6e 74 65 72 70 29 0a 2b 20 20 20 20 54  r(interp).+    T
5ad0: 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72  cl_Interp *inter
5ae0: 70 3b 0a 2b 7b 0a 2b 20 20 20 20 45 72 72 41 73  p;.+{.+    ErrAs
5af0: 73 6f 63 44 61 74 61 20 2a 61 73 73 6f 63 50 74  socData *assocPt
5b00: 72 20 3d 20 28 45 72 72 41 73 73 6f 63 44 61 74  r = (ErrAssocDat
5b10: 61 20 2a 29 20 54 63 6c 5f 47 65 74 41 73 73 6f  a *) Tcl_GetAsso
5b20: 63 44 61 74 61 28 69 6e 74 65 72 70 2c 0a 2b 09  cData(interp,.+.
5b30: 20 20 20 20 22 74 63 6c 42 67 45 72 72 6f 72 22      "tclBgError"
5b40: 2c 20 28 54 63 6c 5f 49 6e 74 65 72 70 44 65 6c  , (Tcl_InterpDel
5b50: 65 74 65 50 72 6f 63 20 2a 2a 29 20 4e 55 4c 4c  eteProc **) NULL
5b60: 29 3b 0a 2b 0a 2b 20 20 20 20 69 66 20 28 61 73  );.+.+    if (as
5b70: 73 6f 63 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 20  socPtr == NULL) 
5b80: 7b 0a 2b 09 54 63 6c 53 65 74 42 67 45 72 72 6f  {.+.TclSetBgErro
5b90: 72 48 61 6e 64 6c 65 72 28 69 6e 74 65 72 70 2c  rHandler(interp,
5ba0: 20 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67 4f 62   Tcl_NewStringOb
5bb0: 6a 28 22 3a 3a 74 63 6c 3a 3a 42 67 65 72 72 6f  j("::tcl::Bgerro
5bc0: 72 22 2c 20 2d 31 29 29 3b 0a 2b 09 61 73 73 6f  r", -1));.+.asso
5bd0: 63 50 74 72 20 3d 20 28 45 72 72 41 73 73 6f 63  cPtr = (ErrAssoc
5be0: 44 61 74 61 20 2a 29 20 54 63 6c 5f 47 65 74 41  Data *) Tcl_GetA
5bf0: 73 73 6f 63 44 61 74 61 28 69 6e 74 65 72 70 2c  ssocData(interp,
5c00: 0a 2b 09 20 20 20 20 22 74 63 6c 42 67 45 72 72  .+.    "tclBgErr
5c10: 6f 72 22 2c 20 28 54 63 6c 5f 49 6e 74 65 72 70  or", (Tcl_Interp
5c20: 44 65 6c 65 74 65 50 72 6f 63 20 2a 2a 29 20 4e  DeleteProc **) N
5c30: 55 4c 4c 29 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20  ULL);.+    }.+  
5c40: 20 20 72 65 74 75 72 6e 20 61 73 73 6f 63 50 74    return assocPt
5c50: 72 2d 3e 63 6d 64 50 72 65 66 69 78 3b 0a 2b 7d  r->cmdPrefix;.+}
5c60: 0a 2b 0c 0a 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d  .+..+/*.+ *-----
5c70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5c80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5c90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5ca0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5cb0: 2d 0a 2b 20 2a 0a 20 20 2a 20 42 67 45 72 72 6f  -.+ *.  * BgErro
5cc0: 72 44 65 6c 65 74 65 50 72 6f 63 20 2d 2d 0a 20  rDeleteProc --. 
5cd0: 20 2a 0a 20 20 2a 09 54 68 69 73 20 70 72 6f 63   *.  *.This proc
5ce0: 65 64 75 72 65 20 69 73 20 61 73 73 6f 63 69 61  edure is associa
5cf0: 74 65 64 20 77 69 74 68 20 74 68 65 20 22 74 63  ted with the "tc
5d00: 6c 42 67 45 72 72 6f 72 22 20 61 73 73 6f 63 20  lBgError" assoc 
5d10: 64 61 74 61 0a 40 40 20 2d 33 39 34 2c 36 20 2b  data.@@ -394,6 +
5d20: 35 31 30 2c 37 20 40 40 0a 20 09 63 6b 66 72 65  510,7 @@. .ckfre
5d30: 65 28 28 63 68 61 72 20 2a 29 20 65 72 72 50 74  e((char *) errPt
5d40: 72 29 3b 0a 20 20 20 20 20 7d 0a 20 20 20 20 20  r);.     }.     
5d50: 54 63 6c 5f 43 61 6e 63 65 6c 49 64 6c 65 43 61  Tcl_CancelIdleCa
5d60: 6c 6c 28 48 61 6e 64 6c 65 42 67 45 72 72 6f 72  ll(HandleBgError
5d70: 73 2c 20 28 43 6c 69 65 6e 74 44 61 74 61 29 20  s, (ClientData) 
5d80: 61 73 73 6f 63 50 74 72 29 3b 0a 2b 20 20 20 20  assocPtr);.+    
5d90: 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74  Tcl_DecrRefCount
5da0: 28 61 73 73 6f 63 50 74 72 2d 3e 63 6d 64 50 72  (assocPtr->cmdPr
5db0: 65 66 69 78 29 3b 0a 20 20 20 20 20 54 63 6c 5f  efix);.     Tcl_
5dc0: 45 76 65 6e 74 75 61 6c 6c 79 46 72 65 65 28 28  EventuallyFree((
5dd0: 43 6c 69 65 6e 74 44 61 74 61 29 20 61 73 73 6f  ClientData) asso
5de0: 63 50 74 72 2c 20 54 43 4c 5f 44 59 4e 41 4d 49  cPtr, TCL_DYNAMI
5df0: 43 29 3b 0a 20 7d 0a 20 0c 0a 49 6e 64 65 78 3a  C);. }. ..Index:
5e00: 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 4f 47 54   generic/tclIOGT
5e10: 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  .c.=============
5e20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5e30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5e40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5e50: 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a  ======.RCS file:
5e60: 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63   /cvsroot/tcl/tc
5e70: 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c 49 4f 47  l/generic/tclIOG
5e80: 54 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67  T.c,v.retrieving
5e90: 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 31 0a 64   revision 1.11.d
5ea0: 69 66 66 20 2d 75 20 2d 72 31 2e 31 31 20 74 63  iff -u -r1.11 tc
5eb0: 6c 49 4f 47 54 2e 63 0a 2d 2d 2d 20 67 65 6e 65  lIOGT.c.--- gene
5ec0: 72 69 63 2f 74 63 6c 49 4f 47 54 2e 63 09 31 39  ric/tclIOGT.c.19
5ed0: 20 4f 63 74 20 32 30 30 34 20 32 31 3a 35 34 3a   Oct 2004 21:54:
5ee0: 30 37 20 2d 30 30 30 30 09 31 2e 31 31 0a 2b 2b  07 -0000.1.11.++
5ef0: 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 4f 47  + generic/tclIOG
5f00: 54 2e 63 09 34 20 4e 6f 76 20 32 30 30 34 20 32  T.c.4 Nov 2004 2
5f10: 32 3a 33 31 3a 35 38 20 2d 30 30 30 30 0a 40 40  2:31:58 -0000.@@
5f20: 20 2d 33 38 33 2c 31 33 20 2b 33 38 33 2c 31 33   -383,13 +383,13
5f30: 20 40 40 0a 20 20 20 20 20 54 63 6c 5f 4f 62 6a   @@.     Tcl_Obj
5f40: 2a 20 72 65 73 4f 62 6a 3b 09 09 20 20 20 20 2f  * resObj;..    /
5f50: 2a 20 53 65 65 20 62 65 6c 6f 77 2c 20 73 77 69  * See below, swi
5f60: 74 63 68 20 28 74 72 61 6e 73 6d 69 74 29 20 2a  tch (transmit) *
5f70: 2f 0a 20 20 20 20 20 69 6e 74 20 72 65 73 4c 65  /.     int resLe
5f80: 6e 3b 0a 20 20 20 20 20 75 6e 73 69 67 6e 65 64  n;.     unsigned
5f90: 20 63 68 61 72 2a 20 72 65 73 42 75 66 3b 0a 2d   char* resBuf;.-
5fa0: 20 20 20 20 54 63 6c 49 6e 74 65 72 70 53 74 61      TclInterpSta
5fb0: 74 65 20 73 74 61 74 65 20 3d 20 4e 55 4c 4c 3b  te state = NULL;
5fc0: 0a 2b 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70  .+    Tcl_Interp
5fd0: 53 74 61 74 65 20 73 74 61 74 65 20 3d 20 4e 55  State state = NU
5fe0: 4c 4c 3b 0a 20 20 20 20 20 69 6e 74 20 72 65 73  LL;.     int res
5ff0: 20 3d 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20 20   = TCL_OK;.     
6000: 54 63 6c 5f 4f 62 6a 2a 20 63 6f 6d 6d 61 6e 64  Tcl_Obj* command
6010: 20 3d 20 54 63 6c 5f 44 75 70 6c 69 63 61 74 65   = Tcl_Duplicate
6020: 4f 62 6a 20 28 64 61 74 61 50 74 72 2d 3e 63 6f  Obj (dataPtr->co
6030: 6d 6d 61 6e 64 29 3b 0a 20 20 20 20 20 54 63 6c  mmand);.     Tcl
6040: 5f 4f 62 6a 2a 20 74 65 6d 70 3b 0a 20 0a 20 20  _Obj* temp;. .  
6050: 20 20 20 69 66 20 28 70 72 65 73 65 72 76 65 29     if (preserve)
6060: 20 7b 0a 2d 09 73 74 61 74 65 20 3d 20 54 63 6c   {.-.state = Tcl
6070: 53 61 76 65 49 6e 74 65 72 70 53 74 61 74 65 28  SaveInterpState(
6080: 64 61 74 61 50 74 72 2d 3e 69 6e 74 65 72 70 2c  dataPtr->interp,
6090: 20 72 65 73 29 3b 0a 2b 09 73 74 61 74 65 20 3d   res);.+.state =
60a0: 20 54 63 6c 5f 53 61 76 65 49 6e 74 65 72 70 53   Tcl_SaveInterpS
60b0: 74 61 74 65 28 64 61 74 61 50 74 72 2d 3e 69 6e  tate(dataPtr->in
60c0: 74 65 72 70 2c 20 72 65 73 29 3b 0a 20 20 20 20  terp, res);.    
60d0: 20 7d 0a 20 0a 20 20 20 20 20 69 66 20 28 63 6f   }. .     if (co
60e0: 6d 6d 61 6e 64 20 3d 3d 20 28 54 63 6c 5f 4f 62  mmand == (Tcl_Ob
60f0: 6a 2a 29 20 4e 55 4c 4c 29 20 7b 0a 40 40 20 2d  j*) NULL) {.@@ -
6100: 34 38 38 2c 31 34 20 2b 34 38 38 2c 31 34 20 40  488,14 +488,14 @
6110: 40 0a 20 20 20 20 20 54 63 6c 5f 52 65 73 65 74  @.     Tcl_Reset
6120: 52 65 73 75 6c 74 28 64 61 74 61 50 74 72 2d 3e  Result(dataPtr->
6130: 69 6e 74 65 72 70 29 3b 0a 20 0a 20 20 20 20 20  interp);. .     
6140: 69 66 20 28 70 72 65 73 65 72 76 65 29 20 7b 0a  if (preserve) {.
6150: 2d 09 28 76 6f 69 64 29 20 54 63 6c 52 65 73 74  -.(void) TclRest
6160: 6f 72 65 49 6e 74 65 72 70 53 74 61 74 65 28 64  oreInterpState(d
6170: 61 74 61 50 74 72 2d 3e 69 6e 74 65 72 70 2c 20  ataPtr->interp, 
6180: 73 74 61 74 65 29 3b 0a 2b 09 28 76 6f 69 64 29  state);.+.(void)
6190: 20 54 63 6c 5f 52 65 73 74 6f 72 65 49 6e 74 65   Tcl_RestoreInte
61a0: 72 70 53 74 61 74 65 28 64 61 74 61 50 74 72 2d  rpState(dataPtr-
61b0: 3e 69 6e 74 65 72 70 2c 20 73 74 61 74 65 29 3b  >interp, state);
61c0: 0a 20 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 72  .     }. .     r
61d0: 65 74 75 72 6e 20 72 65 73 3b 0a 20 0a 20 20 20  eturn res;. .   
61e0: 20 20 63 6c 65 61 6e 75 70 3a 0a 20 20 20 20 20    cleanup:.     
61f0: 69 66 20 28 70 72 65 73 65 72 76 65 29 20 7b 0a  if (preserve) {.
6200: 2d 09 28 76 6f 69 64 29 20 54 63 6c 52 65 73 74  -.(void) TclRest
6210: 6f 72 65 49 6e 74 65 72 70 53 74 61 74 65 28 64  oreInterpState(d
6220: 61 74 61 50 74 72 2d 3e 69 6e 74 65 72 70 2c 20  ataPtr->interp, 
6230: 73 74 61 74 65 29 3b 0a 2b 09 28 76 6f 69 64 29  state);.+.(void)
6240: 20 54 63 6c 5f 52 65 73 74 6f 72 65 49 6e 74 65   Tcl_RestoreInte
6250: 72 70 53 74 61 74 65 28 64 61 74 61 50 74 72 2d  rpState(dataPtr-
6260: 3e 69 6e 74 65 72 70 2c 20 73 74 61 74 65 29 3b  >interp, state);
6270: 0a 20 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 69  .     }. .     i
6280: 66 20 28 63 6f 6d 6d 61 6e 64 20 21 3d 20 28 54  f (command != (T
6290: 63 6c 5f 4f 62 6a 2a 29 20 4e 55 4c 4c 29 20 7b  cl_Obj*) NULL) {
62a0: 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f  .Index: generic/
62b0: 74 63 6c 49 6e 74 2e 68 0a 3d 3d 3d 3d 3d 3d 3d  tclInt.h.=======
62c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
62d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
62e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
62f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53  ============.RCS
6300: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f   file: /cvsroot/
6310: 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f  tcl/tcl/generic/
6320: 74 63 6c 49 6e 74 2e 68 2c 76 0a 72 65 74 72 69  tclInt.h,v.retri
6330: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31  eving revision 1
6340: 2e 31 39 33 0a 64 69 66 66 20 2d 75 20 2d 72 31  .193.diff -u -r1
6350: 2e 31 39 33 20 74 63 6c 49 6e 74 2e 68 0a 2d 2d  .193 tclInt.h.--
6360: 2d 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74  - generic/tclInt
6370: 2e 68 09 33 20 4e 6f 76 20 32 30 30 34 20 31 39  .h.3 Nov 2004 19
6380: 3a 31 33 3a 33 38 20 2d 30 30 30 30 09 31 2e 31  :13:38 -0000.1.1
6390: 39 33 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74  93.+++ generic/t
63a0: 63 6c 49 6e 74 2e 68 09 34 20 4e 6f 76 20 32 30  clInt.h.4 Nov 20
63b0: 30 34 20 32 32 3a 33 31 3a 35 39 20 2d 30 30 30  04 22:31:59 -000
63c0: 30 0a 40 40 20 2d 31 34 37 35 2c 38 20 2b 31 34  0.@@ -1475,8 +14
63d0: 37 35 2c 36 20 40 40 0a 20 23 64 65 66 69 6e 65  75,6 @@. #define
63e0: 20 53 41 46 45 5f 49 4e 54 45 52 50 09 09 09 20   SAFE_INTERP... 
63f0: 30 78 38 30 0a 20 23 64 65 66 69 6e 65 20 49 4e  0x80. #define IN
6400: 54 45 52 50 5f 54 52 41 43 45 5f 49 4e 5f 50 52  TERP_TRACE_IN_PR
6410: 4f 47 52 45 53 53 09 30 78 32 30 30 0a 20 0a 2d  OGRESS.0x200. .-
6420: 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 54  typedef struct T
6430: 63 6c 49 6e 74 65 72 70 53 74 61 74 65 5f 20 2a  clInterpState_ *
6440: 54 63 6c 49 6e 74 65 72 70 53 74 61 74 65 3b 0a  TclInterpState;.
6450: 2d 0a 20 2f 2a 0a 20 20 2a 20 4d 61 78 69 6d 75  -. /*.  * Maximu
6460: 6d 20 6e 75 6d 62 65 72 20 6f 66 20 6c 65 76 65  m number of leve
6470: 6c 73 20 6f 66 20 6e 65 73 74 69 6e 67 20 70 65  ls of nesting pe
6480: 72 6d 69 74 74 65 64 20 69 6e 20 54 63 6c 20 63  rmitted in Tcl c
6490: 6f 6d 6d 61 6e 64 73 20 28 75 73 65 64 0a 20 20  ommands (used.  
64a0: 2a 20 74 6f 20 63 61 74 63 68 20 69 6e 66 69 6e  * to catch infin
64b0: 69 74 65 20 72 65 63 75 72 73 69 6f 6e 29 2e 0a  ite recursion)..
64c0: 40 40 20 2d 31 37 36 33 2c 38 20 2b 31 37 36 31  @@ -1763,8 +1761
64d0: 2c 36 20 40 40 0a 20 09 09 09 20 20 20 20 43 4f  ,6 @@. ...    CO
64e0: 4e 53 54 20 63 68 61 72 20 2a 76 61 6c 75 65 29  NST char *value)
64f0: 29 3b 0a 20 4d 4f 44 55 4c 45 5f 53 43 4f 50 45  );. MODULE_SCOPE
6500: 20 76 6f 69 64 09 54 63 6c 43 6c 65 61 6e 75 70   void.TclCleanup
6510: 4c 69 74 65 72 61 6c 54 61 62 6c 65 20 5f 41 4e  LiteralTable _AN
6520: 53 49 5f 41 52 47 53 5f 28 28 0a 20 09 09 09 20  SI_ARGS_((. ... 
6530: 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 2a 20 69     Tcl_Interp* i
6540: 6e 74 65 72 70 2c 20 4c 69 74 65 72 61 6c 54 61  nterp, LiteralTa
6550: 62 6c 65 2a 20 74 61 62 6c 65 50 74 72 29 29 3b  ble* tablePtr));
6560: 0a 2d 4d 4f 44 55 4c 45 5f 53 43 4f 50 45 20 76  .-MODULE_SCOPE v
6570: 6f 69 64 09 54 63 6c 44 69 73 63 61 72 64 49 6e  oid.TclDiscardIn
6580: 74 65 72 70 53 74 61 74 65 20 5f 41 4e 53 49 5f  terpState _ANSI_
6590: 41 52 47 53 5f 20 28 28 0a 2d 09 09 09 20 20 20  ARGS_ ((.-...   
65a0: 20 54 63 6c 49 6e 74 65 72 70 53 74 61 74 65 20   TclInterpState 
65b0: 73 74 61 74 65 29 29 3b 0a 20 4d 4f 44 55 4c 45  state));. MODULE
65c0: 5f 53 43 4f 50 45 20 76 6f 69 64 09 54 63 6c 45  _SCOPE void.TclE
65d0: 78 70 61 6e 64 54 6f 6b 65 6e 41 72 72 61 79 20  xpandTokenArray 
65e0: 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 0a 20 09  _ANSI_ARGS_((. .
65f0: 09 09 20 20 20 20 54 63 6c 5f 50 61 72 73 65 20  ..    Tcl_Parse 
6600: 2a 70 61 72 73 65 50 74 72 29 29 3b 0a 20 4d 4f  *parsePtr));. MO
6610: 44 55 4c 45 5f 53 43 4f 50 45 20 69 6e 74 09 54  DULE_SCOPE int.T
6620: 63 6c 46 69 6c 65 41 74 74 72 73 43 6d 64 20 5f  clFileAttrsCmd _
6630: 41 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f  ANSI_ARGS_((Tcl_
6640: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 0a  Interp *interp,.
6650: 40 40 20 2d 31 37 39 33 2c 38 20 2b 31 37 38 39  @@ -1793,8 +1789
6660: 2c 37 20 40 40 0a 20 4d 4f 44 55 4c 45 5f 53 43  ,7 @@. MODULE_SC
6670: 4f 50 45 20 76 6f 69 64 09 54 63 6c 46 69 6e 61  OPE void.TclFina
6680: 6c 69 7a 65 53 79 6e 63 68 72 6f 6e 69 7a 61 74  lizeSynchronizat
6690: 69 6f 6e 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28  ion _ANSI_ARGS_(
66a0: 28 76 6f 69 64 29 29 3b 0a 20 4d 4f 44 55 4c 45  (void));. MODULE
66b0: 5f 53 43 4f 50 45 20 76 6f 69 64 09 54 63 6c 46  _SCOPE void.TclF
66c0: 69 6e 61 6c 69 7a 65 4c 6f 63 6b 20 5f 41 4e 53  inalizeLock _ANS
66d0: 49 5f 41 52 47 53 5f 28 28 76 6f 69 64 29 29 3b  I_ARGS_((void));
66e0: 0a 20 4d 4f 44 55 4c 45 5f 53 43 4f 50 45 20 76  . MODULE_SCOPE v
66f0: 6f 69 64 09 54 63 6c 46 69 6e 61 6c 69 7a 65 54  oid.TclFinalizeT
6700: 68 72 65 61 64 44 61 74 61 20 5f 41 4e 53 49 5f  hreadData _ANSI_
6710: 41 52 47 53 5f 28 28 76 6f 69 64 29 29 3b 0a 2d  ARGS_((void));.-
6720: 4d 4f 44 55 4c 45 5f 53 43 4f 50 45 20 54 63 6c  MODULE_SCOPE Tcl
6730: 5f 4f 62 6a 20 2a 09 54 63 6c 47 65 74 52 65 74  _Obj *.TclGetRet
6740: 75 72 6e 4f 70 74 69 6f 6e 73 20 5f 41 4e 53 49  urnOptions _ANSI
6750: 5f 41 52 47 53 5f 28 28 54 63 6c 5f 49 6e 74 65  _ARGS_((Tcl_Inte
6760: 72 70 20 2a 69 6e 74 65 72 70 2c 0a 2d 09 09 09  rp *interp,.-...
6770: 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 29 29      int result))
6780: 3b 0a 2b 4d 4f 44 55 4c 45 5f 53 43 4f 50 45 20  ;.+MODULE_SCOPE 
6790: 54 63 6c 5f 4f 62 6a 20 2a 09 54 63 6c 47 65 74  Tcl_Obj *.TclGet
67a0: 42 67 45 72 72 6f 72 48 61 6e 64 6c 65 72 20 5f  BgErrorHandler _
67b0: 41 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f  ANSI_ARGS_((Tcl_
67c0: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 29 29  Interp *interp))
67d0: 3b 0a 20 4d 4f 44 55 4c 45 5f 53 43 4f 50 45 20  ;. MODULE_SCOPE 
67e0: 69 6e 74 09 54 63 6c 47 6c 6f 62 20 5f 41 4e 53  int.TclGlob _ANS
67f0: 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 49 6e 74  I_ARGS_((Tcl_Int
6800: 65 72 70 20 2a 69 6e 74 65 72 70 2c 0a 20 09 09  erp *interp,. ..
6810: 09 20 20 20 20 63 68 61 72 20 2a 70 61 74 74 65  .    char *patte
6820: 72 6e 2c 20 54 63 6c 5f 4f 62 6a 20 2a 75 6e 71  rn, Tcl_Obj *unq
6830: 75 6f 74 65 64 50 72 65 66 69 78 2c 20 0a 20 09  uotedPrefix, . .
6840: 09 09 20 20 20 20 69 6e 74 20 67 6c 6f 62 46 6c  ..    int globFl
6850: 61 67 73 2c 20 54 63 6c 5f 47 6c 6f 62 54 79 70  ags, Tcl_GlobTyp
6860: 65 44 61 74 61 2a 20 74 79 70 65 73 29 29 3b 0a  eData* types));.
6870: 40 40 20 2d 31 39 34 32 2c 31 32 20 2b 31 39 33  @@ -1942,12 +193
6880: 37 2c 38 20 40 40 0a 20 4d 4f 44 55 4c 45 5f 53  7,8 @@. MODULE_S
6890: 43 4f 50 45 20 76 6f 69 64 09 54 63 6c 52 65 6d  COPE void.TclRem
68a0: 65 6d 62 65 72 4d 75 74 65 78 20 5f 41 4e 53 49  emberMutex _ANSI
68b0: 5f 41 52 47 53 5f 28 28 54 63 6c 5f 4d 75 74 65  _ARGS_((Tcl_Mute
68c0: 78 20 2a 6d 75 74 65 78 29 29 3b 0a 20 4d 4f 44  x *mutex));. MOD
68d0: 55 4c 45 5f 53 43 4f 50 45 20 76 6f 69 64 09 54  ULE_SCOPE void.T
68e0: 63 6c 52 65 6d 6f 76 65 53 63 72 69 70 74 4c 69  clRemoveScriptLi
68f0: 6d 69 74 43 61 6c 6c 62 61 63 6b 73 20 5f 41 4e  mitCallbacks _AN
6900: 53 49 5f 41 52 47 53 5f 28 28 0a 20 09 09 09 20  SI_ARGS_((. ... 
6910: 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69     Tcl_Interp *i
6920: 6e 74 65 72 70 29 29 3b 0a 2d 4d 4f 44 55 4c 45  nterp));.-MODULE
6930: 5f 53 43 4f 50 45 20 69 6e 74 09 54 63 6c 52 65  _SCOPE int.TclRe
6940: 73 74 6f 72 65 49 6e 74 65 72 70 53 74 61 74 65  storeInterpState
6950: 20 5f 41 4e 53 49 5f 41 52 47 53 5f 20 28 28 0a   _ANSI_ARGS_ ((.
6960: 2d 09 09 09 20 20 20 20 54 63 6c 5f 49 6e 74 65  -...    Tcl_Inte
6970: 72 70 20 2a 69 6e 74 65 72 70 2c 20 54 63 6c 49  rp *interp, TclI
6980: 6e 74 65 72 70 53 74 61 74 65 20 73 74 61 74 65  nterpState state
6990: 29 29 3b 0a 2d 4d 4f 44 55 4c 45 5f 53 43 4f 50  ));.-MODULE_SCOP
69a0: 45 20 54 63 6c 49 6e 74 65 72 70 53 74 61 74 65  E TclInterpState
69b0: 20 54 63 6c 53 61 76 65 49 6e 74 65 72 70 53 74   TclSaveInterpSt
69c0: 61 74 65 20 5f 41 4e 53 49 5f 41 52 47 53 5f 20  ate _ANSI_ARGS_ 
69d0: 28 28 0a 2d 09 09 09 20 20 20 20 54 63 6c 5f 49  ((.-...    Tcl_I
69e0: 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 20 69  nterp *interp, i
69f0: 6e 74 20 73 74 61 74 75 73 29 29 3b 0a 2d 4d 4f  nt status));.-MO
6a00: 44 55 4c 45 5f 53 43 4f 50 45 20 69 6e 74 09 54  DULE_SCOPE int.T
6a10: 63 6c 53 65 74 52 65 74 75 72 6e 4f 70 74 69 6f  clSetReturnOptio
6a20: 6e 73 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28  ns _ANSI_ARGS_((
6a30: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65  Tcl_Interp *inte
6a40: 72 70 2c 0a 2d 09 09 09 20 20 20 20 54 63 6c 5f  rp,.-...    Tcl_
6a50: 4f 62 6a 20 2a 6f 70 74 69 6f 6e 73 29 29 3b 0a  Obj *options));.
6a60: 2b 4d 4f 44 55 4c 45 5f 53 43 4f 50 45 20 76 6f  +MODULE_SCOPE vo
6a70: 69 64 09 54 63 6c 53 65 74 42 67 45 72 72 6f 72  id.TclSetBgError
6a80: 48 61 6e 64 6c 65 72 20 5f 41 4e 53 49 5f 41 52  Handler _ANSI_AR
6a90: 47 53 5f 28 28 54 63 6c 5f 49 6e 74 65 72 70 20  GS_((Tcl_Interp 
6aa0: 2a 69 6e 74 65 72 70 2c 0a 2b 09 09 09 20 20 20  *interp,.+...   
6ab0: 20 54 63 6c 5f 4f 62 6a 20 2a 63 6d 64 50 72 65   Tcl_Obj *cmdPre
6ac0: 66 69 78 29 29 3b 0a 20 4d 4f 44 55 4c 45 5f 53  fix));. MODULE_S
6ad0: 43 4f 50 45 20 56 4f 49 44 09 54 63 6c 53 69 67  COPE VOID.TclSig
6ae0: 6e 61 6c 45 78 69 74 54 68 72 65 61 64 20 5f 41  nalExitThread _A
6af0: 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 54  NSI_ARGS_((Tcl_T
6b00: 68 72 65 61 64 49 64 20 69 64 2c 0a 20 09 09 09  hreadId id,. ...
6b10: 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 29 29      int result))
6b20: 3b 0a 20 4d 4f 44 55 4c 45 5f 53 43 4f 50 45 20  ;. MODULE_SCOPE 
6b30: 69 6e 74 09 54 63 6c 53 75 62 73 74 54 6f 6b 65  int.TclSubstToke
6b40: 6e 73 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28  ns _ANSI_ARGS_((
6b50: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65  Tcl_Interp *inte
6b60: 72 70 2c 0a 40 40 20 2d 32 30 33 33 2c 36 20 2b  rp,.@@ -2033,6 +
6b70: 32 30 32 34 2c 39 20 40 40 0a 20 4d 4f 44 55 4c  2024,9 @@. MODUL
6b80: 45 5f 53 43 4f 50 45 20 69 6e 74 09 54 63 6c 5f  E_SCOPE int.Tcl_
6b90: 43 6f 6e 74 69 6e 75 65 4f 62 6a 43 6d 64 20 5f  ContinueObjCmd _
6ba0: 41 4e 53 49 5f 41 52 47 53 5f 28 28 43 6c 69 65  ANSI_ARGS_((Clie
6bb0: 6e 74 44 61 74 61 20 63 6c 69 65 6e 74 44 61 74  ntData clientDat
6bc0: 61 2c 0a 20 09 09 09 20 20 20 20 54 63 6c 5f 49  a,. ...    Tcl_I
6bd0: 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 20 69  nterp *interp, i
6be0: 6e 74 20 6f 62 6a 63 2c 0a 20 09 09 09 20 20 20  nt objc,. ...   
6bf0: 20 54 63 6c 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20   Tcl_Obj *CONST 
6c00: 6f 62 6a 76 5b 5d 29 29 3b 0a 2b 4d 4f 44 55 4c  objv[]));.+MODUL
6c10: 45 5f 53 43 4f 50 45 20 69 6e 74 09 54 63 6c 44  E_SCOPE int.TclD
6c20: 65 66 61 75 6c 74 42 67 45 72 72 6f 72 48 61 6e  efaultBgErrorHan
6c30: 64 6c 65 72 4f 62 6a 43 6d 64 20 5f 41 4e 53 49  dlerObjCmd _ANSI
6c40: 5f 41 52 47 53 5f 28 28 0a 2b 09 09 09 20 20 20  _ARGS_((.+...   
6c50: 20 43 6c 69 65 6e 74 44 61 74 61 20 63 6c 69 65   ClientData clie
6c60: 6e 74 44 61 74 61 2c 20 54 63 6c 5f 49 6e 74 65  ntData, Tcl_Inte
6c70: 72 70 20 2a 69 6e 74 65 72 70 2c 0a 2b 09 09 09  rp *interp,.+...
6c80: 20 20 20 20 69 6e 74 20 6f 62 6a 63 2c 20 54 63      int objc, Tc
6c90: 6c 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a  l_Obj *CONST obj
6ca0: 76 5b 5d 29 29 3b 0a 20 4d 4f 44 55 4c 45 5f 53  v[]));. MODULE_S
6cb0: 43 4f 50 45 20 69 6e 74 09 54 63 6c 5f 44 69 63  COPE int.Tcl_Dic
6cc0: 74 4f 62 6a 43 6d 64 20 5f 41 4e 53 49 5f 41 52  tObjCmd _ANSI_AR
6cd0: 47 53 5f 28 28 43 6c 69 65 6e 74 44 61 74 61 20  GS_((ClientData 
6ce0: 63 6c 69 65 6e 74 44 61 74 61 2c 0a 20 09 09 09  clientData,. ...
6cf0: 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a      Tcl_Interp *
6d00: 69 6e 74 65 72 70 2c 20 69 6e 74 20 6f 62 6a 63  interp, int objc
6d10: 2c 0a 20 09 09 09 20 20 20 20 54 63 6c 5f 4f 62  ,. ...    Tcl_Ob
6d20: 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d 29  j *CONST objv[])
6d30: 29 3b 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69  );.Index: generi
6d40: 63 2f 74 63 6c 49 6e 74 65 72 70 2e 63 0a 3d 3d  c/tclInterp.c.==
6d50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6d60: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6d70: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6d80: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6d90: 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73  =.RCS file: /cvs
6da0: 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e  root/tcl/tcl/gen
6db0: 65 72 69 63 2f 74 63 6c 49 6e 74 65 72 70 2e 63  eric/tclInterp.c
6dc0: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65  ,v.retrieving re
6dd0: 76 69 73 69 6f 6e 20 31 2e 34 38 0a 64 69 66 66  vision 1.48.diff
6de0: 20 2d 75 20 2d 72 31 2e 34 38 20 74 63 6c 49 6e   -u -r1.48 tclIn
6df0: 74 65 72 70 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72  terp.c.--- gener
6e00: 69 63 2f 74 63 6c 49 6e 74 65 72 70 2e 63 09 32  ic/tclInterp.c.2
6e10: 35 20 4f 63 74 20 32 30 30 34 20 31 37 3a 32 34  5 Oct 2004 17:24
6e20: 3a 33 37 20 2d 30 30 30 30 09 31 2e 34 38 0a 2b  :37 -0000.1.48.+
6e30: 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e  ++ generic/tclIn
6e40: 74 65 72 70 2e 63 09 34 20 4e 6f 76 20 32 30 30  terp.c.4 Nov 200
6e50: 34 20 32 32 3a 33 31 3a 35 39 20 2d 30 30 30 30  4 22:31:59 -0000
6e60: 0a 40 40 20 2d 32 38 37 2c 36 20 2b 32 38 37 2c  .@@ -287,6 +287,
6e70: 39 20 40 40 0a 20 09 09 09 20 20 20 20 54 63 6c  9 @@. ...    Tcl
6e80: 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76  _Obj *CONST objv
6e90: 5b 5d 29 29 3b 0a 20 73 74 61 74 69 63 20 76 6f  []));. static vo
6ea0: 69 64 09 09 49 6e 74 65 72 70 49 6e 66 6f 44 65  id..InterpInfoDe
6eb0: 6c 65 74 65 50 72 6f 63 20 5f 41 4e 53 49 5f 41  leteProc _ANSI_A
6ec0: 52 47 53 5f 28 28 0a 20 09 09 09 20 20 20 20 43  RGS_((. ...    C
6ed0: 6c 69 65 6e 74 44 61 74 61 20 63 6c 69 65 6e 74  lientData client
6ee0: 44 61 74 61 2c 20 54 63 6c 5f 49 6e 74 65 72 70  Data, Tcl_Interp
6ef0: 20 2a 69 6e 74 65 72 70 29 29 3b 0a 2b 73 74 61   *interp));.+sta
6f00: 74 69 63 20 69 6e 74 09 09 53 6c 61 76 65 42 67  tic int..SlaveBg
6f10: 65 72 72 6f 72 20 5f 41 4e 53 49 5f 41 52 47 53  error _ANSI_ARGS
6f20: 5f 28 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69  _((Tcl_Interp *i
6f30: 6e 74 65 72 70 2c 0a 2b 09 09 09 20 20 20 20 54  nterp,.+...    T
6f40: 63 6c 5f 49 6e 74 65 72 70 20 2a 73 6c 61 76 65  cl_Interp *slave
6f50: 49 6e 74 65 72 70 2c 20 69 6e 74 20 6f 62 6a 63  Interp, int objc
6f60: 2c 0a 2b 09 09 09 20 20 20 20 54 63 6c 5f 4f 62  ,.+...    Tcl_Ob
6f70: 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d 29  j *CONST objv[])
6f80: 29 3b 0a 20 73 74 61 74 69 63 20 54 63 6c 5f 49  );. static Tcl_I
6f90: 6e 74 65 72 70 20 2a 09 53 6c 61 76 65 43 72 65  nterp *.SlaveCre
6fa0: 61 74 65 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28  ate _ANSI_ARGS_(
6fb0: 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74  (Tcl_Interp *int
6fc0: 65 72 70 2c 0a 20 09 09 20 20 20 20 20 20 20 20  erp,. ..        
6fd0: 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 70 61 74      Tcl_Obj *pat
6fe0: 68 50 74 72 2c 20 69 6e 74 20 73 61 66 65 29 29  hPtr, int safe))
6ff0: 3b 0a 20 73 74 61 74 69 63 20 69 6e 74 09 09 53  ;. static int..S
7000: 6c 61 76 65 45 76 61 6c 20 5f 41 4e 53 49 5f 41  laveEval _ANSI_A
7010: 52 47 53 5f 28 28 54 63 6c 5f 49 6e 74 65 72 70  RGS_((Tcl_Interp
7020: 20 2a 69 6e 74 65 72 70 2c 0a 40 40 20 2d 35 34   *interp,.@@ -54
7030: 38 2c 31 39 20 2b 35 35 31 2c 31 39 20 40 40 0a  8,19 +551,19 @@.
7040: 20 7b 0a 20 20 20 20 20 69 6e 74 20 69 6e 64 65   {.     int inde
7050: 78 3b 0a 20 20 20 20 20 73 74 61 74 69 63 20 43  x;.     static C
7060: 4f 4e 53 54 20 63 68 61 72 20 2a 6f 70 74 69 6f  ONST char *optio
7070: 6e 73 5b 5d 20 3d 20 7b 0a 2d 20 20 20 20 20 20  ns[] = {.-      
7080: 20 20 22 61 6c 69 61 73 22 2c 09 22 61 6c 69 61    "alias",."alia
7090: 73 65 73 22 2c 09 22 63 72 65 61 74 65 22 2c 09  ses",."create",.
70a0: 22 64 65 6c 65 74 65 22 2c 20 0a 2d 09 22 65 76  "delete", .-."ev
70b0: 61 6c 22 2c 09 09 22 65 78 69 73 74 73 22 2c 09  al",.."exists",.
70c0: 22 65 78 70 6f 73 65 22 2c 09 22 68 69 64 65 22  "expose",."hide"
70d0: 2c 20 0a 2d 09 22 68 69 64 64 65 6e 22 2c 09 22  , .-."hidden",."
70e0: 69 73 73 61 66 65 22 2c 09 22 69 6e 76 6f 6b 65  issafe",."invoke
70f0: 68 69 64 64 65 6e 22 2c 09 22 6c 69 6d 69 74 22  hidden",."limit"
7100: 2c 0a 2d 09 22 6d 61 72 6b 74 72 75 73 74 65 64  ,.-."marktrusted
7110: 22 2c 09 22 72 65 63 75 72 73 69 6f 6e 6c 69 6d  ",."recursionlim
7120: 69 74 22 2c 22 73 6c 61 76 65 73 22 2c 09 22 73  it","slaves",."s
7130: 68 61 72 65 22 2c 0a 2d 09 22 74 61 72 67 65 74  hare",.-."target
7140: 22 2c 09 22 74 72 61 6e 73 66 65 72 22 2c 0a 2b  ",."transfer",.+
7150: 20 20 20 20 20 20 20 20 22 61 6c 69 61 73 22 2c          "alias",
7160: 09 22 61 6c 69 61 73 65 73 22 2c 09 22 62 67 65  ."aliases",."bge
7170: 72 72 6f 72 22 2c 09 22 63 72 65 61 74 65 22 2c  rror",."create",
7180: 0a 2b 09 22 64 65 6c 65 74 65 22 2c 09 22 65 76  .+."delete",."ev
7190: 61 6c 22 2c 09 09 22 65 78 69 73 74 73 22 2c 09  al",.."exists",.
71a0: 22 65 78 70 6f 73 65 22 2c 0a 2b 09 22 68 69 64  "expose",.+."hid
71b0: 65 22 2c 09 09 22 68 69 64 64 65 6e 22 2c 09 22  e",.."hidden",."
71c0: 69 73 73 61 66 65 22 2c 09 22 69 6e 76 6f 6b 65  issafe",."invoke
71d0: 68 69 64 64 65 6e 22 2c 0a 2b 09 22 6c 69 6d 69  hidden",.+."limi
71e0: 74 22 2c 09 22 6d 61 72 6b 74 72 75 73 74 65 64  t",."marktrusted
71f0: 22 2c 09 22 72 65 63 75 72 73 69 6f 6e 6c 69 6d  ",."recursionlim
7200: 69 74 22 2c 22 73 6c 61 76 65 73 22 2c 0a 2b 09  it","slaves",.+.
7210: 22 73 68 61 72 65 22 2c 09 22 74 61 72 67 65 74  "share",."target
7220: 22 2c 09 22 74 72 61 6e 73 66 65 72 22 2c 0a 20  ",."transfer",. 
7230: 20 20 20 20 20 20 20 20 4e 55 4c 4c 0a 20 20 20          NULL.   
7240: 20 20 7d 3b 0a 20 20 20 20 20 65 6e 75 6d 20 6f    };.     enum o
7250: 70 74 69 6f 6e 20 7b 0a 2d 09 4f 50 54 5f 41 4c  ption {.-.OPT_AL
7260: 49 41 53 2c 09 4f 50 54 5f 41 4c 49 41 53 45 53  IAS,.OPT_ALIASES
7270: 2c 09 4f 50 54 5f 43 52 45 41 54 45 2c 09 4f 50  ,.OPT_CREATE,.OP
7280: 54 5f 44 45 4c 45 54 45 2c 0a 2d 09 4f 50 54 5f  T_DELETE,.-.OPT_
7290: 45 56 41 4c 2c 09 4f 50 54 5f 45 58 49 53 54 53  EVAL,.OPT_EXISTS
72a0: 2c 09 4f 50 54 5f 45 58 50 4f 53 45 2c 09 4f 50  ,.OPT_EXPOSE,.OP
72b0: 54 5f 48 49 44 45 2c 0a 2d 09 4f 50 54 5f 48 49  T_HIDE,.-.OPT_HI
72c0: 44 44 45 4e 2c 09 4f 50 54 5f 49 53 53 41 46 45  DDEN,.OPT_ISSAFE
72d0: 2c 09 4f 50 54 5f 49 4e 56 4f 4b 45 48 49 44 2c  ,.OPT_INVOKEHID,
72e0: 09 4f 50 54 5f 4c 49 4d 49 54 2c 0a 2d 09 4f 50  .OPT_LIMIT,.-.OP
72f0: 54 5f 4d 41 52 4b 54 52 55 53 54 45 44 2c 4f 50  T_MARKTRUSTED,OP
7300: 54 5f 52 45 43 4c 49 4d 49 54 2c 09 4f 50 54 5f  T_RECLIMIT,.OPT_
7310: 53 4c 41 56 45 53 2c 09 4f 50 54 5f 53 48 41 52  SLAVES,.OPT_SHAR
7320: 45 2c 0a 2d 09 4f 50 54 5f 54 41 52 47 45 54 2c  E,.-.OPT_TARGET,
7330: 09 4f 50 54 5f 54 52 41 4e 53 46 45 52 0a 2b 09  .OPT_TRANSFER.+.
7340: 4f 50 54 5f 41 4c 49 41 53 2c 09 4f 50 54 5f 41  OPT_ALIAS,.OPT_A
7350: 4c 49 41 53 45 53 2c 09 4f 50 54 5f 42 47 45 52  LIASES,.OPT_BGER
7360: 52 4f 52 2c 09 4f 50 54 5f 43 52 45 41 54 45 2c  ROR,.OPT_CREATE,
7370: 0a 2b 09 4f 50 54 5f 44 45 4c 45 54 45 2c 09 4f  .+.OPT_DELETE,.O
7380: 50 54 5f 45 56 41 4c 2c 09 4f 50 54 5f 45 58 49  PT_EVAL,.OPT_EXI
7390: 53 54 53 2c 09 4f 50 54 5f 45 58 50 4f 53 45 2c  STS,.OPT_EXPOSE,
73a0: 0a 2b 09 4f 50 54 5f 48 49 44 45 2c 09 4f 50 54  .+.OPT_HIDE,.OPT
73b0: 5f 48 49 44 44 45 4e 2c 09 4f 50 54 5f 49 53 53  _HIDDEN,.OPT_ISS
73c0: 41 46 45 2c 09 4f 50 54 5f 49 4e 56 4f 4b 45 48  AFE,.OPT_INVOKEH
73d0: 49 44 2c 0a 2b 09 4f 50 54 5f 4c 49 4d 49 54 2c  ID,.+.OPT_LIMIT,
73e0: 09 4f 50 54 5f 4d 41 52 4b 54 52 55 53 54 45 44  .OPT_MARKTRUSTED
73f0: 2c 4f 50 54 5f 52 45 43 4c 49 4d 49 54 2c 09 4f  ,OPT_RECLIMIT,.O
7400: 50 54 5f 53 4c 41 56 45 53 2c 0a 2b 09 4f 50 54  PT_SLAVES,.+.OPT
7410: 5f 53 48 41 52 45 2c 09 4f 50 54 5f 54 41 52 47  _SHARE,.OPT_TARG
7420: 45 54 2c 09 4f 50 54 5f 54 52 41 4e 53 46 45 52  ET,.OPT_TRANSFER
7430: 0a 20 20 20 20 20 7d 3b 0a 20 0a 20 0a 40 40 20  .     };. . .@@ 
7440: 2d 36 31 37 2c 36 20 2b 36 32 30 2c 31 39 20 40  -617,6 +620,19 @
7450: 40 0a 20 09 20 20 20 20 7d 0a 20 09 20 20 20 20  @. .    }. .    
7460: 72 65 74 75 72 6e 20 41 6c 69 61 73 4c 69 73 74  return AliasList
7470: 28 69 6e 74 65 72 70 2c 20 73 6c 61 76 65 49 6e  (interp, slaveIn
7480: 74 65 72 70 29 3b 0a 20 09 7d 0a 2b 09 63 61 73  terp);. .}.+.cas
7490: 65 20 4f 50 54 5f 42 47 45 52 52 4f 52 3a 20 7b  e OPT_BGERROR: {
74a0: 0a 2b 09 20 20 20 20 54 63 6c 5f 49 6e 74 65 72  .+.    Tcl_Inter
74b0: 70 20 2a 73 6c 61 76 65 49 6e 74 65 72 70 3b 0a  p *slaveInterp;.
74c0: 2b 0a 2b 09 20 20 20 20 69 66 20 28 6f 62 6a 63  +.+.    if (objc
74d0: 20 21 3d 20 33 20 26 26 20 6f 62 6a 63 20 21 3d   != 3 && objc !=
74e0: 20 34 29 20 7b 0a 2b 09 09 54 63 6c 5f 57 72 6f   4) {.+..Tcl_Wro
74f0: 6e 67 4e 75 6d 41 72 67 73 28 69 6e 74 65 72 70  ngNumArgs(interp
7500: 2c 20 32 2c 20 6f 62 6a 76 2c 20 22 70 61 74 68  , 2, objv, "path
7510: 20 3f 6e 65 77 6c 69 6d 69 74 3f 22 29 3b 0a 2b   ?newlimit?");.+
7520: 09 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52  ..return TCL_ERR
7530: 4f 52 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20  OR;.+.    }.+.  
7540: 20 20 73 6c 61 76 65 49 6e 74 65 72 70 20 3d 20    slaveInterp = 
7550: 47 65 74 49 6e 74 65 72 70 28 69 6e 74 65 72 70  GetInterp(interp
7560: 2c 20 6f 62 6a 76 5b 32 5d 29 3b 0a 2b 09 20 20  , objv[2]);.+.  
7570: 20 20 69 66 20 28 73 6c 61 76 65 49 6e 74 65 72    if (slaveInter
7580: 70 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 09  p == NULL) {.+..
7590: 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52  return TCL_ERROR
75a0: 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20 20 20  ;.+.    }.+.    
75b0: 72 65 74 75 72 6e 20 53 6c 61 76 65 42 67 65 72  return SlaveBger
75c0: 72 6f 72 28 69 6e 74 65 72 70 2c 20 73 6c 61 76  ror(interp, slav
75d0: 65 49 6e 74 65 72 70 2c 20 6f 62 6a 63 20 2d 20  eInterp, objc - 
75e0: 33 2c 20 6f 62 6a 76 20 2b 20 33 29 3b 0a 2b 09  3, objv + 3);.+.
75f0: 7d 0a 20 09 63 61 73 65 20 4f 50 54 5f 43 52 45  }. .case OPT_CRE
7600: 41 54 45 3a 20 7b 0a 20 09 20 20 20 20 69 6e 74  ATE: {. .    int
7610: 20 69 2c 20 6c 61 73 74 2c 20 73 61 66 65 3b 0a   i, last, safe;.
7620: 20 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 73   .    Tcl_Obj *s
7630: 6c 61 76 65 50 74 72 3b 0a 40 40 20 2d 31 39 38  lavePtr;.@@ -198
7640: 38 2c 36 20 2b 32 30 30 34 2c 34 38 20 40 40 0a  8,6 +2004,48 @@.
7650: 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d   /*.  *---------
7660: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7670: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7680: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7690: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20  -------------.  
76a0: 2a 0a 2b 20 2a 20 53 6c 61 76 65 42 67 65 72 72  *.+ * SlaveBgerr
76b0: 6f 72 20 2d 2d 0a 2b 20 2a 0a 2b 20 2a 09 48 65  or --.+ *.+ *.He
76c0: 6c 70 65 72 20 66 75 6e 63 74 69 6f 6e 20 74 6f  lper function to
76d0: 20 73 65 74 2f 71 75 65 72 79 20 74 68 65 20 62   set/query the b
76e0: 61 63 6b 67 72 6f 75 6e 64 20 65 72 72 6f 72 20  ackground error 
76f0: 68 61 6e 64 6c 69 6e 67 0a 2b 20 2a 09 63 6f 6d  handling.+ *.com
7700: 6d 61 6e 64 20 70 72 65 66 69 78 20 6f 66 20 61  mand prefix of a
7710: 6e 20 69 6e 74 65 72 70 0a 2b 20 2a 0a 2b 20 2a  n interp.+ *.+ *
7720: 20 52 65 73 75 6c 74 73 3a 0a 2b 20 2a 09 41 20   Results:.+ *.A 
7730: 73 74 61 6e 64 61 72 64 20 54 63 6c 20 72 65 73  standard Tcl res
7740: 75 6c 74 2e 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64  ult..+ *.+ * Sid
7750: 65 20 65 66 66 65 63 74 73 3a 0a 2b 20 2a 20 20  e effects:.+ *  
7760: 20 20 20 20 57 68 65 6e 20 28 6f 62 6a 63 20 3d      When (objc =
7770: 3d 20 31 29 2c 20 73 6c 61 76 65 49 6e 74 65 72  = 1), slaveInter
7780: 70 20 77 69 6c 6c 20 62 65 20 73 65 74 20 74 6f  p will be set to
7790: 20 61 20 6e 65 77 20 62 61 63 6b 67 72 6f 75 6e   a new backgroun
77a0: 64 0a 2b 20 2a 09 68 61 6e 64 6c 65 72 20 6f 66  d.+ *.handler of
77b0: 20 6f 62 6a 76 5b 30 5d 2e 0a 2b 20 2a 0a 2b 20   objv[0]..+ *.+ 
77c0: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  *---------------
77d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
77e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
77f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7800: 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 0a 2b  -------.+ */.+.+
7810: 73 74 61 74 69 63 20 69 6e 74 0a 2b 53 6c 61 76  static int.+Slav
7820: 65 42 67 65 72 72 6f 72 28 69 6e 74 65 72 70 2c  eBgerror(interp,
7830: 20 73 6c 61 76 65 49 6e 74 65 72 70 2c 20 6f 62   slaveInterp, ob
7840: 6a 63 2c 20 6f 62 6a 76 29 0a 2b 20 20 20 20 54  jc, objv).+    T
7850: 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72  cl_Interp *inter
7860: 70 3b 09 09 2f 2a 20 49 6e 74 65 72 70 20 66 6f  p;../* Interp fo
7870: 72 20 65 72 72 6f 72 20 72 65 74 75 72 6e 2e 20  r error return. 
7880: 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 49 6e 74 65  */.+    Tcl_Inte
7890: 72 70 09 2a 73 6c 61 76 65 49 6e 74 65 72 70 3b  rp.*slaveInterp;
78a0: 09 2f 2a 20 49 6e 74 65 72 70 20 69 6e 20 77 68  ./* Interp in wh
78b0: 69 63 68 20 6c 69 6d 69 74 20 69 73 20 73 65 74  ich limit is set
78c0: 2f 71 75 65 72 69 65 64 2e 20 2a 2f 0a 2b 20 20  /queried. */.+  
78d0: 20 20 69 6e 74 20 6f 62 6a 63 3b 09 09 09 2f 2a    int objc;.../*
78e0: 20 53 65 74 20 6f 72 20 51 75 65 72 79 2e 20 2a   Set or Query. *
78f0: 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a  /.+    Tcl_Obj *
7900: 43 4f 4e 53 54 20 6f 62 6a 76 5b 5d 3b 09 2f 2a  CONST objv[];./*
7910: 20 41 72 67 75 6d 65 6e 74 20 73 74 72 69 6e 67   Argument string
7920: 73 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 69 66  s. */.+{.+    if
7930: 20 28 6f 62 6a 63 29 20 7b 0a 2b 09 69 6e 74 20   (objc) {.+.int 
7940: 6c 65 6e 67 74 68 3b 0a 2b 0a 2b 09 69 66 20 28  length;.+.+.if (
7950: 54 43 4c 5f 45 52 52 4f 52 20 3d 3d 20 54 63 6c  TCL_ERROR == Tcl
7960: 5f 4c 69 73 74 4f 62 6a 4c 65 6e 67 74 68 28 69  _ListObjLength(i
7970: 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 30 5d 2c 20  nterp, objv[0], 
7980: 26 6c 65 6e 67 74 68 29 29 20 7b 0a 2b 09 20 20  &length)) {.+.  
7990: 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52    return TCL_ERR
79a0: 4f 52 3b 0a 2b 09 7d 0a 2b 09 69 66 20 28 6c 65  OR;.+.}.+.if (le
79b0: 6e 67 74 68 20 3c 20 31 29 20 7b 0a 2b 09 20 20  ngth < 1) {.+.  
79c0: 20 20 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75    Tcl_AppendResu
79d0: 6c 74 28 69 6e 74 65 72 70 2c 20 22 63 6d 64 50  lt(interp, "cmdP
79e0: 72 65 66 69 78 20 6d 75 73 74 20 62 65 20 6c 69  refix must be li
79f0: 73 74 20 6f 66 20 6c 65 6e 67 74 68 20 3e 3d 20  st of length >= 
7a00: 31 22 2c 0a 2b 09 09 20 20 20 20 28 63 68 61 72  1",.+..    (char
7a10: 20 2a 29 20 4e 55 4c 4c 29 3b 0a 2b 09 20 20 20   *) NULL);.+.   
7a20: 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f   return TCL_ERRO
7a30: 52 3b 0a 2b 09 7d 0a 2b 09 54 63 6c 53 65 74 42  R;.+.}.+.TclSetB
7a40: 67 45 72 72 6f 72 48 61 6e 64 6c 65 72 28 69 6e  gErrorHandler(in
7a50: 74 65 72 70 2c 20 6f 62 6a 76 5b 30 5d 29 3b 0a  terp, objv[0]);.
7a60: 2b 20 20 20 20 7d 0a 2b 20 20 20 20 54 63 6c 5f  +    }.+    Tcl_
7a70: 53 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74  SetObjResult(int
7a80: 65 72 70 2c 20 54 63 6c 47 65 74 42 67 45 72 72  erp, TclGetBgErr
7a90: 6f 72 48 61 6e 64 6c 65 72 28 69 6e 74 65 72 70  orHandler(interp
7aa0: 29 29 3b 0a 2b 20 20 20 20 72 65 74 75 72 6e 20  ));.+    return 
7ab0: 54 43 4c 5f 4f 4b 3b 0a 2b 7d 0a 2b 0c 0a 2b 2f  TCL_OK;.+}.+..+/
7ac0: 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  *.+ *-----------
7ad0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7ae0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7af0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7b00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a  -----------.+ *.
7b10: 20 20 2a 20 53 6c 61 76 65 43 72 65 61 74 65 20    * SlaveCreate 
7b20: 2d 2d 0a 20 20 2a 0a 20 20 2a 09 48 65 6c 70 65  --.  *.  *.Helpe
7b30: 72 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 64 6f  r function to do
7b40: 20 74 68 65 20 61 63 74 75 61 6c 20 77 6f 72 6b   the actual work
7b50: 20 6f 66 20 63 72 65 61 74 69 6e 67 20 61 20 73   of creating a s
7b60: 6c 61 76 65 20 69 6e 74 65 72 70 0a 40 40 20 2d  lave interp.@@ -
7b70: 32 31 33 35 2c 31 34 20 2b 32 31 39 33 2c 31 34  2135,14 +2193,14
7b80: 20 40 40 0a 20 20 20 20 20 54 63 6c 5f 49 6e 74   @@.     Tcl_Int
7b90: 65 72 70 20 2a 73 6c 61 76 65 49 6e 74 65 72 70  erp *slaveInterp
7ba0: 3b 0a 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78  ;.     int index
7bb0: 3b 0a 20 20 20 20 20 73 74 61 74 69 63 20 43 4f  ;.     static CO
7bc0: 4e 53 54 20 63 68 61 72 20 2a 6f 70 74 69 6f 6e  NST char *option
7bd0: 73 5b 5d 20 3d 20 7b 0a 2d 09 22 61 6c 69 61 73  s[] = {.-."alias
7be0: 22 2c 09 22 61 6c 69 61 73 65 73 22 2c 09 22 65  ",."aliases",."e
7bf0: 76 61 6c 22 2c 09 09 22 65 78 70 6f 73 65 22 2c  val",.."expose",
7c00: 0a 2d 09 22 68 69 64 65 22 2c 09 09 22 68 69 64  .-."hide",.."hid
7c10: 64 65 6e 22 2c 09 22 69 73 73 61 66 65 22 2c 09  den",."issafe",.
7c20: 22 69 6e 76 6f 6b 65 68 69 64 64 65 6e 22 2c 0a  "invokehidden",.
7c30: 2d 09 22 6c 69 6d 69 74 22 2c 09 22 6d 61 72 6b  -."limit",."mark
7c40: 74 72 75 73 74 65 64 22 2c 09 22 72 65 63 75 72  trusted",."recur
7c50: 73 69 6f 6e 6c 69 6d 69 74 22 2c 20 4e 55 4c 4c  sionlimit", NULL
7c60: 0a 2b 09 22 61 6c 69 61 73 22 2c 09 22 61 6c 69  .+."alias",."ali
7c70: 61 73 65 73 22 2c 09 22 62 67 65 72 72 6f 72 22  ases",."bgerror"
7c80: 2c 09 22 65 76 61 6c 22 2c 0a 2b 09 22 65 78 70  ,."eval",.+."exp
7c90: 6f 73 65 22 2c 09 22 68 69 64 65 22 2c 09 09 22  ose",."hide",.."
7ca0: 68 69 64 64 65 6e 22 2c 09 22 69 73 73 61 66 65  hidden",."issafe
7cb0: 22 2c 0a 2b 09 22 69 6e 76 6f 6b 65 68 69 64 64  ",.+."invokehidd
7cc0: 65 6e 22 2c 09 22 6c 69 6d 69 74 22 2c 09 22 6d  en",."limit",."m
7cd0: 61 72 6b 74 72 75 73 74 65 64 22 2c 09 22 72 65  arktrusted",."re
7ce0: 63 75 72 73 69 6f 6e 6c 69 6d 69 74 22 2c 20 4e  cursionlimit", N
7cf0: 55 4c 4c 0a 20 20 20 20 20 7d 3b 0a 20 20 20 20  ULL.     };.    
7d00: 20 65 6e 75 6d 20 6f 70 74 69 6f 6e 73 20 7b 0a   enum options {.
7d10: 2d 09 4f 50 54 5f 41 4c 49 41 53 2c 09 4f 50 54  -.OPT_ALIAS,.OPT
7d20: 5f 41 4c 49 41 53 45 53 2c 09 4f 50 54 5f 45 56  _ALIASES,.OPT_EV
7d30: 41 4c 2c 09 4f 50 54 5f 45 58 50 4f 53 45 2c 0a  AL,.OPT_EXPOSE,.
7d40: 2d 09 4f 50 54 5f 48 49 44 45 2c 09 4f 50 54 5f  -.OPT_HIDE,.OPT_
7d50: 48 49 44 44 45 4e 2c 09 4f 50 54 5f 49 53 53 41  HIDDEN,.OPT_ISSA
7d60: 46 45 2c 09 4f 50 54 5f 49 4e 56 4f 4b 45 48 49  FE,.OPT_INVOKEHI
7d70: 44 44 45 4e 2c 0a 2d 09 4f 50 54 5f 4c 49 4d 49  DDEN,.-.OPT_LIMI
7d80: 54 2c 09 4f 50 54 5f 4d 41 52 4b 54 52 55 53 54  T,.OPT_MARKTRUST
7d90: 45 44 2c 20 4f 50 54 5f 52 45 43 4c 49 4d 49 54  ED, OPT_RECLIMIT
7da0: 0a 2b 09 4f 50 54 5f 41 4c 49 41 53 2c 09 4f 50  .+.OPT_ALIAS,.OP
7db0: 54 5f 41 4c 49 41 53 45 53 2c 09 4f 50 54 5f 42  T_ALIASES,.OPT_B
7dc0: 47 45 52 52 4f 52 2c 09 4f 50 54 5f 45 56 41 4c  GERROR,.OPT_EVAL
7dd0: 2c 0a 2b 09 4f 50 54 5f 45 58 50 4f 53 45 2c 09  ,.+.OPT_EXPOSE,.
7de0: 4f 50 54 5f 48 49 44 45 2c 09 4f 50 54 5f 48 49  OPT_HIDE,.OPT_HI
7df0: 44 44 45 4e 2c 09 4f 50 54 5f 49 53 53 41 46 45  DDEN,.OPT_ISSAFE
7e00: 2c 0a 2b 09 4f 50 54 5f 49 4e 56 4f 4b 45 48 49  ,.+.OPT_INVOKEHI
7e10: 44 44 45 4e 2c 20 4f 50 54 5f 4c 49 4d 49 54 2c  DDEN, OPT_LIMIT,
7e20: 09 4f 50 54 5f 4d 41 52 4b 54 52 55 53 54 45 44  .OPT_MARKTRUSTED
7e30: 2c 20 4f 50 54 5f 52 45 43 4c 49 4d 49 54 0a 20  , OPT_RECLIMIT. 
7e40: 20 20 20 20 7d 3b 0a 20 20 20 20 20 0a 20 20 20      };.     .   
7e50: 20 20 73 6c 61 76 65 49 6e 74 65 72 70 20 3d 20    slaveInterp = 
7e60: 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 29 20 63  (Tcl_Interp *) c
7e70: 6c 69 65 6e 74 44 61 74 61 3b 0a 40 40 20 2d 32  lientData;.@@ -2
7e80: 31 38 35 2c 36 20 2b 32 32 34 33 2c 31 33 20 40  185,6 +2243,13 @
7e90: 40 0a 20 09 20 20 20 20 7d 0a 20 09 20 20 20 20  @. .    }. .    
7ea0: 72 65 74 75 72 6e 20 41 6c 69 61 73 4c 69 73 74  return AliasList
7eb0: 28 69 6e 74 65 72 70 2c 20 73 6c 61 76 65 49 6e  (interp, slaveIn
7ec0: 74 65 72 70 29 3b 0a 20 09 7d 0a 2b 09 63 61 73  terp);. .}.+.cas
7ed0: 65 20 4f 50 54 5f 42 47 45 52 52 4f 52 3a 20 7b  e OPT_BGERROR: {
7ee0: 0a 2b 09 20 20 20 20 69 66 20 28 6f 62 6a 63 20  .+.    if (objc 
7ef0: 21 3d 20 32 20 26 26 20 6f 62 6a 63 20 21 3d 20  != 2 && objc != 
7f00: 33 29 20 7b 0a 2b 09 09 54 63 6c 5f 57 72 6f 6e  3) {.+..Tcl_Wron
7f10: 67 4e 75 6d 41 72 67 73 28 69 6e 74 65 72 70 2c  gNumArgs(interp,
7f20: 20 32 2c 20 6f 62 6a 76 2c 20 22 3f 63 6d 64 50   2, objv, "?cmdP
7f30: 72 65 66 69 78 3f 22 29 3b 0a 2b 09 09 72 65 74  refix?");.+..ret
7f40: 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b  urn TCL_ERROR;.+
7f50: 09 20 20 20 20 7d 0a 2b 09 20 20 20 20 72 65 74  .    }.+.    ret
7f60: 75 72 6e 20 53 6c 61 76 65 42 67 65 72 72 6f 72  urn SlaveBgerror
7f70: 28 69 6e 74 65 72 70 2c 20 73 6c 61 76 65 49 6e  (interp, slaveIn
7f80: 74 65 72 70 2c 20 6f 62 6a 63 20 2d 20 32 2c 20  terp, objc - 2, 
7f90: 6f 62 6a 76 20 2b 20 32 29 3b 0a 2b 09 7d 0a 20  objv + 2);.+.}. 
7fa0: 09 63 61 73 65 20 4f 50 54 5f 45 56 41 4c 3a 20  .case OPT_EVAL: 
7fb0: 7b 0a 20 09 20 20 20 20 69 66 20 28 6f 62 6a 63  {. .    if (objc
7fc0: 20 3c 20 33 29 20 7b 0a 20 09 09 54 63 6c 5f 57   < 3) {. ..Tcl_W
7fd0: 72 6f 6e 67 4e 75 6d 41 72 67 73 28 69 6e 74 65  rongNumArgs(inte
7fe0: 72 70 2c 20 32 2c 20 6f 62 6a 76 2c 20 22 61 72  rp, 2, objv, "ar
7ff0: 67 20 3f 61 72 67 20 2e 2e 2e 3f 22 29 3b 0a 49  g ?arg ...?");.I
8000: 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63  ndex: generic/tc
8010: 6c 4d 61 69 6e 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d  lMain.c.========
8020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
8030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
8040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
8050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20  ===========.RCS 
8060: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74  file: /cvsroot/t
8070: 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74  cl/tcl/generic/t
8080: 63 6c 4d 61 69 6e 2e 63 2c 76 0a 72 65 74 72 69  clMain.c,v.retri
8090: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31  eving revision 1
80a0: 2e 32 39 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e  .29.diff -u -r1.
80b0: 32 39 20 74 63 6c 4d 61 69 6e 2e 63 0a 2d 2d 2d  29 tclMain.c.---
80c0: 20 67 65 6e 65 72 69 63 2f 74 63 6c 4d 61 69 6e   generic/tclMain
80d0: 2e 63 09 32 35 20 4f 63 74 20 32 30 30 34 20 31  .c.25 Oct 2004 1
80e0: 37 3a 32 34 3a 33 39 20 2d 30 30 30 30 09 31 2e  7:24:39 -0000.1.
80f0: 32 39 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74  29.+++ generic/t
8100: 63 6c 4d 61 69 6e 2e 63 09 34 20 4e 6f 76 20 32  clMain.c.4 Nov 2
8110: 30 30 34 20 32 32 3a 33 31 3a 35 39 20 2d 30 30  004 22:31:59 -00
8120: 30 30 0a 40 40 20 2d 34 33 35 2c 37 20 2b 34 33  00.@@ -435,7 +43
8130: 35 2c 37 20 40 40 0a 20 09 69 66 20 28 63 6f 64  5,7 @@. .if (cod
8140: 65 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20  e != TCL_OK) {. 
8150: 09 20 20 20 20 65 72 72 43 68 61 6e 6e 65 6c 20  .    errChannel 
8160: 3d 20 54 63 6c 5f 47 65 74 53 74 64 43 68 61 6e  = Tcl_GetStdChan
8170: 6e 65 6c 28 54 43 4c 5f 53 54 44 45 52 52 29 3b  nel(TCL_STDERR);
8180: 0a 20 09 20 20 20 20 69 66 20 28 65 72 72 43 68  . .    if (errCh
8190: 61 6e 6e 65 6c 29 20 7b 0a 2d 09 09 54 63 6c 5f  annel) {.-..Tcl_
81a0: 4f 62 6a 20 2a 6f 70 74 69 6f 6e 73 20 3d 20 54  Obj *options = T
81b0: 63 6c 47 65 74 52 65 74 75 72 6e 4f 70 74 69 6f  clGetReturnOptio
81c0: 6e 73 28 69 6e 74 65 72 70 2c 20 63 6f 64 65 29  ns(interp, code)
81d0: 3b 0a 2b 09 09 54 63 6c 5f 4f 62 6a 20 2a 6f 70  ;.+..Tcl_Obj *op
81e0: 74 69 6f 6e 73 20 3d 20 54 63 6c 5f 47 65 74 52  tions = Tcl_GetR
81f0: 65 74 75 72 6e 4f 70 74 69 6f 6e 73 28 69 6e 74  eturnOptions(int
8200: 65 72 70 2c 20 63 6f 64 65 29 3b 0a 20 09 09 54  erp, code);. ..T
8210: 63 6c 5f 4f 62 6a 20 2a 6b 65 79 50 74 72 20 3d  cl_Obj *keyPtr =
8220: 20 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67 4f 62   Tcl_NewStringOb
8230: 6a 28 22 2d 65 72 72 6f 72 69 6e 66 6f 22 2c 20  j("-errorinfo", 
8240: 2d 31 29 3b 0a 20 09 09 54 63 6c 5f 4f 62 6a 20  -1);. ..Tcl_Obj 
8250: 2a 76 61 6c 75 65 50 74 72 3b 0a 20 0a 40 40 20  *valuePtr;. .@@ 
8260: 2d 34 34 37 2c 37 20 2b 34 34 37 2c 36 20 40 40  -447,7 +447,6 @@
8270: 0a 20 09 09 20 20 20 20 54 63 6c 5f 57 72 69 74  . ..    Tcl_Writ
8280: 65 4f 62 6a 28 65 72 72 43 68 61 6e 6e 65 6c 2c  eObj(errChannel,
8290: 20 76 61 6c 75 65 50 74 72 29 3b 0a 20 09 09 7d   valuePtr);. ..}
82a0: 0a 20 09 09 54 63 6c 5f 57 72 69 74 65 43 68 61  . ..Tcl_WriteCha
82b0: 72 73 28 65 72 72 43 68 61 6e 6e 65 6c 2c 20 22  rs(errChannel, "
82c0: 5c 6e 22 2c 20 31 29 3b 0a 2d 09 09 54 63 6c 5f  \n", 1);.-..Tcl_
82d0: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 6f 70 74  DecrRefCount(opt
82e0: 69 6f 6e 73 29 3b 0a 20 09 20 20 20 20 7d 0a 20  ions);. .    }. 
82f0: 09 20 20 20 20 65 78 69 74 43 6f 64 65 20 3d 20  .    exitCode = 
8300: 31 3b 0a 20 09 7d 0a 49 6e 64 65 78 3a 20 67 65  1;. .}.Index: ge
8310: 6e 65 72 69 63 2f 74 63 6c 52 65 73 75 6c 74 2e  neric/tclResult.
8320: 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  c.==============
8330: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
8340: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
8350: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
8360: 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20  =====.RCS file: 
8370: 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c  /cvsroot/tcl/tcl
8380: 2f 67 65 6e 65 72 69 63 2f 74 63 6c 52 65 73 75  /generic/tclResu
8390: 6c 74 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e  lt.c,v.retrievin
83a0: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 32 31 0a  g revision 1.21.
83b0: 64 69 66 66 20 2d 75 20 2d 72 31 2e 32 31 20 74  diff -u -r1.21 t
83c0: 63 6c 52 65 73 75 6c 74 2e 63 0a 2d 2d 2d 20 67  clResult.c.--- g
83d0: 65 6e 65 72 69 63 2f 74 63 6c 52 65 73 75 6c 74  eneric/tclResult
83e0: 2e 63 09 32 35 20 4f 63 74 20 32 30 30 34 20 32  .c.25 Oct 2004 2
83f0: 30 3a 32 34 3a 31 33 20 2d 30 30 30 30 09 31 2e  0:24:13 -0000.1.
8400: 32 31 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74  21.+++ generic/t
8410: 63 6c 52 65 73 75 6c 74 2e 63 09 34 20 4e 6f 76  clResult.c.4 Nov
8420: 20 32 30 30 34 20 32 32 3a 33 31 3a 35 39 20 2d   2004 22:31:59 -
8430: 30 30 30 30 0a 40 40 20 2d 33 31 2c 37 20 2b 33  0000.@@ -31,7 +3
8440: 31 2c 37 20 40 40 0a 20 0a 20 2f 2a 0a 20 20 2a  1,7 @@. . /*.  *
8450: 20 20 54 68 69 73 20 73 74 72 75 63 74 75 72 65    This structure
8460: 20 69 73 20 75 73 65 64 20 74 6f 20 74 61 6b 65   is used to take
8470: 20 61 20 73 6e 61 70 73 68 6f 74 20 6f 66 20 74   a snapshot of t
8480: 68 65 20 69 6e 74 65 72 70 72 65 74 65 72 0a 2d  he interpreter.-
8490: 20 2a 20 20 73 74 61 74 65 20 69 6e 20 54 63 6c   *  state in Tcl
84a0: 53 61 76 65 49 6e 74 65 72 70 53 74 61 74 65 2e  SaveInterpState.
84b0: 20 20 59 6f 75 20 63 61 6e 20 73 6e 61 70 73 68    You can snapsh
84c0: 6f 74 20 74 68 65 20 73 74 61 74 65 2c 0a 2b 20  ot the state,.+ 
84d0: 2a 20 20 73 74 61 74 65 20 69 6e 20 54 63 6c 5f  *  state in Tcl_
84e0: 53 61 76 65 49 6e 74 65 72 70 53 74 61 74 65 2e  SaveInterpState.
84f0: 20 20 59 6f 75 20 63 61 6e 20 73 6e 61 70 73 68    You can snapsh
8500: 6f 74 20 74 68 65 20 73 74 61 74 65 2c 0a 20 20  ot the state,.  
8510: 2a 20 20 65 78 65 63 75 74 65 20 61 20 63 6f 6d  *  execute a com
8520: 6d 61 6e 64 2c 20 61 6e 64 20 74 68 65 6e 20 62  mand, and then b
8530: 61 63 6b 20 75 70 20 74 6f 20 74 68 65 20 72 65  ack up to the re
8540: 73 75 6c 74 20 6f 72 20 74 68 65 0a 20 20 2a 20  sult or the.  * 
8550: 20 65 72 72 6f 72 20 74 68 61 74 20 77 61 73 20   error that was 
8560: 70 72 65 76 69 6f 75 73 6c 79 20 69 6e 20 70 72  previously in pr
8570: 6f 67 72 65 73 73 2e 0a 20 20 2a 2f 0a 40 40 20  ogress..  */.@@ 
8580: 2d 35 30 2c 37 20 2b 35 30 2c 37 20 40 40 0a 20  -50,7 +50,7 @@. 
8590: 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /*.  *----------
85a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
85b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
85c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
85d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a  ------------.  *
85e0: 0a 2d 20 2a 20 54 63 6c 53 61 76 65 49 6e 74 65  .- * TclSaveInte
85f0: 72 70 53 74 61 74 65 20 2d 2d 0a 2b 20 2a 20 54  rpState --.+ * T
8600: 63 6c 5f 53 61 76 65 49 6e 74 65 72 70 53 74 61  cl_SaveInterpSta
8610: 74 65 20 2d 2d 0a 20 20 2a 0a 20 20 2a 20 20 20  te --.  *.  *   
8620: 20 20 20 46 69 6c 6c 73 20 61 20 74 6f 6b 65 6e     Fills a token
8630: 20 77 69 74 68 20 61 20 73 6e 61 70 73 68 6f 74   with a snapshot
8640: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
8650: 73 74 61 74 65 20 6f 66 20 74 68 65 0a 20 20 2a  state of the.  *
8660: 20 20 20 20 20 20 69 6e 74 65 72 70 72 65 74 65        interprete
8670: 72 2e 20 20 54 68 65 20 73 6e 61 70 73 68 6f 74  r.  The snapshot
8680: 20 63 61 6e 20 62 65 20 72 65 73 74 6f 72 65 64   can be restored
8690: 20 61 74 20 61 6e 79 20 70 6f 69 6e 74 20 62 79   at any point by
86a0: 0a 40 40 20 2d 36 39 2c 38 20 2b 36 39 2c 38 20  .@@ -69,8 +69,8 
86b0: 40 40 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  @@.  *----------
86c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
86d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
86e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
86f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a  ------------.  *
8700: 2f 0a 20 0a 2d 54 63 6c 49 6e 74 65 72 70 53 74  /. .-TclInterpSt
8710: 61 74 65 0a 2d 54 63 6c 53 61 76 65 49 6e 74 65  ate.-TclSaveInte
8720: 72 70 53 74 61 74 65 28 69 6e 74 65 72 70 2c 20  rpState(interp, 
8730: 73 74 61 74 75 73 29 0a 2b 54 63 6c 5f 49 6e 74  status).+Tcl_Int
8740: 65 72 70 53 74 61 74 65 0a 2b 54 63 6c 5f 53 61  erpState.+Tcl_Sa
8750: 76 65 49 6e 74 65 72 70 53 74 61 74 65 28 69 6e  veInterpState(in
8760: 74 65 72 70 2c 20 73 74 61 74 75 73 29 0a 20 20  terp, status).  
8770: 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 2a 20 69     Tcl_Interp* i
8780: 6e 74 65 72 70 3b 20 20 20 20 20 2f 2a 20 49 6e  nterp;     /* In
8790: 74 65 72 70 72 65 74 65 72 27 73 20 73 74 61 74  terpreter's stat
87a0: 65 20 74 6f 20 62 65 20 73 61 76 65 64 20 2a 2f  e to be saved */
87b0: 0a 20 20 20 20 20 69 6e 74 20 73 74 61 74 75 73  .     int status
87c0: 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  ;             /*
87d0: 20 73 74 61 74 75 73 20 63 6f 64 65 20 66 6f 72   status code for
87e0: 20 63 75 72 72 65 6e 74 20 6f 70 65 72 61 74 69   current operati
87f0: 6f 6e 20 2a 2f 0a 20 7b 0a 40 40 20 2d 39 35 2c  on */. {.@@ -95,
8800: 32 30 20 2b 39 35 2c 32 30 20 40 40 0a 20 20 20  20 +95,20 @@.   
8810: 20 20 7d 0a 20 20 20 20 20 73 74 61 74 65 50 74    }.     statePt
8820: 72 2d 3e 6f 62 6a 52 65 73 75 6c 74 20 3d 20 54  r->objResult = T
8830: 63 6c 5f 47 65 74 4f 62 6a 52 65 73 75 6c 74 28  cl_GetObjResult(
8840: 69 6e 74 65 72 70 29 3b 0a 20 20 20 20 20 54 63  interp);.     Tc
8850: 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 73  l_IncrRefCount(s
8860: 74 61 74 65 50 74 72 2d 3e 6f 62 6a 52 65 73 75  tatePtr->objResu
8870: 6c 74 29 3b 0a 2d 20 20 20 20 72 65 74 75 72 6e  lt);.-    return
8880: 20 28 54 63 6c 49 6e 74 65 72 70 53 74 61 74 65   (TclInterpState
8890: 29 20 73 74 61 74 65 50 74 72 3b 0a 2b 20 20 20  ) statePtr;.+   
88a0: 20 72 65 74 75 72 6e 20 28 54 63 6c 5f 49 6e 74   return (Tcl_Int
88b0: 65 72 70 53 74 61 74 65 29 20 73 74 61 74 65 50  erpState) stateP
88c0: 74 72 3b 0a 20 7d 0a 20 0c 0a 20 2f 2a 0a 20 20  tr;. }. .. /*.  
88d0: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  *---------------
88e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
88f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8900: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8910: 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a 0a 2d 20 2a 20  -------.  *.- * 
8920: 54 63 6c 52 65 73 74 6f 72 65 49 6e 74 65 72 70  TclRestoreInterp
8930: 53 74 61 74 65 20 2d 2d 0a 2b 20 2a 20 54 63 6c  State --.+ * Tcl
8940: 5f 52 65 73 74 6f 72 65 49 6e 74 65 72 70 53 74  _RestoreInterpSt
8950: 61 74 65 20 2d 2d 0a 20 20 2a 0a 20 20 2a 20 20  ate --.  *.  *  
8960: 20 20 20 20 41 63 63 65 70 74 73 20 61 6e 20 69      Accepts an i
8970: 6e 74 65 72 70 20 61 6e 64 20 61 20 74 6f 6b 65  nterp and a toke
8980: 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 72 65 74  n previously ret
8990: 75 72 6e 65 64 20 62 79 0a 2d 20 2a 20 20 20 20  urned by.- *    
89a0: 20 20 54 63 6c 53 61 76 65 49 6e 74 65 72 70 53    TclSaveInterpS
89b0: 74 61 74 65 2e 20 20 52 65 73 74 6f 72 65 20 74  tate.  Restore t
89c0: 68 65 20 73 74 61 74 65 20 6f 66 20 74 68 65 20  he state of the 
89d0: 69 6e 74 65 72 70 0a 2d 20 2a 20 20 20 20 20 20  interp.- *      
89e0: 74 6f 20 77 68 61 74 20 69 74 20 77 61 73 20 61  to what it was a
89f0: 74 20 74 68 65 20 74 69 6d 65 20 6f 66 20 74 68  t the time of th
8a00: 65 20 54 63 6c 53 61 76 65 49 6e 74 65 72 70 53  e TclSaveInterpS
8a10: 74 61 74 65 20 63 61 6c 6c 2e 0a 2b 20 2a 20 20  tate call..+ *  
8a20: 20 20 20 20 54 63 6c 5f 53 61 76 65 49 6e 74 65      Tcl_SaveInte
8a30: 72 70 53 74 61 74 65 2e 20 20 52 65 73 74 6f 72  rpState.  Restor
8a40: 65 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74  e the state of t
8a50: 68 65 20 69 6e 74 65 72 70 0a 2b 20 2a 20 20 20  he interp.+ *   
8a60: 20 20 20 74 6f 20 77 68 61 74 20 69 74 20 77 61     to what it wa
8a70: 73 20 61 74 20 74 68 65 20 74 69 6d 65 20 6f 66  s at the time of
8a80: 20 74 68 65 20 54 63 6c 5f 53 61 76 65 49 6e 74   the Tcl_SaveInt
8a90: 65 72 70 53 74 61 74 65 20 63 61 6c 6c 2e 0a 20  erpState call.. 
8aa0: 20 2a 0a 20 20 2a 20 52 65 73 75 6c 74 73 3a 0a   *.  * Results:.
8ab0: 2d 20 2a 09 52 65 74 75 72 6e 73 20 74 68 65 20  - *.Returns the 
8ac0: 73 74 61 74 75 73 20 76 61 6c 75 65 20 6f 72 69  status value ori
8ad0: 67 69 6e 61 6c 6c 79 20 70 61 73 73 65 64 20 69  ginally passed i
8ae0: 6e 20 74 6f 20 54 63 6c 53 61 76 65 49 6e 74 65  n to TclSaveInte
8af0: 72 70 53 74 61 74 65 2e 0a 2b 20 2a 09 52 65 74  rpState..+ *.Ret
8b00: 75 72 6e 73 20 74 68 65 20 73 74 61 74 75 73 20  urns the status 
8b10: 76 61 6c 75 65 20 6f 72 69 67 69 6e 61 6c 6c 79  value originally
8b20: 20 70 61 73 73 65 64 20 69 6e 20 74 6f 20 54 63   passed in to Tc
8b30: 6c 5f 53 61 76 65 49 6e 74 65 72 70 53 74 61 74  l_SaveInterpStat
8b40: 65 2e 0a 20 20 2a 0a 20 20 2a 20 53 69 64 65 20  e..  *.  * Side 
8b50: 65 66 66 65 63 74 73 3a 0a 20 20 2a 09 52 65 73  effects:.  *.Res
8b60: 74 6f 72 65 73 20 74 68 65 20 69 6e 74 65 72 70  tores the interp
8b70: 20 73 74 61 74 65 20 61 6e 64 20 66 72 65 65 73   state and frees
8b80: 20 6d 65 6d 6f 72 79 20 68 65 6c 64 20 62 79 20   memory held by 
8b90: 74 6f 6b 65 6e 2e 0a 40 40 20 2d 31 31 37 2c 39  token..@@ -117,9
8ba0: 20 2b 31 31 37 2c 39 20 40 40 0a 20 20 2a 2f 0a   +117,9 @@.  */.
8bb0: 20 0a 20 69 6e 74 0a 2d 54 63 6c 52 65 73 74 6f   . int.-TclResto
8bc0: 72 65 49 6e 74 65 72 70 53 74 61 74 65 28 69 6e  reInterpState(in
8bd0: 74 65 72 70 2c 20 73 74 61 74 65 29 0a 2b 54 63  terp, state).+Tc
8be0: 6c 5f 52 65 73 74 6f 72 65 49 6e 74 65 72 70 53  l_RestoreInterpS
8bf0: 74 61 74 65 28 69 6e 74 65 72 70 2c 20 73 74 61  tate(interp, sta
8c00: 74 65 29 0a 20 20 20 20 20 54 63 6c 5f 49 6e 74  te).     Tcl_Int
8c10: 65 72 70 2a 20 69 6e 74 65 72 70 3b 09 09 2f 2a  erp* interp;../*
8c20: 20 49 6e 74 65 72 70 72 65 74 65 72 27 73 20 73   Interpreter's s
8c30: 74 61 74 65 20 74 6f 20 62 65 20 72 65 73 74 6f  tate to be resto
8c40: 72 65 64 2a 2f 0a 2d 20 20 20 20 54 63 6c 49 6e  red*/.-    TclIn
8c50: 74 65 72 70 53 74 61 74 65 20 73 74 61 74 65 3b  terpState state;
8c60: 09 2f 2a 20 73 61 76 65 64 20 69 6e 74 65 72 70  ./* saved interp
8c70: 72 65 74 65 72 20 73 74 61 74 65 20 2a 2f 0a 2b  reter state */.+
8c80: 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 53 74      Tcl_InterpSt
8c90: 61 74 65 20 73 74 61 74 65 3b 09 2f 2a 20 73 61  ate state;./* sa
8ca0: 76 65 64 20 69 6e 74 65 72 70 72 65 74 65 72 20  ved interpreter 
8cb0: 73 74 61 74 65 20 2a 2f 0a 20 7b 0a 20 20 20 20  state */. {.    
8cc0: 20 49 6e 74 65 72 70 20 2a 69 50 74 72 20 3d 20   Interp *iPtr = 
8cd0: 28 49 6e 74 65 72 70 20 2a 29 69 6e 74 65 72 70  (Interp *)interp
8ce0: 3b 0a 20 20 20 20 20 49 6e 74 65 72 70 53 74 61  ;.     InterpSta
8cf0: 74 65 20 2a 73 74 61 74 65 50 74 72 20 3d 20 28  te *statePtr = (
8d00: 49 6e 74 65 72 70 53 74 61 74 65 20 2a 29 73 74  InterpState *)st
8d10: 61 74 65 3b 0a 40 40 20 2d 31 35 32 2c 31 36 20  ate;.@@ -152,16 
8d20: 2b 31 35 32 2c 31 36 20 40 40 0a 20 09 54 63 6c  +152,16 @@. .Tcl
8d30: 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 69 50  _IncrRefCount(iP
8d40: 74 72 2d 3e 72 65 74 75 72 6e 4f 70 74 73 29 3b  tr->returnOpts);
8d50: 0a 20 20 20 20 20 7d 0a 20 20 20 20 20 54 63 6c  .     }.     Tcl
8d60: 5f 53 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e  _SetObjResult(in
8d70: 74 65 72 70 2c 20 73 74 61 74 65 50 74 72 2d 3e  terp, statePtr->
8d80: 6f 62 6a 52 65 73 75 6c 74 29 3b 0a 2d 20 20 20  objResult);.-   
8d90: 20 54 63 6c 44 69 73 63 61 72 64 49 6e 74 65 72   TclDiscardInter
8da0: 70 53 74 61 74 65 28 73 74 61 74 65 29 3b 0a 2b  pState(state);.+
8db0: 20 20 20 20 54 63 6c 5f 44 69 73 63 61 72 64 49      Tcl_DiscardI
8dc0: 6e 74 65 72 70 53 74 61 74 65 28 73 74 61 74 65  nterpState(state
8dd0: 29 3b 0a 20 20 20 20 20 72 65 74 75 72 6e 20 73  );.     return s
8de0: 74 61 74 75 73 3b 0a 20 7d 0a 20 0c 0a 20 2f 2a  tatus;. }. .. /*
8df0: 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .  *------------
8e00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8e10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8e20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8e30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a 0a 2d  ----------.  *.-
8e40: 20 2a 20 54 63 6c 44 69 73 63 61 72 64 49 6e 74   * TclDiscardInt
8e50: 65 72 70 53 74 61 74 65 20 2d 2d 0a 2b 20 2a 20  erpState --.+ * 
8e60: 54 63 6c 5f 44 69 73 63 61 72 64 49 6e 74 65 72  Tcl_DiscardInter
8e70: 70 53 74 61 74 65 20 2d 2d 0a 20 20 2a 0a 2d 20  pState --.  *.- 
8e80: 2a 20 20 20 20 20 20 41 63 63 65 70 74 73 20 61  *      Accepts a
8e90: 20 74 6f 6b 65 6e 20 70 72 65 76 69 6f 75 73 6c   token previousl
8ea0: 79 20 72 65 74 75 72 6e 65 64 20 62 79 20 54 63  y returned by Tc
8eb0: 6c 53 61 76 65 49 6e 74 65 72 70 53 74 61 74 65  lSaveInterpState
8ec0: 2e 0a 2b 20 2a 20 20 20 20 20 20 41 63 63 65 70  ..+ *      Accep
8ed0: 74 73 20 61 20 74 6f 6b 65 6e 20 70 72 65 76 69  ts a token previ
8ee0: 6f 75 73 6c 79 20 72 65 74 75 72 6e 65 64 20 62  ously returned b
8ef0: 79 20 54 63 6c 5f 53 61 76 65 49 6e 74 65 72 70  y Tcl_SaveInterp
8f00: 53 74 61 74 65 2e 0a 20 20 2a 20 20 20 20 20 20  State..  *      
8f10: 46 72 65 65 73 20 74 68 65 20 6d 65 6d 6f 72 79  Frees the memory
8f20: 20 69 74 20 75 73 65 73 2e 0a 20 20 2a 0a 20 20   it uses..  *.  
8f30: 2a 20 52 65 73 75 6c 74 73 3a 0a 40 40 20 2d 31  * Results:.@@ -1
8f40: 37 34 2c 38 20 2b 31 37 34 2c 38 20 40 40 0a 20  74,8 +174,8 @@. 
8f50: 20 2a 2f 0a 20 0a 20 76 6f 69 64 0a 2d 54 63 6c   */. . void.-Tcl
8f60: 44 69 73 63 61 72 64 49 6e 74 65 72 70 53 74 61  DiscardInterpSta
8f70: 74 65 28 73 74 61 74 65 29 0a 2d 20 20 20 20 54  te(state).-    T
8f80: 63 6c 49 6e 74 65 72 70 53 74 61 74 65 20 73 74  clInterpState st
8f90: 61 74 65 3b 09 2f 2a 20 73 61 76 65 64 20 69 6e  ate;./* saved in
8fa0: 74 65 72 70 72 65 74 65 72 20 73 74 61 74 65 20  terpreter state 
8fb0: 2a 2f 0a 2b 54 63 6c 5f 44 69 73 63 61 72 64 49  */.+Tcl_DiscardI
8fc0: 6e 74 65 72 70 53 74 61 74 65 28 73 74 61 74 65  nterpState(state
8fd0: 29 0a 2b 20 20 20 20 54 63 6c 5f 49 6e 74 65 72  ).+    Tcl_Inter
8fe0: 70 53 74 61 74 65 20 73 74 61 74 65 3b 09 2f 2a  pState state;./*
8ff0: 20 73 61 76 65 64 20 69 6e 74 65 72 70 72 65 74   saved interpret
9000: 65 72 20 73 74 61 74 65 20 2a 2f 0a 20 7b 0a 20  er state */. {. 
9010: 20 20 20 20 49 6e 74 65 72 70 53 74 61 74 65 20      InterpState 
9020: 2a 73 74 61 74 65 50 74 72 20 3d 20 28 49 6e 74  *statePtr = (Int
9030: 65 72 70 53 74 61 74 65 20 2a 29 73 74 61 74 65  erpState *)state
9040: 3b 0a 20 0a 40 40 20 2d 31 33 36 36 2c 37 20 2b  ;. .@@ -1366,7 +
9050: 31 33 36 36 2c 37 20 40 40 0a 20 2f 2a 0a 20 20  1366,7 @@. /*.  
9060: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  *---------------
9070: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
90a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a 0a 2d  ----------.  *.-
90b0: 20 2a 20 54 63 6c 47 65 74 52 65 74 75 72 6e 4f   * TclGetReturnO
90c0: 70 74 69 6f 6e 73 20 2d 2d 0a 2b 20 2a 20 54 63  ptions --.+ * Tc
90d0: 6c 5f 47 65 74 52 65 74 75 72 6e 4f 70 74 69 6f  l_GetReturnOptio
90e0: 6e 73 20 2d 2d 0a 20 20 2a 0a 20 20 2a 09 50 61  ns --.  *.  *.Pa
90f0: 63 6b 73 20 75 70 20 74 68 65 20 69 6e 74 65 72  cks up the inter
9100: 70 20 73 74 61 74 65 20 69 6e 74 6f 20 61 20 64  p state into a d
9110: 69 63 74 69 6f 6e 61 72 79 20 6f 66 20 72 65 74  ictionary of ret
9120: 75 72 6e 20 6f 70 74 69 6f 6e 73 2e 0a 20 20 2a  urn options..  *
9130: 0a 40 40 20 2d 31 33 38 30 2c 37 20 2b 31 33 38  .@@ -1380,7 +138
9140: 30 2c 37 20 40 40 0a 20 20 2a 2f 0a 20 0a 20 54  0,7 @@.  */. . T
9150: 63 6c 5f 4f 62 6a 20 2a 0a 2d 54 63 6c 47 65 74  cl_Obj *.-TclGet
9160: 52 65 74 75 72 6e 4f 70 74 69 6f 6e 73 28 69 6e  ReturnOptions(in
9170: 74 65 72 70 2c 20 72 65 73 75 6c 74 29 0a 2b 54  terp, result).+T
9180: 63 6c 5f 47 65 74 52 65 74 75 72 6e 4f 70 74 69  cl_GetReturnOpti
9190: 6f 6e 73 28 69 6e 74 65 72 70 2c 20 72 65 73 75  ons(interp, resu
91a0: 6c 74 29 0a 20 20 20 20 20 54 63 6c 5f 49 6e 74  lt).     Tcl_Int
91b0: 65 72 70 20 2a 69 6e 74 65 72 70 3b 0a 20 20 20  erp *interp;.   
91c0: 20 20 69 6e 74 20 72 65 73 75 6c 74 3b 0a 20 7b    int result;. {
91d0: 0a 40 40 20 2d 31 34 32 33 2c 37 20 2b 31 34 32  .@@ -1423,7 +142
91e0: 33 2c 37 20 40 40 0a 20 2f 2a 0a 20 20 2a 2d 2d  3,7 @@. /*.  *--
91f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9210: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9220: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9230: 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a 0a 2d 20 2a 20  -------.  *.- * 
9240: 54 63 6c 53 65 74 52 65 74 75 72 6e 4f 70 74 69  TclSetReturnOpti
9250: 6f 6e 73 20 2d 2d 0a 2b 20 2a 20 54 63 6c 5f 53  ons --.+ * Tcl_S
9260: 65 74 52 65 74 75 72 6e 4f 70 74 69 6f 6e 73 20  etReturnOptions 
9270: 2d 2d 0a 20 20 2a 0a 20 20 2a 09 41 63 63 65 70  --.  *.  *.Accep
9280: 74 73 20 61 6e 20 69 6e 74 65 72 70 20 61 6e 64  ts an interp and
9290: 20 61 20 20 64 69 63 74 69 6f 6e 61 72 79 20 6f   a  dictionary o
92a0: 66 20 72 65 74 75 72 6e 20 6f 70 74 69 6f 6e 73  f return options
92b0: 2c 20 61 6e 64 20 73 65 74 73 0a 20 20 2a 09 74  , and sets.  *.t
92c0: 68 65 20 72 65 74 75 72 6e 20 6f 70 74 69 6f 6e  he return option
92d0: 73 20 6f 66 20 74 68 65 20 69 6e 74 65 72 70 20  s of the interp 
92e0: 74 6f 20 6d 61 74 63 68 20 74 68 65 20 64 69 63  to match the dic
92f0: 74 69 6f 6e 61 72 79 2e 0a 40 40 20 2d 31 34 34  tionary..@@ -144
9300: 31 2c 37 20 2b 31 34 34 31 2c 37 20 40 40 0a 20  1,7 +1441,7 @@. 
9310: 20 2a 2f 0a 20 0a 20 69 6e 74 0a 2d 54 63 6c 53   */. . int.-TclS
9320: 65 74 52 65 74 75 72 6e 4f 70 74 69 6f 6e 73 28  etReturnOptions(
9330: 69 6e 74 65 72 70 2c 20 6f 70 74 69 6f 6e 73 29  interp, options)
9340: 0a 2b 54 63 6c 5f 53 65 74 52 65 74 75 72 6e 4f  .+Tcl_SetReturnO
9350: 70 74 69 6f 6e 73 28 69 6e 74 65 72 70 2c 20 6f  ptions(interp, o
9360: 70 74 69 6f 6e 73 29 0a 20 20 20 20 20 54 63 6c  ptions).     Tcl
9370: 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 3b  _Interp *interp;
9380: 0a 20 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 6f  .     Tcl_Obj *o
9390: 70 74 69 6f 6e 73 3b 0a 20 7b 0a 40 40 20 2d 31  ptions;. {.@@ -1
93a0: 35 31 33 2c 38 20 2b 31 35 31 33 2c 38 20 40 40  513,8 +1513,8 @@
93b0: 0a 20 09 72 65 74 75 72 6e 3b 0a 20 20 20 20 20  . .return;.     
93c0: 7d 0a 20 0a 2d 20 20 20 20 54 63 6c 53 65 74 52  }. .-    TclSetR
93d0: 65 74 75 72 6e 4f 70 74 69 6f 6e 73 28 74 61 72  eturnOptions(tar
93e0: 67 65 74 49 6e 74 65 72 70 2c 0a 2d 09 20 20 20  getInterp,.-.   
93f0: 20 54 63 6c 47 65 74 52 65 74 75 72 6e 4f 70 74   TclGetReturnOpt
9400: 69 6f 6e 73 28 73 6f 75 72 63 65 49 6e 74 65 72  ions(sourceInter
9410: 70 2c 20 72 65 73 75 6c 74 29 29 3b 0a 2b 20 20  p, result));.+  
9420: 20 20 54 63 6c 5f 53 65 74 52 65 74 75 72 6e 4f    Tcl_SetReturnO
9430: 70 74 69 6f 6e 73 28 74 61 72 67 65 74 49 6e 74  ptions(targetInt
9440: 65 72 70 2c 0a 2b 09 20 20 20 20 54 63 6c 5f 47  erp,.+.    Tcl_G
9450: 65 74 52 65 74 75 72 6e 4f 70 74 69 6f 6e 73 28  etReturnOptions(
9460: 73 6f 75 72 63 65 49 6e 74 65 72 70 2c 20 72 65  sourceInterp, re
9470: 73 75 6c 74 29 29 3b 0a 20 20 20 20 20 69 50 74  sult));.     iPt
9480: 72 2d 3e 66 6c 61 67 73 20 26 3d 20 7e 28 45 52  r->flags &= ~(ER
9490: 52 5f 41 4c 52 45 41 44 59 5f 4c 4f 47 47 45 44  R_ALREADY_LOGGED
94a0: 29 3b 0a 20 20 20 20 20 54 63 6c 5f 53 65 74 4f  );.     Tcl_SetO
94b0: 62 6a 52 65 73 75 6c 74 28 74 61 72 67 65 74 49  bjResult(targetI
94c0: 6e 74 65 72 70 2c 20 54 63 6c 5f 47 65 74 4f 62  nterp, Tcl_GetOb
94d0: 6a 52 65 73 75 6c 74 28 73 6f 75 72 63 65 49 6e  jResult(sourceIn
94e0: 74 65 72 70 29 29 3b 0a 20 20 20 20 20 54 63 6c  terp));.     Tcl
94f0: 5f 52 65 73 65 74 52 65 73 75 6c 74 28 73 6f 75  _ResetResult(sou
9500: 72 63 65 49 6e 74 65 72 70 29 3b 0a 49 6e 64 65  rceInterp);.Inde
9510: 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 53 74  x: generic/tclSt
9520: 75 62 49 6e 69 74 2e 63 0a 3d 3d 3d 3d 3d 3d 3d  ubInit.c.=======
9530: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
9540: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
9550: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
9560: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53  ============.RCS
9570: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f   file: /cvsroot/
9580: 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f  tcl/tcl/generic/
9590: 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 2c 76 0a  tclStubInit.c,v.
95a0: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73  retrieving revis
95b0: 69 6f 6e 20 31 2e 31 30 36 0a 64 69 66 66 20 2d  ion 1.106.diff -
95c0: 75 20 2d 72 31 2e 31 30 36 20 74 63 6c 53 74 75  u -r1.106 tclStu
95d0: 62 49 6e 69 74 2e 63 0a 2d 2d 2d 20 67 65 6e 65  bInit.c.--- gene
95e0: 72 69 63 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e  ric/tclStubInit.
95f0: 63 09 32 37 20 4f 63 74 20 32 30 30 34 20 31 37  c.27 Oct 2004 17
9600: 3a 31 33 3a 35 38 20 2d 30 30 30 30 09 31 2e 31  :13:58 -0000.1.1
9610: 30 36 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74  06.+++ generic/t
9620: 63 6c 53 74 75 62 49 6e 69 74 2e 63 09 34 20 4e  clStubInit.c.4 N
9630: 6f 76 20 32 30 30 34 20 32 32 3a 33 31 3a 35 39  ov 2004 22:31:59
9640: 20 2d 30 30 30 30 0a 40 40 20 2d 39 34 31 2c 36   -0000.@@ -941,6
9650: 20 2b 39 34 31 2c 31 31 20 40 40 0a 20 20 20 20   +941,11 @@.    
9660: 20 54 63 6c 5f 4c 69 6d 69 74 47 65 74 43 6f 6d   Tcl_LimitGetCom
9670: 6d 61 6e 64 73 2c 20 2f 2a 20 35 33 32 20 2a 2f  mands, /* 532 */
9680: 0a 20 20 20 20 20 54 63 6c 5f 4c 69 6d 69 74 47  .     Tcl_LimitG
9690: 65 74 54 69 6d 65 2c 20 2f 2a 20 35 33 33 20 2a  etTime, /* 533 *
96a0: 2f 0a 20 20 20 20 20 54 63 6c 5f 4c 69 6d 69 74  /.     Tcl_Limit
96b0: 47 65 74 47 72 61 6e 75 6c 61 72 69 74 79 2c 20  GetGranularity, 
96c0: 2f 2a 20 35 33 34 20 2a 2f 0a 2b 20 20 20 20 54  /* 534 */.+    T
96d0: 63 6c 5f 53 61 76 65 49 6e 74 65 72 70 53 74 61  cl_SaveInterpSta
96e0: 74 65 2c 20 2f 2a 20 35 33 35 20 2a 2f 0a 2b 20  te, /* 535 */.+ 
96f0: 20 20 20 54 63 6c 5f 52 65 73 74 6f 72 65 49 6e     Tcl_RestoreIn
9700: 74 65 72 70 53 74 61 74 65 2c 20 2f 2a 20 35 33  terpState, /* 53
9710: 36 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 44 69  6 */.+    Tcl_Di
9720: 73 63 61 72 64 49 6e 74 65 72 70 53 74 61 74 65  scardInterpState
9730: 2c 20 2f 2a 20 35 33 37 20 2a 2f 0a 2b 20 20 20  , /* 537 */.+   
9740: 20 54 63 6c 5f 53 65 74 52 65 74 75 72 6e 4f 70   Tcl_SetReturnOp
9750: 74 69 6f 6e 73 2c 20 2f 2a 20 35 33 38 20 2a 2f  tions, /* 538 */
9760: 0a 2b 20 20 20 20 54 63 6c 5f 47 65 74 52 65 74  .+    Tcl_GetRet
9770: 75 72 6e 4f 70 74 69 6f 6e 73 2c 20 2f 2a 20 35  urnOptions, /* 5
9780: 33 39 20 2a 2f 0a 20 7d 3b 0a 20 0a 20 2f 2a 20  39 */. };. . /* 
9790: 21 45 4e 44 21 3a 20 44 6f 20 6e 6f 74 20 65 64  !END!: Do not ed
97a0: 69 74 20 61 62 6f 76 65 20 74 68 69 73 20 6c 69  it above this li
97b0: 6e 65 2e 20 2a 2f 0a 49 6e 64 65 78 3a 20 67 65  ne. */.Index: ge
97c0: 6e 65 72 69 63 2f 74 63 6c 54 72 61 63 65 2e 63  neric/tclTrace.c
97d0: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  .===============
97e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
97f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
9800: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
9810: 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f  ====.RCS file: /
9820: 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f  cvsroot/tcl/tcl/
9830: 67 65 6e 65 72 69 63 2f 74 63 6c 54 72 61 63 65  generic/tclTrace
9840: 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20  .c,v.retrieving 
9850: 72 65 76 69 73 69 6f 6e 20 31 2e 31 39 0a 64 69  revision 1.19.di
9860: 66 66 20 2d 75 20 2d 72 31 2e 31 39 20 74 63 6c  ff -u -r1.19 tcl
9870: 54 72 61 63 65 2e 63 0a 2d 2d 2d 20 67 65 6e 65  Trace.c.--- gene
9880: 72 69 63 2f 74 63 6c 54 72 61 63 65 2e 63 09 33  ric/tclTrace.c.3
9890: 20 4e 6f 76 20 32 30 30 34 20 31 37 3a 31 36 3a   Nov 2004 17:16:
98a0: 30 35 20 2d 30 30 30 30 09 31 2e 31 39 0a 2b 2b  05 -0000.1.19.++
98b0: 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 54 72 61  + generic/tclTra
98c0: 63 65 2e 63 09 34 20 4e 6f 76 20 32 30 30 34 20  ce.c.4 Nov 2004 
98d0: 32 32 3a 33 32 3a 30 30 20 2d 30 30 30 30 0a 40  22:32:00 -0000.@
98e0: 40 20 2d 31 34 32 32 2c 37 20 2b 31 34 32 32 2c  @ -1422,7 +1422,
98f0: 37 20 40 40 0a 20 20 20 20 20 69 6e 74 20 63 75  7 @@.     int cu
9900: 72 4c 65 76 65 6c 3b 0a 20 20 20 20 20 69 6e 74  rLevel;.     int
9910: 20 74 72 61 63 65 43 6f 64 65 20 3d 20 54 43 4c   traceCode = TCL
9920: 5f 4f 4b 3b 0a 20 20 20 20 20 54 72 61 63 65 43  _OK;.     TraceC
9930: 6f 6d 6d 61 6e 64 49 6e 66 6f 2a 20 74 63 6d 64  ommandInfo* tcmd
9940: 50 74 72 3b 0a 2d 20 20 20 20 54 63 6c 49 6e 74  Ptr;.-    TclInt
9950: 65 72 70 53 74 61 74 65 20 73 74 61 74 65 20 3d  erpState state =
9960: 20 4e 55 4c 4c 3b 0a 2b 20 20 20 20 54 63 6c 5f   NULL;.+    Tcl_
9970: 49 6e 74 65 72 70 53 74 61 74 65 20 73 74 61 74  InterpState stat
9980: 65 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 0a  e = NULL;.     .
9990: 20 20 20 20 20 69 66 20 28 63 6f 6d 6d 61 6e 64       if (command
99a0: 20 3d 3d 20 4e 55 4c 4c 20 7c 7c 20 63 6d 64 50   == NULL || cmdP
99b0: 74 72 2d 3e 74 72 61 63 65 50 74 72 20 3d 3d 20  tr->tracePtr == 
99c0: 4e 55 4c 4c 29 20 7b 0a 20 09 72 65 74 75 72 6e  NULL) {. .return
99d0: 20 74 72 61 63 65 43 6f 64 65 3b 0a 40 40 20 2d   traceCode;.@@ -
99e0: 31 34 35 35 2c 37 20 2b 31 34 35 35 2c 37 20 40  1455,7 +1455,7 @
99f0: 40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 74  @.             t
9a00: 63 6d 64 50 74 72 2d 3e 63 75 72 43 6f 64 65 20  cmdPtr->curCode 
9a10: 20 3d 20 63 6f 64 65 3b 0a 20 09 20 20 20 20 74   = code;. .    t
9a20: 63 6d 64 50 74 72 2d 3e 72 65 66 43 6f 75 6e 74  cmdPtr->refCount
9a30: 2b 2b 3b 0a 20 09 20 20 20 20 69 66 20 28 73 74  ++;. .    if (st
9a40: 61 74 65 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2d  ate == NULL) {.-
9a50: 09 09 73 74 61 74 65 20 3d 20 54 63 6c 53 61 76  ..state = TclSav
9a60: 65 49 6e 74 65 72 70 53 74 61 74 65 28 69 6e 74  eInterpState(int
9a70: 65 72 70 2c 20 63 6f 64 65 29 3b 0a 2b 09 09 73  erp, code);.+..s
9a80: 74 61 74 65 20 3d 20 54 63 6c 5f 53 61 76 65 49  tate = Tcl_SaveI
9a90: 6e 74 65 72 70 53 74 61 74 65 28 69 6e 74 65 72  nterpState(inter
9aa0: 70 2c 20 63 6f 64 65 29 3b 0a 20 09 20 20 20 20  p, code);. .    
9ab0: 7d 0a 20 09 20 20 20 20 74 72 61 63 65 43 6f 64  }. .    traceCod
9ac0: 65 20 3d 20 54 72 61 63 65 45 78 65 63 75 74 69  e = TraceExecuti
9ad0: 6f 6e 50 72 6f 63 28 28 43 6c 69 65 6e 74 44 61  onProc((ClientDa
9ae0: 74 61 29 74 63 6d 64 50 74 72 2c 20 69 6e 74 65  ta)tcmdPtr, inte
9af0: 72 70 2c 20 0a 20 09 20 20 20 20 20 20 20 20 20  rp, . .         
9b00: 20 63 75 72 4c 65 76 65 6c 2c 20 63 6f 6d 6d 61   curLevel, comma
9b10: 6e 64 2c 20 28 54 63 6c 5f 43 6f 6d 6d 61 6e 64  nd, (Tcl_Command
9b20: 29 63 6d 64 50 74 72 2c 20 6f 62 6a 63 2c 20 6f  )cmdPtr, objc, o
9b30: 62 6a 76 29 3b 0a 40 40 20 2d 31 34 36 37 2c 37  bjv);.@@ -1467,7
9b40: 20 2b 31 34 36 37 2c 37 20 40 40 0a 20 20 20 20   +1467,7 @@.    
9b50: 20 7d 0a 20 20 20 20 20 69 50 74 72 2d 3e 61 63   }.     iPtr->ac
9b60: 74 69 76 65 43 6d 64 54 72 61 63 65 50 74 72 20  tiveCmdTracePtr 
9b70: 3d 20 61 63 74 69 76 65 2e 6e 65 78 74 50 74 72  = active.nextPtr
9b80: 3b 0a 20 20 20 20 20 69 66 20 28 73 74 61 74 65  ;.     if (state
9b90: 29 20 7b 0a 2d 09 28 76 6f 69 64 29 20 54 63 6c  ) {.-.(void) Tcl
9ba0: 52 65 73 74 6f 72 65 49 6e 74 65 72 70 53 74 61  RestoreInterpSta
9bb0: 74 65 28 69 6e 74 65 72 70 2c 20 73 74 61 74 65  te(interp, state
9bc0: 29 3b 0a 2b 09 28 76 6f 69 64 29 20 54 63 6c 5f  );.+.(void) Tcl_
9bd0: 52 65 73 74 6f 72 65 49 6e 74 65 72 70 53 74 61  RestoreInterpSta
9be0: 74 65 28 69 6e 74 65 72 70 2c 20 73 74 61 74 65  te(interp, state
9bf0: 29 3b 0a 20 20 20 20 20 7d 0a 20 20 20 20 20 72  );.     }.     r
9c00: 65 74 75 72 6e 28 74 72 61 63 65 43 6f 64 65 29  eturn(traceCode)
9c10: 3b 0a 20 7d 0a 40 40 20 2d 31 35 31 34 2c 37 20  ;. }.@@ -1514,7 
9c20: 2b 31 35 31 34 2c 37 20 40 40 0a 20 20 20 20 20  +1514,7 @@.     
9c30: 69 6e 74 20 63 75 72 4c 65 76 65 6c 3b 0a 20 20  int curLevel;.  
9c40: 20 20 20 69 6e 74 20 74 72 61 63 65 43 6f 64 65     int traceCode
9c50: 20 3d 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20 20   = TCL_OK;.     
9c60: 54 72 61 63 65 43 6f 6d 6d 61 6e 64 49 6e 66 6f  TraceCommandInfo
9c70: 2a 20 74 63 6d 64 50 74 72 3b 0a 2d 20 20 20 20  * tcmdPtr;.-    
9c80: 54 63 6c 49 6e 74 65 72 70 53 74 61 74 65 20 73  TclInterpState s
9c90: 74 61 74 65 20 3d 20 4e 55 4c 4c 3b 0a 2b 20 20  tate = NULL;.+  
9ca0: 20 20 54 63 6c 5f 49 6e 74 65 72 70 53 74 61 74    Tcl_InterpStat
9cb0: 65 20 73 74 61 74 65 20 3d 20 4e 55 4c 4c 3b 0a  e state = NULL;.
9cc0: 20 20 20 20 20 0a 20 20 20 20 20 69 66 20 28 63       .     if (c
9cd0: 6f 6d 6d 61 6e 64 20 3d 3d 20 4e 55 4c 4c 20 7c  ommand == NULL |
9ce0: 7c 20 69 50 74 72 2d 3e 74 72 61 63 65 50 74 72  | iPtr->tracePtr
9cf0: 20 3d 3d 20 4e 55 4c 4c 20 7c 7c 0a 20 20 20 20   == NULL ||.    
9d00: 20 20 20 20 20 20 20 20 28 69 50 74 72 2d 3e 66          (iPtr->f
9d10: 6c 61 67 73 20 26 20 49 4e 54 45 52 50 5f 54 52  lags & INTERP_TR
9d20: 41 43 45 5f 49 4e 5f 50 52 4f 47 52 45 53 53 29  ACE_IN_PROGRESS)
9d30: 29 20 7b 0a 40 40 20 2d 31 35 36 32 2c 37 20 2b  ) {.@@ -1562,7 +
9d40: 31 35 36 32 2c 37 20 40 40 0a 20 09 20 20 20 20  1562,7 @@. .    
9d50: 54 63 6c 5f 50 72 65 73 65 72 76 65 28 28 43 6c  Tcl_Preserve((Cl
9d60: 69 65 6e 74 44 61 74 61 29 20 74 72 61 63 65 50  ientData) traceP
9d70: 74 72 29 3b 0a 20 09 20 20 20 20 74 72 61 63 65  tr);. .    trace
9d80: 50 74 72 2d 3e 66 6c 61 67 73 20 7c 3d 20 54 43  Ptr->flags |= TC
9d90: 4c 5f 54 52 41 43 45 5f 45 58 45 43 5f 49 4e 5f  L_TRACE_EXEC_IN_
9da0: 50 52 4f 47 52 45 53 53 3b 0a 20 09 20 20 20 20  PROGRESS;. .    
9db0: 69 66 20 28 73 74 61 74 65 20 3d 3d 20 4e 55 4c  if (state == NUL
9dc0: 4c 29 20 7b 0a 2d 09 09 73 74 61 74 65 20 3d 20  L) {.-..state = 
9dd0: 54 63 6c 53 61 76 65 49 6e 74 65 72 70 53 74 61  TclSaveInterpSta
9de0: 74 65 28 69 6e 74 65 72 70 2c 20 63 6f 64 65 29  te(interp, code)
9df0: 3b 0a 2b 09 09 73 74 61 74 65 20 3d 20 54 63 6c  ;.+..state = Tcl
9e00: 5f 53 61 76 65 49 6e 74 65 72 70 53 74 61 74 65  _SaveInterpState
9e10: 28 69 6e 74 65 72 70 2c 20 63 6f 64 65 29 3b 0a  (interp, code);.
9e20: 20 09 20 20 20 20 7d 0a 20 09 20 20 20 20 0a 20   .    }. .    . 
9e30: 09 20 20 20 20 69 66 20 28 74 72 61 63 65 50 74  .    if (tracePt
9e40: 72 2d 3e 66 6c 61 67 73 20 26 20 28 54 43 4c 5f  r->flags & (TCL_
9e50: 54 52 41 43 45 5f 45 4e 54 45 52 5f 45 58 45 43  TRACE_ENTER_EXEC
9e60: 20 7c 20 54 43 4c 5f 54 52 41 43 45 5f 4c 45 41   | TCL_TRACE_LEA
9e70: 56 45 5f 45 58 45 43 29 29 20 7b 0a 40 40 20 2d  VE_EXEC)) {.@@ -
9e80: 31 35 39 38 2c 39 20 2b 31 35 39 38 2c 39 20 40  1598,9 +1598,9 @
9e90: 40 0a 20 20 20 20 20 69 50 74 72 2d 3e 61 63 74  @.     iPtr->act
9ea0: 69 76 65 49 6e 74 65 72 70 54 72 61 63 65 50 74  iveInterpTracePt
9eb0: 72 20 3d 20 61 63 74 69 76 65 2e 6e 65 78 74 50  r = active.nextP
9ec0: 74 72 3b 0a 20 20 20 20 20 69 66 20 28 73 74 61  tr;.     if (sta
9ed0: 74 65 29 20 7b 0a 20 09 69 66 20 28 74 72 61 63  te) {. .if (trac
9ee0: 65 43 6f 64 65 20 3d 3d 20 54 43 4c 5f 4f 4b 29  eCode == TCL_OK)
9ef0: 20 7b 0a 2d 09 20 20 20 20 28 76 6f 69 64 29 20   {.-.    (void) 
9f00: 54 63 6c 52 65 73 74 6f 72 65 49 6e 74 65 72 70  TclRestoreInterp
9f10: 53 74 61 74 65 28 69 6e 74 65 72 70 2c 20 73 74  State(interp, st
9f20: 61 74 65 29 3b 0a 2b 09 20 20 20 20 28 76 6f 69  ate);.+.    (voi
9f30: 64 29 20 54 63 6c 5f 52 65 73 74 6f 72 65 49 6e  d) Tcl_RestoreIn
9f40: 74 65 72 70 53 74 61 74 65 28 69 6e 74 65 72 70  terpState(interp
9f50: 2c 20 73 74 61 74 65 29 3b 0a 20 09 7d 20 65 6c  , state);. .} el
9f60: 73 65 20 7b 0a 2d 09 20 20 20 20 54 63 6c 44 69  se {.-.    TclDi
9f70: 73 63 61 72 64 49 6e 74 65 72 70 53 74 61 74 65  scardInterpState
9f80: 28 73 74 61 74 65 29 3b 0a 2b 09 20 20 20 20 54  (state);.+.    T
9f90: 63 6c 5f 44 69 73 63 61 72 64 49 6e 74 65 72 70  cl_DiscardInterp
9fa0: 53 74 61 74 65 28 73 74 61 74 65 29 3b 0a 20 09  State(state);. .
9fb0: 7d 0a 20 20 20 20 20 7d 0a 20 20 20 20 20 72 65  }.     }.     re
9fc0: 74 75 72 6e 28 74 72 61 63 65 43 6f 64 65 29 3b  turn(traceCode);
9fd0: 0a 40 40 20 2d 32 34 32 32 2c 37 20 2b 32 34 32  .@@ -2422,7 +242
9fe0: 32 2c 37 20 40 40 0a 20 20 20 20 20 69 6e 74 20  2,7 @@.     int 
9ff0: 63 6f 70 69 65 64 4e 61 6d 65 3b 0a 20 20 20 20  copiedName;.    
a000: 20 69 6e 74 20 63 6f 64 65 20 3d 20 54 43 4c 5f   int code = TCL_
a010: 4f 4b 3b 0a 20 20 20 20 20 69 6e 74 20 64 69 73  OK;.     int dis
a020: 70 6f 73 65 46 6c 61 67 73 20 3d 20 30 3b 0a 2d  poseFlags = 0;.-
a030: 20 20 20 20 54 63 6c 49 6e 74 65 72 70 53 74 61      TclInterpSta
a040: 74 65 20 73 74 61 74 65 20 3d 20 4e 55 4c 4c 3b  te state = NULL;
a050: 0a 2b 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70  .+    Tcl_Interp
a060: 53 74 61 74 65 20 73 74 61 74 65 20 3d 20 4e 55  State state = NU
a070: 4c 4c 3b 0a 20 0a 20 20 20 20 20 2f 2a 0a 20 20  LL;. .     /*.  
a080: 20 20 20 20 2a 20 49 66 20 74 68 65 72 65 20 61      * If there a
a090: 72 65 20 61 6c 72 65 61 64 79 20 73 69 6d 69 6c  re already simil
a0a0: 61 72 20 74 72 61 63 65 20 70 72 6f 63 65 64 75  ar trace procedu
a0b0: 72 65 73 20 61 63 74 69 76 65 20 66 6f 72 20 74  res active for t
a0c0: 68 65 0a 40 40 20 2d 32 34 39 30 2c 37 20 2b 32  he.@@ -2490,7 +2
a0d0: 34 39 30 2c 37 20 40 40 0a 20 09 20 20 20 20 7d  490,7 @@. .    }
a0e0: 0a 20 09 20 20 20 20 54 63 6c 5f 50 72 65 73 65  . .    Tcl_Prese
a0f0: 72 76 65 28 28 43 6c 69 65 6e 74 44 61 74 61 29  rve((ClientData)
a100: 20 74 72 61 63 65 50 74 72 29 3b 0a 20 09 20 20   tracePtr);. .  
a110: 20 20 69 66 20 28 73 74 61 74 65 20 3d 3d 20 4e    if (state == N
a120: 55 4c 4c 29 20 7b 0a 2d 09 09 73 74 61 74 65 20  ULL) {.-..state 
a130: 3d 20 54 63 6c 53 61 76 65 49 6e 74 65 72 70 53  = TclSaveInterpS
a140: 74 61 74 65 28 28 54 63 6c 5f 49 6e 74 65 72 70  tate((Tcl_Interp
a150: 20 2a 29 69 50 74 72 2c 20 63 6f 64 65 29 3b 0a   *)iPtr, code);.
a160: 2b 09 09 73 74 61 74 65 20 3d 20 54 63 6c 5f 53  +..state = Tcl_S
a170: 61 76 65 49 6e 74 65 72 70 53 74 61 74 65 28 28  aveInterpState((
a180: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 29 69 50 74  Tcl_Interp *)iPt
a190: 72 2c 20 63 6f 64 65 29 3b 0a 20 09 20 20 20 20  r, code);. .    
a1a0: 7d 0a 20 09 20 20 20 20 72 65 73 75 6c 74 20 3d  }. .    result =
a1b0: 20 28 2a 74 72 61 63 65 50 74 72 2d 3e 74 72 61   (*tracePtr->tra
a1c0: 63 65 50 72 6f 63 29 28 74 72 61 63 65 50 74 72  ceProc)(tracePtr
a1d0: 2d 3e 63 6c 69 65 6e 74 44 61 74 61 2c 0a 20 09  ->clientData,. .
a1e0: 09 20 20 20 20 28 54 63 6c 5f 49 6e 74 65 72 70  .    (Tcl_Interp
a1f0: 20 2a 29 20 69 50 74 72 2c 20 70 61 72 74 31 2c   *) iPtr, part1,
a200: 20 70 61 72 74 32 2c 20 66 6c 61 67 73 29 3b 0a   part2, flags);.
a210: 40 40 20 2d 32 35 32 36 2c 37 20 2b 32 35 32 36  @@ -2526,7 +2526
a220: 2c 37 20 40 40 0a 20 09 7d 0a 20 09 54 63 6c 5f  ,7 @@. .}. .Tcl_
a230: 50 72 65 73 65 72 76 65 28 28 43 6c 69 65 6e 74  Preserve((Client
a240: 44 61 74 61 29 20 74 72 61 63 65 50 74 72 29 3b  Data) tracePtr);
a250: 0a 20 09 69 66 20 28 73 74 61 74 65 20 3d 3d 20  . .if (state == 
a260: 4e 55 4c 4c 29 20 7b 0a 2d 09 20 20 20 20 73 74  NULL) {.-.    st
a270: 61 74 65 20 3d 20 54 63 6c 53 61 76 65 49 6e 74  ate = TclSaveInt
a280: 65 72 70 53 74 61 74 65 28 28 54 63 6c 5f 49 6e  erpState((Tcl_In
a290: 74 65 72 70 20 2a 29 69 50 74 72 2c 20 63 6f 64  terp *)iPtr, cod
a2a0: 65 29 3b 0a 2b 09 20 20 20 20 73 74 61 74 65 20  e);.+.    state 
a2b0: 3d 20 54 63 6c 5f 53 61 76 65 49 6e 74 65 72 70  = Tcl_SaveInterp
a2c0: 53 74 61 74 65 28 28 54 63 6c 5f 49 6e 74 65 72  State((Tcl_Inter
a2d0: 70 20 2a 29 69 50 74 72 2c 20 63 6f 64 65 29 3b  p *)iPtr, code);
a2e0: 0a 20 09 7d 0a 20 09 72 65 73 75 6c 74 20 3d 20  . .}. .result = 
a2f0: 28 2a 74 72 61 63 65 50 74 72 2d 3e 74 72 61 63  (*tracePtr->trac
a300: 65 50 72 6f 63 29 28 74 72 61 63 65 50 74 72 2d  eProc)(tracePtr-
a310: 3e 63 6c 69 65 6e 74 44 61 74 61 2c 0a 20 09 09  >clientData,. ..
a320: 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 29 20 69  (Tcl_Interp *) i
a330: 50 74 72 2c 20 70 61 72 74 31 2c 20 70 61 72 74  Ptr, part1, part
a340: 32 2c 20 66 6c 61 67 73 29 3b 0a 40 40 20 2d 32  2, flags);.@@ -2
a350: 35 35 34 2c 37 20 2b 32 35 35 34 2c 37 20 40 40  554,7 +2554,7 @@
a360: 0a 20 20 20 20 20 69 66 20 28 63 6f 64 65 20 3d  .     if (code =
a370: 3d 20 54 43 4c 5f 45 52 52 4f 52 29 20 7b 0a 20  = TCL_ERROR) {. 
a380: 09 69 66 20 28 6c 65 61 76 65 45 72 72 4d 73 67  .if (leaveErrMsg
a390: 29 20 7b 0a 20 09 20 20 20 20 43 4f 4e 53 54 20  ) {. .    CONST 
a3a0: 63 68 61 72 20 2a 74 79 70 65 20 3d 20 22 22 3b  char *type = "";
a3b0: 0a 2d 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a  .-.    Tcl_Obj *
a3c0: 6f 70 74 69 6f 6e 73 20 3d 20 54 63 6c 47 65 74  options = TclGet
a3d0: 52 65 74 75 72 6e 4f 70 74 69 6f 6e 73 28 28 54  ReturnOptions((T
a3e0: 63 6c 5f 49 6e 74 65 72 70 20 2a 29 69 50 74 72  cl_Interp *)iPtr
a3f0: 2c 20 63 6f 64 65 29 3b 0a 2b 09 20 20 20 20 54  , code);.+.    T
a400: 63 6c 5f 4f 62 6a 20 2a 6f 70 74 69 6f 6e 73 20  cl_Obj *options 
a410: 3d 20 54 63 6c 5f 47 65 74 52 65 74 75 72 6e 4f  = Tcl_GetReturnO
a420: 70 74 69 6f 6e 73 28 28 54 63 6c 5f 49 6e 74 65  ptions((Tcl_Inte
a430: 72 70 20 2a 29 69 50 74 72 2c 20 63 6f 64 65 29  rp *)iPtr, code)
a440: 3b 0a 20 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20  ;. .    Tcl_Obj 
a450: 2a 65 72 72 6f 72 49 6e 66 6f 4b 65 79 20 3d 20  *errorInfoKey = 
a460: 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67 4f 62 6a  Tcl_NewStringObj
a470: 28 22 2d 65 72 72 6f 72 69 6e 66 6f 22 2c 20 2d  ("-errorinfo", -
a480: 31 29 3b 0a 20 09 20 20 20 20 54 63 6c 5f 4f 62  1);. .    Tcl_Ob
a490: 6a 20 2a 65 72 72 6f 72 49 6e 66 6f 3b 0a 20 0a  j *errorInfo;. .
a4a0: 40 40 20 2d 32 35 39 39 2c 31 38 20 2b 32 35 39  @@ -2599,18 +259
a4b0: 39 2c 31 38 20 40 40 0a 20 09 20 20 20 20 54 63  9,18 @@. .    Tc
a4c0: 6c 5f 44 69 63 74 4f 62 6a 50 75 74 28 4e 55 4c  l_DictObjPut(NUL
a4d0: 4c 2c 20 6f 70 74 69 6f 6e 73 2c 20 65 72 72 6f  L, options, erro
a4e0: 72 49 6e 66 6f 4b 65 79 2c 20 65 72 72 6f 72 49  rInfoKey, errorI
a4f0: 6e 66 6f 29 3b 0a 20 09 20 20 20 20 54 63 6c 5f  nfo);. .    Tcl_
a500: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 65 72 72  DecrRefCount(err
a510: 6f 72 49 6e 66 6f 4b 65 79 29 3b 0a 20 09 20 20  orInfoKey);. .  
a520: 20 20 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75    Tcl_DecrRefCou
a530: 6e 74 28 65 72 72 6f 72 49 6e 66 6f 29 3b 0a 2d  nt(errorInfo);.-
a540: 09 20 20 20 20 63 6f 64 65 20 3d 20 54 63 6c 53  .    code = TclS
a550: 65 74 52 65 74 75 72 6e 4f 70 74 69 6f 6e 73 28  etReturnOptions(
a560: 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 29 69 50  (Tcl_Interp *)iP
a570: 74 72 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a 2b 09  tr, options);.+.
a580: 20 20 20 20 63 6f 64 65 20 3d 20 54 63 6c 5f 53      code = Tcl_S
a590: 65 74 52 65 74 75 72 6e 4f 70 74 69 6f 6e 73 28  etReturnOptions(
a5a0: 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 29 69 50  (Tcl_Interp *)iP
a5b0: 74 72 2c 20 6f 70 74 69 6f 6e 73 29 3b 0a 20 09  tr, options);. .
a5c0: 20 20 20 20 69 50 74 72 2d 3e 66 6c 61 67 73 20      iPtr->flags 
a5d0: 26 3d 20 7e 28 45 52 52 5f 41 4c 52 45 41 44 59  &= ~(ERR_ALREADY
a5e0: 5f 4c 4f 47 47 45 44 29 3b 0a 2d 09 20 20 20 20  _LOGGED);.-.    
a5f0: 54 63 6c 44 69 73 63 61 72 64 49 6e 74 65 72 70  TclDiscardInterp
a600: 53 74 61 74 65 28 73 74 61 74 65 29 3b 0a 2b 09  State(state);.+.
a610: 20 20 20 20 54 63 6c 5f 44 69 73 63 61 72 64 49      Tcl_DiscardI
a620: 6e 74 65 72 70 53 74 61 74 65 28 73 74 61 74 65  nterpState(state
a630: 29 3b 0a 20 09 7d 20 65 6c 73 65 20 7b 0a 2d 09  );. .} else {.-.
a640: 20 20 20 20 28 76 6f 69 64 29 20 54 63 6c 52 65      (void) TclRe
a650: 73 74 6f 72 65 49 6e 74 65 72 70 53 74 61 74 65  storeInterpState
a660: 28 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 29 69  ((Tcl_Interp *)i
a670: 50 74 72 2c 20 73 74 61 74 65 29 3b 0a 2b 09 20  Ptr, state);.+. 
a680: 20 20 20 28 76 6f 69 64 29 20 54 63 6c 5f 52 65     (void) Tcl_Re
a690: 73 74 6f 72 65 49 6e 74 65 72 70 53 74 61 74 65  storeInterpState
a6a0: 28 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 29 69  ((Tcl_Interp *)i
a6b0: 50 74 72 2c 20 73 74 61 74 65 29 3b 0a 20 09 7d  Ptr, state);. .}
a6c0: 0a 20 09 44 69 73 70 6f 73 65 54 72 61 63 65 52  . .DisposeTraceR
a6d0: 65 73 75 6c 74 28 64 69 73 70 6f 73 65 46 6c 61  esult(disposeFla
a6e0: 67 73 2c 72 65 73 75 6c 74 29 3b 0a 20 20 20 20  gs,result);.    
a6f0: 20 7d 20 65 6c 73 65 20 69 66 20 28 73 74 61 74   } else if (stat
a700: 65 29 20 7b 0a 20 09 69 66 20 28 63 6f 64 65 20  e) {. .if (code 
a710: 3d 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2d 09 20  == TCL_OK) {.-. 
a720: 20 20 20 63 6f 64 65 20 3d 20 54 63 6c 52 65 73     code = TclRes
a730: 74 6f 72 65 49 6e 74 65 72 70 53 74 61 74 65 28  toreInterpState(
a740: 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 29 69 50  (Tcl_Interp *)iP
a750: 74 72 2c 20 73 74 61 74 65 29 3b 0a 2b 09 20 20  tr, state);.+.  
a760: 20 20 63 6f 64 65 20 3d 20 54 63 6c 5f 52 65 73    code = Tcl_Res
a770: 74 6f 72 65 49 6e 74 65 72 70 53 74 61 74 65 28  toreInterpState(
a780: 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 29 69 50  (Tcl_Interp *)iP
a790: 74 72 2c 20 73 74 61 74 65 29 3b 0a 20 09 7d 20  tr, state);. .} 
a7a0: 65 6c 73 65 20 7b 0a 2d 09 20 20 20 20 54 63 6c  else {.-.    Tcl
a7b0: 44 69 73 63 61 72 64 49 6e 74 65 72 70 53 74 61  DiscardInterpSta
a7c0: 74 65 28 73 74 61 74 65 29 3b 0a 2b 09 20 20 20  te(state);.+.   
a7d0: 20 54 63 6c 5f 44 69 73 63 61 72 64 49 6e 74 65   Tcl_DiscardInte
a7e0: 72 70 53 74 61 74 65 28 73 74 61 74 65 29 3b 0a  rpState(state);.
a7f0: 20 09 7d 0a 20 20 20 20 20 7d 0a 20 0a 49 6e 64   .}.     }. .Ind
a800: 65 78 3a 20 74 65 73 74 73 2f 69 6e 74 65 72 70  ex: tests/interp
a810: 2e 74 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  .test.==========
a820: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
a830: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
a840: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
a850: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69  =========.RCS fi
a860: 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c  le: /cvsroot/tcl
a870: 2f 74 63 6c 2f 74 65 73 74 73 2f 69 6e 74 65 72  /tcl/tests/inter
a880: 70 2e 74 65 73 74 2c 76 0a 72 65 74 72 69 65 76  p.test,v.retriev
a890: 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 34  ing revision 1.4
a8a0: 31 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 34 31  1.diff -u -r1.41
a8b0: 20 69 6e 74 65 72 70 2e 74 65 73 74 0a 2d 2d 2d   interp.test.---
a8c0: 20 74 65 73 74 73 2f 69 6e 74 65 72 70 2e 74 65   tests/interp.te
a8d0: 73 74 09 31 34 20 53 65 70 20 32 30 30 34 20 31  st.14 Sep 2004 1
a8e0: 37 3a 34 35 3a 33 37 20 2d 30 30 30 30 09 31 2e  7:45:37 -0000.1.
a8f0: 34 31 0a 2b 2b 2b 20 74 65 73 74 73 2f 69 6e 74  41.+++ tests/int
a900: 65 72 70 2e 74 65 73 74 09 34 20 4e 6f 76 20 32  erp.test.4 Nov 2
a910: 30 30 34 20 32 32 3a 33 32 3a 30 32 20 2d 30 30  004 22:32:02 -00
a920: 30 30 0a 40 40 20 2d 33 33 2c 37 20 2b 33 33 2c  00.@@ -33,7 +33,
a930: 37 20 40 40 0a 20 7d 20 7b 31 20 7b 77 72 6f 6e  7 @@. } {1 {wron
a940: 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64  g # args: should
a950: 20 62 65 20 22 69 6e 74 65 72 70 20 63 6d 64 20   be "interp cmd 
a960: 3f 61 72 67 20 2e 2e 2e 3f 22 7d 7d 0a 20 74 65  ?arg ...?"}}. te
a970: 73 74 20 69 6e 74 65 72 70 2d 31 2e 32 20 7b 6f  st interp-1.2 {o
a980: 70 74 69 6f 6e 73 20 66 6f 72 20 69 6e 74 65 72  ptions for inter
a990: 70 20 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 20 20 20  p command} {.   
a9a0: 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 69    list [catch {i
a9b0: 6e 74 65 72 70 20 66 72 6f 62 6f 78 7d 20 6d 73  nterp frobox} ms
a9c0: 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b 62  g] $msg.-} {1 {b
a9d0: 61 64 20 6f 70 74 69 6f 6e 20 22 66 72 6f 62 6f  ad option "frobo
a9e0: 78 22 3a 20 6d 75 73 74 20 62 65 20 61 6c 69 61  x": must be alia
a9f0: 73 2c 20 61 6c 69 61 73 65 73 2c 20 63 72 65 61  s, aliases, crea
aa00: 74 65 2c 20 64 65 6c 65 74 65 2c 20 65 76 61 6c  te, delete, eval
aa10: 2c 20 65 78 69 73 74 73 2c 20 65 78 70 6f 73 65  , exists, expose
aa20: 2c 20 68 69 64 65 2c 20 68 69 64 64 65 6e 2c 20  , hide, hidden, 
aa30: 69 73 73 61 66 65 2c 20 69 6e 76 6f 6b 65 68 69  issafe, invokehi
aa40: 64 64 65 6e 2c 20 6c 69 6d 69 74 2c 20 6d 61 72  dden, limit, mar
aa50: 6b 74 72 75 73 74 65 64 2c 20 72 65 63 75 72 73  ktrusted, recurs
aa60: 69 6f 6e 6c 69 6d 69 74 2c 20 73 6c 61 76 65 73  ionlimit, slaves
aa70: 2c 20 73 68 61 72 65 2c 20 74 61 72 67 65 74 2c  , share, target,
aa80: 20 6f 72 20 74 72 61 6e 73 66 65 72 7d 7d 0a 2b   or transfer}}.+
aa90: 7d 20 7b 31 20 7b 62 61 64 20 6f 70 74 69 6f 6e  } {1 {bad option
aaa0: 20 22 66 72 6f 62 6f 78 22 3a 20 6d 75 73 74 20   "frobox": must 
aab0: 62 65 20 61 6c 69 61 73 2c 20 61 6c 69 61 73 65  be alias, aliase
aac0: 73 2c 20 62 67 65 72 72 6f 72 2c 20 63 72 65 61  s, bgerror, crea
aad0: 74 65 2c 20 64 65 6c 65 74 65 2c 20 65 76 61 6c  te, delete, eval
aae0: 2c 20 65 78 69 73 74 73 2c 20 65 78 70 6f 73 65  , exists, expose
aaf0: 2c 20 68 69 64 65 2c 20 68 69 64 64 65 6e 2c 20  , hide, hidden, 
ab00: 69 73 73 61 66 65 2c 20 69 6e 76 6f 6b 65 68 69  issafe, invokehi
ab10: 64 64 65 6e 2c 20 6c 69 6d 69 74 2c 20 6d 61 72  dden, limit, mar
ab20: 6b 74 72 75 73 74 65 64 2c 20 72 65 63 75 72 73  ktrusted, recurs
ab30: 69 6f 6e 6c 69 6d 69 74 2c 20 73 6c 61 76 65 73  ionlimit, slaves
ab40: 2c 20 73 68 61 72 65 2c 20 74 61 72 67 65 74 2c  , share, target,
ab50: 20 6f 72 20 74 72 61 6e 73 66 65 72 7d 7d 0a 20   or transfer}}. 
ab60: 74 65 73 74 20 69 6e 74 65 72 70 2d 31 2e 33 20  test interp-1.3 
ab70: 7b 6f 70 74 69 6f 6e 73 20 66 6f 72 20 69 6e 74  {options for int
ab80: 65 72 70 20 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 20  erp command} {. 
ab90: 20 20 20 20 69 6e 74 65 72 70 20 64 65 6c 65 74      interp delet
aba0: 65 0a 20 7d 20 22 22 0a 40 40 20 2d 35 31 2c 31  e. } "".@@ -51,1
abb0: 33 20 2b 35 31 2c 31 33 20 40 40 0a 20 7d 20 7b  3 +51,13 @@. } {
abc0: 31 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a  1 {wrong # args:
abd0: 20 73 68 6f 75 6c 64 20 62 65 20 22 69 6e 74 65   should be "inte
abe0: 72 70 20 73 6c 61 76 65 73 20 3f 70 61 74 68 3f  rp slaves ?path?
abf0: 22 7d 7d 0a 20 74 65 73 74 20 69 6e 74 65 72 70  "}}. test interp
ac00: 2d 31 2e 37 20 7b 6f 70 74 69 6f 6e 73 20 66 6f  -1.7 {options fo
ac10: 72 20 69 6e 74 65 72 70 20 63 6f 6d 6d 61 6e 64  r interp command
ac20: 7d 20 7b 0a 20 20 20 20 20 6c 69 73 74 20 5b 63  } {.     list [c
ac30: 61 74 63 68 20 7b 69 6e 74 65 72 70 20 68 65 6c  atch {interp hel
ac40: 6c 6f 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d  lo} msg] $msg.-}
ac50: 20 7b 31 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20   {1 {bad option 
ac60: 22 68 65 6c 6c 6f 22 3a 20 6d 75 73 74 20 62 65  "hello": must be
ac70: 20 61 6c 69 61 73 2c 20 61 6c 69 61 73 65 73 2c   alias, aliases,
ac80: 20 63 72 65 61 74 65 2c 20 64 65 6c 65 74 65 2c   create, delete,
ac90: 20 65 76 61 6c 2c 20 65 78 69 73 74 73 2c 20 65   eval, exists, e
aca0: 78 70 6f 73 65 2c 20 68 69 64 65 2c 20 68 69 64  xpose, hide, hid
acb0: 64 65 6e 2c 20 69 73 73 61 66 65 2c 20 69 6e 76  den, issafe, inv
acc0: 6f 6b 65 68 69 64 64 65 6e 2c 20 6c 69 6d 69 74  okehidden, limit
acd0: 2c 20 6d 61 72 6b 74 72 75 73 74 65 64 2c 20 72  , marktrusted, r
ace0: 65 63 75 72 73 69 6f 6e 6c 69 6d 69 74 2c 20 73  ecursionlimit, s
acf0: 6c 61 76 65 73 2c 20 73 68 61 72 65 2c 20 74 61  laves, share, ta
ad00: 72 67 65 74 2c 20 6f 72 20 74 72 61 6e 73 66 65  rget, or transfe
ad10: 72 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 6f  r}}.+} {1 {bad o
ad20: 70 74 69 6f 6e 20 22 68 65 6c 6c 6f 22 3a 20 6d  ption "hello": m
ad30: 75 73 74 20 62 65 20 61 6c 69 61 73 2c 20 61 6c  ust be alias, al
ad40: 69 61 73 65 73 2c 20 62 67 65 72 72 6f 72 2c 20  iases, bgerror, 
ad50: 63 72 65 61 74 65 2c 20 64 65 6c 65 74 65 2c 20  create, delete, 
ad60: 65 76 61 6c 2c 20 65 78 69 73 74 73 2c 20 65 78  eval, exists, ex
ad70: 70 6f 73 65 2c 20 68 69 64 65 2c 20 68 69 64 64  pose, hide, hidd
ad80: 65 6e 2c 20 69 73 73 61 66 65 2c 20 69 6e 76 6f  en, issafe, invo
ad90: 6b 65 68 69 64 64 65 6e 2c 20 6c 69 6d 69 74 2c  kehidden, limit,
ada0: 20 6d 61 72 6b 74 72 75 73 74 65 64 2c 20 72 65   marktrusted, re
adb0: 63 75 72 73 69 6f 6e 6c 69 6d 69 74 2c 20 73 6c  cursionlimit, sl
adc0: 61 76 65 73 2c 20 73 68 61 72 65 2c 20 74 61 72  aves, share, tar
add0: 67 65 74 2c 20 6f 72 20 74 72 61 6e 73 66 65 72  get, or transfer
ade0: 7d 7d 0a 20 74 65 73 74 20 69 6e 74 65 72 70 2d  }}. test interp-
adf0: 31 2e 38 20 7b 6f 70 74 69 6f 6e 73 20 66 6f 72  1.8 {options for
ae00: 20 69 6e 74 65 72 70 20 63 6f 6d 6d 61 6e 64 7d   interp command}
ae10: 20 7b 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61   {.     list [ca
ae20: 74 63 68 20 7b 69 6e 74 65 72 70 20 2d 66 72 6f  tch {interp -fro
ae30: 62 6f 7a 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 2d  boz} msg] $msg.-
ae40: 7d 20 7b 31 20 7b 62 61 64 20 6f 70 74 69 6f 6e  } {1 {bad option
ae50: 20 22 2d 66 72 6f 62 6f 7a 22 3a 20 6d 75 73 74   "-froboz": must
ae60: 20 62 65 20 61 6c 69 61 73 2c 20 61 6c 69 61 73   be alias, alias
ae70: 65 73 2c 20 63 72 65 61 74 65 2c 20 64 65 6c 65  es, create, dele
ae80: 74 65 2c 20 65 76 61 6c 2c 20 65 78 69 73 74 73  te, eval, exists
ae90: 2c 20 65 78 70 6f 73 65 2c 20 68 69 64 65 2c 20  , expose, hide, 
aea0: 68 69 64 64 65 6e 2c 20 69 73 73 61 66 65 2c 20  hidden, issafe, 
aeb0: 69 6e 76 6f 6b 65 68 69 64 64 65 6e 2c 20 6c 69  invokehidden, li
aec0: 6d 69 74 2c 20 6d 61 72 6b 74 72 75 73 74 65 64  mit, marktrusted
aed0: 2c 20 72 65 63 75 72 73 69 6f 6e 6c 69 6d 69 74  , recursionlimit
aee0: 2c 20 73 6c 61 76 65 73 2c 20 73 68 61 72 65 2c  , slaves, share,
aef0: 20 74 61 72 67 65 74 2c 20 6f 72 20 74 72 61 6e   target, or tran
af00: 73 66 65 72 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61  sfer}}.+} {1 {ba
af10: 64 20 6f 70 74 69 6f 6e 20 22 2d 66 72 6f 62 6f  d option "-frobo
af20: 7a 22 3a 20 6d 75 73 74 20 62 65 20 61 6c 69 61  z": must be alia
af30: 73 2c 20 61 6c 69 61 73 65 73 2c 20 62 67 65 72  s, aliases, bger
af40: 72 6f 72 2c 20 63 72 65 61 74 65 2c 20 64 65 6c  ror, create, del
af50: 65 74 65 2c 20 65 76 61 6c 2c 20 65 78 69 73 74  ete, eval, exist
af60: 73 2c 20 65 78 70 6f 73 65 2c 20 68 69 64 65 2c  s, expose, hide,
af70: 20 68 69 64 64 65 6e 2c 20 69 73 73 61 66 65 2c   hidden, issafe,
af80: 20 69 6e 76 6f 6b 65 68 69 64 64 65 6e 2c 20 6c   invokehidden, l
af90: 69 6d 69 74 2c 20 6d 61 72 6b 74 72 75 73 74 65  imit, marktruste
afa0: 64 2c 20 72 65 63 75 72 73 69 6f 6e 6c 69 6d 69  d, recursionlimi
afb0: 74 2c 20 73 6c 61 76 65 73 2c 20 73 68 61 72 65  t, slaves, share
afc0: 2c 20 74 61 72 67 65 74 2c 20 6f 72 20 74 72 61  , target, or tra
afd0: 6e 73 66 65 72 7d 7d 0a 20 74 65 73 74 20 69 6e  nsfer}}. test in
afe0: 74 65 72 70 2d 31 2e 39 20 7b 6f 70 74 69 6f 6e  terp-1.9 {option
aff0: 73 20 66 6f 72 20 69 6e 74 65 72 70 20 63 6f 6d  s for interp com
b000: 6d 61 6e 64 7d 20 7b 0a 20 20 20 20 20 6c 69 73  mand} {.     lis
b010: 74 20 5b 63 61 74 63 68 20 7b 69 6e 74 65 72 70  t [catch {interp
b020: 20 2d 66 72 6f 62 6f 7a 20 2d 73 61 66 65 7d 20   -froboz -safe} 
b030: 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20  msg] $msg.-} {1 
b040: 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 2d 66 72  {bad option "-fr
b050: 6f 62 6f 7a 22 3a 20 6d 75 73 74 20 62 65 20 61  oboz": must be a
b060: 6c 69 61 73 2c 20 61 6c 69 61 73 65 73 2c 20 63  lias, aliases, c
b070: 72 65 61 74 65 2c 20 64 65 6c 65 74 65 2c 20 65  reate, delete, e
b080: 76 61 6c 2c 20 65 78 69 73 74 73 2c 20 65 78 70  val, exists, exp
b090: 6f 73 65 2c 20 68 69 64 65 2c 20 68 69 64 64 65  ose, hide, hidde
b0a0: 6e 2c 20 69 73 73 61 66 65 2c 20 69 6e 76 6f 6b  n, issafe, invok
b0b0: 65 68 69 64 64 65 6e 2c 20 6c 69 6d 69 74 2c 20  ehidden, limit, 
b0c0: 6d 61 72 6b 74 72 75 73 74 65 64 2c 20 72 65 63  marktrusted, rec
b0d0: 75 72 73 69 6f 6e 6c 69 6d 69 74 2c 20 73 6c 61  ursionlimit, sla
b0e0: 76 65 73 2c 20 73 68 61 72 65 2c 20 74 61 72 67  ves, share, targ
b0f0: 65 74 2c 20 6f 72 20 74 72 61 6e 73 66 65 72 7d  et, or transfer}
b100: 7d 20 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 6f 70  } .+} {1 {bad op
b110: 74 69 6f 6e 20 22 2d 66 72 6f 62 6f 7a 22 3a 20  tion "-froboz": 
b120: 6d 75 73 74 20 62 65 20 61 6c 69 61 73 2c 20 61  must be alias, a
b130: 6c 69 61 73 65 73 2c 20 62 67 65 72 72 6f 72 2c  liases, bgerror,
b140: 20 63 72 65 61 74 65 2c 20 64 65 6c 65 74 65 2c   create, delete,
b150: 20 65 76 61 6c 2c 20 65 78 69 73 74 73 2c 20 65   eval, exists, e
b160: 78 70 6f 73 65 2c 20 68 69 64 65 2c 20 68 69 64  xpose, hide, hid
b170: 64 65 6e 2c 20 69 73 73 61 66 65 2c 20 69 6e 76  den, issafe, inv
b180: 6f 6b 65 68 69 64 64 65 6e 2c 20 6c 69 6d 69 74  okehidden, limit
b190: 2c 20 6d 61 72 6b 74 72 75 73 74 65 64 2c 20 72  , marktrusted, r
b1a0: 65 63 75 72 73 69 6f 6e 6c 69 6d 69 74 2c 20 73  ecursionlimit, s
b1b0: 6c 61 76 65 73 2c 20 73 68 61 72 65 2c 20 74 61  laves, share, ta
b1c0: 72 67 65 74 2c 20 6f 72 20 74 72 61 6e 73 66 65  rget, or transfe
b1d0: 72 7d 7d 20 0a 20 74 65 73 74 20 69 6e 74 65 72  r}} . test inter
b1e0: 70 2d 31 2e 31 30 20 7b 6f 70 74 69 6f 6e 73 20  p-1.10 {options 
b1f0: 66 6f 72 20 69 6e 74 65 72 70 20 63 6f 6d 6d 61  for interp comma
b200: 6e 64 7d 20 7b 0a 20 20 20 20 20 6c 69 73 74 20  nd} {.     list 
b210: 5b 63 61 74 63 68 20 7b 69 6e 74 65 72 70 20 74  [catch {interp t
b220: 61 72 67 65 74 7d 20 6d 73 67 5d 20 24 6d 73 67  arget} msg] $msg
b230: 0a 20 7d 20 7b 31 20 7b 77 72 6f 6e 67 20 23 20  . } {1 {wrong # 
b240: 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20  args: should be 
b250: 22 69 6e 74 65 72 70 20 74 61 72 67 65 74 20 70  "interp target p
b260: 61 74 68 20 61 6c 69 61 73 22 7d 7d 0a           ath alias"}}.