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 */..