Tcl Source Code

Hex Artifact Content
Login

Artifact 809b72b40cdbfd23b8abf62cc120d5119dc3ff2e:

Attachment "TIP120.patch" to ticket [649859ffff] added by patthoyts 2003-05-18 05:28:50.
0000: 49 6e 64 65 78 3a 20 64 6f 63 2f 64 64 65 2e 6e  Index: doc/dde.n
0010: 0d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ..==============
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 0d 0a 52 43 53 20 66 69 6c 65 3a  =====..RCS file:
0060: 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63   /cvsroot/tcl/tc
0070: 6c 2f 64 6f 63 2f 64 64 65 2e 6e 2c 76 0d 0a 72  l/doc/dde.n,v..r
0080: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69  etrieving revisi
0090: 6f 6e 20 31 2e 39 0d 0a 64 69 66 66 20 2d 63 20  on 1.9..diff -c 
00a0: 2d 72 31 2e 39 20 64 64 65 2e 6e 0d 0a 2a 2a 2a  -r1.9 dde.n..***
00b0: 20 64 6f 63 2f 64 64 65 2e 6e 09 31 36 20 4d 61   doc/dde.n.16 Ma
00c0: 79 20 32 30 30 33 20 32 32 3a 30 30 3a 34 37 20  y 2003 22:00:47 
00d0: 2d 30 30 30 30 09 31 2e 39 0d 0a 2d 2d 2d 20 64  -0000.1.9..--- d
00e0: 6f 63 2f 64 64 65 2e 6e 09 31 37 20 4d 61 79 20  oc/dde.n.17 May 
00f0: 32 30 30 33 20 32 32 3a 32 30 3a 33 36 20 2d 30  2003 22:20:36 -0
0100: 30 30 30 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  000..***********
0110: 2a 2a 2a 2a 0d 0a 2a 2a 2a 20 31 37 2c 32 33 20  ****..*** 17,23 
0120: 2a 2a 2a 2a 0d 0a 20 20 2e 73 70 0d 0a 20 20 5c  ****..  .sp..  \
0130: 66 42 70 61 63 6b 61 67 65 20 72 65 71 75 69 72  fBpackage requir
0140: 65 20 64 64 65 20 31 2e 32 5c 66 52 0d 0a 20 20  e dde 1.2\fR..  
0150: 2e 73 70 0d 0a 21 20 5c 66 42 64 64 65 20 5c 66  .sp..! \fBdde \f
0160: 49 73 65 72 76 65 72 6e 61 6d 65 5c 66 52 20 3f  Iservername\fR ?
0170: 5c 66 49 2d 65 78 61 63 74 5c 66 52 3f 20 3f 5c  \fI-exact\fR? ?\
0180: 66 49 2d 2d 5c 66 52 3f 20 3f 5c 66 49 74 6f 70  fI--\fR? ?\fItop
0190: 69 63 5c 66 52 3f 0d 0a 20 20 2e 73 70 0d 0a 20  ic\fR?..  .sp.. 
01a0: 20 5c 66 42 64 64 65 20 5c 66 49 65 78 65 63 75   \fBdde \fIexecu
01b0: 74 65 5c 66 52 20 3f 5c 66 49 5c 2d 61 73 79 6e  te\fR ?\fI\-asyn
01c0: 63 5c 66 52 3f 20 5c 66 49 73 65 72 76 69 63 65  c\fR? \fIservice
01d0: 20 74 6f 70 69 63 20 5c 66 52 3f 5c 66 49 64 61   topic \fR?\fIda
01e0: 74 61 5c 66 52 3f 0d 0a 20 20 2e 73 70 0d 0a 2d  ta\fR?..  .sp..-
01f0: 2d 2d 20 31 37 2c 32 33 20 2d 2d 2d 2d 0d 0a 20  -- 17,23 ----.. 
0200: 20 2e 73 70 0d 0a 20 20 5c 66 42 70 61 63 6b 61   .sp..  \fBpacka
0210: 67 65 20 72 65 71 75 69 72 65 20 64 64 65 20 31  ge require dde 1
0220: 2e 32 5c 66 52 0d 0a 20 20 2e 73 70 0d 0a 21 20  .2\fR..  .sp..! 
0230: 5c 66 42 64 64 65 20 5c 66 49 73 65 72 76 65 72  \fBdde \fIserver
0240: 6e 61 6d 65 5c 66 52 20 3f 5c 66 49 2d 65 78 61  name\fR ?\fI-exa
0250: 63 74 5c 66 52 3f 20 3f 5c 66 49 2d 68 61 6e 64  ct\fR? ?\fI-hand
0260: 6c 65 72 20 70 72 6f 63 5c 66 52 3f 20 3f 5c 66  ler proc\fR? ?\f
0270: 49 2d 2d 5c 66 52 3f 20 3f 5c 66 49 74 6f 70 69  I--\fR? ?\fItopi
0280: 63 5c 66 52 3f 0d 0a 20 20 2e 73 70 0d 0a 20 20  c\fR?..  .sp..  
0290: 5c 66 42 64 64 65 20 5c 66 49 65 78 65 63 75 74  \fBdde \fIexecut
02a0: 65 5c 66 52 20 3f 5c 66 49 5c 2d 61 73 79 6e 63  e\fR ?\fI\-async
02b0: 5c 66 52 3f 20 5c 66 49 73 65 72 76 69 63 65 20  \fR? \fIservice 
02c0: 74 6f 70 69 63 20 5c 66 52 3f 5c 66 49 64 61 74  topic \fR?\fIdat
02d0: 61 5c 66 52 3f 0d 0a 20 20 2e 73 70 0d 0a 2a 2a  a\fR?..  .sp..**
02e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 2a  *************..*
02f0: 2a 2a 20 35 30 2c 35 36 20 2a 2a 2a 2a 0d 0a 20  ** 50,56 ****.. 
0300: 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63   The following c
0310: 6f 6d 6d 61 6e 64 73 20 61 72 65 20 61 20 73 75  ommands are a su
0320: 62 73 65 74 20 6f 66 20 74 68 65 20 66 75 6c 6c  bset of the full
0330: 20 44 79 6e 61 6d 69 63 20 44 61 74 61 20 45 78   Dynamic Data Ex
0340: 63 68 61 6e 67 65 0d 0a 20 20 73 65 74 20 6f 66  change..  set of
0350: 20 63 6f 6d 6d 61 6e 64 73 2e 0d 0a 20 20 2e 54   commands...  .T
0360: 50 0d 0a 21 20 5c 66 42 64 64 65 20 73 65 72 76  P..! \fBdde serv
0370: 65 72 6e 61 6d 65 20 5c 66 52 3f 5c 66 49 2d 65  ername \fR?\fI-e
0380: 78 61 63 74 5c 66 52 3f 20 3f 5c 66 49 2d 2d 5c  xact\fR? ?\fI--\
0390: 66 52 3f 20 3f 5c 66 49 74 6f 70 69 63 5c 66 52  fR? ?\fItopic\fR
03a0: 3f 0d 0a 20 20 5c 66 42 64 64 65 20 73 65 72 76  ?..  \fBdde serv
03b0: 65 72 6e 61 6d 65 5c 66 52 20 72 65 67 69 73 74  ername\fR regist
03c0: 65 72 73 20 74 68 65 20 69 6e 74 65 72 70 72 65  ers the interpre
03d0: 74 65 72 20 61 73 20 61 20 44 44 45 20 73 65 72  ter as a DDE ser
03e0: 76 65 72 20 77 69 74 68 0d 0a 20 20 74 68 65 20  ver with..  the 
03f0: 73 65 72 76 69 63 65 20 6e 61 6d 65 20 5c 66 42  service name \fB
0400: 54 63 6c 45 76 61 6c 5c 66 52 20 61 6e 64 20 74  TclEval\fR and t
0410: 68 65 20 74 6f 70 69 63 20 6e 61 6d 65 20 73 70  he topic name sp
0420: 65 63 69 66 69 65 64 20 62 79 20 5c 66 49 74 6f  ecified by \fIto
0430: 70 69 63 5c 66 52 2e 0d 0a 20 20 49 66 20 6e 6f  pic\fR...  If no
0440: 20 5c 66 49 74 6f 70 69 63 5c 66 52 20 69 73 20   \fItopic\fR is 
0450: 67 69 76 65 6e 2c 20 5c 66 42 64 64 65 20 73 65  given, \fBdde se
0460: 72 76 65 72 6e 61 6d 65 5c 66 52 20 72 65 74 75  rvername\fR retu
0470: 72 6e 73 20 74 68 65 20 6e 61 6d 65 0d 0a 2d 2d  rns the name..--
0480: 2d 20 35 30 2c 35 36 20 2d 2d 2d 2d 0d 0a 20 20  - 50,56 ----..  
0490: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f  The following co
04a0: 6d 6d 61 6e 64 73 20 61 72 65 20 61 20 73 75 62  mmands are a sub
04b0: 73 65 74 20 6f 66 20 74 68 65 20 66 75 6c 6c 20  set of the full 
04c0: 44 79 6e 61 6d 69 63 20 44 61 74 61 20 45 78 63  Dynamic Data Exc
04d0: 68 61 6e 67 65 0d 0a 20 20 73 65 74 20 6f 66 20  hange..  set of 
04e0: 63 6f 6d 6d 61 6e 64 73 2e 0d 0a 20 20 2e 54 50  commands...  .TP
04f0: 0d 0a 21 20 5c 66 42 64 64 65 20 73 65 72 76 65  ..! \fBdde serve
0500: 72 6e 61 6d 65 20 5c 66 52 3f 5c 66 49 2d 65 78  rname \fR?\fI-ex
0510: 61 63 74 5c 66 52 3f 20 3f 5c 66 49 2d 68 61 6e  act\fR? ?\fI-han
0520: 64 6c 65 72 20 70 72 6f 63 5c 66 52 3f 20 3f 5c  dler proc\fR? ?\
0530: 66 49 2d 2d 5c 66 52 3f 20 3f 5c 66 49 74 6f 70  fI--\fR? ?\fItop
0540: 69 63 5c 66 52 3f 0d 0a 20 20 5c 66 42 64 64 65  ic\fR?..  \fBdde
0550: 20 73 65 72 76 65 72 6e 61 6d 65 5c 66 52 20 72   servername\fR r
0560: 65 67 69 73 74 65 72 73 20 74 68 65 20 69 6e 74  egisters the int
0570: 65 72 70 72 65 74 65 72 20 61 73 20 61 20 44 44  erpreter as a DD
0580: 45 20 73 65 72 76 65 72 20 77 69 74 68 0d 0a 20  E server with.. 
0590: 20 74 68 65 20 73 65 72 76 69 63 65 20 6e 61 6d   the service nam
05a0: 65 20 5c 66 42 54 63 6c 45 76 61 6c 5c 66 52 20  e \fBTclEval\fR 
05b0: 61 6e 64 20 74 68 65 20 74 6f 70 69 63 20 6e 61  and the topic na
05c0: 6d 65 20 73 70 65 63 69 66 69 65 64 20 62 79 20  me specified by 
05d0: 5c 66 49 74 6f 70 69 63 5c 66 52 2e 0d 0a 20 20  \fItopic\fR...  
05e0: 49 66 20 6e 6f 20 5c 66 49 74 6f 70 69 63 5c 66  If no \fItopic\f
05f0: 52 20 69 73 20 67 69 76 65 6e 2c 20 5c 66 42 64  R is given, \fBd
0600: 64 65 20 73 65 72 76 65 72 6e 61 6d 65 5c 66 52  de servername\fR
0610: 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 61 6d   returns the nam
0620: 65 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  e..*************
0630: 2a 2a 0d 0a 2a 2a 2a 20 36 30 2c 36 35 20 2a 2a  **..*** 60,65 **
0640: 2a 2a 0d 0a 2d 2d 2d 20 36 30 2c 37 31 20 2d 2d  **..--- 60,71 --
0650: 2d 2d 0d 0a 20 20 75 6e 69 71 75 65 2e 20 54 68  --..  unique. Th
0660: 65 20 63 6f 6d 6d 61 6e 64 27 73 20 72 65 73 75  e command's resu
0670: 6c 74 20 77 69 6c 6c 20 62 65 20 74 68 65 20 6e  lt will be the n
0680: 61 6d 65 20 61 63 74 75 61 6c 6c 79 20 75 73 65  ame actually use
0690: 64 2e 20 54 68 65 0d 0a 20 20 5c 66 49 2d 65 78  d. The..  \fI-ex
06a0: 61 63 74 5c 66 52 20 6f 70 74 69 6f 6e 20 69 73  act\fR option is
06b0: 20 75 73 65 64 20 74 6f 20 66 6f 72 63 65 20 72   used to force r
06c0: 65 67 69 73 74 72 61 74 69 6f 6e 20 6f 66 20 70  egistration of p
06d0: 72 65 63 69 73 65 6c 79 20 74 68 65 0d 0a 20 20  recisely the..  
06e0: 67 69 76 65 6e 20 5c 66 49 74 6f 70 69 63 5c 66  given \fItopic\f
06f0: 52 20 6e 61 6d 65 2e 0d 0a 2b 20 2e 49 50 0d 0a  R name...+ .IP..
0700: 2b 20 54 68 65 20 5c 66 49 2d 68 61 6e 64 6c 65  + The \fI-handle
0710: 72 5c 66 52 20 6f 70 74 69 6f 6e 20 73 70 65 63  r\fR option spec
0720: 69 66 69 65 73 20 61 20 74 63 6c 20 70 72 6f 63  ifies a tcl proc
0730: 65 64 75 72 65 20 74 68 61 74 20 77 69 6c 6c 20  edure that will 
0740: 62 65 20 63 61 6c 6c 65 64 20 74 6f 0d 0a 2b 20  be called to..+ 
0750: 70 72 6f 63 65 73 73 20 63 61 6c 6c 73 20 74 6f  process calls to
0760: 20 74 68 65 20 64 64 65 20 73 65 72 76 65 72 2e   the dde server.
0770: 20 49 66 20 74 68 65 20 70 61 63 6b 61 67 65 20   If the package 
0780: 68 61 73 20 62 65 65 6e 20 6c 6f 61 64 65 64 20  has been loaded 
0790: 69 6e 74 6f 20 61 0d 0a 2b 20 73 61 66 65 20 69  into a..+ safe i
07a0: 6e 74 65 72 70 72 65 74 65 72 20 74 68 65 6e 20  nterpreter then 
07b0: 61 20 5c 66 49 2d 68 61 6e 64 6c 65 72 5c 66 52  a \fI-handler\fR
07c0: 20 70 72 6f 63 65 64 75 72 65 20 6d 75 73 74 20   procedure must 
07d0: 62 65 20 64 65 66 69 6e 65 64 2e 20 54 68 65 0d  be defined. The.
07e0: 0a 2b 20 70 72 6f 63 65 64 75 72 65 20 69 73 20  .+ procedure is 
07f0: 63 61 6c 6c 65 64 20 77 69 74 68 20 61 6c 6c 20  called with all 
0800: 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 70 72  the arguments pr
0810: 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 72 65  ovided by the re
0820: 6d 6f 74 65 0d 0a 2b 20 63 61 6c 6c 2e 0d 0a 20  mote..+ call... 
0830: 20 2e 54 50 0d 0a 20 20 5c 66 42 64 64 65 20 65   .TP..  \fBdde e
0840: 78 65 63 75 74 65 5c 66 52 20 3f 5c 66 49 5c 2d  xecute\fR ?\fI\-
0850: 61 73 79 6e 63 5c 66 52 3f 20 5c 66 49 73 65 72  async\fR? \fIser
0860: 76 69 63 65 20 74 6f 70 69 63 20 64 61 74 61 5c  vice topic data\
0870: 66 52 0d 0a 20 20 5c 66 42 64 64 65 20 65 78 65  fR..  \fBdde exe
0880: 63 75 74 65 5c 66 52 20 74 61 6b 65 73 20 74 68  cute\fR takes th
0890: 65 20 5c 66 49 64 61 74 61 5c 66 52 20 61 6e 64  e \fIdata\fR and
08a0: 20 73 65 6e 64 73 20 69 74 20 74 6f 20 74 68 65   sends it to the
08b0: 20 73 65 72 76 65 72 20 69 6e 64 69 63 61 74 65   server indicate
08c0: 64 0d 0a 49 6e 64 65 78 3a 20 6c 69 62 72 61 72  d..Index: librar
08d0: 79 2f 64 64 65 2f 70 6b 67 49 6e 64 65 78 2e 74  y/dde/pkgIndex.t
08e0: 63 6c 0d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  cl..============
08f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0900: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0910: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0920: 3d 3d 3d 3d 3d 3d 3d 0d 0a 52 43 53 20 66 69 6c  =======..RCS fil
0930: 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f  e: /cvsroot/tcl/
0940: 74 63 6c 2f 6c 69 62 72 61 72 79 2f 64 64 65 2f  tcl/library/dde/
0950: 70 6b 67 49 6e 64 65 78 2e 74 63 6c 2c 76 0d 0a  pkgIndex.tcl,v..
0960: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73  retrieving revis
0970: 69 6f 6e 20 31 2e 31 32 0d 0a 64 69 66 66 20 2d  ion 1.12..diff -
0980: 63 20 2d 72 31 2e 31 32 20 70 6b 67 49 6e 64 65  c -r1.12 pkgInde
0990: 78 2e 74 63 6c 0d 0a 2a 2a 2a 20 6c 69 62 72 61  x.tcl..*** libra
09a0: 72 79 2f 64 64 65 2f 70 6b 67 49 6e 64 65 78 2e  ry/dde/pkgIndex.
09b0: 74 63 6c 09 31 36 20 4d 61 79 20 32 30 30 33 20  tcl.16 May 2003 
09c0: 31 37 3a 32 39 3a 34 39 20 2d 30 30 30 30 09 31  17:29:49 -0000.1
09d0: 2e 31 32 0d 0a 2d 2d 2d 20 6c 69 62 72 61 72 79  .12..--- library
09e0: 2f 64 64 65 2f 70 6b 67 49 6e 64 65 78 2e 74 63  /dde/pkgIndex.tc
09f0: 6c 09 31 37 20 4d 61 79 20 32 30 30 33 20 32 32  l.17 May 2003 22
0a00: 3a 32 30 3a 33 36 20 2d 30 30 30 30 0d 0a 2a 2a  :20:36 -0000..**
0a10: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 2a  *************..*
0a20: 2a 2a 20 31 2c 36 20 2a 2a 2a 2a 0d 0a 20 20 69  ** 1,6 ****..  i
0a30: 66 20 7b 21 5b 70 61 63 6b 61 67 65 20 76 73 61  f {![package vsa
0a40: 74 69 73 66 69 65 73 20 5b 70 61 63 6b 61 67 65  tisfies [package
0a50: 20 70 72 6f 76 69 64 65 20 54 63 6c 5d 20 38 5d   provide Tcl] 8]
0a60: 7d 20 7b 72 65 74 75 72 6e 7d 0d 0a 20 20 69 66  } {return}..  if
0a70: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 3a   {[info exists :
0a80: 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 64 65  :tcl_platform(de
0a90: 62 75 67 29 5d 7d 20 7b 0d 0a 21 20 20 20 20 20  bug)]} {..!     
0aa0: 70 61 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64  package ifneeded
0ab0: 20 64 64 65 20 31 2e 32 2e 33 20 5b 6c 69 73 74   dde 1.2.3 [list
0ac0: 20 6c 6f 61 64 20 5b 66 69 6c 65 20 6a 6f 69 6e   load [file join
0ad0: 20 24 64 69 72 20 74 63 6c 64 64 65 31 32 67 2e   $dir tcldde12g.
0ae0: 64 6c 6c 5d 20 64 64 65 5d 0d 0a 20 20 7d 20 65  dll] dde]..  } e
0af0: 6c 73 65 20 7b 0d 0a 21 20 20 20 20 20 70 61 63  lse {..!     pac
0b00: 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 64 64  kage ifneeded dd
0b10: 65 20 31 2e 32 2e 33 20 5b 6c 69 73 74 20 6c 6f  e 1.2.3 [list lo
0b20: 61 64 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64  ad [file join $d
0b30: 69 72 20 74 63 6c 64 64 65 31 32 2e 64 6c 6c 5d  ir tcldde12.dll]
0b40: 20 64 64 65 5d 0d 0a 20 20 7d 0d 0a 2d 2d 2d 20   dde]..  }..--- 
0b50: 31 2c 36 20 2d 2d 2d 2d 0d 0a 20 20 69 66 20 7b  1,6 ----..  if {
0b60: 21 5b 70 61 63 6b 61 67 65 20 76 73 61 74 69 73  ![package vsatis
0b70: 66 69 65 73 20 5b 70 61 63 6b 61 67 65 20 70 72  fies [package pr
0b80: 6f 76 69 64 65 20 54 63 6c 5d 20 38 5d 7d 20 7b  ovide Tcl] 8]} {
0b90: 72 65 74 75 72 6e 7d 0d 0a 20 20 69 66 20 7b 5b  return}..  if {[
0ba0: 69 6e 66 6f 20 65 78 69 73 74 73 20 3a 3a 74 63  info exists ::tc
0bb0: 6c 5f 70 6c 61 74 66 6f 72 6d 28 64 65 62 75 67  l_platform(debug
0bc0: 29 5d 7d 20 7b 0d 0a 21 20 20 20 20 20 70 61 63  )]} {..!     pac
0bd0: 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 64 64  kage ifneeded dd
0be0: 65 20 31 2e 32 2e 34 20 5b 6c 69 73 74 20 6c 6f  e 1.2.4 [list lo
0bf0: 61 64 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64  ad [file join $d
0c00: 69 72 20 74 63 6c 64 64 65 31 32 67 2e 64 6c 6c  ir tcldde12g.dll
0c10: 5d 20 64 64 65 5d 0d 0a 20 20 7d 20 65 6c 73 65  ] dde]..  } else
0c20: 20 7b 0d 0a 21 20 20 20 20 20 70 61 63 6b 61 67   {..!     packag
0c30: 65 20 69 66 6e 65 65 64 65 64 20 64 64 65 20 31  e ifneeded dde 1
0c40: 2e 32 2e 34 20 5b 6c 69 73 74 20 6c 6f 61 64 20  .2.4 [list load 
0c50: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20  [file join $dir 
0c60: 74 63 6c 64 64 65 31 32 2e 64 6c 6c 5d 20 64 64  tcldde12.dll] dd
0c70: 65 5d 0d 0a 20 20 7d 0d 0a 49 6e 64 65 78 3a 20  e]..  }..Index: 
0c80: 74 65 73 74 73 2f 77 69 6e 44 64 65 2e 74 65 73  tests/winDde.tes
0c90: 74 0d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  t..=============
0ca0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0cb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0cc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0cd0: 3d 3d 3d 3d 3d 3d 0d 0a 52 43 53 20 66 69 6c 65  ======..RCS file
0ce0: 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74  : /cvsroot/tcl/t
0cf0: 63 6c 2f 74 65 73 74 73 2f 77 69 6e 44 64 65 2e  cl/tests/winDde.
0d00: 74 65 73 74 2c 76 0d 0a 72 65 74 72 69 65 76 69  test,v..retrievi
0d10: 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 36  ng revision 1.16
0d20: 0d 0a 64 69 66 66 20 2d 63 20 2d 72 31 2e 31 36  ..diff -c -r1.16
0d30: 20 77 69 6e 44 64 65 2e 74 65 73 74 0d 0a 2a 2a   winDde.test..**
0d40: 2a 20 74 65 73 74 73 2f 77 69 6e 44 64 65 2e 74  * tests/winDde.t
0d50: 65 73 74 09 31 36 20 4d 61 79 20 32 30 30 33 20  est.16 May 2003 
0d60: 32 32 3a 30 30 3a 34 37 20 2d 30 30 30 30 09 31  22:00:47 -0000.1
0d70: 2e 31 36 0d 0a 2d 2d 2d 20 74 65 73 74 73 2f 77  .16..--- tests/w
0d80: 69 6e 44 64 65 2e 74 65 73 74 09 31 37 20 4d 61  inDde.test.17 Ma
0d90: 79 20 32 30 30 33 20 32 32 3a 32 30 3a 33 36 20  y 2003 22:20:36 
0da0: 2d 30 30 30 30 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a  -0000..*********
0db0: 2a 2a 2a 2a 2a 2a 0d 0a 2a 2a 2a 20 32 2c 38 20  ******..*** 2,8 
0dc0: 2a 2a 2a 2a 0d 0a 20 20 23 0d 0a 20 20 23 20 54  ****..  #..  # T
0dd0: 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e  his file contain
0de0: 73 20 61 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f  s a collection o
0df0: 66 20 74 65 73 74 73 20 66 6f 72 20 6f 6e 65 20  f tests for one 
0e00: 6f 72 20 6d 6f 72 65 20 6f 66 20 74 68 65 20 54  or more of the T
0e10: 63 6c 0d 0a 20 20 23 20 62 75 69 6c 74 2d 69 6e  cl..  # built-in
0e20: 20 63 6f 6d 6d 61 6e 64 73 2e 20 20 53 6f 75 72   commands.  Sour
0e30: 63 69 6e 67 20 74 68 69 73 20 66 69 6c 65 20 69  cing this file i
0e40: 6e 74 6f 20 54 63 6c 20 72 75 6e 73 20 74 68 65  nto Tcl runs the
0e50: 20 74 65 73 74 73 20 61 6e 64 0d 0a 21 20 23 20   tests and..! # 
0e60: 67 65 6e 65 72 61 74 65 73 20 6f 75 74 70 75 74  generates output
0e70: 20 66 6f 72 20 65 72 72 6f 72 73 2e 20 20 4e 6f   for errors.  No
0e80: 20 6f 75 74 70 75 74 20 6d 65 61 6e 73 20 6e 6f   output means no
0e90: 20 65 72 72 6f 72 73 20 77 65 72 65 20 66 6f 75   errors were fou
0ea0: 6e 64 2e 0d 0a 20 20 23 0d 0a 20 20 23 20 43 6f  nd...  #..  # Co
0eb0: 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 39  pyright (c) 1999
0ec0: 20 62 79 20 53 63 72 69 70 74 69 63 73 20 43 6f   by Scriptics Co
0ed0: 72 70 6f 72 61 74 69 6f 6e 2e 0d 0a 20 20 23 0d  rporation...  #.
0ee0: 0a 2d 2d 2d 20 32 2c 38 20 2d 2d 2d 2d 0d 0a 20  .--- 2,8 ----.. 
0ef0: 20 23 0d 0a 20 20 23 20 54 68 69 73 20 66 69 6c   #..  # This fil
0f00: 65 20 63 6f 6e 74 61 69 6e 73 20 61 20 63 6f 6c  e contains a col
0f10: 6c 65 63 74 69 6f 6e 20 6f 66 20 74 65 73 74 73  lection of tests
0f20: 20 66 6f 72 20 6f 6e 65 20 6f 72 20 6d 6f 72 65   for one or more
0f30: 20 6f 66 20 74 68 65 20 54 63 6c 0d 0a 20 20 23   of the Tcl..  #
0f40: 20 62 75 69 6c 74 2d 69 6e 20 63 6f 6d 6d 61 6e   built-in comman
0f50: 64 73 2e 20 20 53 6f 75 72 63 69 6e 67 20 74 68  ds.  Sourcing th
0f60: 69 73 20 66 69 6c 65 20 69 6e 74 6f 20 54 63 6c  is file into Tcl
0f70: 20 72 75 6e 73 20 74 68 65 20 74 65 73 74 73 20   runs the tests 
0f80: 61 6e 64 0d 0a 21 20 23 20 67 65 6e 65 72 61 74  and..! # generat
0f90: 65 73 20 6f 75 74 70 75 74 20 66 6f 72 20 65 72  es output for er
0fa0: 72 6f 72 73 2e 20 4e 6f 20 6f 75 74 70 75 74 20  rors. No output 
0fb0: 6d 65 61 6e 73 20 6e 6f 20 65 72 72 6f 72 73 20  means no errors 
0fc0: 77 65 72 65 20 66 6f 75 6e 64 2e 0d 0a 20 20 23  were found...  #
0fd0: 0d 0a 20 20 23 20 43 6f 70 79 72 69 67 68 74 20  ..  # Copyright 
0fe0: 28 63 29 20 31 39 39 39 20 62 79 20 53 63 72 69  (c) 1999 by Scri
0ff0: 70 74 69 63 73 20 43 6f 72 70 6f 72 61 74 69 6f  ptics Corporatio
1000: 6e 2e 0d 0a 20 20 23 0d 0a 2a 2a 2a 2a 2a 2a 2a  n...  #..*******
1010: 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 2a 2a 2a 20 32 31  ********..*** 21
1020: 32 2c 32 31 38 20 2a 2a 2a 2a 0d 0a 20 20 74 65  2,218 ****..  te
1030: 73 74 20 77 69 6e 44 64 65 2d 36 2e 31 20 7b 44  st winDde-6.1 {D
1040: 44 45 20 73 65 72 76 65 72 6e 61 6d 65 20 62 61  DE servername ba
1050: 64 20 61 72 67 75 6d 65 6e 74 73 7d 20 5c 0d 0a  d arguments} \..
1060: 20 20 20 20 20 20 2d 63 6f 6e 73 74 72 61 69 6e        -constrain
1070: 74 73 20 70 63 4f 6e 6c 79 20 5c 0d 0a 20 20 20  ts pcOnly \..   
1080: 20 20 20 2d 62 6f 64 79 20 7b 6c 69 73 74 20 5b     -body {list [
1090: 63 61 74 63 68 20 7b 64 64 65 20 73 65 72 76 65  catch {dde serve
10a0: 72 6e 61 6d 65 20 2d 7a 20 2d 7a 20 2d 7a 7d 20  rname -z -z -z} 
10b0: 6d 73 67 5d 20 24 6d 73 67 7d 20 5c 0d 0a 21 20  msg] $msg} \..! 
10c0: 20 20 20 20 2d 72 65 73 75 6c 74 20 7b 31 20 7b      -result {1 {
10d0: 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68  wrong # args: sh
10e0: 6f 75 6c 64 20 62 65 20 22 64 64 65 20 73 65 72  ould be "dde ser
10f0: 76 65 72 6e 61 6d 65 20 3f 2d 65 78 61 63 74 3f  vername ?-exact?
1100: 20 3f 2d 2d 3f 20 3f 73 65 72 76 65 72 4e 61 6d   ?--? ?serverNam
1110: 65 3f 22 7d 7d 0d 0a 20 20 0d 0a 20 20 74 65 73  e?"}}..  ..  tes
1120: 74 20 77 69 6e 44 64 65 2d 36 2e 32 20 7b 44 44  t winDde-6.2 {DD
1130: 45 20 73 65 72 76 65 72 6e 61 6d 65 20 73 65 74  E servername set
1140: 20 6e 61 6d 65 7d 20 5c 0d 0a 20 20 20 20 20 20   name} \..      
1150: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 70 63 4f  -constraints pcO
1160: 6e 6c 79 20 5c 0d 0a 2d 2d 2d 20 32 31 32 2c 32  nly \..--- 212,2
1170: 31 38 20 2d 2d 2d 2d 0d 0a 20 20 74 65 73 74 20  18 ----..  test 
1180: 77 69 6e 44 64 65 2d 36 2e 31 20 7b 44 44 45 20  winDde-6.1 {DDE 
1190: 73 65 72 76 65 72 6e 61 6d 65 20 62 61 64 20 61  servername bad a
11a0: 72 67 75 6d 65 6e 74 73 7d 20 5c 0d 0a 20 20 20  rguments} \..   
11b0: 20 20 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20     -constraints 
11c0: 70 63 4f 6e 6c 79 20 5c 0d 0a 20 20 20 20 20 20  pcOnly \..      
11d0: 2d 62 6f 64 79 20 7b 6c 69 73 74 20 5b 63 61 74  -body {list [cat
11e0: 63 68 20 7b 64 64 65 20 73 65 72 76 65 72 6e 61  ch {dde serverna
11f0: 6d 65 20 2d 7a 20 2d 7a 20 2d 7a 7d 20 6d 73 67  me -z -z -z} msg
1200: 5d 20 24 6d 73 67 7d 20 5c 0d 0a 21 20 20 20 20  ] $msg} \..!    
1210: 20 2d 72 65 73 75 6c 74 20 7b 31 20 7b 77 72 6f   -result {1 {wro
1220: 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c  ng # args: shoul
1230: 64 20 62 65 20 22 64 64 65 20 73 65 72 76 65 72  d be "dde server
1240: 6e 61 6d 65 20 3f 2d 65 78 61 63 74 3f 20 3f 2d  name ?-exact? ?-
1250: 68 61 6e 64 6c 65 72 20 70 72 6f 63 3f 20 3f 2d  handler proc? ?-
1260: 2d 3f 20 3f 73 65 72 76 65 72 4e 61 6d 65 3f 22  -? ?serverName?"
1270: 7d 7d 0d 0a 20 20 0d 0a 20 20 74 65 73 74 20 77  }}..  ..  test w
1280: 69 6e 44 64 65 2d 36 2e 32 20 7b 44 44 45 20 73  inDde-6.2 {DDE s
1290: 65 72 76 65 72 6e 61 6d 65 20 73 65 74 20 6e 61  ervername set na
12a0: 6d 65 7d 20 5c 0d 0a 20 20 20 20 20 20 2d 63 6f  me} \..      -co
12b0: 6e 73 74 72 61 69 6e 74 73 20 70 63 4f 6e 6c 79  nstraints pcOnly
12c0: 20 5c 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   \..************
12d0: 2a 2a 2a 0d 0a 2a 2a 2a 20 33 33 38 2c 33 34 33  ***..*** 338,343
12e0: 20 2a 2a 2a 2a 0d 0a 2d 2d 2d 20 33 33 38 2c 34   ****..--- 338,4
12f0: 31 32 20 2d 2d 2d 2d 0d 0a 20 20 20 20 20 20 7d  12 ----..      }
1300: 20 5c 0d 0a 20 20 20 20 20 20 2d 72 65 73 75 6c   \..      -resul
1310: 74 20 22 64 64 65 2d 69 6e 74 65 72 70 2d 37 2e  t "dde-interp-7.
1320: 35 20 23 32 22 0d 0a 20 20 0d 0a 2b 20 23 20 2d  5 #2"..  ..+ # -
1330: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1340: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1350: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1360: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1370: 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2b 20 0d 0a 2b 20  --------..+ ..+ 
1380: 74 65 73 74 20 77 69 6e 44 64 65 2d 38 2e 31 20  test winDde-8.1 
1390: 7b 53 61 66 65 20 44 44 45 20 6c 6f 61 64 7d 20  {Safe DDE load} 
13a0: 5c 0d 0a 2b 20 20 20 20 20 2d 63 6f 6e 73 74 72  \..+     -constr
13b0: 61 69 6e 74 73 20 70 63 4f 6e 6c 79 20 5c 0d 0a  aints pcOnly \..
13c0: 2b 20 20 20 20 20 2d 73 65 74 75 70 20 7b 0d 0a  +     -setup {..
13d0: 2b 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 70  +         interp
13e0: 20 63 72 65 61 74 65 20 2d 73 61 66 65 20 73 6c   create -safe sl
13f0: 61 76 65 0d 0a 2b 20 20 20 20 20 20 20 20 20 73  ave..+         s
1400: 6c 61 76 65 20 69 6e 76 6f 6b 65 68 69 64 64 65  lave invokehidde
1410: 6e 20 6c 6f 61 64 20 24 6c 69 62 20 64 64 65 0d  n load $lib dde.
1420: 0a 2b 20 20 20 20 20 7d 20 5c 0d 0a 2b 20 20 20  .+     } \..+   
1430: 20 20 2d 62 6f 64 79 20 7b 0d 0a 2b 20 20 20 20    -body {..+    
1440: 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68       list [catch
1450: 20 7b 73 6c 61 76 65 20 65 76 61 6c 20 64 64 65   {slave eval dde
1460: 20 73 65 72 76 65 72 6e 61 6d 65 20 73 6c 61 76   servername slav
1470: 65 7d 20 6d 73 67 5d 20 24 6d 73 67 0d 0a 2b 20  e} msg] $msg..+ 
1480: 20 20 20 20 7d 20 5c 0d 0a 2b 20 20 20 20 20 2d      } \..+     -
1490: 63 6c 65 61 6e 75 70 20 7b 69 6e 74 65 72 70 20  cleanup {interp 
14a0: 64 65 6c 65 74 65 20 73 6c 61 76 65 7d 20 5c 0d  delete slave} \.
14b0: 0a 2b 20 20 20 20 20 2d 72 65 73 75 6c 74 20 7b  .+     -result {
14c0: 31 20 7b 69 6e 76 61 6c 69 64 20 63 6f 6d 6d 61  1 {invalid comma
14d0: 6e 64 20 6e 61 6d 65 20 22 64 64 65 22 7d 7d 0d  nd name "dde"}}.
14e0: 0a 2b 20 0d 0a 2b 20 74 65 73 74 20 77 69 6e 44  .+ ..+ test winD
14f0: 64 65 2d 38 2e 32 20 7b 53 61 66 65 20 44 44 45  de-8.2 {Safe DDE
1500: 20 73 65 74 20 73 65 72 76 65 72 6e 61 6d 65 7d   set servername}
1510: 20 5c 0d 0a 2b 20 20 20 20 20 2d 63 6f 6e 73 74   \..+     -const
1520: 72 61 69 6e 74 73 20 70 63 4f 6e 6c 79 20 5c 0d  raints pcOnly \.
1530: 0a 2b 20 20 20 20 20 2d 73 65 74 75 70 20 7b 0d  .+     -setup {.
1540: 0a 2b 20 20 20 20 20 20 20 20 20 69 6e 74 65 72  .+         inter
1550: 70 20 63 72 65 61 74 65 20 2d 73 61 66 65 20 73  p create -safe s
1560: 6c 61 76 65 0d 0a 2b 20 20 20 20 20 20 20 20 20  lave..+         
1570: 73 6c 61 76 65 20 69 6e 76 6f 6b 65 68 69 64 64  slave invokehidd
1580: 65 6e 20 6c 6f 61 64 20 24 6c 69 62 20 64 64 65  en load $lib dde
1590: 0d 0a 2b 20 20 20 20 20 7d 20 5c 0d 0a 2b 20 20  ..+     } \..+  
15a0: 20 20 20 2d 62 6f 64 79 20 7b 0d 0a 2b 20 20 20     -body {..+   
15b0: 20 20 20 20 20 20 73 6c 61 76 65 20 69 6e 76 6f        slave invo
15c0: 6b 65 68 69 64 64 65 6e 20 64 64 65 20 73 65 72  kehidden dde ser
15d0: 76 65 72 6e 61 6d 65 20 73 6c 61 76 65 0d 0a 2b  vername slave..+
15e0: 20 20 20 20 20 7d 20 5c 0d 0a 2b 20 20 20 20 20       } \..+     
15f0: 2d 63 6c 65 61 6e 75 70 20 7b 69 6e 74 65 72 70  -cleanup {interp
1600: 20 64 65 6c 65 74 65 20 73 6c 61 76 65 7d 20 5c   delete slave} \
1610: 0d 0a 2b 20 20 20 20 20 2d 72 65 73 75 6c 74 20  ..+     -result 
1620: 7b 73 6c 61 76 65 7d 0d 0a 2b 20 0d 0a 2b 20 74  {slave}..+ ..+ t
1630: 65 73 74 20 77 69 6e 44 64 65 2d 38 2e 33 20 7b  est winDde-8.3 {
1640: 53 61 66 65 20 44 44 45 20 63 68 65 63 6b 20 68  Safe DDE check h
1650: 61 6e 64 6c 65 72 20 72 65 71 75 69 72 65 64 20  andler required 
1660: 66 6f 72 20 65 76 61 6c 7d 20 5c 0d 0a 2b 20 20  for eval} \..+  
1670: 20 20 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20     -constraints 
1680: 70 63 4f 6e 6c 79 20 5c 0d 0a 2b 20 20 20 20 20  pcOnly \..+     
1690: 2d 73 65 74 75 70 20 7b 0d 0a 2b 20 20 20 20 20  -setup {..+     
16a0: 20 20 20 20 69 6e 74 65 72 70 20 63 72 65 61 74      interp creat
16b0: 65 20 2d 73 61 66 65 20 73 6c 61 76 65 0d 0a 2b  e -safe slave..+
16c0: 20 20 20 20 20 20 20 20 20 73 6c 61 76 65 20 69           slave i
16d0: 6e 76 6f 6b 65 68 69 64 64 65 6e 20 6c 6f 61 64  nvokehidden load
16e0: 20 24 6c 69 62 20 64 64 65 0d 0a 2b 20 20 20 20   $lib dde..+    
16f0: 20 20 20 20 20 73 6c 61 76 65 20 69 6e 76 6f 6b       slave invok
1700: 65 68 69 64 64 65 6e 20 64 64 65 20 73 65 72 76  ehidden dde serv
1710: 65 72 6e 61 6d 65 20 73 6c 61 76 65 0d 0a 2b 20  ername slave..+ 
1720: 20 20 20 20 7d 20 5c 0d 0a 2b 20 20 20 20 20 2d      } \..+     -
1730: 62 6f 64 79 20 7b 0d 0a 2b 20 20 20 20 20 20 20  body {..+       
1740: 20 20 63 61 74 63 68 20 7b 64 64 65 20 65 76 61    catch {dde eva
1750: 6c 20 73 6c 61 76 65 20 73 65 74 20 61 20 31 7d  l slave set a 1}
1760: 20 6d 73 67 0d 0a 2b 20 20 20 20 20 7d 20 5c 0d   msg..+     } \.
1770: 0a 2b 20 20 20 20 20 2d 63 6c 65 61 6e 75 70 20  .+     -cleanup 
1780: 7b 69 6e 74 65 72 70 20 64 65 6c 65 74 65 20 73  {interp delete s
1790: 6c 61 76 65 7d 20 5c 0d 0a 2b 20 20 20 20 20 2d  lave} \..+     -
17a0: 72 65 73 75 6c 74 20 7b 31 7d 0d 0a 2b 20 0d 0a  result {1}..+ ..
17b0: 2b 20 74 65 73 74 20 77 69 6e 44 64 65 2d 38 2e  + test winDde-8.
17c0: 34 20 7b 53 61 66 65 20 44 44 45 20 63 68 65 63  4 {Safe DDE chec
17d0: 6b 20 74 68 61 74 20 65 78 65 63 75 74 65 20 69  k that execute i
17e0: 73 20 64 65 6e 69 65 64 7d 20 5c 0d 0a 2b 20 20  s denied} \..+  
17f0: 20 20 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20     -constraints 
1800: 70 63 4f 6e 6c 79 20 5c 0d 0a 2b 20 20 20 20 20  pcOnly \..+     
1810: 2d 73 65 74 75 70 20 7b 0d 0a 2b 20 20 20 20 20  -setup {..+     
1820: 20 20 20 20 69 6e 74 65 72 70 20 63 72 65 61 74      interp creat
1830: 65 20 2d 73 61 66 65 20 73 6c 61 76 65 0d 0a 2b  e -safe slave..+
1840: 20 20 20 20 20 20 20 20 20 73 6c 61 76 65 20 69           slave i
1850: 6e 76 6f 6b 65 68 69 64 64 65 6e 20 6c 6f 61 64  nvokehidden load
1860: 20 24 6c 69 62 20 64 64 65 0d 0a 2b 20 20 20 20   $lib dde..+    
1870: 20 20 20 20 20 73 6c 61 76 65 20 69 6e 76 6f 6b       slave invok
1880: 65 68 69 64 64 65 6e 20 64 64 65 20 73 65 72 76  ehidden dde serv
1890: 65 72 6e 61 6d 65 20 73 6c 61 76 65 0d 0a 2b 20  ername slave..+ 
18a0: 20 20 20 20 7d 20 5c 0d 0a 2b 20 20 20 20 20 2d      } \..+     -
18b0: 62 6f 64 79 20 7b 0d 0a 2b 20 20 20 20 20 20 20  body {..+       
18c0: 20 20 73 6c 61 76 65 20 65 76 61 6c 20 73 65 74    slave eval set
18d0: 20 61 20 31 0d 0a 2b 20 20 20 20 20 20 20 20 20   a 1..+         
18e0: 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 0d 0a 2b  list [catch {..+
18f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 64 65               dde
1900: 20 65 78 65 63 75 74 65 20 54 63 6c 45 76 61 6c   execute TclEval
1910: 20 73 6c 61 76 65 20 7b 73 65 74 20 61 20 32 7d   slave {set a 2}
1920: 0d 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 20  ..+             
1930: 73 6c 61 76 65 20 65 76 61 6c 20 73 65 74 20 61  slave eval set a
1940: 0d 0a 2b 20 20 20 20 20 20 20 20 20 7d 20 6d 73  ..+         } ms
1950: 67 5d 20 24 6d 73 67 0d 0a 2b 20 20 20 20 20 7d  g] $msg..+     }
1960: 20 5c 0d 0a 2b 20 20 20 20 20 2d 63 6c 65 61 6e   \..+     -clean
1970: 75 70 20 7b 69 6e 74 65 72 70 20 64 65 6c 65 74  up {interp delet
1980: 65 20 73 6c 61 76 65 7d 20 5c 0d 0a 2b 20 20 20  e slave} \..+   
1990: 20 20 2d 72 65 73 75 6c 74 20 7b 30 20 31 7d 0d    -result {0 1}.
19a0: 0a 2b 20 0d 0a 2b 20 74 65 73 74 20 77 69 6e 44  .+ ..+ test winD
19b0: 64 65 2d 38 2e 35 20 7b 53 61 66 65 20 44 44 45  de-8.5 {Safe DDE
19c0: 20 63 68 65 63 6b 20 74 68 61 74 20 72 65 71 75   check that requ
19d0: 65 73 74 20 69 73 20 64 65 6e 69 65 64 7d 20 5c  est is denied} \
19e0: 0d 0a 2b 20 20 20 20 20 2d 63 6f 6e 73 74 72 61  ..+     -constra
19f0: 69 6e 74 73 20 70 63 4f 6e 6c 79 20 5c 0d 0a 2b  ints pcOnly \..+
1a00: 20 20 20 20 20 2d 73 65 74 75 70 20 7b 0d 0a 2b       -setup {..+
1a10: 20 20 20 20 20 20 20 20 20 69 6e 74 65 72 70 20           interp 
1a20: 63 72 65 61 74 65 20 2d 73 61 66 65 20 73 6c 61  create -safe sla
1a30: 76 65 0d 0a 2b 20 20 20 20 20 20 20 20 20 73 6c  ve..+         sl
1a40: 61 76 65 20 69 6e 76 6f 6b 65 68 69 64 64 65 6e  ave invokehidden
1a50: 20 6c 6f 61 64 20 24 6c 69 62 20 64 64 65 0d 0a   load $lib dde..
1a60: 2b 20 20 20 20 20 20 20 20 20 73 6c 61 76 65 20  +         slave 
1a70: 69 6e 76 6f 6b 65 68 69 64 64 65 6e 20 64 64 65  invokehidden dde
1a80: 20 73 65 72 76 65 72 6e 61 6d 65 20 73 6c 61 76   servername slav
1a90: 65 0d 0a 2b 20 20 20 20 20 7d 20 5c 0d 0a 2b 20  e..+     } \..+ 
1aa0: 20 20 20 20 2d 62 6f 64 79 20 7b 0d 0a 2b 20 20      -body {..+  
1ab0: 20 20 20 20 20 20 20 73 6c 61 76 65 20 65 76 61         slave eva
1ac0: 6c 20 73 65 74 20 61 20 31 0d 0a 2b 20 20 20 20  l set a 1..+    
1ad0: 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68       list [catch
1ae0: 20 7b 64 64 65 20 72 65 71 75 65 73 74 20 54 63   {dde request Tc
1af0: 6c 45 76 61 6c 20 73 6c 61 76 65 20 61 7d 20 6d  lEval slave a} m
1b00: 73 67 5d 20 24 6d 73 67 0d 0a 2b 20 20 20 20 20  sg] $msg..+     
1b10: 7d 20 5c 0d 0a 2b 20 20 20 20 20 2d 63 6c 65 61  } \..+     -clea
1b20: 6e 75 70 20 7b 69 6e 74 65 72 70 20 64 65 6c 65  nup {interp dele
1b30: 74 65 20 73 6c 61 76 65 7d 20 5c 0d 0a 2b 20 20  te slave} \..+  
1b40: 20 20 20 2d 72 65 73 75 6c 74 20 7b 31 20 7b 72     -result {1 {r
1b50: 65 6d 6f 74 65 20 73 65 72 76 65 72 20 63 61 6e  emote server can
1b60: 6e 6f 74 20 68 61 6e 64 6c 65 20 74 68 69 73 20  not handle this 
1b70: 63 6f 6d 6d 61 6e 64 7d 7d 0d 0a 20 20 0d 0a 20  command}}..  .. 
1b80: 20 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   # -------------
1b90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1ba0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1bb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1bc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 20 20  ------------..  
1bd0: 0d 0a 49 6e 64 65 78 3a 20 77 69 6e 2f 74 63 6c  ..Index: win/tcl
1be0: 57 69 6e 44 64 65 2e 63 0d 0a 3d 3d 3d 3d 3d 3d  WinDde.c..======
1bf0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1c00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1c10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1c20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 52  =============..R
1c30: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f  CS file: /cvsroo
1c40: 74 2f 74 63 6c 2f 74 63 6c 2f 77 69 6e 2f 74 63  t/tcl/tcl/win/tc
1c50: 6c 57 69 6e 44 64 65 2e 63 2c 76 0d 0a 72 65 74  lWinDde.c,v..ret
1c60: 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e  rieving revision
1c70: 20 31 2e 31 35 0d 0a 64 69 66 66 20 2d 63 20 2d   1.15..diff -c -
1c80: 72 31 2e 31 35 20 74 63 6c 57 69 6e 44 64 65 2e  r1.15 tclWinDde.
1c90: 63 0d 0a 2a 2a 2a 20 77 69 6e 2f 74 63 6c 57 69  c..*** win/tclWi
1ca0: 6e 44 64 65 2e 63 09 31 36 20 4d 61 79 20 32 30  nDde.c.16 May 20
1cb0: 30 33 20 31 37 3a 32 39 3a 34 39 20 2d 30 30 30  03 17:29:49 -000
1cc0: 30 09 31 2e 31 35 0d 0a 2d 2d 2d 20 77 69 6e 2f  0.1.15..--- win/
1cd0: 74 63 6c 57 69 6e 44 64 65 2e 63 09 31 37 20 4d  tclWinDde.c.17 M
1ce0: 61 79 20 32 30 30 33 20 32 32 3a 32 30 3a 33 37  ay 2003 22:20:37
1cf0: 20 2d 30 30 30 30 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a   -0000..********
1d00: 2a 2a 2a 2a 2a 2a 2a 0d 0a 2a 2a 2a 20 33 36 2c  *******..*** 36,
1d10: 34 31 20 2a 2a 2a 2a 0d 0a 2d 2d 2d 20 33 36 2c  41 ****..--- 36,
1d20: 34 32 20 2d 2d 2d 2d 0d 0a 20 20 09 09 09 09 2f  42 ----..  ..../
1d30: 2a 20 54 68 65 20 6e 65 78 74 20 69 6e 74 65 72  * The next inter
1d40: 70 20 74 68 69 73 20 61 70 70 6c 69 63 61 74 69  p this applicati
1d50: 6f 6e 20 6b 6e 6f 77 73 0d 0a 20 20 09 09 09 09  on knows..  ....
1d60: 20 2a 20 61 62 6f 75 74 2e 20 2a 2f 0d 0a 20 20   * about. */..  
1d70: 20 20 20 20 63 68 61 72 20 2a 6e 61 6d 65 3b 09      char *name;.
1d80: 09 09 2f 2a 20 49 6e 74 65 72 70 72 65 74 65 72  ../* Interpreter
1d90: 27 73 20 6e 61 6d 65 20 28 6d 61 6c 6c 6f 63 2d  's name (malloc-
1da0: 65 64 29 2e 20 2a 2f 0d 0a 2b 20 20 20 20 20 54  ed). */..+     T
1db0: 63 6c 5f 4f 62 6a 20 2a 68 61 6e 64 6c 65 72 50  cl_Obj *handlerP
1dc0: 74 72 3b 09 2f 2a 20 54 68 65 20 73 65 72 76 65  tr;./* The serve
1dd0: 72 20 68 61 6e 64 6c 65 72 20 63 6f 6d 6d 61 6e  r handler comman
1de0: 64 20 2a 2f 0d 0a 20 20 20 20 20 20 54 63 6c 5f  d */..      Tcl_
1df0: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 3b 09  Interp *interp;.
1e00: 09 2f 2a 20 54 68 65 20 69 6e 74 65 72 70 72 65  ./* The interpre
1e10: 74 65 72 20 61 74 74 61 63 68 65 64 20 74 6f 20  ter attached to 
1e20: 74 68 69 73 20 6e 61 6d 65 2e 20 2a 2f 0d 0a 20  this name. */.. 
1e30: 20 7d 20 52 65 67 69 73 74 65 72 65 64 49 6e 74   } RegisteredInt
1e40: 65 72 70 3b 0d 0a 20 20 0d 0a 2a 2a 2a 2a 2a 2a  erp;..  ..******
1e50: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 2a 2a 2a 20 37  *********..*** 7
1e60: 30 2c 37 36 20 2a 2a 2a 2a 0d 0a 20 20 09 09 09  0,76 ****..  ...
1e70: 09 20 2a 20 74 6f 20 75 73 20 62 79 20 44 64 65  . * to us by Dde
1e80: 49 6e 69 74 69 61 6c 69 7a 65 2e 20 2a 2f 0d 0a  Initialize. */..
1e90: 20 20 73 74 61 74 69 63 20 69 6e 74 20 64 64 65    static int dde
1ea0: 49 73 53 65 72 76 65 72 20 3d 20 30 3b 0d 0a 20  IsServer = 0;.. 
1eb0: 20 0d 0a 21 20 23 64 65 66 69 6e 65 20 54 43 4c   ..! #define TCL
1ec0: 5f 44 44 45 5f 56 45 52 53 49 4f 4e 20 22 31 2e  _DDE_VERSION "1.
1ed0: 32 2e 33 22 0d 0a 20 20 23 64 65 66 69 6e 65 20  2.3"..  #define 
1ee0: 54 43 4c 5f 44 44 45 5f 50 41 43 4b 41 47 45 5f  TCL_DDE_PACKAGE_
1ef0: 4e 41 4d 45 20 22 64 64 65 22 0d 0a 20 20 23 64  NAME "dde"..  #d
1f00: 65 66 69 6e 65 20 54 43 4c 5f 44 44 45 5f 53 45  efine TCL_DDE_SE
1f10: 52 56 49 43 45 5f 4e 41 4d 45 20 22 54 63 6c 45  RVICE_NAME "TclE
1f20: 76 61 6c 22 0d 0a 20 20 0d 0a 2d 2d 2d 20 37 31  val"..  ..--- 71
1f30: 2c 37 37 20 2d 2d 2d 2d 0d 0a 20 20 09 09 09 09  ,77 ----..  ....
1f40: 20 2a 20 74 6f 20 75 73 20 62 79 20 44 64 65 49   * to us by DdeI
1f50: 6e 69 74 69 61 6c 69 7a 65 2e 20 2a 2f 0d 0a 20  nitialize. */.. 
1f60: 20 73 74 61 74 69 63 20 69 6e 74 20 64 64 65 49   static int ddeI
1f70: 73 53 65 72 76 65 72 20 3d 20 30 3b 0d 0a 20 20  sServer = 0;..  
1f80: 0d 0a 21 20 23 64 65 66 69 6e 65 20 54 43 4c 5f  ..! #define TCL_
1f90: 44 44 45 5f 56 45 52 53 49 4f 4e 20 22 31 2e 32  DDE_VERSION "1.2
1fa0: 2e 34 22 0d 0a 20 20 23 64 65 66 69 6e 65 20 54  .4"..  #define T
1fb0: 43 4c 5f 44 44 45 5f 50 41 43 4b 41 47 45 5f 4e  CL_DDE_PACKAGE_N
1fc0: 41 4d 45 20 22 64 64 65 22 0d 0a 20 20 23 64 65  AME "dde"..  #de
1fd0: 66 69 6e 65 20 54 43 4c 5f 44 44 45 5f 53 45 52  fine TCL_DDE_SER
1fe0: 56 49 43 45 5f 4e 41 4d 45 20 22 54 63 6c 45 76  VICE_NAME "TclEv
1ff0: 61 6c 22 0d 0a 20 20 0d 0a 2a 2a 2a 2a 2a 2a 2a  al"..  ..*******
2000: 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 2a 2a 2a 20 31 30  ********..*** 10
2010: 32 2c 31 30 37 20 2a 2a 2a 2a 0d 0a 2d 2d 2d 20  2,107 ****..--- 
2020: 31 30 33 2c 31 30 39 20 2d 2d 2d 2d 0d 0a 20 20  103,109 ----..  
2030: 09 54 63 6c 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20  .Tcl_Obj *CONST 
2040: 6f 62 6a 76 5b 5d 29 3b 09 2f 2a 20 54 68 65 20  objv[]);./* The 
2050: 61 72 67 75 6d 65 6e 74 73 20 2a 2f 0d 0a 20 20  arguments */..  
2060: 0d 0a 20 20 45 58 54 45 52 4e 20 69 6e 74 20 44  ..  EXTERN int D
2070: 64 65 5f 49 6e 69 74 28 54 63 6c 5f 49 6e 74 65  de_Init(Tcl_Inte
2080: 72 70 20 2a 69 6e 74 65 72 70 29 3b 0d 0a 2b 20  rp *interp);..+ 
2090: 45 58 54 45 52 4e 20 69 6e 74 20 44 64 65 5f 53  EXTERN int Dde_S
20a0: 61 66 65 49 6e 69 74 28 54 63 6c 5f 49 6e 74 65  afeInit(Tcl_Inte
20b0: 72 70 20 2a 69 6e 74 65 72 70 29 3b 0d 0a 20 20  rp *interp);..  
20c0: 0c 0d 0a 20 20 2f 2a 0d 0a 20 20 20 2a 2d 2d 2d  ...  /*..   *---
20d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
20e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
20f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2100: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2110: 2d 2d 2d 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ---..***********
2120: 2a 2a 2a 2a 0d 0a 2a 2a 2a 20 31 34 31 2c 31 34  ****..*** 141,14
2130: 36 20 2a 2a 2a 2a 0d 0a 2d 2d 2d 20 31 34 33 2c  6 ****..--- 143,
2140: 31 37 35 20 2d 2d 2d 2d 0d 0a 20 20 2f 2a 0d 0a  175 ----..  /*..
2150: 20 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d     *------------
2160: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2170: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2180: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2190: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 20 20 20 2a  ----------..   *
21a0: 0d 0a 2b 20 20 2a 20 44 64 65 5f 53 61 66 65 49  ..+  * Dde_SafeI
21b0: 6e 69 74 20 2d 2d 0d 0a 2b 20 20 2a 0d 0a 2b 20  nit --..+  *..+ 
21c0: 20 2a 09 54 68 69 73 20 70 72 6f 63 65 64 75 72   *.This procedur
21d0: 65 20 69 6e 69 74 69 61 6c 69 7a 65 73 20 74 68  e initializes th
21e0: 65 20 64 64 65 20 63 6f 6d 6d 61 6e 64 20 77 69  e dde command wi
21f0: 74 68 69 6e 20 61 20 73 61 66 65 20 69 6e 74 65  thin a safe inte
2200: 72 70 0d 0a 2b 20 20 2a 0d 0a 2b 20 20 2a 20 52  rp..+  *..+  * R
2210: 65 73 75 6c 74 73 3a 0d 0a 2b 20 20 2a 09 41 20  esults:..+  *.A 
2220: 73 74 61 6e 64 61 72 64 20 54 63 6c 20 72 65 73  standard Tcl res
2230: 75 6c 74 2e 0d 0a 2b 20 20 2a 0d 0a 2b 20 20 2a  ult...+  *..+  *
2240: 20 53 69 64 65 20 65 66 66 65 63 74 73 3a 0d 0a   Side effects:..
2250: 2b 20 20 2a 09 4e 6f 6e 65 2e 0d 0a 2b 20 20 2a  +  *.None...+  *
2260: 0d 0a 2b 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..+  *----------
2270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
22a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2b 20  ------------..+ 
22b0: 20 2a 2f 0d 0a 2b 20 0d 0a 2b 20 69 6e 74 0d 0a   */..+ ..+ int..
22c0: 2b 20 44 64 65 5f 53 61 66 65 49 6e 69 74 28 0d  + Dde_SafeInit(.
22d0: 0a 2b 20 20 20 20 20 54 63 6c 5f 49 6e 74 65 72  .+     Tcl_Inter
22e0: 70 20 2a 69 6e 74 65 72 70 29 0d 0a 2b 20 7b 0d  p *interp)..+ {.
22f0: 0a 2b 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c  .+     int resul
2300: 74 20 3d 20 44 64 65 5f 49 6e 69 74 28 69 6e 74  t = Dde_Init(int
2310: 65 72 70 29 3b 0d 0a 2b 20 20 20 20 20 69 66 20  erp);..+     if 
2320: 28 72 65 73 75 6c 74 20 3d 3d 20 54 43 4c 5f 4f  (result == TCL_O
2330: 4b 29 20 7b 0d 0a 2b 20 09 54 63 6c 5f 48 69 64  K) {..+ .Tcl_Hid
2340: 65 43 6f 6d 6d 61 6e 64 28 69 6e 74 65 72 70 2c  eCommand(interp,
2350: 20 22 64 64 65 22 2c 20 22 64 64 65 22 29 3b 0d   "dde", "dde");.
2360: 0a 2b 20 20 20 20 20 7d 0d 0a 2b 20 20 20 20 20  .+     }..+     
2370: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
2380: 2b 20 7d 0d 0a 2b 20 0c 0d 0a 2b 20 2f 2a 0d 0a  + }..+ ...+ /*..
2390: 2b 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  +  *------------
23a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
23b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
23c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
23d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2b 20 20 2a  ----------..+  *
23e0: 0d 0a 20 20 20 2a 20 49 6e 69 74 69 61 6c 69 7a  ..   * Initializ
23f0: 65 20 2d 2d 0d 0a 20 20 20 2a 0d 0a 20 20 20 2a  e --..   *..   *
2400: 09 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20  .Initialize the 
2410: 67 6c 6f 62 61 6c 20 44 44 45 20 69 6e 73 74 61  global DDE insta
2420: 6e 63 65 2e 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  nce...**********
2430: 2a 2a 2a 2a 2a 0d 0a 2a 2a 2a 20 32 33 35 2c 32  *****..*** 235,2
2440: 34 31 20 2a 2a 2a 2a 0d 0a 20 20 09 09 09 09 20  41 ****..  .... 
2450: 2a 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 69  * refer to the i
2460: 6e 74 65 72 70 72 65 74 65 72 20 69 6e 20 6c 61  nterpreter in la
2470: 74 65 72 0d 0a 20 20 09 09 09 09 20 2a 20 22 73  ter..  .... * "s
2480: 65 6e 64 22 20 63 6f 6d 6d 61 6e 64 73 2e 20 20  end" commands.  
2490: 4d 75 73 74 20 62 65 20 67 6c 6f 62 61 6c 6c 79  Must be globally
24a0: 0d 0a 20 20 09 09 09 09 20 2a 20 75 6e 69 71 75  ..  .... * uniqu
24b0: 65 2e 20 2a 2f 0d 0a 21 20 20 20 20 20 69 6e 74  e. */..!     int
24c0: 20 65 78 61 63 74 4e 61 6d 65 09 09 2f 2a 20 53   exactName../* S
24d0: 68 6f 75 6c 64 20 77 65 20 6d 61 6b 65 20 61 20  hould we make a 
24e0: 75 6e 69 71 75 65 20 6e 61 6d 65 3f 20 30 20 3d  unique name? 0 =
24f0: 20 75 6e 69 71 75 65 20 2a 2f 0d 0a 20 20 20 20   unique */..    
2500: 20 20 29 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20    )..  {..      
2510: 69 6e 74 20 73 75 66 66 69 78 2c 20 6f 66 66 73  int suffix, offs
2520: 65 74 3b 0d 0a 2d 2d 2d 20 32 36 34 2c 32 37 32  et;..--- 264,272
2530: 20 2d 2d 2d 2d 0d 0a 20 20 09 09 09 09 20 2a 20   ----..  .... * 
2540: 72 65 66 65 72 20 74 6f 20 74 68 65 20 69 6e 74  refer to the int
2550: 65 72 70 72 65 74 65 72 20 69 6e 20 6c 61 74 65  erpreter in late
2560: 72 0d 0a 20 20 09 09 09 09 20 2a 20 22 73 65 6e  r..  .... * "sen
2570: 64 22 20 63 6f 6d 6d 61 6e 64 73 2e 20 20 4d 75  d" commands.  Mu
2580: 73 74 20 62 65 20 67 6c 6f 62 61 6c 6c 79 0d 0a  st be globally..
2590: 20 20 09 09 09 09 20 2a 20 75 6e 69 71 75 65 2e    .... * unique.
25a0: 20 2a 2f 0d 0a 21 20 20 20 20 20 69 6e 74 20 65   */..!     int e
25b0: 78 61 63 74 4e 61 6d 65 2c 09 09 2f 2a 20 53 68  xactName,../* Sh
25c0: 6f 75 6c 64 20 77 65 20 6d 61 6b 65 20 61 20 75  ould we make a u
25d0: 6e 69 71 75 65 20 6e 61 6d 65 3f 20 30 20 3d 20  nique name? 0 = 
25e0: 75 6e 69 71 75 65 20 2a 2f 0d 0a 21 20 20 20 20  unique */..!    
25f0: 20 54 63 6c 5f 4f 62 6a 20 2a 68 61 6e 64 6c 65   Tcl_Obj *handle
2600: 72 50 74 72 09 09 2f 2a 20 4e 61 6d 65 20 6f 66  rPtr../* Name of
2610: 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c 20 70 72   the optional pr
2620: 6f 63 2f 63 6f 6d 6d 61 6e 64 20 74 6f 20 68 61  oc/command to ha
2630: 6e 64 6c 65 0d 0a 21 20 09 09 09 09 20 2a 20 69  ndle..! .... * i
2640: 6e 63 6f 6d 69 6e 67 20 44 64 65 20 65 76 61 6c  ncoming Dde eval
2650: 27 73 20 2a 2f 0d 0a 20 20 20 20 20 20 29 0d 0a  's */..      )..
2660: 20 20 7b 0d 0a 20 20 20 20 20 20 69 6e 74 20 73    {..      int s
2670: 75 66 66 69 78 2c 20 6f 66 66 73 65 74 3b 0d 0a  uffix, offset;..
2680: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d  ***************.
2690: 0a 2a 2a 2a 20 33 34 38 2c 33 35 36 20 2a 2a 2a  .*** 348,356 ***
26a0: 2a 0d 0a 2d 2d 2d 20 33 37 39 2c 33 39 34 20 2d  *..--- 379,394 -
26b0: 2d 2d 2d 0d 0a 20 20 20 20 20 20 72 69 50 74 72  ---..      riPtr
26c0: 2d 3e 69 6e 74 65 72 70 20 3d 20 69 6e 74 65 72  ->interp = inter
26d0: 70 3b 0d 0a 20 20 20 20 20 20 72 69 50 74 72 2d  p;..      riPtr-
26e0: 3e 6e 61 6d 65 20 3d 20 63 6b 61 6c 6c 6f 63 28  >name = ckalloc(
26f0: 73 74 72 6c 65 6e 28 61 63 74 75 61 6c 4e 61 6d  strlen(actualNam
2700: 65 29 20 2b 20 31 29 3b 0d 0a 20 20 20 20 20 20  e) + 1);..      
2710: 72 69 50 74 72 2d 3e 6e 65 78 74 50 74 72 20 3d  riPtr->nextPtr =
2720: 20 74 73 64 50 74 72 2d 3e 69 6e 74 65 72 70 4c   tsdPtr->interpL
2730: 69 73 74 50 74 72 3b 0d 0a 2b 20 20 20 20 20 72  istPtr;..+     r
2740: 69 50 74 72 2d 3e 68 61 6e 64 6c 65 72 50 74 72  iPtr->handlerPtr
2750: 20 3d 20 68 61 6e 64 6c 65 72 50 74 72 3b 0d 0a   = handlerPtr;..
2760: 2b 20 20 20 20 20 69 66 20 28 72 69 50 74 72 2d  +     if (riPtr-
2770: 3e 68 61 6e 64 6c 65 72 50 74 72 20 21 3d 20 4e  >handlerPtr != N
2780: 55 4c 4c 29 0d 0a 2b 20 09 54 63 6c 5f 49 6e 63  ULL)..+ .Tcl_Inc
2790: 72 52 65 66 43 6f 75 6e 74 28 72 69 50 74 72 2d  rRefCount(riPtr-
27a0: 3e 68 61 6e 64 6c 65 72 50 74 72 29 3b 0d 0a 20  >handlerPtr);.. 
27b0: 20 20 20 20 20 74 73 64 50 74 72 2d 3e 69 6e 74       tsdPtr->int
27c0: 65 72 70 4c 69 73 74 50 74 72 20 3d 20 72 69 50  erpListPtr = riP
27d0: 74 72 3b 0d 0a 20 20 20 20 20 20 73 74 72 63 70  tr;..      strcp
27e0: 79 28 72 69 50 74 72 2d 3e 6e 61 6d 65 2c 20 61  y(riPtr->name, a
27f0: 63 74 75 61 6c 4e 61 6d 65 29 3b 0d 0a 20 20 0d  ctualName);..  .
2800: 0a 2b 20 20 20 20 20 69 66 20 28 54 63 6c 5f 49  .+     if (Tcl_I
2810: 73 53 61 66 65 28 69 6e 74 65 72 70 29 29 20 7b  sSafe(interp)) {
2820: 0d 0a 2b 20 09 54 63 6c 5f 45 78 70 6f 73 65 43  ..+ .Tcl_ExposeC
2830: 6f 6d 6d 61 6e 64 28 69 6e 74 65 72 70 2c 20 22  ommand(interp, "
2840: 64 64 65 22 2c 20 22 64 64 65 22 29 3b 0d 0a 2b  dde", "dde");..+
2850: 20 20 20 20 20 7d 0d 0a 2b 20 0d 0a 20 20 20 20       }..+ ..    
2860: 20 20 54 63 6c 5f 43 72 65 61 74 65 4f 62 6a 43    Tcl_CreateObjC
2870: 6f 6d 6d 61 6e 64 28 69 6e 74 65 72 70 2c 20 22  ommand(interp, "
2880: 64 64 65 22 2c 20 54 63 6c 5f 44 64 65 4f 62 6a  dde", Tcl_DdeObj
2890: 43 6d 64 2c 0d 0a 20 20 09 20 20 20 20 28 43 6c  Cmd,..  .    (Cl
28a0: 69 65 6e 74 44 61 74 61 29 20 72 69 50 74 72 2c  ientData) riPtr,
28b0: 20 44 65 6c 65 74 65 50 72 6f 63 29 3b 0d 0a 20   DeleteProc);.. 
28c0: 20 20 20 20 20 69 66 20 28 54 63 6c 5f 49 73 53       if (Tcl_IsS
28d0: 61 66 65 28 69 6e 74 65 72 70 29 29 20 7b 0d 0a  afe(interp)) {..
28e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d  ***************.
28f0: 0a 2a 2a 2a 20 33 36 39 2c 33 37 34 20 2a 2a 2a  .*** 369,374 ***
2900: 2a 0d 0a 2d 2d 2d 20 34 30 37 2c 34 34 35 20 2d  *..--- 407,445 -
2910: 2d 2d 2d 0d 0a 20 20 2f 2a 0d 0a 20 20 20 2a 2d  ---..  /*..   *-
2920: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2930: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2940: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2950: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 20  -------------.. 
2960: 20 20 2a 0d 0a 2b 20 20 2a 20 44 64 65 47 65 74    *..+  * DdeGet
2970: 52 65 67 69 73 74 72 61 74 69 6f 6e 50 74 72 0d  RegistrationPtr.
2980: 0a 2b 20 20 2a 0d 0a 2b 20 20 2a 09 52 65 74 72  .+  *..+  *.Retr
2990: 69 65 76 65 20 74 68 65 20 72 65 67 69 73 74 72  ieve the registr
29a0: 61 74 69 6f 6e 20 69 6e 66 6f 20 66 6f 72 20 61  ation info for a
29b0: 6e 20 69 6e 74 65 72 70 72 65 74 65 72 2e 0d 0a  n interpreter...
29c0: 2b 20 20 2a 0d 0a 2b 20 20 2a 20 52 65 73 75 6c  +  *..+  * Resul
29d0: 74 73 3a 0d 0a 2b 20 20 2a 09 52 65 74 75 72 6e  ts:..+  *.Return
29e0: 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  s a pointer to t
29f0: 68 65 20 72 65 67 69 73 74 72 61 74 69 6f 6e 20  he registration 
2a00: 73 74 72 75 63 74 75 72 65 20 6f 72 20 4e 55 4c  structure or NUL
2a10: 4c 0d 0a 2b 20 20 2a 0d 0a 2b 20 20 2a 20 53 69  L..+  *..+  * Si
2a20: 64 65 20 65 66 66 65 63 74 73 3a 0d 0a 2b 20 20  de effects:..+  
2a30: 2a 09 4e 6f 6e 65 0d 0a 2b 20 20 2a 0d 0a 2b 20  *.None..+  *..+ 
2a40: 20 2a 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: 0d 0a 2b 20 20 2a 2f 0d 0a 2b 20 0d 0a 2b 20 73  ..+  */..+ ..+ s
2a90: 74 61 74 69 63 20 52 65 67 69 73 74 65 72 65 64  tatic Registered
2aa0: 49 6e 74 65 72 70 20 2a 0d 0a 2b 20 44 64 65 47  Interp *..+ DdeG
2ab0: 65 74 52 65 67 69 73 74 72 61 74 69 6f 6e 50 74  etRegistrationPt
2ac0: 72 28 0d 0a 2b 20 20 20 20 20 54 63 6c 5f 49 6e  r(..+     Tcl_In
2ad0: 74 65 72 70 20 2a 69 6e 74 65 72 70 0d 0a 2b 20  terp *interp..+ 
2ae0: 20 20 20 20 29 0d 0a 2b 20 7b 0d 0a 2b 20 20 20      )..+ {..+   
2af0: 20 20 52 65 67 69 73 74 65 72 65 64 49 6e 74 65    RegisteredInte
2b00: 72 70 20 2a 72 69 50 74 72 3b 0d 0a 2b 20 20 20  rp *riPtr;..+   
2b10: 20 20 54 68 72 65 61 64 53 70 65 63 69 66 69 63    ThreadSpecific
2b20: 44 61 74 61 20 2a 74 73 64 50 74 72 20 3d 20 54  Data *tsdPtr = T
2b30: 43 4c 5f 54 53 44 5f 49 4e 49 54 28 26 64 61 74  CL_TSD_INIT(&dat
2b40: 61 4b 65 79 29 3b 0d 0a 2b 20 0d 0a 2b 20 20 20  aKey);..+ ..+   
2b50: 20 20 66 6f 72 20 28 72 69 50 74 72 20 3d 20 74    for (riPtr = t
2b60: 73 64 50 74 72 2d 3e 69 6e 74 65 72 70 4c 69 73  sdPtr->interpLis
2b70: 74 50 74 72 3b 20 72 69 50 74 72 20 21 3d 20 4e  tPtr; riPtr != N
2b80: 55 4c 4c 3b 20 0d 0a 2b 20 09 20 20 20 20 72 69  ULL; ..+ .    ri
2b90: 50 74 72 20 3d 20 72 69 50 74 72 2d 3e 6e 65 78  Ptr = riPtr->nex
2ba0: 74 50 74 72 29 20 7b 0d 0a 2b 20 09 69 66 20 28  tPtr) {..+ .if (
2bb0: 72 69 50 74 72 2d 3e 69 6e 74 65 72 70 20 3d 3d  riPtr->interp ==
2bc0: 20 69 6e 74 65 72 70 29 20 7b 0d 0a 2b 20 09 20   interp) {..+ . 
2bd0: 20 20 20 62 72 65 61 6b 3b 0d 0a 2b 20 09 7d 0d     break;..+ .}.
2be0: 0a 2b 20 20 20 20 20 7d 0d 0a 2b 20 20 20 20 20  .+     }..+     
2bf0: 72 65 74 75 72 6e 20 72 69 50 74 72 3b 0d 0a 2b  return riPtr;..+
2c00: 20 7d 0d 0a 2b 20 0c 0d 0a 2b 20 2f 2a 0d 0a 2b   }..+ ...+ /*..+
2c10: 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d    *-------------
2c20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2c30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2c40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2c50: 2d 0d 0a 2b 20 20 2a 0d 0a 20 20 20 2a 20 44 65  -..+  *..   * De
2c60: 6c 65 74 65 50 72 6f 63 0d 0a 20 20 20 2a 0d 0a  leteProc..   *..
2c70: 20 20 20 2a 09 54 68 69 73 20 70 72 6f 63 65 64     *.This proced
2c80: 75 72 65 20 69 73 20 63 61 6c 6c 65 64 20 77 68  ure is called wh
2c90: 65 6e 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 22  en the command "
2ca0: 64 64 65 22 20 69 73 20 64 65 73 74 72 6f 79 65  dde" is destroye
2cb0: 64 2e 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  d...************
2cc0: 2a 2a 2a 0d 0a 2a 2a 2a 20 34 30 37 2c 34 31 32  ***..*** 407,412
2cd0: 20 2a 2a 2a 2a 0d 0a 2d 2d 2d 20 34 37 38 2c 34   ****..--- 478,4
2ce0: 38 35 20 2d 2d 2d 2d 0d 0a 20 20 09 7d 0d 0a 20  85 ----..  .}.. 
2cf0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 63 6b       }..      ck
2d00: 66 72 65 65 28 72 69 50 74 72 2d 3e 6e 61 6d 65  free(riPtr->name
2d10: 29 3b 0d 0a 2b 20 20 20 20 20 69 66 20 28 72 69  );..+     if (ri
2d20: 50 74 72 2d 3e 68 61 6e 64 6c 65 72 50 74 72 29  Ptr->handlerPtr)
2d30: 0d 0a 2b 20 09 54 63 6c 5f 44 65 63 72 52 65 66  ..+ .Tcl_DecrRef
2d40: 43 6f 75 6e 74 28 72 69 50 74 72 2d 3e 68 61 6e  Count(riPtr->han
2d50: 64 6c 65 72 50 74 72 29 3b 0d 0a 20 20 20 20 20  dlerPtr);..     
2d60: 20 54 63 6c 5f 45 76 65 6e 74 75 61 6c 6c 79 46   Tcl_EventuallyF
2d70: 72 65 65 28 63 6c 69 65 6e 74 44 61 74 61 2c 20  ree(clientData, 
2d80: 54 43 4c 5f 44 59 4e 41 4d 49 43 29 3b 0d 0a 20  TCL_DYNAMIC);.. 
2d90: 20 7d 0d 0a 20 20 0c 0d 0a 2a 2a 2a 2a 2a 2a 2a   }..  ...*******
2da0: 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 2a 2a 2a 20 34 34  ********..*** 44
2db0: 31 2c 34 34 39 20 2a 2a 2a 2a 0d 0a 20 20 7b 0d  1,449 ****..  {.
2dc0: 0a 20 20 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a  .      Tcl_Obj *
2dd0: 65 72 72 6f 72 4f 62 6a 50 74 72 3b 0d 0a 20 20  errorObjPtr;..  
2de0: 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 72 65 74      Tcl_Obj *ret
2df0: 75 72 6e 50 61 63 6b 61 67 65 50 74 72 3b 0d 0a  urnPackagePtr;..
2e00: 21 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74  !     int result
2e10: 3b 0d 0a 20 20 0d 0a 2d 20 20 20 20 20 72 65 73  ;..  ..-     res
2e20: 75 6c 74 20 3d 20 54 63 6c 5f 45 76 61 6c 4f 62  ult = Tcl_EvalOb
2e30: 6a 45 78 28 72 69 50 74 72 2d 3e 69 6e 74 65 72  jEx(riPtr->inter
2e40: 70 2c 20 64 64 65 4f 62 6a 65 63 74 50 74 72 2c  p, ddeObjectPtr,
2e50: 20 54 43 4c 5f 45 56 41 4c 5f 47 4c 4f 42 41 4c   TCL_EVAL_GLOBAL
2e60: 29 3b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e  );..      return
2e70: 50 61 63 6b 61 67 65 50 74 72 20 3d 20 54 63 6c  PackagePtr = Tcl
2e80: 5f 4e 65 77 4c 69 73 74 4f 62 6a 28 30 2c 20 28  _NewListObj(0, (
2e90: 54 63 6c 5f 4f 62 6a 20 2a 2a 29 20 4e 55 4c 4c  Tcl_Obj **) NULL
2ea0: 29 3b 0d 0a 20 20 20 20 20 20 54 63 6c 5f 4c 69  );..      Tcl_Li
2eb0: 73 74 4f 62 6a 41 70 70 65 6e 64 45 6c 65 6d 65  stObjAppendEleme
2ec0: 6e 74 28 4e 55 4c 4c 2c 20 72 65 74 75 72 6e 50  nt(NULL, returnP
2ed0: 61 63 6b 61 67 65 50 74 72 2c 0d 0a 20 20 09 20  ackagePtr,..  . 
2ee0: 20 20 20 54 63 6c 5f 4e 65 77 49 6e 74 4f 62 6a     Tcl_NewIntObj
2ef0: 28 72 65 73 75 6c 74 29 29 3b 0d 0a 2d 2d 2d 20  (result));..--- 
2f00: 35 31 34 2c 35 33 37 20 2d 2d 2d 2d 0d 0a 20 20  514,537 ----..  
2f10: 7b 0d 0a 20 20 20 20 20 20 54 63 6c 5f 4f 62 6a  {..      Tcl_Obj
2f20: 20 2a 65 72 72 6f 72 4f 62 6a 50 74 72 3b 0d 0a   *errorObjPtr;..
2f30: 20 20 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 72        Tcl_Obj *r
2f40: 65 74 75 72 6e 50 61 63 6b 61 67 65 50 74 72 3b  eturnPackagePtr;
2f50: 0d 0a 21 20 20 20 20 20 69 6e 74 20 72 65 73 75  ..!     int resu
2f60: 6c 74 20 3d 20 54 43 4c 5f 4f 4b 3b 0d 0a 21 20  lt = TCL_OK;..! 
2f70: 0d 0a 21 20 20 20 20 20 69 66 20 28 72 69 50 74  ..!     if (riPt
2f80: 72 2d 3e 68 61 6e 64 6c 65 72 50 74 72 20 3d 3d  r->handlerPtr ==
2f90: 20 4e 55 4c 4c 20 26 26 20 54 63 6c 5f 49 73 53   NULL && Tcl_IsS
2fa0: 61 66 65 28 72 69 50 74 72 2d 3e 69 6e 74 65 72  afe(riPtr->inter
2fb0: 70 29 29 20 7b 0d 0a 21 20 09 54 63 6c 5f 53 65  p)) {..! .Tcl_Se
2fc0: 74 4f 62 6a 52 65 73 75 6c 74 28 72 69 50 74 72  tObjResult(riPtr
2fd0: 2d 3e 69 6e 74 65 72 70 2c 20 54 63 6c 5f 4e 65  ->interp, Tcl_Ne
2fe0: 77 53 74 72 69 6e 67 4f 62 6a 28 22 70 65 72 6d  wStringObj("perm
2ff0: 69 73 73 69 6f 6e 20 64 65 6e 69 65 64 3a 22 0d  ission denied:".
3000: 0a 21 20 09 09 22 20 61 20 68 61 6e 64 6c 65 72  .! .." a handler
3010: 20 70 72 6f 63 65 64 75 72 65 20 6d 75 73 74 20   procedure must 
3020: 62 65 20 64 65 66 69 6e 65 64 20 66 6f 72 20 75  be defined for u
3030: 73 65 20 69 6e 20 61 20 73 61 66 65 20 69 6e 74  se in a safe int
3040: 65 72 70 22 2c 20 2d 31 29 29 3b 0d 0a 21 20 09  erp", -1));..! .
3050: 72 65 73 75 6c 74 20 3d 20 54 43 4c 5f 45 52 52  result = TCL_ERR
3060: 4f 52 3b 0d 0a 21 20 20 20 20 20 7d 0d 0a 21 20  OR;..!     }..! 
3070: 0d 0a 21 20 20 20 20 20 69 66 20 28 72 69 50 74  ..!     if (riPt
3080: 72 2d 3e 68 61 6e 64 6c 65 72 50 74 72 20 21 3d  r->handlerPtr !=
3090: 20 4e 55 4c 4c 29 20 7b 0d 0a 21 20 09 2f 2a 20   NULL) {..! ./* 
30a0: 70 72 65 66 69 78 20 74 68 65 20 70 61 73 73 65  prefix the passe
30b0: 64 20 69 6e 20 61 72 67 75 6d 65 6e 74 73 20 77  d in arguments w
30c0: 69 74 68 20 74 68 65 20 68 61 6e 64 6c 65 72 20  ith the handler 
30d0: 63 6f 6d 6d 61 6e 64 20 2a 2f 0d 0a 21 20 09 72  command */..! .r
30e0: 65 73 75 6c 74 20 3d 20 54 63 6c 5f 4c 69 73 74  esult = Tcl_List
30f0: 4f 62 6a 52 65 70 6c 61 63 65 28 72 69 50 74 72  ObjReplace(riPtr
3100: 2d 3e 69 6e 74 65 72 70 2c 20 64 64 65 4f 62 6a  ->interp, ddeObj
3110: 65 63 74 50 74 72 2c 20 30 2c 20 30 2c 20 31 2c  ectPtr, 0, 0, 1,
3120: 0d 0a 21 20 09 09 26 28 72 69 50 74 72 2d 3e 68  ..! ..&(riPtr->h
3130: 61 6e 64 6c 65 72 50 74 72 29 29 3b 0d 0a 21 20  andlerPtr));..! 
3140: 20 20 20 20 7d 0d 0a 21 20 0d 0a 21 20 20 20 20      }..! ..!    
3150: 20 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 54   if (result == T
3160: 43 4c 5f 4f 4b 29 20 7b 0d 0a 21 20 09 72 65 73  CL_OK) {..! .res
3170: 75 6c 74 20 3d 20 54 63 6c 5f 45 76 61 6c 4f 62  ult = Tcl_EvalOb
3180: 6a 45 78 28 72 69 50 74 72 2d 3e 69 6e 74 65 72  jEx(riPtr->inter
3190: 70 2c 20 64 64 65 4f 62 6a 65 63 74 50 74 72 2c  p, ddeObjectPtr,
31a0: 20 54 43 4c 5f 45 56 41 4c 5f 47 4c 4f 42 41 4c   TCL_EVAL_GLOBAL
31b0: 29 3b 0d 0a 21 20 20 20 20 20 7d 0d 0a 20 20 0d  );..!     }..  .
31c0: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 50 61 63  .      returnPac
31d0: 6b 61 67 65 50 74 72 20 3d 20 54 63 6c 5f 4e 65  kagePtr = Tcl_Ne
31e0: 77 4c 69 73 74 4f 62 6a 28 30 2c 20 28 54 63 6c  wListObj(0, (Tcl
31f0: 5f 4f 62 6a 20 2a 2a 29 20 4e 55 4c 4c 29 3b 0d  _Obj **) NULL);.
3200: 0a 20 20 20 20 20 20 54 63 6c 5f 4c 69 73 74 4f  .      Tcl_ListO
3210: 62 6a 41 70 70 65 6e 64 45 6c 65 6d 65 6e 74 28  bjAppendElement(
3220: 4e 55 4c 4c 2c 20 72 65 74 75 72 6e 50 61 63 6b  NULL, returnPack
3230: 61 67 65 50 74 72 2c 0d 0a 20 20 09 20 20 20 20  agePtr,..  .    
3240: 54 63 6c 5f 4e 65 77 49 6e 74 4f 62 6a 28 72 65  Tcl_NewIntObj(re
3250: 73 75 6c 74 29 29 3b 0d 0a 2a 2a 2a 2a 2a 2a 2a  sult));..*******
3260: 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 2a 2a 2a 20 34 35  ********..*** 45
3270: 32 2c 34 36 31 20 2a 2a 2a 2a 0d 0a 20 20 20 20  2,461 ****..    
3280: 20 20 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20    if (result == 
3290: 54 43 4c 5f 45 52 52 4f 52 29 20 7b 0d 0a 20 20  TCL_ERROR) {..  
32a0: 09 65 72 72 6f 72 4f 62 6a 50 74 72 20 3d 20 54  .errorObjPtr = T
32b0: 63 6c 5f 47 65 74 56 61 72 32 45 78 28 72 69 50  cl_GetVar2Ex(riP
32c0: 74 72 2d 3e 69 6e 74 65 72 70 2c 20 22 65 72 72  tr->interp, "err
32d0: 6f 72 43 6f 64 65 22 2c 20 4e 55 4c 4c 2c 0d 0a  orCode", NULL,..
32e0: 20 20 09 09 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f    ..TCL_GLOBAL_O
32f0: 4e 4c 59 29 3b 0d 0a 21 20 09 54 63 6c 5f 4c 69  NLY);..! .Tcl_Li
3300: 73 74 4f 62 6a 41 70 70 65 6e 64 45 6c 65 6d 65  stObjAppendEleme
3310: 6e 74 28 4e 55 4c 4c 2c 20 72 65 74 75 72 6e 50  nt(NULL, returnP
3320: 61 63 6b 61 67 65 50 74 72 2c 20 65 72 72 6f 72  ackagePtr, error
3330: 4f 62 6a 50 74 72 29 3b 0d 0a 20 20 09 65 72 72  ObjPtr);..  .err
3340: 6f 72 4f 62 6a 50 74 72 20 3d 20 54 63 6c 5f 47  orObjPtr = Tcl_G
3350: 65 74 56 61 72 32 45 78 28 72 69 50 74 72 2d 3e  etVar2Ex(riPtr->
3360: 69 6e 74 65 72 70 2c 20 22 65 72 72 6f 72 49 6e  interp, "errorIn
3370: 66 6f 22 2c 20 4e 55 4c 4c 2c 0d 0a 20 20 09 09  fo", NULL,..  ..
3380: 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29  TCL_GLOBAL_ONLY)
3390: 3b 0d 0a 21 20 20 20 20 20 20 20 20 20 54 63 6c  ;..!         Tcl
33a0: 5f 4c 69 73 74 4f 62 6a 41 70 70 65 6e 64 45 6c  _ListObjAppendEl
33b0: 65 6d 65 6e 74 28 4e 55 4c 4c 2c 20 72 65 74 75  ement(NULL, retu
33c0: 72 6e 50 61 63 6b 61 67 65 50 74 72 2c 20 65 72  rnPackagePtr, er
33d0: 72 6f 72 4f 62 6a 50 74 72 29 3b 0d 0a 20 20 20  rorObjPtr);..   
33e0: 20 20 20 7d 0d 0a 20 20 0d 0a 20 20 20 20 20 20     }..  ..      
33f0: 72 65 74 75 72 6e 20 72 65 74 75 72 6e 50 61 63  return returnPac
3400: 6b 61 67 65 50 74 72 3b 0d 0a 2d 2d 2d 20 35 34  kagePtr;..--- 54
3410: 30 2c 35 35 31 20 2d 2d 2d 2d 0d 0a 20 20 20 20  0,551 ----..    
3420: 20 20 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20    if (result == 
3430: 54 43 4c 5f 45 52 52 4f 52 29 20 7b 0d 0a 20 20  TCL_ERROR) {..  
3440: 09 65 72 72 6f 72 4f 62 6a 50 74 72 20 3d 20 54  .errorObjPtr = T
3450: 63 6c 5f 47 65 74 56 61 72 32 45 78 28 72 69 50  cl_GetVar2Ex(riP
3460: 74 72 2d 3e 69 6e 74 65 72 70 2c 20 22 65 72 72  tr->interp, "err
3470: 6f 72 43 6f 64 65 22 2c 20 4e 55 4c 4c 2c 0d 0a  orCode", NULL,..
3480: 20 20 09 09 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f    ..TCL_GLOBAL_O
3490: 4e 4c 59 29 3b 0d 0a 21 20 09 69 66 20 28 65 72  NLY);..! .if (er
34a0: 72 6f 72 4f 62 6a 50 74 72 29 0d 0a 21 20 09 20  rorObjPtr)..! . 
34b0: 20 20 20 54 63 6c 5f 4c 69 73 74 4f 62 6a 41 70     Tcl_ListObjAp
34c0: 70 65 6e 64 45 6c 65 6d 65 6e 74 28 4e 55 4c 4c  pendElement(NULL
34d0: 2c 20 72 65 74 75 72 6e 50 61 63 6b 61 67 65 50  , returnPackageP
34e0: 74 72 2c 20 65 72 72 6f 72 4f 62 6a 50 74 72 29  tr, errorObjPtr)
34f0: 3b 0d 0a 20 20 09 65 72 72 6f 72 4f 62 6a 50 74  ;..  .errorObjPt
3500: 72 20 3d 20 54 63 6c 5f 47 65 74 56 61 72 32 45  r = Tcl_GetVar2E
3510: 78 28 72 69 50 74 72 2d 3e 69 6e 74 65 72 70 2c  x(riPtr->interp,
3520: 20 22 65 72 72 6f 72 49 6e 66 6f 22 2c 20 4e 55   "errorInfo", NU
3530: 4c 4c 2c 0d 0a 20 20 09 09 54 43 4c 5f 47 4c 4f  LL,..  ..TCL_GLO
3540: 42 41 4c 5f 4f 4e 4c 59 29 3b 0d 0a 21 20 09 69  BAL_ONLY);..! .i
3550: 66 20 28 65 72 72 6f 72 4f 62 6a 50 74 72 29 0d  f (errorObjPtr).
3560: 0a 21 20 09 20 20 20 20 54 63 6c 5f 4c 69 73 74  .! .    Tcl_List
3570: 4f 62 6a 41 70 70 65 6e 64 45 6c 65 6d 65 6e 74  ObjAppendElement
3580: 28 4e 55 4c 4c 2c 20 72 65 74 75 72 6e 50 61 63  (NULL, returnPac
3590: 6b 61 67 65 50 74 72 2c 20 65 72 72 6f 72 4f 62  kagePtr, errorOb
35a0: 6a 50 74 72 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  jPtr);..      }.
35b0: 0a 20 20 0d 0a 20 20 20 20 20 20 72 65 74 75 72  .  ..      retur
35c0: 6e 20 72 65 74 75 72 6e 50 61 63 6b 61 67 65 50  n returnPackageP
35d0: 74 72 3b 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  tr;..***********
35e0: 2a 2a 2a 2a 0d 0a 2a 2a 2a 20 36 32 35 2c 36 34  ****..*** 625,64
35f0: 31 20 2a 2a 2a 2a 0d 0a 20 20 09 09 09 20 20 20  1 ****..  ...   
3600: 20 72 65 74 75 72 6e 53 74 72 69 6e 67 2c 20 28   returnString, (
3610: 44 57 4f 52 44 29 20 6c 65 6e 2b 31 2c 20 30 2c  DWORD) len+1, 0,
3620: 20 64 64 65 49 74 65 6d 2c 20 43 46 5f 54 45 58   ddeItem, CF_TEX
3630: 54 2c 0d 0a 20 20 09 09 09 20 20 20 20 30 29 3b  T,..  ...    0);
3640: 0d 0a 20 20 09 09 7d 20 65 6c 73 65 20 7b 0d 0a  ..  ..} else {..
3650: 21 20 09 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20  ! ..    Tcl_Obj 
3660: 2a 76 61 72 69 61 62 6c 65 4f 62 6a 50 74 72 20  *variableObjPtr 
3670: 3d 20 54 63 6c 5f 47 65 74 56 61 72 32 45 78 28  = Tcl_GetVar2Ex(
3680: 0d 0a 21 20 09 09 09 20 20 20 20 63 6f 6e 76 50  ..! ...    convP
3690: 74 72 2d 3e 72 69 50 74 72 2d 3e 69 6e 74 65 72  tr->riPtr->inter
36a0: 70 2c 20 75 74 69 6c 53 74 72 69 6e 67 2c 20 4e  p, utilString, N
36b0: 55 4c 4c 2c 20 0d 0a 21 20 09 09 09 20 20 20 20  ULL, ..! ...    
36c0: 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29  TCL_GLOBAL_ONLY)
36d0: 3b 0d 0a 21 20 09 09 20 20 20 20 69 66 20 28 76  ;..! ..    if (v
36e0: 61 72 69 61 62 6c 65 4f 62 6a 50 74 72 20 21 3d  ariableObjPtr !=
36f0: 20 4e 55 4c 4c 29 20 7b 0d 0a 21 20 09 09 09 72   NULL) {..! ...r
3700: 65 74 75 72 6e 53 74 72 69 6e 67 20 3d 20 54 63  eturnString = Tc
3710: 6c 5f 47 65 74 53 74 72 69 6e 67 46 72 6f 6d 4f  l_GetStringFromO
3720: 62 6a 28 76 61 72 69 61 62 6c 65 4f 62 6a 50 74  bj(variableObjPt
3730: 72 2c 0d 0a 21 20 09 09 09 09 26 6c 65 6e 29 3b  r,..! ....&len);
3740: 0d 0a 21 20 09 09 09 64 64 65 52 65 74 75 72 6e  ..! ...ddeReturn
3750: 20 3d 20 44 64 65 43 72 65 61 74 65 44 61 74 61   = DdeCreateData
3760: 48 61 6e 64 6c 65 28 64 64 65 49 6e 73 74 61 6e  Handle(ddeInstan
3770: 63 65 2c 0d 0a 21 20 09 09 09 09 72 65 74 75 72  ce,..! ....retur
3780: 6e 53 74 72 69 6e 67 2c 20 28 44 57 4f 52 44 29  nString, (DWORD)
3790: 20 6c 65 6e 2b 31 2c 20 30 2c 20 64 64 65 49 74   len+1, 0, ddeIt
37a0: 65 6d 2c 0d 0a 21 20 09 09 09 09 43 46 5f 54 45  em,..! ....CF_TE
37b0: 58 54 2c 20 30 29 3b 0d 0a 21 20 09 09 20 20 20  XT, 0);..! ..   
37c0: 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 09 09 09   } else {..  ...
37d0: 64 64 65 52 65 74 75 72 6e 20 3d 20 4e 55 4c 4c  ddeReturn = NULL
37e0: 3b 0d 0a 20 20 09 09 20 20 20 20 7d 0d 0a 20 20  ;..  ..    }..  
37f0: 09 09 7d 0d 0a 20 20 09 09 54 63 6c 5f 44 53 74  ..}..  ..Tcl_DSt
3800: 72 69 6e 67 46 72 65 65 28 26 64 53 74 72 69 6e  ringFree(&dStrin
3810: 67 29 3b 0d 0a 2d 2d 2d 20 37 31 35 2c 37 33 35  g);..--- 715,735
3820: 20 2d 2d 2d 2d 0d 0a 20 20 09 09 09 20 20 20 20   ----..  ...    
3830: 72 65 74 75 72 6e 53 74 72 69 6e 67 2c 20 28 44  returnString, (D
3840: 57 4f 52 44 29 20 6c 65 6e 2b 31 2c 20 30 2c 20  WORD) len+1, 0, 
3850: 64 64 65 49 74 65 6d 2c 20 43 46 5f 54 45 58 54  ddeItem, CF_TEXT
3860: 2c 0d 0a 20 20 09 09 09 20 20 20 20 30 29 3b 0d  ,..  ...    0);.
3870: 0a 20 20 09 09 7d 20 65 6c 73 65 20 7b 0d 0a 21  .  ..} else {..!
3880: 20 09 09 20 20 20 20 69 66 20 28 54 63 6c 5f 49   ..    if (Tcl_I
3890: 73 53 61 66 65 28 63 6f 6e 76 50 74 72 2d 3e 72  sSafe(convPtr->r
38a0: 69 50 74 72 2d 3e 69 6e 74 65 72 70 29 29 20 7b  iPtr->interp)) {
38b0: 0d 0a 20 20 09 09 09 64 64 65 52 65 74 75 72 6e  ..  ...ddeReturn
38c0: 20 3d 20 4e 55 4c 4c 3b 0d 0a 2b 20 09 09 20 20   = NULL;..+ ..  
38d0: 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 2b 20 09 09    } else {..+ ..
38e0: 09 54 63 6c 5f 4f 62 6a 20 2a 76 61 72 69 61 62  .Tcl_Obj *variab
38f0: 6c 65 4f 62 6a 50 74 72 20 3d 20 54 63 6c 5f 47  leObjPtr = Tcl_G
3900: 65 74 56 61 72 32 45 78 28 0d 0a 2b 20 09 09 09  etVar2Ex(..+ ...
3910: 09 63 6f 6e 76 50 74 72 2d 3e 72 69 50 74 72 2d  .convPtr->riPtr-
3920: 3e 69 6e 74 65 72 70 2c 20 75 74 69 6c 53 74 72  >interp, utilStr
3930: 69 6e 67 2c 20 4e 55 4c 4c 2c 20 0d 0a 2b 20 09  ing, NULL, ..+ .
3940: 09 09 09 54 43 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e  ...TCL_GLOBAL_ON
3950: 4c 59 29 3b 0d 0a 2b 20 09 09 09 69 66 20 28 76  LY);..+ ...if (v
3960: 61 72 69 61 62 6c 65 4f 62 6a 50 74 72 20 21 3d  ariableObjPtr !=
3970: 20 4e 55 4c 4c 29 20 7b 0d 0a 2b 20 09 09 09 20   NULL) {..+ ... 
3980: 20 20 20 72 65 74 75 72 6e 53 74 72 69 6e 67 20     returnString 
3990: 3d 20 54 63 6c 5f 47 65 74 53 74 72 69 6e 67 46  = Tcl_GetStringF
39a0: 72 6f 6d 4f 62 6a 28 76 61 72 69 61 62 6c 65 4f  romObj(variableO
39b0: 62 6a 50 74 72 2c 0d 0a 2b 20 09 09 09 09 20 20  bjPtr,..+ ....  
39c0: 20 20 26 6c 65 6e 29 3b 0d 0a 2b 20 09 09 09 20    &len);..+ ... 
39d0: 20 20 20 64 64 65 52 65 74 75 72 6e 20 3d 20 44     ddeReturn = D
39e0: 64 65 43 72 65 61 74 65 44 61 74 61 48 61 6e 64  deCreateDataHand
39f0: 6c 65 28 64 64 65 49 6e 73 74 61 6e 63 65 2c 0d  le(ddeInstance,.
3a00: 0a 2b 20 09 09 09 09 20 20 20 20 72 65 74 75 72  .+ ....    retur
3a10: 6e 53 74 72 69 6e 67 2c 20 28 44 57 4f 52 44 29  nString, (DWORD)
3a20: 20 6c 65 6e 2b 31 2c 20 30 2c 20 64 64 65 49 74   len+1, 0, ddeIt
3a30: 65 6d 2c 20 0d 0a 2b 20 09 09 09 09 20 20 20 20  em, ..+ ....    
3a40: 43 46 5f 54 45 58 54 2c 20 30 29 3b 0d 0a 2b 20  CF_TEXT, 0);..+ 
3a50: 09 09 09 7d 20 65 6c 73 65 20 7b 0d 0a 2b 20 09  ...} else {..+ .
3a60: 09 09 20 20 20 20 64 64 65 52 65 74 75 72 6e 20  ..    ddeReturn 
3a70: 3d 20 4e 55 4c 4c 3b 0d 0a 2b 20 09 09 09 7d 0d  = NULL;..+ ...}.
3a80: 0a 20 20 09 09 20 20 20 20 7d 0d 0a 20 20 09 09  .  ..    }..  ..
3a90: 7d 0d 0a 20 20 09 09 54 63 6c 5f 44 53 74 72 69  }..  ..Tcl_DStri
3aa0: 6e 67 46 72 65 65 28 26 64 53 74 72 69 6e 67 29  ngFree(&dString)
3ab0: 3b 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ;..*************
3ac0: 2a 2a 0d 0a 2a 2a 2a 20 31 30 34 31 2c 31 30 34  **..*** 1041,104
3ad0: 36 20 2a 2a 2a 2a 0d 0a 2d 2d 2d 20 31 31 33 35  6 ****..--- 1135
3ae0: 2c 31 31 34 31 20 2d 2d 2d 2d 0d 0a 20 20 0d 0a  ,1141 ----..  ..
3af0: 20 20 20 20 20 20 65 6e 75 6d 20 7b 0d 0a 20 20        enum {..  
3b00: 09 44 44 45 5f 53 45 52 56 45 52 4e 41 4d 45 5f  .DDE_SERVERNAME_
3b10: 45 58 41 43 54 2c 0d 0a 2b 20 09 44 44 45 5f 53  EXACT,..+ .DDE_S
3b20: 45 52 56 45 52 4e 41 4d 45 5f 48 41 4e 44 4c 45  ERVERNAME_HANDLE
3b30: 52 2c 0d 0a 20 20 09 44 44 45 5f 53 45 52 56 45  R,..  .DDE_SERVE
3b40: 52 4e 41 4d 45 5f 4c 41 53 54 2c 0d 0a 20 20 20  RNAME_LAST,..   
3b50: 20 20 20 7d 3b 0d 0a 20 20 0d 0a 2a 2a 2a 2a 2a     };..  ..*****
3b60: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 2a 2a 2a 20  **********..*** 
3b70: 31 30 34 39 2c 31 30 35 35 20 2a 2a 2a 2a 0d 0a  1049,1055 ****..
3b80: 20 20 09 20 20 28 63 68 61 72 20 2a 29 20 4e 55    .  (char *) NU
3b90: 4c 4c 7d 3b 0d 0a 20 20 20 20 20 20 73 74 61 74  LL};..      stat
3ba0: 69 63 20 43 4f 4e 53 54 20 63 68 61 72 20 2a 64  ic CONST char *d
3bb0: 64 65 4f 70 74 69 6f 6e 73 5b 5d 20 3d 20 7b 22  deOptions[] = {"
3bc0: 2d 61 73 79 6e 63 22 2c 20 28 63 68 61 72 20 2a  -async", (char *
3bd0: 29 20 4e 55 4c 4c 7d 3b 0d 0a 20 20 20 20 20 20  ) NULL};..      
3be0: 73 74 61 74 69 63 20 43 4f 4e 53 54 20 63 68 61  static CONST cha
3bf0: 72 20 2a 64 64 65 52 65 71 4f 70 74 69 6f 6e 73  r *ddeReqOptions
3c00: 5b 5d 20 3d 20 7b 22 2d 62 69 6e 61 72 79 22 2c  [] = {"-binary",
3c10: 20 28 63 68 61 72 20 2a 29 20 4e 55 4c 4c 7d 3b   (char *) NULL};
3c20: 0d 0a 21 20 20 20 20 20 73 74 61 74 69 63 20 43  ..!     static C
3c30: 4f 4e 53 54 20 63 68 61 72 20 2a 64 64 65 53 72  ONST char *ddeSr
3c40: 76 4f 70 74 69 6f 6e 73 5b 5d 20 3d 20 7b 22 2d  vOptions[] = {"-
3c50: 65 78 61 63 74 22 2c 20 22 2d 2d 22 2c 20 28 63  exact", "--", (c
3c60: 68 61 72 20 2a 29 20 4e 55 4c 4c 7d 3b 0d 0a 20  har *) NULL};.. 
3c70: 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 2c 20       int index, 
3c80: 61 72 67 49 6e 64 65 78 2c 20 69 3b 0d 0a 20 20  argIndex, i;..  
3c90: 20 20 20 20 69 6e 74 20 61 73 79 6e 63 20 3d 20      int async = 
3ca0: 30 2c 20 62 69 6e 61 72 79 20 3d 20 30 2c 20 65  0, binary = 0, e
3cb0: 78 61 63 74 20 3d 20 30 3b 0d 0a 20 20 20 20 20  xact = 0;..     
3cc0: 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 54 43   int result = TC
3cd0: 4c 5f 4f 4b 3b 0d 0a 2d 2d 2d 20 31 31 34 34 2c  L_OK;..--- 1144,
3ce0: 31 31 35 30 20 2d 2d 2d 2d 0d 0a 20 20 09 20 20  1150 ----..  .  
3cf0: 28 63 68 61 72 20 2a 29 20 4e 55 4c 4c 7d 3b 0d  (char *) NULL};.
3d00: 0a 20 20 20 20 20 20 73 74 61 74 69 63 20 43 4f  .      static CO
3d10: 4e 53 54 20 63 68 61 72 20 2a 64 64 65 4f 70 74  NST char *ddeOpt
3d20: 69 6f 6e 73 5b 5d 20 3d 20 7b 22 2d 61 73 79 6e  ions[] = {"-asyn
3d30: 63 22 2c 20 28 63 68 61 72 20 2a 29 20 4e 55 4c  c", (char *) NUL
3d40: 4c 7d 3b 0d 0a 20 20 20 20 20 20 73 74 61 74 69  L};..      stati
3d50: 63 20 43 4f 4e 53 54 20 63 68 61 72 20 2a 64 64  c CONST char *dd
3d60: 65 52 65 71 4f 70 74 69 6f 6e 73 5b 5d 20 3d 20  eReqOptions[] = 
3d70: 7b 22 2d 62 69 6e 61 72 79 22 2c 20 28 63 68 61  {"-binary", (cha
3d80: 72 20 2a 29 20 4e 55 4c 4c 7d 3b 0d 0a 21 20 20  r *) NULL};..!  
3d90: 20 20 20 73 74 61 74 69 63 20 43 4f 4e 53 54 20     static CONST 
3da0: 63 68 61 72 20 2a 64 64 65 53 72 76 4f 70 74 69  char *ddeSrvOpti
3db0: 6f 6e 73 5b 5d 20 3d 20 7b 22 2d 65 78 61 63 74  ons[] = {"-exact
3dc0: 22 2c 20 22 2d 68 61 6e 64 6c 65 72 22 2c 20 22  ", "-handler", "
3dd0: 2d 2d 22 2c 20 28 63 68 61 72 20 2a 29 20 4e 55  --", (char *) NU
3de0: 4c 4c 7d 3b 0d 0a 20 20 20 20 20 20 69 6e 74 20  LL};..      int 
3df0: 69 6e 64 65 78 2c 20 61 72 67 49 6e 64 65 78 2c  index, argIndex,
3e00: 20 69 3b 0d 0a 20 20 20 20 20 20 69 6e 74 20 61   i;..      int a
3e10: 73 79 6e 63 20 3d 20 30 2c 20 62 69 6e 61 72 79  sync = 0, binary
3e20: 20 3d 20 30 2c 20 65 78 61 63 74 20 3d 20 30 3b   = 0, exact = 0;
3e30: 0d 0a 20 20 20 20 20 20 69 6e 74 20 72 65 73 75  ..      int resu
3e40: 6c 74 20 3d 20 54 43 4c 5f 4f 4b 3b 0d 0a 2a 2a  lt = TCL_OK;..**
3e50: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 2a  *************..*
3e60: 2a 2a 20 31 30 36 37 2c 31 30 37 33 20 2a 2a 2a  ** 1067,1073 ***
3e70: 2a 0d 0a 20 20 20 20 20 20 48 44 44 45 44 41 54  *..      HDDEDAT
3e80: 41 20 64 64 65 52 65 74 75 72 6e 3b 0d 0a 20 20  A ddeReturn;..  
3e90: 20 20 20 20 52 65 67 69 73 74 65 72 65 64 49 6e      RegisteredIn
3ea0: 74 65 72 70 20 2a 72 69 50 74 72 3b 0d 0a 20 20  terp *riPtr;..  
3eb0: 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a      Tcl_Interp *
3ec0: 73 65 6e 64 49 6e 74 65 72 70 3b 0d 0a 21 20 20  sendInterp;..!  
3ed0: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50     Tcl_Obj *objP
3ee0: 74 72 3b 0d 0a 20 20 20 20 20 20 54 68 72 65 61  tr;..      Threa
3ef0: 64 53 70 65 63 69 66 69 63 44 61 74 61 20 2a 74  dSpecificData *t
3f00: 73 64 50 74 72 20 3d 20 54 43 4c 5f 54 53 44 5f  sdPtr = TCL_TSD_
3f10: 49 4e 49 54 28 26 64 61 74 61 4b 65 79 29 3b 0d  INIT(&dataKey);.
3f20: 0a 20 20 0d 0a 20 20 20 20 20 20 2f 2a 0d 0a 2d  .  ..      /*..-
3f30: 2d 2d 20 31 31 36 32 2c 31 31 36 38 20 2d 2d 2d  -- 1162,1168 ---
3f40: 2d 0d 0a 20 20 20 20 20 20 48 44 44 45 44 41 54  -..      HDDEDAT
3f50: 41 20 64 64 65 52 65 74 75 72 6e 3b 0d 0a 20 20  A ddeReturn;..  
3f60: 20 20 20 20 52 65 67 69 73 74 65 72 65 64 49 6e      RegisteredIn
3f70: 74 65 72 70 20 2a 72 69 50 74 72 3b 0d 0a 20 20  terp *riPtr;..  
3f80: 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a      Tcl_Interp *
3f90: 73 65 6e 64 49 6e 74 65 72 70 3b 0d 0a 21 20 20  sendInterp;..!  
3fa0: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50     Tcl_Obj *objP
3fb0: 74 72 2c 20 2a 68 61 6e 64 6c 65 72 50 74 72 20  tr, *handlerPtr 
3fc0: 3d 20 4e 55 4c 4c 3b 0d 0a 20 20 20 20 20 20 54  = NULL;..      T
3fd0: 68 72 65 61 64 53 70 65 63 69 66 69 63 44 61 74  hreadSpecificDat
3fe0: 61 20 2a 74 73 64 50 74 72 20 3d 20 54 43 4c 5f  a *tsdPtr = TCL_
3ff0: 54 53 44 5f 49 4e 49 54 28 26 64 61 74 61 4b 65  TSD_INIT(&dataKe
4000: 79 29 3b 0d 0a 20 20 0d 0a 20 20 20 20 20 20 2f  y);..  ..      /
4010: 2a 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  *..*************
4020: 2a 2a 0d 0a 2a 2a 2a 20 31 30 39 33 2c 31 30 39  **..*** 1093,109
4030: 38 20 2a 2a 2a 2a 0d 0a 2d 2d 2d 20 31 31 38 38  8 ****..--- 1188
4040: 2c 31 32 30 34 20 2d 2d 2d 2d 0d 0a 20 20 09 09  ,1204 ----..  ..
4050: 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 09 09      break;..  ..
4060: 7d 20 65 6c 73 65 20 69 66 20 28 61 72 67 49 6e  } else if (argIn
4070: 64 65 78 20 3d 3d 20 44 44 45 5f 53 45 52 56 45  dex == DDE_SERVE
4080: 52 4e 41 4d 45 5f 45 58 41 43 54 29 20 7b 0d 0a  RNAME_EXACT) {..
4090: 20 20 09 09 20 20 20 20 65 78 61 63 74 20 3d 20    ..    exact = 
40a0: 31 3b 0d 0a 2b 20 09 09 7d 20 65 6c 73 65 20 69  1;..+ ..} else i
40b0: 66 20 28 61 72 67 49 6e 64 65 78 20 3d 3d 20 44  f (argIndex == D
40c0: 44 45 5f 53 45 52 56 45 52 4e 41 4d 45 5f 48 41  DE_SERVERNAME_HA
40d0: 4e 44 4c 45 52 29 20 7b 0d 0a 2b 20 09 09 20 20  NDLER) {..+ ..  
40e0: 20 20 69 66 20 28 28 6f 62 6a 63 20 2d 20 69 29    if ((objc - i)
40f0: 20 3d 3d 20 31 29 20 7b 20 2f 2a 20 72 65 74 75   == 1) { /* retu
4100: 72 6e 20 63 75 72 72 65 6e 74 20 68 61 6e 64 6c  rn current handl
4110: 65 72 20 2a 2f 0d 0a 2b 20 09 09 09 52 65 67 69  er */..+ ...Regi
4120: 73 74 65 72 65 64 49 6e 74 65 72 70 20 2a 72 69  steredInterp *ri
4130: 50 74 72 20 3d 20 44 64 65 47 65 74 52 65 67 69  Ptr = DdeGetRegi
4140: 73 74 72 61 74 69 6f 6e 50 74 72 28 69 6e 74 65  strationPtr(inte
4150: 72 70 29 3b 0d 0a 2b 20 09 09 09 69 66 20 28 72  rp);..+ ...if (r
4160: 69 50 74 72 20 26 26 20 72 69 50 74 72 2d 3e 68  iPtr && riPtr->h
4170: 61 6e 64 6c 65 72 50 74 72 29 20 7b 0d 0a 2b 20  andlerPtr) {..+ 
4180: 09 09 09 20 20 20 20 54 63 6c 5f 53 65 74 4f 62  ...    Tcl_SetOb
4190: 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20  jResult(interp, 
41a0: 72 69 50 74 72 2d 3e 68 61 6e 64 6c 65 72 50 74  riPtr->handlerPt
41b0: 72 29 3b 0d 0a 2b 20 09 09 09 7d 20 65 6c 73 65  r);..+ ...} else
41c0: 20 7b 0d 0a 2b 20 09 09 09 20 20 20 20 54 63 6c   {..+ ...    Tcl
41d0: 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69 6e 74  _ResetResult(int
41e0: 65 72 70 29 3b 0d 0a 2b 20 09 09 09 7d 0d 0a 2b  erp);..+ ...}..+
41f0: 20 09 09 09 72 65 74 75 72 6e 20 54 43 4c 5f 4f   ...return TCL_O
4200: 4b 3b 0d 0a 2b 20 09 09 20 20 20 20 7d 0d 0a 2b  K;..+ ..    }..+
4210: 20 09 09 20 20 20 20 68 61 6e 64 6c 65 72 50 74   ..    handlerPt
4220: 72 20 3d 20 6f 62 6a 76 5b 2b 2b 69 5d 3b 0d 0a  r = objv[++i];..
4230: 20 20 09 09 7d 20 65 6c 73 65 20 69 66 20 28 61    ..} else if (a
4240: 72 67 49 6e 64 65 78 20 3d 3d 20 44 44 45 5f 53  rgIndex == DDE_S
4250: 45 52 56 45 52 4e 41 4d 45 5f 4c 41 53 54 29 20  ERVERNAME_LAST) 
4260: 7b 0d 0a 20 20 09 09 20 20 20 20 69 2b 2b 3b 0d  {..  ..    i++;.
4270: 0a 20 20 09 09 20 20 20 20 62 72 65 61 6b 3b 0d  .  ..    break;.
4280: 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .***************
4290: 0d 0a 2a 2a 2a 20 31 31 30 30 2c 31 31 30 36 20  ..*** 1100,1106 
42a0: 2a 2a 2a 2a 0d 0a 20 20 09 09 20 20 20 20 54 63  ****..  ..    Tc
42b0: 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69 6e  l_ResetResult(in
42c0: 74 65 72 70 29 3b 0d 0a 20 20 09 09 20 20 20 20  terp);..  ..    
42d0: 54 63 6c 5f 41 70 70 65 6e 64 53 74 72 69 6e 67  Tcl_AppendString
42e0: 73 54 6f 4f 62 6a 28 54 63 6c 5f 47 65 74 4f 62  sToObj(Tcl_GetOb
42f0: 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 29 2c  jResult(interp),
4300: 0d 0a 20 20 09 09 09 20 20 20 20 22 62 61 64 20  ..  ...    "bad 
4310: 6f 70 74 69 6f 6e 20 5c 22 22 2c 20 54 63 6c 5f  option \"", Tcl_
4320: 47 65 74 53 74 72 69 6e 67 28 6f 62 6a 76 5b 69  GetString(objv[i
4330: 5d 29 2c 0d 0a 21 20 09 09 09 20 20 20 20 22 5c  ]),..! ...    "\
4340: 22 3a 20 6d 75 73 74 20 62 65 20 2d 65 78 61 63  ": must be -exac
4350: 74 2c 20 6f 72 20 2d 2d 22 2c 0d 0a 20 20 09 09  t, or --",..  ..
4360: 09 20 20 20 20 28 63 68 61 72 2a 29 4e 55 4c 4c  .    (char*)NULL
4370: 29 3b 0d 0a 20 20 09 09 20 20 20 20 72 65 74 75  );..  ..    retu
4380: 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0d 0a 20  rn TCL_ERROR;.. 
4390: 20 09 09 7d 0d 0a 2d 2d 2d 20 31 32 30 36 2c 31   ..}..--- 1206,1
43a0: 32 31 32 20 2d 2d 2d 2d 0d 0a 20 20 09 09 20 20  212 ----..  ..  
43b0: 20 20 54 63 6c 5f 52 65 73 65 74 52 65 73 75 6c    Tcl_ResetResul
43c0: 74 28 69 6e 74 65 72 70 29 3b 0d 0a 20 20 09 09  t(interp);..  ..
43d0: 20 20 20 20 54 63 6c 5f 41 70 70 65 6e 64 53 74      Tcl_AppendSt
43e0: 72 69 6e 67 73 54 6f 4f 62 6a 28 54 63 6c 5f 47  ringsToObj(Tcl_G
43f0: 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74 65  etObjResult(inte
4400: 72 70 29 2c 0d 0a 20 20 09 09 09 20 20 20 20 22  rp),..  ...    "
4410: 62 61 64 20 6f 70 74 69 6f 6e 20 5c 22 22 2c 20  bad option \"", 
4420: 54 63 6c 5f 47 65 74 53 74 72 69 6e 67 28 6f 62  Tcl_GetString(ob
4430: 6a 76 5b 69 5d 29 2c 0d 0a 21 20 09 09 09 20 20  jv[i]),..! ...  
4440: 20 20 22 5c 22 3a 20 6d 75 73 74 20 62 65 20 2d    "\": must be -
4450: 65 78 61 63 74 2c 20 2d 68 61 6e 64 6c 65 72 20  exact, -handler 
4460: 6f 72 20 2d 2d 22 2c 0d 0a 20 20 09 09 09 20 20  or --",..  ...  
4470: 20 20 28 63 68 61 72 2a 29 4e 55 4c 4c 29 3b 0d    (char*)NULL);.
4480: 0a 20 20 09 09 20 20 20 20 72 65 74 75 72 6e 20  .  ..    return 
4490: 54 43 4c 5f 45 52 52 4f 52 3b 0d 0a 20 20 09 09  TCL_ERROR;..  ..
44a0: 7d 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  }..*************
44b0: 2a 2a 0d 0a 2a 2a 2a 20 31 31 30 39 2c 31 31 31  **..*** 1109,111
44c0: 35 20 2a 2a 2a 2a 0d 0a 20 20 09 20 20 20 20 69  5 ****..  .    i
44d0: 66 20 28 28 6f 62 6a 63 20 2d 20 69 29 20 3e 20  f ((objc - i) > 
44e0: 31 29 20 7b 0d 0a 20 20 09 09 54 63 6c 5f 52 65  1) {..  ..Tcl_Re
44f0: 73 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70  setResult(interp
4500: 29 3b 0d 0a 20 20 09 09 54 63 6c 5f 57 72 6f 6e  );..  ..Tcl_Wron
4510: 67 4e 75 6d 41 72 67 73 28 69 6e 74 65 72 70 2c  gNumArgs(interp,
4520: 20 31 2c 20 6f 62 6a 76 2c 0d 0a 21 20 09 09 09   1, objv,..! ...
4530: 22 73 65 72 76 65 72 6e 61 6d 65 20 3f 2d 65 78  "servername ?-ex
4540: 61 63 74 3f 20 3f 2d 2d 3f 22 0d 0a 20 20 09 09  act? ?--?"..  ..
4550: 09 22 20 3f 73 65 72 76 65 72 4e 61 6d 65 3f 22  ." ?serverName?"
4560: 29 3b 0d 0a 20 20 09 09 72 65 74 75 72 6e 20 54  );..  ..return T
4570: 43 4c 5f 45 52 52 4f 52 3b 0d 0a 20 20 09 20 20  CL_ERROR;..  .  
4580: 20 20 7d 0d 0a 2d 2d 2d 20 31 32 31 35 2c 31 32    }..--- 1215,12
4590: 32 31 20 2d 2d 2d 2d 0d 0a 20 20 09 20 20 20 20  21 ----..  .    
45a0: 69 66 20 28 28 6f 62 6a 63 20 2d 20 69 29 20 3e  if ((objc - i) >
45b0: 20 31 29 20 7b 0d 0a 20 20 09 09 54 63 6c 5f 52   1) {..  ..Tcl_R
45c0: 65 73 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72  esetResult(inter
45d0: 70 29 3b 0d 0a 20 20 09 09 54 63 6c 5f 57 72 6f  p);..  ..Tcl_Wro
45e0: 6e 67 4e 75 6d 41 72 67 73 28 69 6e 74 65 72 70  ngNumArgs(interp
45f0: 2c 20 31 2c 20 6f 62 6a 76 2c 0d 0a 21 20 09 09  , 1, objv,..! ..
4600: 09 22 73 65 72 76 65 72 6e 61 6d 65 20 3f 2d 65  ."servername ?-e
4610: 78 61 63 74 3f 20 3f 2d 68 61 6e 64 6c 65 72 20  xact? ?-handler 
4620: 70 72 6f 63 3f 20 3f 2d 2d 3f 22 0d 0a 20 20 09  proc? ?--?"..  .
4630: 09 09 22 20 3f 73 65 72 76 65 72 4e 61 6d 65 3f  .." ?serverName?
4640: 22 29 3b 0d 0a 20 20 09 09 72 65 74 75 72 6e 20  ");..  ..return 
4650: 54 43 4c 5f 45 52 52 4f 52 3b 0d 0a 20 20 09 20  TCL_ERROR;..  . 
4660: 20 20 20 7d 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a     }..**********
4670: 2a 2a 2a 2a 2a 0d 0a 2a 2a 2a 20 31 32 33 36 2c  *****..*** 1236,
4680: 31 32 34 32 20 2a 2a 2a 2a 0d 0a 20 20 0d 0a 20  1242 ****..  .. 
4690: 20 20 20 20 20 73 77 69 74 63 68 20 28 69 6e 64       switch (ind
46a0: 65 78 29 20 7b 0d 0a 20 20 09 63 61 73 65 20 44  ex) {..  .case D
46b0: 44 45 5f 53 45 52 56 45 52 4e 41 4d 45 3a 20 7b  DE_SERVERNAME: {
46c0: 0d 0a 21 20 09 20 20 20 20 73 65 72 76 69 63 65  ..! .    service
46d0: 4e 61 6d 65 20 3d 20 44 64 65 53 65 74 53 65 72  Name = DdeSetSer
46e0: 76 65 72 4e 61 6d 65 28 69 6e 74 65 72 70 2c 20  verName(interp, 
46f0: 73 65 72 76 69 63 65 4e 61 6d 65 2c 20 65 78 61  serviceName, exa
4700: 63 74 29 3b 0d 0a 20 20 09 20 20 20 20 69 66 20  ct);..  .    if 
4710: 28 73 65 72 76 69 63 65 4e 61 6d 65 20 21 3d 20  (serviceName != 
4720: 4e 55 4c 4c 29 20 7b 0d 0a 20 20 09 09 54 63 6c  NULL) {..  ..Tcl
4730: 5f 53 65 74 53 74 72 69 6e 67 4f 62 6a 28 54 63  _SetStringObj(Tc
4740: 6c 5f 47 65 74 4f 62 6a 52 65 73 75 6c 74 28 69  l_GetObjResult(i
4750: 6e 74 65 72 70 29 2c 0d 0a 20 20 09 09 09 73 65  nterp),..  ...se
4760: 72 76 69 63 65 4e 61 6d 65 2c 20 2d 31 29 3b 0d  rviceName, -1);.
4770: 0a 2d 2d 2d 20 31 33 34 32 2c 31 33 34 39 20 2d  .--- 1342,1349 -
4780: 2d 2d 2d 0d 0a 20 20 0d 0a 20 20 20 20 20 20 73  ---..  ..      s
4790: 77 69 74 63 68 20 28 69 6e 64 65 78 29 20 7b 0d  witch (index) {.
47a0: 0a 20 20 09 63 61 73 65 20 44 44 45 5f 53 45 52  .  .case DDE_SER
47b0: 56 45 52 4e 41 4d 45 3a 20 7b 0d 0a 21 20 09 20  VERNAME: {..! . 
47c0: 20 20 20 73 65 72 76 69 63 65 4e 61 6d 65 20 3d     serviceName =
47d0: 20 44 64 65 53 65 74 53 65 72 76 65 72 4e 61 6d   DdeSetServerNam
47e0: 65 28 69 6e 74 65 72 70 2c 20 73 65 72 76 69 63  e(interp, servic
47f0: 65 4e 61 6d 65 2c 0d 0a 21 20 09 09 20 20 20 65  eName,..! ..   e
4800: 78 61 63 74 2c 20 68 61 6e 64 6c 65 72 50 74 72  xact, handlerPtr
4810: 29 3b 0d 0a 20 20 09 20 20 20 20 69 66 20 28 73  );..  .    if (s
4820: 65 72 76 69 63 65 4e 61 6d 65 20 21 3d 20 4e 55  erviceName != NU
4830: 4c 4c 29 20 7b 0d 0a 20 20 09 09 54 63 6c 5f 53  LL) {..  ..Tcl_S
4840: 65 74 53 74 72 69 6e 67 4f 62 6a 28 54 63 6c 5f  etStringObj(Tcl_
4850: 47 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74  GetObjResult(int
4860: 65 72 70 29 2c 0d 0a 20 20 09 09 09 73 65 72 76  erp),..  ...serv
4870: 69 63 65 4e 61 6d 65 2c 20 2d 31 29 3b 0d 0a 2a  iceName, -1);..*
4880: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a  **************..
4890: 2a 2a 2a 20 31 34 31 35 2c 31 34 32 38 20 2a 2a  *** 1415,1428 **
48a0: 2a 2a 0d 0a 20 20 09 09 20 2a 20 62 65 20 72 65  **..  .. * be re
48b0: 66 65 72 72 69 6e 67 20 74 6f 20 64 65 61 6c 6c  ferring to deall
48c0: 6f 63 61 74 65 64 20 6f 62 6a 65 63 74 73 2e 0d  ocated objects..
48d0: 0a 20 20 09 09 20 2a 2f 0d 0a 20 20 0d 0a 21 20  .  .. */..  ..! 
48e0: 09 09 69 66 20 28 6f 62 6a 63 20 3d 3d 20 31 29  ..if (objc == 1)
48f0: 20 7b 0d 0a 21 20 09 09 20 20 20 20 72 65 73 75   {..! ..    resu
4900: 6c 74 20 3d 20 54 63 6c 5f 45 76 61 6c 4f 62 6a  lt = Tcl_EvalObj
4910: 45 78 28 73 65 6e 64 49 6e 74 65 72 70 2c 20 6f  Ex(sendInterp, o
4920: 62 6a 76 5b 30 5d 2c 0d 0a 21 20 09 09 09 20 20  bjv[0],..! ...  
4930: 20 20 54 43 4c 5f 45 56 41 4c 5f 47 4c 4f 42 41    TCL_EVAL_GLOBA
4940: 4c 29 3b 0d 0a 21 20 09 09 7d 20 65 6c 73 65 20  L);..! ..} else 
4950: 7b 0d 0a 21 20 09 09 20 20 20 20 6f 62 6a 50 74  {..! ..    objPt
4960: 72 20 3d 20 54 63 6c 5f 43 6f 6e 63 61 74 4f 62  r = Tcl_ConcatOb
4970: 6a 28 6f 62 6a 63 2c 20 6f 62 6a 76 29 3b 0d 0a  j(objc, objv);..
4980: 20 20 09 09 20 20 20 20 54 63 6c 5f 49 6e 63 72    ..    Tcl_Incr
4990: 52 65 66 43 6f 75 6e 74 28 6f 62 6a 50 74 72 29  RefCount(objPtr)
49a0: 3b 0d 0a 21 20 09 09 20 20 20 20 72 65 73 75 6c  ;..! ..    resul
49b0: 74 20 3d 20 54 63 6c 5f 45 76 61 6c 4f 62 6a 45  t = Tcl_EvalObjE
49c0: 78 28 73 65 6e 64 49 6e 74 65 72 70 2c 20 6f 62  x(sendInterp, ob
49d0: 6a 50 74 72 2c 0d 0a 21 20 09 09 09 20 20 20 20  jPtr,..! ...    
49e0: 54 43 4c 5f 45 56 41 4c 5f 47 4c 4f 42 41 4c 29  TCL_EVAL_GLOBAL)
49f0: 3b 0d 0a 20 20 09 09 20 20 20 20 54 63 6c 5f 44  ;..  ..    Tcl_D
4a00: 65 63 72 52 65 66 43 6f 75 6e 74 28 6f 62 6a 50  ecrRefCount(objP
4a10: 74 72 29 3b 0d 0a 20 20 09 09 7d 0d 0a 20 20 09  tr);..  ..}..  .
4a20: 09 69 66 20 28 69 6e 74 65 72 70 20 21 3d 20 73  .if (interp != s
4a30: 65 6e 64 49 6e 74 65 72 70 29 20 7b 0d 0a 2d 2d  endInterp) {..--
4a40: 2d 20 31 35 32 32 2c 31 35 34 35 20 2d 2d 2d 2d  - 1522,1545 ----
4a50: 0d 0a 20 20 09 09 20 2a 20 62 65 20 72 65 66 65  ..  .. * be refe
4a60: 72 72 69 6e 67 20 74 6f 20 64 65 61 6c 6c 6f 63  rring to dealloc
4a70: 61 74 65 64 20 6f 62 6a 65 63 74 73 2e 0d 0a 20  ated objects... 
4a80: 20 09 09 20 2a 2f 0d 0a 20 20 0d 0a 21 20 09 09   .. */..  ..! ..
4a90: 69 66 20 28 54 63 6c 5f 49 73 53 61 66 65 28 72  if (Tcl_IsSafe(r
4aa0: 69 50 74 72 2d 3e 69 6e 74 65 72 70 29 20 26 26  iPtr->interp) &&
4ab0: 20 72 69 50 74 72 2d 3e 68 61 6e 64 6c 65 72 50   riPtr->handlerP
4ac0: 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0d 0a 21  tr == NULL) {..!
4ad0: 20 09 09 20 20 20 20 54 63 6c 5f 53 65 74 52 65   ..    Tcl_SetRe
4ae0: 73 75 6c 74 28 72 69 50 74 72 2d 3e 69 6e 74 65  sult(riPtr->inte
4af0: 72 70 2c 20 22 70 65 72 6d 69 73 73 69 6f 6e 20  rp, "permission 
4b00: 64 65 6e 69 65 64 3a 20 22 0d 0a 21 20 09 09 09  denied: "..! ...
4b10: 20 20 20 20 22 61 20 68 61 6e 64 6c 65 72 20 70      "a handler p
4b20: 72 6f 63 65 64 75 72 65 20 6d 75 73 74 20 62 65  rocedure must be
4b30: 20 64 65 66 69 6e 65 64 20 66 6f 72 20 75 73 65   defined for use
4b40: 20 69 6e 20 61 20 73 61 66 65 20 69 6e 74 65 72   in a safe inter
4b50: 70 22 2c 20 54 43 4c 5f 53 54 41 54 49 43 29 3b  p", TCL_STATIC);
4b60: 0d 0a 21 20 09 09 20 20 20 20 72 65 73 75 6c 74  ..! ..    result
4b70: 20 3d 20 54 43 4c 5f 45 52 52 4f 52 3b 0d 0a 21   = TCL_ERROR;..!
4b80: 20 09 09 7d 0d 0a 21 20 0d 0a 21 20 09 09 69 66   ..}..! ..! ..if
4b90: 20 28 72 65 73 75 6c 74 20 3d 3d 20 54 43 4c 5f   (result == TCL_
4ba0: 4f 4b 29 20 7b 0d 0a 21 20 09 09 20 20 20 20 69  OK) {..! ..    i
4bb0: 66 20 28 6f 62 6a 63 20 3d 3d 20 31 29 0d 0a 21  f (objc == 1)..!
4bc0: 20 09 09 09 6f 62 6a 50 74 72 20 3d 20 6f 62 6a   ...objPtr = obj
4bd0: 76 5b 30 5d 3b 0d 0a 21 20 09 09 20 20 20 20 65  v[0];..! ..    e
4be0: 6c 73 65 20 7b 0d 0a 21 20 09 09 09 6f 62 6a 50  lse {..! ...objP
4bf0: 74 72 20 3d 20 54 63 6c 5f 43 6f 6e 63 61 74 4f  tr = Tcl_ConcatO
4c00: 62 6a 28 6f 62 6a 63 2c 20 6f 62 6a 76 29 3b 0d  bj(objc, objv);.
4c10: 0a 21 20 09 09 20 20 20 20 7d 0d 0a 21 20 09 09  .! ..    }..! ..
4c20: 20 20 20 20 69 66 20 28 72 69 50 74 72 2d 3e 68      if (riPtr->h
4c30: 61 6e 64 6c 65 72 50 74 72 20 21 3d 20 4e 55 4c  andlerPtr != NUL
4c40: 4c 29 0d 0a 21 20 09 09 09 72 65 73 75 6c 74 20  L)..! ...result 
4c50: 3d 20 54 63 6c 5f 4c 69 73 74 4f 62 6a 52 65 70  = Tcl_ListObjRep
4c60: 6c 61 63 65 28 73 65 6e 64 49 6e 74 65 72 70 2c  lace(sendInterp,
4c70: 20 6f 62 6a 50 74 72 2c 20 30 2c 20 30 2c 20 31   objPtr, 0, 0, 1
4c80: 2c 20 26 28 72 69 50 74 72 2d 3e 68 61 6e 64 6c  , &(riPtr->handl
4c90: 65 72 50 74 72 29 29 3b 0d 0a 21 20 09 09 7d 0d  erPtr));..! ..}.
4ca0: 0a 21 20 09 09 69 66 20 28 72 65 73 75 6c 74 20  .! ..if (result 
4cb0: 3d 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0d 0a 20 20  == TCL_OK) {..  
4cc0: 09 09 20 20 20 20 54 63 6c 5f 49 6e 63 72 52 65  ..    Tcl_IncrRe
4cd0: 66 43 6f 75 6e 74 28 6f 62 6a 50 74 72 29 3b 0d  fCount(objPtr);.
4ce0: 0a 21 20 09 09 20 20 20 20 72 65 73 75 6c 74 20  .! ..    result 
4cf0: 3d 20 54 63 6c 5f 45 76 61 6c 4f 62 6a 45 78 28  = Tcl_EvalObjEx(
4d00: 73 65 6e 64 49 6e 74 65 72 70 2c 20 6f 62 6a 50  sendInterp, objP
4d10: 74 72 2c 20 54 43 4c 5f 45 56 41 4c 5f 47 4c 4f  tr, TCL_EVAL_GLO
4d20: 42 41 4c 29 3b 0d 0a 20 20 09 09 20 20 20 20 54  BAL);..  ..    T
4d30: 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28  cl_DecrRefCount(
4d40: 6f 62 6a 50 74 72 29 3b 0d 0a 20 20 09 09 7d 0d  objPtr);..  ..}.
4d50: 0a 20 20 09 09 69 66 20 28 69 6e 74 65 72 70 20  .  ..if (interp 
4d60: 21 3d 20 73 65 6e 64 49 6e 74 65 72 70 29 20 7b  != sendInterp) {
4d70: 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ..**************
4d80: 2a 0d 0a 2a 2a 2a 20 31 34 33 36 2c 31 34 34 37  *..*** 1436,1447
4d90: 20 2a 2a 2a 2a 0d 0a 20 20 09 09 09 54 63 6c 5f   ****..  ...Tcl_
4da0: 52 65 73 65 74 52 65 73 75 6c 74 28 69 6e 74 65  ResetResult(inte
4db0: 72 70 29 3b 0d 0a 20 20 09 09 09 6f 62 6a 50 74  rp);..  ...objPt
4dc0: 72 20 3d 20 54 63 6c 5f 47 65 74 56 61 72 32 45  r = Tcl_GetVar2E
4dd0: 78 28 73 65 6e 64 49 6e 74 65 72 70 2c 20 22 65  x(sendInterp, "e
4de0: 72 72 6f 72 49 6e 66 6f 22 2c 20 4e 55 4c 4c 2c  rrorInfo", NULL,
4df0: 20 0d 0a 20 20 09 09 09 09 54 43 4c 5f 47 4c 4f   ..  ....TCL_GLO
4e00: 42 41 4c 5f 4f 4e 4c 59 29 3b 0d 0a 21 20 09 09  BAL_ONLY);..! ..
4e10: 09 73 74 72 69 6e 67 20 3d 20 54 63 6c 5f 47 65  .string = Tcl_Ge
4e20: 74 53 74 72 69 6e 67 46 72 6f 6d 4f 62 6a 28 6f  tStringFromObj(o
4e30: 62 6a 50 74 72 2c 20 26 6c 65 6e 67 74 68 29 3b  bjPtr, &length);
4e40: 0d 0a 21 20 09 09 09 54 63 6c 5f 41 64 64 4f 62  ..! ...Tcl_AddOb
4e50: 6a 45 72 72 6f 72 49 6e 66 6f 28 69 6e 74 65 72  jErrorInfo(inter
4e60: 70 2c 20 73 74 72 69 6e 67 2c 20 6c 65 6e 67 74  p, string, lengt
4e70: 68 29 3b 0d 0a 20 20 09 09 09 0d 0a 20 20 09 09  h);..  .....  ..
4e80: 09 6f 62 6a 50 74 72 20 3d 20 54 63 6c 5f 47 65  .objPtr = Tcl_Ge
4e90: 74 56 61 72 32 45 78 28 73 65 6e 64 49 6e 74 65  tVar2Ex(sendInte
4ea0: 72 70 2c 20 22 65 72 72 6f 72 43 6f 64 65 22 2c  rp, "errorCode",
4eb0: 20 4e 55 4c 4c 2c 0d 0a 20 20 09 09 09 09 54 43   NULL,..  ....TC
4ec0: 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0d  L_GLOBAL_ONLY);.
4ed0: 0a 21 20 09 09 09 54 63 6c 5f 53 65 74 4f 62 6a  .! ...Tcl_SetObj
4ee0: 45 72 72 6f 72 43 6f 64 65 28 69 6e 74 65 72 70  ErrorCode(interp
4ef0: 2c 20 6f 62 6a 50 74 72 29 3b 0d 0a 20 20 09 09  , objPtr);..  ..
4f00: 20 20 20 20 7d 0d 0a 20 20 09 09 20 20 20 20 54      }..  ..    T
4f10: 63 6c 5f 53 65 74 4f 62 6a 52 65 73 75 6c 74 28  cl_SetObjResult(
4f20: 69 6e 74 65 72 70 2c 20 54 63 6c 5f 47 65 74 4f  interp, Tcl_GetO
4f30: 62 6a 52 65 73 75 6c 74 28 73 65 6e 64 49 6e 74  bjResult(sendInt
4f40: 65 72 70 29 29 3b 0d 0a 20 20 09 09 7d 0d 0a 2d  erp));..  ..}..-
4f50: 2d 2d 20 31 35 35 33 2c 31 35 36 37 20 2d 2d 2d  -- 1553,1567 ---
4f60: 2d 0d 0a 20 20 09 09 09 54 63 6c 5f 52 65 73 65  -..  ...Tcl_Rese
4f70: 74 52 65 73 75 6c 74 28 69 6e 74 65 72 70 29 3b  tResult(interp);
4f80: 0d 0a 20 20 09 09 09 6f 62 6a 50 74 72 20 3d 20  ..  ...objPtr = 
4f90: 54 63 6c 5f 47 65 74 56 61 72 32 45 78 28 73 65  Tcl_GetVar2Ex(se
4fa0: 6e 64 49 6e 74 65 72 70 2c 20 22 65 72 72 6f 72  ndInterp, "error
4fb0: 49 6e 66 6f 22 2c 20 4e 55 4c 4c 2c 20 0d 0a 20  Info", NULL, .. 
4fc0: 20 09 09 09 09 54 43 4c 5f 47 4c 4f 42 41 4c 5f   ....TCL_GLOBAL_
4fd0: 4f 4e 4c 59 29 3b 0d 0a 21 20 09 09 09 69 66 20  ONLY);..! ...if 
4fe0: 28 6f 62 6a 50 74 72 29 20 7b 0d 0a 21 20 09 09  (objPtr) {..! ..
4ff0: 09 20 20 20 20 73 74 72 69 6e 67 20 3d 20 54 63  .    string = Tc
5000: 6c 5f 47 65 74 53 74 72 69 6e 67 46 72 6f 6d 4f  l_GetStringFromO
5010: 62 6a 28 6f 62 6a 50 74 72 2c 20 26 6c 65 6e 67  bj(objPtr, &leng
5020: 74 68 29 3b 0d 0a 21 20 09 09 09 20 20 20 20 54  th);..! ...    T
5030: 63 6c 5f 41 64 64 4f 62 6a 45 72 72 6f 72 49 6e  cl_AddObjErrorIn
5040: 66 6f 28 69 6e 74 65 72 70 2c 20 73 74 72 69 6e  fo(interp, strin
5050: 67 2c 20 6c 65 6e 67 74 68 29 3b 0d 0a 21 20 09  g, length);..! .
5060: 09 09 7d 0d 0a 20 20 09 09 09 0d 0a 20 20 09 09  ..}..  .....  ..
5070: 09 6f 62 6a 50 74 72 20 3d 20 54 63 6c 5f 47 65  .objPtr = Tcl_Ge
5080: 74 56 61 72 32 45 78 28 73 65 6e 64 49 6e 74 65  tVar2Ex(sendInte
5090: 72 70 2c 20 22 65 72 72 6f 72 43 6f 64 65 22 2c  rp, "errorCode",
50a0: 20 4e 55 4c 4c 2c 0d 0a 20 20 09 09 09 09 54 43   NULL,..  ....TC
50b0: 4c 5f 47 4c 4f 42 41 4c 5f 4f 4e 4c 59 29 3b 0d  L_GLOBAL_ONLY);.
50c0: 0a 21 20 09 09 09 69 66 20 28 6f 62 6a 50 74 72  .! ...if (objPtr
50d0: 29 0d 0a 21 20 09 09 09 20 20 20 20 54 63 6c 5f  )..! ...    Tcl_
50e0: 53 65 74 4f 62 6a 45 72 72 6f 72 43 6f 64 65 28  SetObjErrorCode(
50f0: 69 6e 74 65 72 70 2c 20 6f 62 6a 50 74 72 29 3b  interp, objPtr);
5100: 0d 0a 20 20 09 09 20 20 20 20 7d 0d 0a 20 20 09  ..  ..    }..  .
5110: 09 20 20 20 20 54 63 6c 5f 53 65 74 4f 62 6a 52  .    Tcl_SetObjR
5120: 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 54 63  esult(interp, Tc
5130: 6c 5f 47 65 74 4f 62 6a 52 65 73 75 6c 74 28 73  l_GetObjResult(s
5140: 65 6e 64 49 6e 74 65 72 70 29 29 3b 0d 0a 20 20  endInterp));..  
5150: 09 09 7d 0d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ..}..***********
5160: 2a 2a 2a 2a 0d 0a 2a 2a 2a 20 31 35 38 30 2c 31  ****..*** 1580,1
5170: 35 38 32 20 2a 2a 2a 2a 0d 0a 2d 2d 2d 20 31 37  582 ****..--- 17
5180: 30 30 2c 31 37 31 30 20 2d 2d 2d 2d 0d 0a 20 20  00,1710 ----..  
5190: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 72 65 74      }..      ret
51a0: 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0d 0a  urn TCL_ERROR;..
51b0: 20 20 7d 0d 0a 2b 20 0d 0a 2b 20 2f 2a 0d 0a 2b    }..+ ..+ /*..+
51c0: 20 20 2a 20 4c 6f 63 61 6c 20 76 61 72 69 61 62    * Local variab
51d0: 6c 65 73 3a 0d 0a 2b 20 20 2a 20 20 6d 6f 64 65  les:..+  *  mode
51e0: 3a 20 63 0d 0a 2b 20 20 2a 20 20 69 6e 64 65 6e  : c..+  *  inden
51f0: 74 2d 74 61 62 73 2d 6d 6f 64 65 3a 20 74 0d 0a  t-tabs-mode: t..
5200: 2b 20 20 2a 20 20 74 61 62 2d 77 69 64 74 68 3a  +  *  tab-width:
5210: 20 38 0d 0a 2b 20 20 2a 20 45 6e 64 3a 0d 0a 2b   8..+  * End:..+
5220: 20 20 2a 2f 0d 0a                                  */..