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"}}.