0000: 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 <?xml version="1
0010: 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 55 54 .0" encoding="UT
0020: 46 2d 38 22 3f 3e 0a 3c 66 65 65 64 20 78 6d 6c F-8"?>.<feed xml
0030: 6e 73 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77 ns="http://www.w
0040: 33 2e 6f 72 67 2f 32 30 30 35 2f 41 74 6f 6d 22 3.org/2005/Atom"
0050: 3e 0a 20 20 3c 69 64 3e 68 74 74 70 3a 2f 2f 6a >. <id>http://j
0060: 69 6d 2e 62 65 72 6c 69 6f 73 2e 64 65 2f 3c 2f im.berlios.de/</
0070: 69 64 3e 0a 20 20 3c 74 69 74 6c 65 3e 4a 69 6d id>. <title>Jim
0080: 20 54 63 6c 20 4e 65 77 73 3c 2f 74 69 74 6c 65 Tcl News</title
0090: 3e 0a 20 20 3c 75 70 64 61 74 65 64 3e 32 30 31 >. <updated>201
00a0: 32 2d 30 32 2d 30 39 54 31 34 3a 30 30 3a 30 30 2-02-09T14:00:00
00b0: 5a 3c 2f 75 70 64 61 74 65 64 3e 0a 20 20 3c 6c Z</updated>. <l
00c0: 69 6e 6b 20 72 65 6c 3d 22 61 6c 74 65 72 6e 61 ink rel="alterna
00d0: 74 65 22 20 68 72 65 66 3d 22 68 74 74 70 3a 2f te" href="http:/
00e0: 2f 6a 69 6d 2e 62 65 72 6c 69 6f 73 2e 64 65 2f /jim.berlios.de/
00f0: 22 2f 3e 0a 20 20 3c 6c 69 6e 6b 20 72 65 6c 3d "/>. <link rel=
0100: 22 73 65 6c 66 22 20 68 72 65 66 3d 22 68 74 74 "self" href="htt
0110: 70 3a 2f 2f 6a 69 6d 2e 62 65 72 6c 69 6f 73 2e p://jim.berlios.
0120: 64 65 2f 66 65 65 64 2e 78 6d 6c 22 2f 3e 0a 20 de/feed.xml"/>.
0130: 20 3c 61 75 74 68 6f 72 3e 0a 20 20 20 20 3c 6e <author>. <n
0140: 61 6d 65 3e 73 74 65 76 65 62 40 77 6f 72 6b 77 ame>steveb@workw
0150: 61 72 65 2e 6e 65 74 2e 61 75 3c 2f 6e 61 6d 65 are.net.au</name
0160: 3e 0a 20 20 20 20 3c 75 72 69 3e 6d 61 69 6c 74 >. <uri>mailt
0170: 6f 3a 73 74 65 76 65 62 40 77 6f 72 6b 77 61 72 o:steveb@workwar
0180: 65 2e 6e 65 74 2e 61 75 3c 2f 75 72 69 3e 0a 20 e.net.au</uri>.
0190: 20 3c 2f 61 75 74 68 6f 72 3e 0a 20 20 3c 65 6e </author>. <en
01a0: 74 72 79 3e 0a 20 20 20 20 3c 69 64 3e 74 61 67 try>. <id>tag
01b0: 3a 6a 69 6d 2e 62 65 72 6c 69 6f 73 2e 64 65 2c :jim.berlios.de,
01c0: 32 30 31 32 2d 30 32 2d 31 30 3a 2f 61 72 74 69 2012-02-10:/arti
01d0: 63 6c 65 73 2f 6e 6f 2d 6e 61 6d 65 73 70 61 63 cles/no-namespac
01e0: 65 73 2d 72 65 76 69 73 69 74 65 64 2f 3c 2f 69 es-revisited/</i
01f0: 64 3e 0a 20 20 20 20 3c 74 69 74 6c 65 20 74 79 d>. <title ty
0200: 70 65 3d 22 68 74 6d 6c 22 3e 43 6f 70 69 6e 67 pe="html">Coping
0210: 20 77 69 74 68 6f 75 74 20 4e 61 6d 65 73 70 61 without Namespa
0220: 63 65 73 20 2d 20 52 65 76 69 73 69 74 65 64 3c ces - Revisited<
0230: 2f 74 69 74 6c 65 3e 0a 20 20 20 20 3c 70 75 62 /title>. <pub
0240: 6c 69 73 68 65 64 3e 32 30 31 32 2d 30 32 2d 30 lished>2012-02-0
0250: 39 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 70 75 62 9T14:00:00Z</pub
0260: 6c 69 73 68 65 64 3e 0a 20 20 20 20 3c 75 70 64 lished>. <upd
0270: 61 74 65 64 3e 32 30 31 32 2d 30 32 2d 30 39 54 ated>2012-02-09T
0280: 31 34 3a 30 30 3a 30 30 5a 3c 2f 75 70 64 61 74 14:00:00Z</updat
0290: 65 64 3e 0a 20 20 20 20 3c 6c 69 6e 6b 20 72 65 ed>. <link re
02a0: 6c 3d 22 61 6c 74 65 72 6e 61 74 65 22 20 68 72 l="alternate" hr
02b0: 65 66 3d 22 68 74 74 70 3a 2f 2f 6a 69 6d 2e 62 ef="http://jim.b
02c0: 65 72 6c 69 6f 73 2e 64 65 2f 61 72 74 69 63 6c erlios.de/articl
02d0: 65 73 2f 6e 6f 2d 6e 61 6d 65 73 70 61 63 65 73 es/no-namespaces
02e0: 2d 72 65 76 69 73 69 74 65 64 2f 22 2f 3e 0a 20 -revisited/"/>.
02f0: 20 20 20 3c 63 6f 6e 74 65 6e 74 20 74 79 70 65 <content type
0300: 3d 22 68 74 6d 6c 22 3e 26 6c 74 3b 70 26 67 74 ="html"><p>
0310: 3b 42 61 63 6b 20 69 6e 20 74 68 65 20 61 72 74 ;Back in the art
0320: 69 63 6c 65 20 26 6c 74 3b 61 20 68 72 65 66 3d icle <a href=
0330: 22 2f 61 72 74 69 63 6c 65 73 2f 6e 6f 2d 6e 61 "/articles/no-na
0340: 6d 65 73 70 61 63 65 73 2f 22 26 67 74 3b 43 6f mespaces/">Co
0350: 70 69 6e 67 20 77 69 74 68 6f 75 74 20 4e 61 6d ping without Nam
0360: 65 73 70 61 63 65 73 26 6c 74 3b 2f 61 26 67 74 espaces</a>
0370: 3b 2c 0a 77 65 20 64 69 73 63 75 73 73 65 64 20 ;,.we discussed
0380: 74 68 61 74 20 66 61 63 74 20 74 68 61 74 20 4a that fact that J
0390: 69 6d 20 54 63 6c 20 64 69 64 20 6e 6f 74 20 73 im Tcl did not s
03a0: 75 70 70 6f 72 74 20 6e 61 6d 65 73 70 61 63 65 upport namespace
03b0: 73 2c 20 62 75 74 0a 74 68 61 74 20 73 6d 61 6c s, but.that smal
03c0: 6c 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 l changes to the
03d0: 20 73 6f 75 72 63 65 20 63 6f 75 6c 64 20 62 65 source could be
03e0: 20 6d 61 64 65 20 74 6f 20 61 6c 6c 6f 77 20 6e made to allow n
03f0: 61 6d 65 73 70 61 63 65 2d 62 61 73 65 64 0a 54 amespace-based.T
0400: 63 6c 20 63 6f 64 65 20 74 6f 20 62 65 20 70 6f cl code to be po
0410: 72 74 65 64 20 66 6f 72 20 75 73 65 20 77 69 74 rted for use wit
0420: 68 20 4a 69 6d 20 54 63 6c 2e 26 6c 74 3b 2f 70 h Jim Tcl.</p
0430: 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 4e >..<p>N
0440: 6f 77 20 77 69 74 68 20 26 6c 74 3b 61 20 68 72 ow with <a hr
0450: 65 66 3d 22 2f 61 72 74 69 63 6c 65 73 2f 6c 69 ef="/articles/li
0460: 67 68 74 2d 77 65 69 67 68 74 2d 6e 61 6d 65 73 ght-weight-names
0470: 70 61 63 65 73 2f 22 26 67 74 3b 6e 61 6d 65 73 paces/">names
0480: 70 61 63 65 73 20 73 75 70 70 6f 72 74 65 64 26 paces supported&
0490: 6c 74 3b 2f 61 26 67 74 3b 0a 69 6e 20 26 6c 74 lt;/a>.in <
04a0: 3b 61 20 68 72 65 66 3d 22 2f 61 72 74 69 63 6c ;a href="/articl
04b0: 65 73 2f 6a 69 6d 2d 72 65 6c 65 61 73 65 2d 30 es/jim-release-0
04c0: 2e 37 33 2f 22 26 67 74 3b 4a 69 6d 20 54 63 6c .73/">Jim Tcl
04d0: 20 30 2e 37 33 26 6c 74 3b 2f 61 26 67 74 3b 2c 0.73</a>,
04e0: 20 70 6f 72 74 69 6e 67 20 54 63 6c 20 63 6f 64 porting Tcl cod
04f0: 65 0a 77 68 69 63 68 20 6d 61 6b 65 73 20 75 73 e.which makes us
0500: 65 20 6f 66 20 6e 61 6d 65 73 70 61 63 65 73 20 e of namespaces
0510: 69 73 20 65 61 73 69 65 72 20 74 68 61 6e 20 65 is easier than e
0520: 76 65 72 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a ver.</p>..
0530: 26 6c 74 3b 70 26 67 74 3b 4f 6e 63 65 20 61 67 <p>Once ag
0540: 61 69 6e 2c 20 6c 65 74 27 73 20 63 6f 6e 73 69 ain, let's consi
0550: 64 65 72 20 70 6f 72 74 69 6e 67 20 26 6c 74 3b der porting <
0560: 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 74 a href="http://t
0570: 63 6c 6c 69 62 2e 63 76 73 2e 73 6f 75 72 63 65 cllib.cvs.source
0580: 66 6f 72 67 65 2e 6e 65 74 2f 76 69 65 77 76 63 forge.net/viewvc
0590: 2f 74 63 6c 6c 69 62 2f 74 63 6c 6c 69 62 2f 6d /tcllib/tcllib/m
05a0: 6f 64 75 6c 65 73 2f 64 6e 73 2f 64 6e 73 2e 74 odules/dns/dns.t
05b0: 63 6c 22 26 67 74 3b 64 6e 73 2e 74 63 6c 26 6c cl">dns.tcl&l
05c0: 74 3b 2f 61 26 67 74 3b 0a 66 72 6f 6d 20 26 6c t;/a>.from &l
05d0: 74 3b 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f t;a href="http:/
05e0: 2f 74 63 6c 6c 69 62 2e 73 6f 75 72 63 65 66 6f /tcllib.sourcefo
05f0: 72 67 65 2e 6e 65 74 2f 22 26 67 74 3b 74 63 6c rge.net/">tcl
0600: 6c 69 62 26 6c 74 3b 2f 61 26 67 74 3b 20 74 6f lib</a> to
0610: 20 4a 69 6d 20 54 63 6c 2e 26 6c 74 3b 2f 70 26 Jim Tcl.</p&
0620: 67 74 3b 0a 0a 26 6c 74 3b 68 72 20 2f 26 67 74 gt;..<hr />
0630: 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 46 69 72 73 ;..<p>Firs
0640: 74 6c 79 20 61 6e 20 65 78 70 6c 61 6e 61 74 69 tly an explanati
0650: 6f 6e 20 6f 66 20 77 68 61 74 20 77 61 73 20 63 on of what was c
0660: 68 61 6e 67 65 64 2e 26 6c 74 3b 2f 70 26 67 74 hanged.</p>
0670: 3b 0a 0a 26 6c 74 3b 70 72 65 20 63 6c 61 73 73 ;..<pre class
0680: 3d 22 73 68 5f 74 63 6c 22 26 67 74 3b 0a 2d 2d ="sh_tcl">.--
0690: 2d 20 64 6e 73 2e 74 63 6c 2e 6f 72 69 67 09 32 - dns.tcl.orig.2
06a0: 30 31 32 2d 30 33 2d 30 35 20 31 33 3a 30 32 3a 012-03-05 13:02:
06b0: 33 36 2e 30 30 30 30 30 30 30 30 30 20 2b 31 30 36.000000000 +10
06c0: 30 30 0a 2b 2b 2b 20 64 6e 73 2e 74 63 6c 09 32 00.+++ dns.tcl.2
06d0: 30 31 32 2d 30 33 2d 30 35 20 31 33 3a 30 32 3a 012-03-05 13:02:
06e0: 35 36 2e 30 30 30 30 30 30 30 30 30 20 2b 31 30 56.000000000 +10
06f0: 30 30 0a 40 40 20 2d 31 2c 33 20 2b 31 2c 31 35 00.@@ -1,3 +1,15
0700: 20 40 40 0a 2b 23 20 64 6e 73 2e 74 63 6c 20 2d @@.+# dns.tcl -
0710: 20 53 74 65 76 65 20 42 65 6e 6e 65 74 74 20 26 Steve Bennett &
0720: 61 6d 70 3b 6c 74 3b 73 74 65 76 65 62 40 77 6f amp;lt;steveb@wo
0730: 72 6b 77 61 72 65 2e 6e 65 74 2e 61 75 26 61 6d rkware.net.au&am
0740: 70 3b 67 74 3b 0a 2b 23 0a 2b 23 20 4d 6f 64 69 p;gt;.+#.+# Modi
0750: 66 69 65 64 20 66 6f 72 20 4a 69 6d 20 54 63 6c fied for Jim Tcl
0760: 20 74 6f 3a 0a 2b 23 20 2d 20 75 73 65 20 75 64 to:.+# - use ud
0770: 70 20 74 72 61 6e 73 70 6f 72 74 20 62 79 20 64 p transport by d
0780: 65 66 61 75 6c 74 0a 2b 23 20 2d 20 75 73 65 20 efault.+# - use
0790: 73 65 6e 64 74 6f 2f 72 65 63 76 66 72 6f 6d 0a sendto/recvfrom.
07a0: 2b 23 20 2d 20 64 6f 6e 27 74 20 74 72 79 20 74 +# - don't try t
07b0: 6f 20 64 65 74 65 72 6d 69 6e 65 20 6c 6f 63 61 o determine loca
07c0: 6c 20 6e 61 6d 65 73 65 72 76 65 72 73 0a 2b 23 l nameservers.+#
07d0: 20 2d 20 72 65 6d 6f 76 65 20 73 75 70 70 6f 72 - remove suppor
07e0: 74 20 66 6f 72 20 64 6e 73 20 75 72 69 73 20 61 t for dns uris a
07f0: 6e 64 20 66 69 6e 64 69 6e 67 20 6c 6f 63 61 6c nd finding local
0800: 20 6e 61 6d 65 73 65 72 76 65 72 73 0a 2b 23 20 nameservers.+#
0810: 2d 20 72 65 6d 6f 76 65 20 6c 6f 67 67 69 6e 67 - remove logging
0820: 20 63 61 6c 6c 73 0a 2b 23 20 20 20 28 62 6f 74 calls.+# (bot
0830: 68 20 6f 66 20 74 68 65 73 65 20 69 6e 20 6f 72 h of these in or
0840: 64 65 72 20 74 6f 20 72 65 6d 6f 76 65 20 64 65 der to remove de
0850: 70 65 6e 64 65 6e 63 69 65 73 20 6f 6e 20 74 63 pendencies on tc
0860: 6c 6c 69 62 29 0a 2b 0a 2b 23 20 42 61 73 65 64 llib).+.+# Based
0870: 20 6f 6e 3a 0a 2b 0a 20 23 20 64 6e 73 2e 74 63 on:.+. # dns.tc
0880: 6c 20 2d 20 43 6f 70 79 72 69 67 68 74 20 28 43 l - Copyright (C
0890: 29 20 32 30 30 32 20 50 61 74 20 54 68 6f 79 74 ) 2002 Pat Thoyt
08a0: 73 20 26 61 6d 70 3b 6c 74 3b 70 61 74 74 68 6f s &lt;pattho
08b0: 79 74 73 40 75 73 65 72 73 2e 73 6f 75 72 63 65 yts@users.source
08c0: 66 6f 72 67 65 2e 6e 65 74 26 61 6d 70 3b 67 74 forge.net&gt
08d0: 3b 0a 20 23 0a 20 23 20 50 72 6f 76 69 64 65 20 ;. #. # Provide
08e0: 61 20 54 63 6c 20 6f 6e 6c 79 20 44 6f 6d 61 69 a Tcl only Domai
08f0: 6e 20 4e 61 6d 65 20 53 65 72 76 69 63 65 20 63 n Name Service c
0900: 6c 69 65 6e 74 2e 20 53 65 65 20 52 46 43 20 31 lient. See RFC 1
0910: 30 33 34 20 61 6e 64 20 52 46 43 20 31 30 33 35 034 and RFC 1035
0920: 0a 26 6c 74 3b 2f 70 72 65 26 67 74 3b 0a 0a 26 .</pre>..&
0930: 6c 74 3b 70 26 67 74 3b 46 6f 72 20 73 69 6d 70 lt;p>For simp
0940: 6c 69 63 69 74 79 2c 20 77 65 20 72 65 6d 6f 76 licity, we remov
0950: 65 20 74 68 65 20 64 65 70 65 6e 64 65 6e 63 69 e the dependenci
0960: 65 73 20 6f 6e 20 74 63 6c 6c 69 62 20 26 6c 74 es on tcllib <
0970: 3b 63 6f 64 65 26 67 74 3b 6c 6f 67 67 65 72 26 ;code>logger&
0980: 6c 74 3b 2f 63 6f 64 65 26 67 74 3b 2c 20 26 6c lt;/code>, &l
0990: 74 3b 63 6f 64 65 26 67 74 3b 75 72 69 26 6c 74 t;code>uri<
09a0: 3b 2f 63 6f 64 65 26 67 74 3b 20 61 6e 64 20 26 ;/code> and &
09b0: 6c 74 3b 63 6f 64 65 26 67 74 3b 69 70 26 6c 74 lt;code>ip<
09c0: 3b 2f 63 6f 64 65 26 67 74 3b 20 74 6f 0a 61 6c ;/code> to.al
09d0: 6c 6f 77 20 74 68 69 73 20 65 78 61 6d 70 6c 65 low this example
09e0: 20 74 6f 20 62 65 20 73 65 6c 66 20 63 6f 6e 74 to be self cont
09f0: 61 69 6e 65 64 2e 20 49 6e 20 4a 69 6d 20 54 63 ained. In Jim Tc
0a00: 6c 20 74 68 65 20 26 6c 74 3b 63 6f 64 65 26 67 l the <code&g
0a10: 74 3b 62 69 6e 61 72 79 26 6c 74 3b 2f 63 6f 64 t;binary</cod
0a20: 65 26 67 74 3b 20 61 6e 64 20 26 6c 74 3b 63 6f e> and <co
0a30: 64 65 26 67 74 3b 6e 61 6d 65 73 70 61 63 65 26 de>namespace&
0a40: 6c 74 3b 2f 63 6f 64 65 26 67 74 3b 0a 6d 6f 64 lt;/code>.mod
0a50: 75 6c 65 73 20 61 72 65 20 6f 70 74 69 6f 6e 61 ules are optiona
0a60: 6c 2c 20 73 6f 20 6c 6f 61 64 20 74 68 65 6d 20 l, so load them
0a70: 69 66 20 72 65 71 75 69 72 65 64 2e 26 6c 74 3b if required.<
0a80: 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 72 65 20 /p>..<pre
0a90: 63 6c 61 73 73 3d 22 73 68 5f 74 63 6c 22 26 67 class="sh_tcl"&g
0aa0: 74 3b 0a 40 40 20 2d 33 31 2c 31 34 20 2b 34 33 t;.@@ -31,14 +43
0ab0: 2c 31 31 20 40 40 0a 20 23 0a 20 23 20 24 49 64 ,11 @@. #. # $Id
0ac0: 3a 20 64 6e 73 2e 74 63 6c 2c 76 20 31 2e 33 36 : dns.tcl,v 1.36
0ad0: 20 32 30 30 38 2f 31 31 2f 32 32 20 31 32 3a 32 2008/11/22 12:2
0ae0: 38 3a 35 34 20 6d 69 63 34 32 20 45 78 70 20 24 8:54 mic42 Exp $
0af0: 0a 20 0a 2d 70 61 63 6b 61 67 65 20 72 65 71 75 . .-package requ
0b00: 69 72 65 20 54 63 6c 20 38 2e 32 3b 20 20 20 20 ire Tcl 8.2;
0b10: 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 63 # tc
0b20: 6c 20 6d 69 6e 69 6d 75 6d 20 76 65 72 73 69 6f l minimum versio
0b30: 6e 0a 2d 70 61 63 6b 61 67 65 20 72 65 71 75 69 n.-package requi
0b40: 72 65 20 6c 6f 67 67 65 72 3b 20 20 20 20 20 20 re logger;
0b50: 20 20 20 20 20 20 20 20 20 20 20 23 20 74 63 6c # tcl
0b60: 6c 69 62 20 31 2e 33 0a 2d 70 61 63 6b 61 67 65 lib 1.3.-package
0b70: 20 72 65 71 75 69 72 65 20 75 72 69 3b 20 20 20 require uri;
0b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0b90: 20 23 20 74 63 6c 6c 69 62 20 31 2e 31 0a 2d 70 # tcllib 1.1.-p
0ba0: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 75 ackage require u
0bb0: 72 69 3a 3a 75 72 6e 3b 20 20 20 20 20 20 20 20 ri::urn;
0bc0: 20 20 20 20 20 20 20 23 20 74 63 6c 6c 69 62 20 # tcllib
0bd0: 31 2e 32 0a 2d 70 61 63 6b 61 67 65 20 72 65 71 1.2.-package req
0be0: 75 69 72 65 20 69 70 3b 20 20 20 20 20 20 20 20 uire ip;
0bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 # t
0c00: 63 6c 6c 69 62 20 31 2e 37 0a 2b 70 61 63 6b 61 cllib 1.7.+packa
0c10: 67 65 20 72 65 71 75 69 72 65 20 62 69 6e 61 72 ge require binar
0c20: 79 0a 2b 70 61 63 6b 61 67 65 20 72 65 71 75 69 y.+package requi
0c30: 72 65 20 6e 61 6d 65 73 70 61 63 65 0a 20 0a 20 re namespace. .
0c40: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a namespace eval :
0c50: 3a 64 6e 73 20 7b 0a 2d 20 20 20 20 76 61 72 69 :dns {.- vari
0c60: 61 62 6c 65 20 76 65 72 73 69 6f 6e 20 31 2e 33 able version 1.3
0c70: 2e 33 0a 2b 20 20 20 20 76 61 72 69 61 62 6c 65 .3.+ variable
0c80: 20 76 65 72 73 69 6f 6e 20 31 2e 33 2e 33 2d 6a version 1.3.3-j
0c90: 69 6d 32 0a 20 20 20 20 20 76 61 72 69 61 62 6c im2. variabl
0ca0: 65 20 72 63 73 69 64 20 7b 24 49 64 3a 20 64 6e e rcsid {$Id: dn
0cb0: 73 2e 74 63 6c 2c 76 20 31 2e 33 36 20 32 30 30 s.tcl,v 1.36 200
0cc0: 38 2f 31 31 2f 32 32 20 31 32 3a 32 38 3a 35 34 8/11/22 12:28:54
0cd0: 20 6d 69 63 34 32 20 45 78 70 20 24 7d 0a 20 0a mic42 Exp $}. .
0ce0: 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 namespace e
0cf0: 78 70 6f 72 74 20 63 6f 6e 66 69 67 75 72 65 20 xport configure
0d00: 72 65 73 6f 6c 76 65 20 6e 61 6d 65 20 61 64 64 resolve name add
0d10: 72 65 73 73 20 63 6e 61 6d 65 20 5c 0a 26 6c 74 ress cname \.<
0d20: 3b 2f 70 72 65 26 67 74 3b 0a 0a 26 6c 74 3b 70 ;/pre>..<p
0d30: 26 67 74 3b 53 69 6e 63 65 20 4a 69 6d 20 54 63 >Since Jim Tc
0d40: 6c 20 73 75 70 70 6f 72 74 73 20 75 64 70 20 6f l supports udp o
0d50: 75 74 2d 6f 66 2d 74 68 65 2d 62 6f 78 2c 20 61 ut-of-the-box, a
0d60: 6e 64 20 69 74 20 69 73 20 6d 6f 72 65 20 65 66 nd it is more ef
0d70: 66 69 63 69 65 6e 74 2c 0a 64 65 66 61 75 6c 74 ficient,.default
0d80: 20 74 6f 20 75 64 70 20 72 61 74 68 65 72 20 74 to udp rather t
0d90: 68 61 6e 20 74 63 70 2e 20 41 6c 73 6f 20 63 6f han tcp. Also co
0da0: 6d 6d 65 6e 74 20 6f 75 74 20 74 68 65 20 6c 6f mment out the lo
0db0: 67 67 69 6e 67 20 63 61 6c 6c 73 2e 26 6c 74 3b gging calls.<
0dc0: 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 72 65 20 /p>..<pre
0dd0: 63 6c 61 73 73 3d 22 73 68 5f 74 63 6c 22 26 67 class="sh_tcl"&g
0de0: 74 3b 0a 40 40 20 2d 34 39 2c 32 33 20 2b 35 38 t;.@@ -49,23 +58
0df0: 2c 31 33 20 40 40 0a 20 20 20 20 20 20 20 20 20 ,13 @@.
0e00: 61 72 72 61 79 20 73 65 74 20 6f 70 74 69 6f 6e array set option
0e10: 73 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 s {.
0e20: 20 70 6f 72 74 20 20 20 20 20 20 20 35 33 0a 20 port 53.
0e30: 20 20 20 20 20 20 20 20 20 20 20 20 74 69 6d 65 time
0e40: 6f 75 74 20 20 20 20 33 30 30 30 30 0a 2d 20 20 out 30000.-
0e50: 20 20 20 20 20 20 20 20 20 20 70 72 6f 74 6f 63 protoc
0e60: 6f 6c 20 20 20 74 63 70 0a 2b 20 20 20 20 20 20 ol tcp.+
0e70: 20 20 20 20 20 20 70 72 6f 74 6f 63 6f 6c 20 20 protocol
0e80: 20 75 64 70 0a 20 20 20 20 20 20 20 20 20 20 20 udp.
0e90: 20 20 73 65 61 72 63 68 20 20 20 20 20 7b 7d 0a search {}.
0ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d nam
0eb0: 65 73 65 72 76 65 72 20 7b 6c 6f 63 61 6c 68 6f eserver {localho
0ec0: 73 74 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 st}.
0ed0: 20 6c 6f 67 6c 65 76 65 6c 20 20 20 77 61 72 6e loglevel warn
0ee0: 0a 20 20 20 20 20 20 20 20 20 7d 0a 2d 20 20 20 . }.-
0ef0: 20 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 6f variable lo
0f00: 67 20 5b 6c 6f 67 67 65 72 3a 3a 69 6e 69 74 20 g [logger::init
0f10: 64 6e 73 5d 0a 2d 20 20 20 20 20 20 20 20 24 7b dns].- ${
0f20: 6c 6f 67 7d 3a 3a 73 65 74 6c 65 76 65 6c 20 24 log}::setlevel $
0f30: 6f 70 74 69 6f 6e 73 28 6c 6f 67 6c 65 76 65 6c options(loglevel
0f40: 29 0a 2d 20 20 20 20 7d 0a 2d 0a 2d 20 20 20 20 ).- }.-.-
0f50: 23 20 57 65 20 63 61 6e 20 75 73 65 20 65 69 74 # We can use eit
0f60: 68 65 72 20 63 65 70 74 63 6c 20 6f 72 20 74 63 her ceptcl or tc
0f70: 6c 75 64 70 20 66 6f 72 20 55 44 50 20 73 75 70 ludp for UDP sup
0f80: 70 6f 72 74 2e 0a 2d 20 20 20 20 69 66 20 7b 21 port..- if {!
0f90: 5b 63 61 74 63 68 20 7b 70 61 63 6b 61 67 65 20 [catch {package
0fa0: 72 65 71 75 69 72 65 20 75 64 70 20 31 2e 30 2e require udp 1.0.
0fb0: 34 7d 20 6d 73 67 5d 7d 20 7b 20 3b 23 20 74 63 4} msg]} { ;# tc
0fc0: 6c 75 64 70 20 31 2e 30 2e 34 2b 0a 2d 20 20 20 ludp 1.0.4+.-
0fd0: 20 20 20 20 20 23 20 49 66 20 54 63 6c 55 44 50 # If TclUDP
0fe0: 20 31 2e 30 2e 34 20 6f 72 20 62 65 74 74 65 72 1.0.4 or better
0ff0: 20 69 73 20 61 76 61 69 6c 61 62 6c 65 2c 20 75 is available, u
1000: 73 65 20 69 74 2e 0a 2d 20 20 20 20 20 20 20 20 se it..-
1010: 73 65 74 20 6f 70 74 69 6f 6e 73 28 70 72 6f 74 set options(prot
1020: 6f 63 6f 6c 29 20 75 64 70 0a 2d 20 20 20 20 7d ocol) udp.- }
1030: 20 65 6c 73 65 20 7b 0a 2d 20 20 20 20 20 20 20 else {.-
1040: 20 69 66 20 7b 21 5b 63 61 74 63 68 20 7b 70 61 if {![catch {pa
1050: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 63 65 ckage require ce
1060: 70 74 63 6c 7d 20 6d 73 67 5d 7d 20 7b 0a 2d 20 ptcl} msg]} {.-
1070: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 6f set o
1080: 70 74 69 6f 6e 73 28 70 72 6f 74 6f 63 6f 6c 29 ptions(protocol)
1090: 20 75 64 70 0a 2d 20 20 20 20 20 20 20 20 7d 0a udp.- }.
10a0: 2b 20 20 20 20 20 20 20 20 23 76 61 72 69 61 62 + #variab
10b0: 6c 65 20 6c 6f 67 20 5b 6c 6f 67 67 65 72 3a 3a le log [logger::
10c0: 69 6e 69 74 20 64 6e 73 5d 0a 2b 20 20 20 20 20 init dns].+
10d0: 20 20 20 23 24 7b 6c 6f 67 7d 3a 3a 73 65 74 6c #${log}::setl
10e0: 65 76 65 6c 20 24 6f 70 74 69 6f 6e 73 28 6c 6f evel $options(lo
10f0: 67 6c 65 76 65 6c 29 0a 20 20 20 20 20 7d 0a 20 glevel). }.
1100: 0a 20 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 . variable t
1110: 79 70 65 73 0a 26 6c 74 3b 2f 70 72 65 26 67 74 ypes.</pre>
1120: 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 75 64 70 20 ;..<p>udp
1130: 69 73 20 62 75 69 6c 74 2d 69 6e 20 77 69 74 68 is built-in with
1140: 20 4a 69 6d 20 54 63 6c 2e 26 6c 74 3b 2f 70 26 Jim Tcl.</p&
1150: 67 74 3b 0a 0a 26 6c 74 3b 70 72 65 20 63 6c 61 gt;..<pre cla
1160: 73 73 3d 22 73 68 5f 74 63 6c 22 26 67 74 3b 0a ss="sh_tcl">.
1170: 40 40 20 2d 32 34 38 2c 31 34 20 2b 32 33 37 2c @@ -248,14 +237,
1180: 36 20 40 40 0a 20 20 20 20 20 20 20 20 20 72 65 6 @@. re
1190: 74 75 72 6e 20 2d 63 6f 64 65 20 65 72 72 6f 72 turn -code error
11a0: 20 22 6e 6f 20 6e 61 6d 65 73 65 72 76 65 72 20 "no nameserver
11b0: 73 70 65 63 69 66 69 65 64 22 0a 20 20 20 20 20 specified".
11c0: 7d 0a 20 0a 2d 20 20 20 20 69 66 20 7b 24 73 74 }. .- if {$st
11d0: 61 74 65 28 2d 70 72 6f 74 6f 63 6f 6c 29 20 3d ate(-protocol) =
11e0: 3d 20 22 75 64 70 22 7d 20 7b 0a 2d 20 20 20 20 = "udp"} {.-
11f0: 20 20 20 20 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 if {[llength
1200: 20 5b 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64 [package provid
1210: 65 20 63 65 70 74 63 6c 5d 5d 20 3d 3d 20 30 20 e ceptcl]] == 0
1220: 5c 0a 2d 20 20 20 20 20 20 20 20 20 20 20 20 20 \.-
1230: 20 20 20 26 61 6d 70 3b 61 6d 70 3b 26 61 6d 70 &amp;&
1240: 3b 61 6d 70 3b 20 5b 6c 6c 65 6e 67 74 68 20 5b ;amp; [llength [
1250: 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 20 package provide
1260: 75 64 70 5d 5d 20 3d 3d 20 30 7d 20 7b 0a 2d 20 udp]] == 0} {.-
1270: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
1280: 6e 20 2d 63 6f 64 65 20 65 72 72 6f 72 20 22 75 n -code error "u
1290: 64 70 20 73 75 70 70 6f 72 74 20 69 73 20 6e 6f dp support is no
12a0: 74 20 61 76 61 69 6c 61 62 6c 65 2c 5c 0a 2d 20 t available,\.-
12b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 g
12c0: 65 74 20 63 65 70 74 63 6c 20 6f 72 20 74 63 6c et ceptcl or tcl
12d0: 75 64 70 22 0a 2d 20 20 20 20 20 20 20 20 7d 0a udp".- }.
12e0: 2d 20 20 20 20 7d 0a 2d 20 20 20 20 0a 20 20 20 - }.- .
12f0: 20 20 23 20 43 68 65 63 6b 20 66 6f 72 20 72 65 # Check for re
1300: 76 65 72 73 65 20 6c 6f 6f 6b 75 70 73 0a 20 20 verse lookups.
1310: 20 20 20 69 66 20 7b 5b 72 65 67 65 78 70 20 7b if {[regexp {
1320: 5e 28 3f 3a 5c 64 7b 30 2c 33 7d 5c 2e 29 7b 33 ^(?:\d{0,3}\.){3
1330: 7d 5c 64 7b 30 2c 33 7d 24 7d 20 24 73 74 61 74 }\d{0,3}$} $stat
1340: 65 28 71 75 65 72 79 29 5d 7d 20 7b 0a 20 20 20 e(query)]} {.
1350: 20 20 20 20 20 20 73 65 74 20 61 64 64 72 20 5b set addr [
1360: 6c 72 65 76 65 72 73 65 20 5b 73 70 6c 69 74 20 lreverse [split
1370: 24 73 74 61 74 65 28 71 75 65 72 79 29 20 2e 5d $state(query) .]
1380: 5d 0a 26 6c 74 3b 2f 70 72 65 26 67 74 3b 0a 0a ].</pre>..
1390: 26 6c 74 3b 70 26 67 74 3b 75 64 70 20 69 6e 20 <p>udp in
13a0: 4a 69 6d 20 54 63 6c 20 77 6f 72 6b 73 20 6a 75 Jim Tcl works ju
13b0: 73 74 20 6c 69 6b 65 20 74 63 70 2c 20 77 69 74 st like tcp, wit
13c0: 68 20 26 6c 74 3b 63 6f 64 65 26 67 74 3b 72 65 h <code>re
13d0: 61 64 61 62 6c 65 26 6c 74 3b 2f 63 6f 64 65 26 adable</code&
13e0: 67 74 3b 20 65 76 65 6e 74 20 68 61 6e 64 6c 65 gt; event handle
13f0: 72 20 62 65 69 6e 67 0a 74 72 69 67 67 65 72 65 r being.triggere
1400: 64 20 77 68 65 6e 20 74 68 65 20 72 65 73 70 6f d when the respo
1410: 6e 73 65 20 69 73 20 61 76 61 69 6c 61 62 6c 65 nse is available
1420: 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 .</p>..<
1430: 3b 70 72 65 20 63 6c 61 73 73 3d 22 73 68 5f 74 ;pre class="sh_t
1440: 63 6c 22 26 67 74 3b 0a 40 40 20 2d 32 37 33 2c cl">.@@ -273,
1450: 36 20 2b 32 35 34 2c 37 20 40 40 0a 20 20 20 20 6 +254,7 @@.
1460: 20 20 20 20 20 7d 0a 20 20 20 20 20 7d 20 65 6c }. } el
1470: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 55 64 se {. Ud
1480: 70 54 72 61 6e 73 6d 69 74 20 24 74 6f 6b 65 6e pTransmit $token
1490: 0a 2b 20 20 20 20 20 20 20 20 77 61 69 74 20 24 .+ wait $
14a0: 74 6f 6b 65 6e 0a 20 20 20 20 20 7d 0a 20 20 20 token. }.
14b0: 20 20 0a 20 20 20 20 20 72 65 74 75 72 6e 20 24 . return $
14c0: 74 6f 6b 65 6e 0a 26 6c 74 3b 2f 70 72 65 26 67 token.</pre&g
14d0: 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 4a 69 6d t;..<p>Jim
14e0: 20 54 63 6c 20 68 61 73 20 6e 6f 20 73 75 70 70 Tcl has no supp
14f0: 6f 72 74 20 66 6f 72 20 61 73 79 6e 63 20 63 6f ort for async co
1500: 6e 6e 65 63 74 2c 20 61 6e 64 20 74 68 65 20 70 nnect, and the p
1510: 61 72 61 6d 65 74 65 72 73 20 74 6f 20 26 6c 74 arameters to <
1520: 3b 63 6f 64 65 26 67 74 3b 73 6f 63 6b 65 74 26 ;code>socket&
1530: 6c 74 3b 2f 63 6f 64 65 26 67 74 3b 20 61 72 65 lt;/code> are
1540: 20 61 20 6c 69 74 74 6c 65 20 64 69 66 66 65 72 a little differ
1550: 65 6e 74 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a ent.</p>..
1560: 26 6c 74 3b 70 72 65 20 63 6c 61 73 73 3d 22 73 <pre class="s
1570: 68 5f 74 63 6c 22 26 67 74 3b 0a 40 40 20 2d 36 h_tcl">.@@ -6
1580: 36 38 2c 39 20 2b 36 35 30 2c 39 20 40 40 0a 20 68,9 +650,9 @@.
1590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
15a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
15b0: 20 20 20 22 6f 70 65 72 61 74 69 6f 6e 20 74 69 "operation ti
15c0: 6d 65 64 20 6f 75 74 22 5d 5d 0a 20 20 20 20 20 med out"]].
15d0: 7d 0a 20 0a 2d 20 20 20 20 23 20 53 6f 6d 65 74 }. .- # Somet
15e0: 69 6d 65 73 20 44 4e 53 20 73 65 72 76 65 72 73 imes DNS servers
15f0: 20 64 72 6f 70 20 54 43 50 20 72 65 71 75 65 73 drop TCP reques
1600: 74 73 2e 20 53 6f 20 69 74 27 73 20 62 65 74 74 ts. So it's bett
1610: 65 72 20 74 6f 0a 2d 20 20 20 20 23 20 75 73 65 er to.- # use
1620: 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 63 6f asynchronous co
1630: 6e 6e 65 63 74 0a 2d 20 20 20 20 73 65 74 20 73 nnect.- set s
1640: 20 5b 73 6f 63 6b 65 74 20 2d 61 73 79 6e 63 20 [socket -async
1650: 24 73 74 61 74 65 28 2d 6e 61 6d 65 73 65 72 76 $state(-nameserv
1660: 65 72 29 20 24 73 74 61 74 65 28 2d 70 6f 72 74 er) $state(-port
1670: 29 5d 0a 2b 20 20 20 20 23 20 4a 69 6d 20 54 63 )].+ # Jim Tc
1680: 6c 20 68 61 73 20 6e 6f 20 61 73 79 6e 63 20 63 l has no async c
1690: 6f 6e 6e 65 63 74 20 2e 2e 2e 0a 2b 0a 2b 20 20 onnect ....+.+
16a0: 20 20 73 65 74 20 73 20 5b 73 6f 63 6b 65 74 20 set s [socket
16b0: 73 74 72 65 61 6d 20 24 73 74 61 74 65 28 2d 6e stream $state(-n
16c0: 61 6d 65 73 65 72 76 65 72 29 3a 24 73 74 61 74 ameserver):$stat
16d0: 65 28 2d 70 6f 72 74 29 5d 0a 20 20 20 20 20 66 e(-port)]. f
16e0: 69 6c 65 65 76 65 6e 74 20 24 73 20 77 72 69 74 ileevent $s writ
16f0: 61 62 6c 65 20 5b 6c 69 73 74 20 5b 6e 61 6d 65 able [list [name
1700: 73 70 61 63 65 20 6f 72 69 67 69 6e 20 54 63 70 space origin Tcp
1710: 43 6f 6e 6e 65 63 74 65 64 5d 20 24 74 6f 6b 65 Connected] $toke
1720: 6e 20 24 73 5d 0a 20 20 20 20 20 73 65 74 20 73 n $s]. set s
1730: 74 61 74 65 28 73 6f 63 6b 29 20 24 73 0a 20 20 tate(sock) $s.
1740: 20 20 20 73 65 74 20 73 74 61 74 65 28 73 74 61 set state(sta
1750: 74 75 73 29 20 63 6f 6e 6e 65 63 74 0a 26 6c 74 tus) connect.<
1760: 3b 2f 70 72 65 26 67 74 3b 0a 0a 26 6c 74 3b 70 ;/pre>..<p
1770: 26 67 74 3b 43 6f 6d 6d 65 6e 74 20 6f 75 74 20 >Comment out
1780: 74 68 65 20 61 73 79 6e 63 20 63 6f 6e 6e 65 63 the async connec
1790: 74 20 63 68 65 63 6b 2e 26 6c 74 3b 2f 70 26 67 t check.</p&g
17a0: 74 3b 0a 0a 26 6c 74 3b 70 72 65 20 63 6c 61 73 t;..<pre clas
17b0: 73 3d 22 73 68 5f 74 63 6c 22 26 67 74 3b 0a 40 s="sh_tcl">.@
17c0: 40 20 2d 36 38 33 2c 31 31 20 2b 36 36 35 2c 31 @ -683,11 +665,1
17d0: 33 20 40 40 0a 20 20 20 20 20 75 70 76 61 72 20 3 @@. upvar
17e0: 30 20 24 74 6f 6b 65 6e 20 73 74 61 74 65 0a 20 0 $token state.
17f0: 0a 20 20 20 20 20 66 69 6c 65 65 76 65 6e 74 20 . fileevent
1800: 24 73 20 77 72 69 74 61 62 6c 65 20 7b 7d 0a 2d $s writable {}.-
1810: 20 20 20 20 69 66 20 7b 5b 63 61 74 63 68 20 7b if {[catch {
1820: 66 63 6f 6e 66 69 67 75 72 65 20 24 73 20 2d 70 fconfigure $s -p
1830: 65 65 72 6e 61 6d 65 7d 5d 7d 20 7b 0a 2d 09 23 eername}]} {.-.#
1840: 20 54 43 50 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 TCP connection
1850: 66 61 69 6c 65 64 0a 2d 20 20 20 20 20 20 20 20 failed.-
1860: 46 69 6e 69 73 68 20 24 74 6f 6b 65 6e 20 22 63 Finish $token "c
1870: 61 6e 27 74 20 63 6f 6e 6e 65 63 74 20 74 6f 20 an't connect to
1880: 73 65 72 76 65 72 22 0a 2d 09 72 65 74 75 72 6e server".-.return
1890: 0a 2d 20 20 20 20 7d 0a 2b 0a 2b 20 20 20 20 23 .- }.+.+ #
18a0: 20 4a 69 6d 20 54 63 6c 20 68 61 73 20 6e 6f 20 Jim Tcl has no
18b0: 61 73 79 6e 63 20 63 6f 6e 6e 65 63 74 20 2e 2e async connect ..
18c0: 2e 0a 2b 23 20 20 20 20 69 66 20 7b 5b 63 61 74 ..+# if {[cat
18d0: 63 68 20 7b 66 63 6f 6e 66 69 67 75 72 65 20 24 ch {fconfigure $
18e0: 73 20 2d 70 65 65 72 6e 61 6d 65 7d 5d 7d 20 7b s -peername}]} {
18f0: 0a 2b 23 09 23 20 54 43 50 20 63 6f 6e 6e 65 63 .+#.# TCP connec
1900: 74 69 6f 6e 20 66 61 69 6c 65 64 0a 2b 23 20 20 tion failed.+#
1910: 20 20 20 20 20 20 46 69 6e 69 73 68 20 24 74 6f Finish $to
1920: 6b 65 6e 20 22 63 61 6e 27 74 20 63 6f 6e 6e 65 ken "can't conne
1930: 63 74 20 74 6f 20 73 65 72 76 65 72 22 0a 2b 23 ct to server".+#
1940: 09 72 65 74 75 72 6e 0a 2b 23 20 20 20 20 7d 0a .return.+# }.
1950: 20 0a 20 20 20 20 20 66 63 6f 6e 66 69 67 75 72 . fconfigur
1960: 65 20 24 73 20 2d 62 6c 6f 63 6b 69 6e 67 20 30 e $s -blocking 0
1970: 20 2d 74 72 61 6e 73 6c 61 74 69 6f 6e 20 62 69 -translation bi
1980: 6e 61 72 79 20 2d 62 75 66 66 65 72 69 6e 67 20 nary -buffering
1990: 6e 6f 6e 65 0a 20 0a 26 6c 74 3b 2f 70 72 65 26 none. .</pre&
19a0: 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 75 64 gt;..<p>ud
19b0: 70 20 69 6e 20 4a 69 6d 20 54 63 6c 20 69 73 20 p in Jim Tcl is
19c0: 65 61 73 79 2e 20 53 69 6d 70 79 20 63 72 65 61 easy. Simpy crea
19d0: 74 65 20 74 68 65 20 73 6f 63 6b 65 74 20 77 69 te the socket wi
19e0: 74 68 20 26 6c 74 3b 63 6f 64 65 26 67 74 3b 73 th <code>s
19f0: 6f 63 6b 65 74 20 64 67 72 61 6d 26 6c 74 3b 2f ocket dgram</
1a00: 63 6f 64 65 26 67 74 3b 20 61 6e 64 0a 73 65 6e code> and.sen
1a10: 64 20 77 69 74 68 20 26 6c 74 3b 63 6f 64 65 26 d with <code&
1a20: 67 74 3b 73 65 6e 64 74 6f 26 6c 74 3b 2f 63 6f gt;sendto</co
1a30: 64 65 26 67 74 3b 2e 26 6c 74 3b 2f 70 26 67 74 de>.</p>
1a40: 3b 0a 0a 26 6c 74 3b 70 72 65 20 63 6c 61 73 73 ;..<pre class
1a50: 3d 22 73 68 5f 74 63 6c 22 26 67 74 3b 0a 40 40 ="sh_tcl">.@@
1a60: 20 2d 37 32 32 2c 31 38 20 2b 37 30 36 2c 31 30 -722,18 +706,10
1a70: 20 40 40 0a 20 20 20 20 20 20 20 20 20 20 20 20 @@.
1a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a90: 20 20 20 20 20 20 20 22 6f 70 65 72 61 74 69 6f "operatio
1aa0: 6e 20 74 69 6d 65 64 20 6f 75 74 22 5d 5d 0a 20 n timed out"]].
1ab0: 20 20 20 20 7d 0a 20 20 20 20 20 0a 2d 20 20 20 }. .-
1ac0: 20 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 70 if {[llength [p
1ad0: 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 20 63 ackage provide c
1ae0: 65 70 74 63 6c 5d 5d 20 26 61 6d 70 3b 67 74 3b eptcl]] &gt;
1af0: 20 30 7d 20 7b 0a 2d 20 20 20 20 20 20 20 20 23 0} {.- #
1b00: 20 75 73 69 6e 67 20 63 65 70 74 63 6c 0a 2d 20 using ceptcl.-
1b10: 20 20 20 20 20 20 20 73 65 74 20 73 74 61 74 65 set state
1b20: 28 73 6f 63 6b 29 20 5b 63 65 70 20 2d 74 79 70 (sock) [cep -typ
1b30: 65 20 64 61 74 61 67 72 61 6d 20 24 73 74 61 74 e datagram $stat
1b40: 65 28 2d 6e 61 6d 65 73 65 72 76 65 72 29 20 24 e(-nameserver) $
1b50: 73 74 61 74 65 28 2d 70 6f 72 74 29 5d 0a 2d 20 state(-port)].-
1b60: 20 20 20 20 20 20 20 66 63 6f 6e 66 69 67 75 72 fconfigur
1b70: 65 20 24 73 74 61 74 65 28 73 6f 63 6b 29 20 2d e $state(sock) -
1b80: 62 6c 6f 63 6b 69 6e 67 20 30 0a 2d 20 20 20 20 blocking 0.-
1b90: 7d 20 65 6c 73 65 20 7b 0a 2d 20 20 20 20 20 20 } else {.-
1ba0: 20 20 23 20 75 73 69 6e 67 20 74 63 6c 75 64 70 # using tcludp
1bb0: 0a 2d 20 20 20 20 20 20 20 20 73 65 74 20 73 74 .- set st
1bc0: 61 74 65 28 73 6f 63 6b 29 20 5b 75 64 70 5f 6f ate(sock) [udp_o
1bd0: 70 65 6e 5d 0a 2d 20 20 20 20 20 20 20 20 75 64 pen].- ud
1be0: 70 5f 63 6f 6e 66 20 24 73 74 61 74 65 28 73 6f p_conf $state(so
1bf0: 63 6b 29 20 24 73 74 61 74 65 28 2d 6e 61 6d 65 ck) $state(-name
1c00: 73 65 72 76 65 72 29 20 24 73 74 61 74 65 28 2d server) $state(-
1c10: 70 6f 72 74 29 0a 2d 20 20 20 20 7d 0a 2d 20 20 port).- }.-
1c20: 20 20 66 63 6f 6e 66 69 67 75 72 65 20 24 73 74 fconfigure $st
1c30: 61 74 65 28 73 6f 63 6b 29 20 2d 74 72 61 6e 73 ate(sock) -trans
1c40: 6c 61 74 69 6f 6e 20 62 69 6e 61 72 79 20 2d 62 lation binary -b
1c50: 75 66 66 65 72 69 6e 67 20 6e 6f 6e 65 0a 2b 20 uffering none.+
1c60: 20 20 20 73 65 74 20 73 74 61 74 65 28 73 6f 63 set state(soc
1c70: 6b 29 20 5b 73 6f 63 6b 65 74 20 64 67 72 61 6d k) [socket dgram
1c80: 5d 0a 2b 20 20 20 20 23 66 63 6f 6e 66 69 67 75 ].+ #fconfigu
1c90: 72 65 20 24 73 74 61 74 65 28 73 6f 63 6b 29 20 re $state(sock)
1ca0: 2d 74 72 61 6e 73 6c 61 74 69 6f 6e 20 62 69 6e -translation bin
1cb0: 61 72 79 20 2d 62 75 66 66 65 72 69 6e 67 20 6e ary -buffering n
1cc0: 6f 6e 65 0a 20 20 20 20 20 73 65 74 20 73 74 61 one. set sta
1cd0: 74 65 28 73 74 61 74 75 73 29 20 63 6f 6e 6e 65 te(status) conne
1ce0: 63 74 0a 2d 20 20 20 20 70 75 74 73 20 2d 6e 6f ct.- puts -no
1cf0: 6e 65 77 6c 69 6e 65 20 24 73 74 61 74 65 28 73 newline $state(s
1d00: 6f 63 6b 29 20 24 73 74 61 74 65 28 72 65 71 75 ock) $state(requ
1d10: 65 73 74 29 0a 2b 20 20 20 20 24 73 74 61 74 65 est).+ $state
1d20: 28 73 6f 63 6b 29 20 73 65 6e 64 74 6f 20 24 73 (sock) sendto $s
1d30: 74 61 74 65 28 72 65 71 75 65 73 74 29 20 24 73 tate(request) $s
1d40: 74 61 74 65 28 2d 6e 61 6d 65 73 65 72 76 65 72 tate(-nameserver
1d50: 29 3a 24 73 74 61 74 65 28 2d 70 6f 72 74 29 0a ):$state(-port).
1d60: 20 20 20 20 20 0a 20 20 20 20 20 66 69 6c 65 65 . filee
1d70: 76 65 6e 74 20 24 73 74 61 74 65 28 73 6f 63 6b vent $state(sock
1d80: 29 20 72 65 61 64 61 62 6c 65 20 5b 6c 69 73 74 ) readable [list
1d90: 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 75 72 72 [namespace curr
1da0: 65 6e 74 5d 3a 3a 55 64 70 45 76 65 6e 74 20 24 ent]::UdpEvent $
1db0: 74 6f 6b 65 6e 5d 0a 20 20 20 20 20 0a 26 6c 74 token]. .<
1dc0: 3b 2f 70 72 65 26 67 74 3b 0a 0a 26 6c 74 3b 70 ;/pre>..<p
1dd0: 26 67 74 3b 52 65 61 64 69 6e 67 20 66 72 6f 6d >Reading from
1de0: 20 61 20 75 64 70 20 73 6f 63 6b 65 74 20 69 73 a udp socket is
1df0: 20 62 65 73 74 20 64 6f 6e 65 20 77 69 74 68 20 best done with
1e00: 26 6c 74 3b 63 6f 64 65 26 67 74 3b 72 65 63 76 <code>recv
1e10: 66 72 6f 6d 26 6c 74 3b 2f 63 6f 64 65 26 67 74 from</code>
1e20: 3b 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 ;</p>..<
1e30: 3b 70 72 65 20 63 6c 61 73 73 3d 22 73 68 5f 74 ;pre class="sh_t
1e40: 63 6c 22 26 67 74 3b 0a 40 40 20 2d 38 37 39 2c cl">.@@ -879,
1e50: 37 20 2b 38 35 35 2c 37 20 40 40 0a 20 20 20 20 7 +855,7 @@.
1e60: 20 75 70 76 61 72 20 30 20 24 74 6f 6b 65 6e 20 upvar 0 $token
1e70: 73 74 61 74 65 0a 20 20 20 20 20 73 65 74 20 73 state. set s
1e80: 20 24 73 74 61 74 65 28 73 6f 63 6b 29 0a 20 0a $state(sock). .
1e90: 2d 20 20 20 20 73 65 74 20 70 61 79 6c 6f 61 64 - set payload
1ea0: 20 5b 72 65 61 64 20 24 73 74 61 74 65 28 73 6f [read $state(so
1eb0: 63 6b 29 5d 0a 2b 20 20 20 20 73 65 74 20 70 61 ck)].+ set pa
1ec0: 79 6c 6f 61 64 20 5b 24 73 74 61 74 65 28 73 6f yload [$state(so
1ed0: 63 6b 29 20 72 65 63 76 66 72 6f 6d 20 31 35 30 ck) recvfrom 150
1ee0: 30 5d 0a 20 20 20 20 20 61 70 70 65 6e 64 20 73 0]. append s
1ef0: 74 61 74 65 28 72 65 70 6c 79 29 20 24 70 61 79 tate(reply) $pay
1f00: 6c 6f 61 64 0a 20 0a 20 20 20 20 20 62 69 6e 61 load. . bina
1f10: 72 79 20 73 63 61 6e 20 24 70 61 79 6c 6f 61 64 ry scan $payload
1f20: 20 53 20 69 64 0a 26 6c 74 3b 2f 70 72 65 26 67 S id.</pre&g
1f30: 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 4a 69 6d t;..<p>Jim
1f40: 20 54 63 6c 20 68 61 73 20 26 6c 74 3b 63 6f 64 Tcl has <cod
1f50: 65 26 67 74 3b 6c 72 65 76 65 72 73 65 26 6c 74 e>lreverse<
1f60: 3b 2f 63 6f 64 65 26 67 74 3b 20 62 75 69 6c 74 ;/code> built
1f70: 2d 69 6e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 -in</p>..&
1f80: 6c 74 3b 70 72 65 20 63 6c 61 73 73 3d 22 73 68 lt;pre class="sh
1f90: 5f 74 63 6c 22 26 67 74 3b 0a 40 40 20 2d 31 30 _tcl">.@@ -10
1fa0: 31 31 2c 31 37 20 2b 39 38 37 2c 36 20 40 40 0a 11,17 +987,6 @@.
1fb0: 20 7d 0a 20 0a 20 23 20 2d 2d 2d 2d 2d 2d 2d 2d }. . # --------
1fc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1fe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1ff0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2000: 2d 0a 2d 23 20 44 65 73 63 72 69 70 74 69 6f 6e -.-# Description
2010: 3a 0a 2d 23 20 20 20 52 65 76 65 72 73 65 20 61 :.-# Reverse a
2020: 20 6c 69 73 74 2e 20 43 6f 64 65 20 66 72 6f 6d list. Code from
2030: 20 68 74 74 70 3a 2f 2f 77 69 6b 69 2e 74 63 6c http://wiki.tcl
2040: 2e 74 6b 2f 74 63 6c 2f 34 33 0a 2d 23 0a 2d 70 .tk/tcl/43.-#.-p
2050: 72 6f 63 20 3a 3a 64 6e 73 3a 3a 6c 72 65 76 65 roc ::dns::lreve
2060: 72 73 65 20 7b 6c 73 74 7d 20 7b 0a 2d 20 20 20 rse {lst} {.-
2070: 20 73 65 74 20 72 65 73 20 7b 7d 0a 2d 20 20 20 set res {}.-
2080: 20 73 65 74 20 69 20 5b 6c 6c 65 6e 67 74 68 20 set i [llength
2090: 24 6c 73 74 5d 0a 2d 20 20 20 20 77 68 69 6c 65 $lst].- while
20a0: 20 7b 24 69 7d 20 7b 6c 61 70 70 65 6e 64 20 72 {$i} {lappend r
20b0: 65 73 20 5b 6c 69 6e 64 65 78 20 24 6c 73 74 20 es [lindex $lst
20c0: 5b 69 6e 63 72 20 69 20 2d 31 5d 5d 7d 0a 2d 20 [incr i -1]]}.-
20d0: 20 20 20 72 65 74 75 72 6e 20 24 72 65 73 0a 2d return $res.-
20e0: 7d 0a 2d 0a 2d 23 20 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 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2120: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2130: 0a 20 0a 20 70 72 6f 63 20 3a 3a 64 6e 73 3a 3a . . proc ::dns::
2140: 4b 65 79 4f 66 20 7b 61 72 72 61 79 6e 61 6d 65 KeyOf {arrayname
2150: 20 76 61 6c 75 65 20 7b 64 65 66 61 75 6c 74 20 value {default
2160: 7b 7d 7d 7d 20 7b 0a 20 20 20 20 20 75 70 76 61 {}}} {. upva
2170: 72 20 24 61 72 72 61 79 6e 61 6d 65 20 61 72 72 r $arrayname arr
2180: 61 79 0a 26 6c 74 3b 2f 70 72 65 26 67 74 3b 0a ay.</pre>.
2190: 0a 26 6c 74 3b 68 72 20 2f 26 67 74 3b 0a 0a 26 .<hr />..&
21a0: 6c 74 3b 70 26 67 74 3b 4e 6f 74 69 63 65 20 74 lt;p>Notice t
21b0: 68 61 74 20 6e 6f 20 6e 61 6d 65 73 70 61 63 65 hat no namespace
21c0: 2d 72 65 6c 61 74 65 64 20 63 68 61 6e 67 65 73 -related changes
21d0: 20 77 65 72 65 20 72 65 71 75 69 72 65 64 20 77 were required w
21e0: 68 65 6e 20 70 6f 72 74 69 6e 67 20 74 68 69 73 hen porting this
21f0: 20 6d 6f 64 75 6c 65 2e 26 6c 74 3b 2f 70 26 67 module.</p&g
2200: 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 54 68 65 t;..<p>The
2210: 20 6c 61 74 65 73 74 20 76 65 72 73 69 6f 6e 20 latest version
2220: 6f 66 20 26 6c 74 3b 61 20 68 72 65 66 3d 22 68 of <a href="h
2230: 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f ttps://github.co
2240: 6d 2f 6d 73 74 65 76 65 62 2f 6a 69 6d 74 63 6c m/msteveb/jimtcl
2250: 2f 62 6c 6f 62 2f 61 64 33 62 33 63 34 38 63 39 /blob/ad3b3c48c9
2260: 64 37 65 39 2f 65 78 61 6d 70 6c 65 73 2f 64 6e d7e9/examples/dn
2270: 73 2e 74 63 6c 22 26 67 74 3b 64 6e 73 2e 74 63 s.tcl">dns.tc
2280: 6c 20 66 6f 72 20 4a 69 6d 20 54 63 6c 26 6c 74 l for Jim Tcl<
2290: 3b 2f 61 26 67 74 3b 20 69 73 0a 61 76 61 69 6c ;/a> is.avail
22a0: 61 62 6c 65 20 69 6e 20 67 69 74 2e 26 6c 74 3b able in git.<
22b0: 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 /p>..<p>
22c0: 3b 53 74 65 76 65 20 42 65 6e 6e 65 74 74 20 28 ;Steve Bennett (
22d0: 26 6c 74 3b 61 20 68 72 65 66 3d 22 26 61 6d 70 <a href="&
22e0: 3b 23 31 30 39 3b 26 61 6d 70 3b 23 30 39 37 3b ;#109;&#097;
22f0: 26 61 6d 70 3b 23 31 30 35 3b 26 61 6d 70 3b 23 &#105;&#
2300: 31 30 38 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 108;&#116;&a
2310: 6d 70 3b 23 31 31 31 3b 3a 26 61 6d 70 3b 23 31 mp;#111;:&#1
2320: 31 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 15;&#116;&am
2330: 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 p;#101;&#118
2340: 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b ;&#101;&
2350: 23 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 #098;&#064;&
2360: 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 amp;#119;&#1
2370: 31 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 11;&#114;&am
2380: 70 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 p;#107;&#119
2390: 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b ;&#097;&
23a0: 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 #114;&#101;&
23b0: 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 amp;#046;&#1
23c0: 31 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 10;&#101;&am
23d0: 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 p;#116;&#046
23e0: 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b ;&#097;&
23f0: 23 31 31 37 3b 22 26 67 74 3b 26 61 6d 70 3b 23 #117;">&#
2400: 31 31 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 115;&#116;&a
2410: 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 mp;#101;&#11
2420: 38 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 8;&#101;&
2430: 3b 23 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b ;#098;&#064;
2440: 26 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 &#119;&#
2450: 31 31 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 111;&#114;&a
2460: 6d 70 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 mp;#107;&#11
2470: 39 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 9;&#097;&
2480: 3b 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b ;#114;&#101;
2490: 26 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 &#046;&#
24a0: 31 31 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 110;&#101;&a
24b0: 6d 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 mp;#116;&#04
24c0: 36 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 6;&#097;&
24d0: 3b 23 31 31 37 3b 26 6c 74 3b 2f 61 26 67 74 3b ;#117;</a>
24e0: 29 26 6c 74 3b 2f 70 26 67 74 3b 0a 3c 2f 63 6f )</p>.</co
24f0: 6e 74 65 6e 74 3e 0a 20 20 3c 2f 65 6e 74 72 79 ntent>. </entry
2500: 3e 0a 20 20 3c 65 6e 74 72 79 3e 0a 20 20 20 20 >. <entry>.
2510: 3c 69 64 3e 74 61 67 3a 6a 69 6d 2e 62 65 72 6c <id>tag:jim.berl
2520: 69 6f 73 2e 64 65 2c 32 30 31 31 2d 31 32 2d 32 ios.de,2011-12-2
2530: 32 3a 2f 61 72 74 69 63 6c 65 73 2f 6a 69 6d 2d 2:/articles/jim-
2540: 72 65 6c 65 61 73 65 2d 30 2d 37 33 2f 3c 2f 69 release-0-73/</i
2550: 64 3e 0a 20 20 20 20 3c 74 69 74 6c 65 20 74 79 d>. <title ty
2560: 70 65 3d 22 68 74 6d 6c 22 3e 4a 69 6d 20 54 63 pe="html">Jim Tc
2570: 6c 20 76 65 72 73 69 6f 6e 20 30 2e 37 33 3c 2f l version 0.73</
2580: 74 69 74 6c 65 3e 0a 20 20 20 20 3c 70 75 62 6c title>. <publ
2590: 69 73 68 65 64 3e 32 30 31 31 2d 31 32 2d 32 31 ished>2011-12-21
25a0: 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 70 75 62 6c T14:00:00Z</publ
25b0: 69 73 68 65 64 3e 0a 20 20 20 20 3c 75 70 64 61 ished>. <upda
25c0: 74 65 64 3e 32 30 31 31 2d 31 32 2d 32 31 54 31 ted>2011-12-21T1
25d0: 34 3a 30 30 3a 30 30 5a 3c 2f 75 70 64 61 74 65 4:00:00Z</update
25e0: 64 3e 0a 20 20 20 20 3c 6c 69 6e 6b 20 72 65 6c d>. <link rel
25f0: 3d 22 61 6c 74 65 72 6e 61 74 65 22 20 68 72 65 ="alternate" hre
2600: 66 3d 22 68 74 74 70 3a 2f 2f 6a 69 6d 2e 62 65 f="http://jim.be
2610: 72 6c 69 6f 73 2e 64 65 2f 61 72 74 69 63 6c 65 rlios.de/article
2620: 73 2f 6a 69 6d 2d 72 65 6c 65 61 73 65 2d 30 2d s/jim-release-0-
2630: 37 33 2f 22 2f 3e 0a 20 20 20 20 3c 63 6f 6e 74 73/"/>. <cont
2640: 65 6e 74 20 74 79 70 65 3d 22 68 74 6d 6c 22 3e ent type="html">
2650: 26 6c 74 3b 68 32 20 69 64 3d 22 61 6e 6e 6f 75 <h2 id="annou
2660: 6e 63 65 2d 6a 69 6d 2d 74 63 6c 2d 76 65 72 73 nce-jim-tcl-vers
2670: 69 6f 6e 2d 30 37 33 22 26 67 74 3b 41 4e 4e 4f ion-073">ANNO
2680: 55 4e 43 45 3a 20 4a 69 6d 20 54 63 6c 20 76 65 UNCE: Jim Tcl ve
2690: 72 73 69 6f 6e 20 30 2e 37 33 26 6c 74 3b 2f 68 rsion 0.73</h
26a0: 32 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 2>..<p>
26b0: 4a 69 6d 20 54 63 6c 20 30 2e 37 33 20 68 61 73 Jim Tcl 0.73 has
26c0: 20 62 65 65 6e 20 72 65 6c 65 61 73 65 64 20 61 been released a
26d0: 6e 64 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 nd is available
26e0: 66 72 6f 6d 3a 20 26 6c 74 3b 2f 70 26 67 74 3b from: </p>
26f0: 0a 0a 26 6c 74 3b 70 26 67 74 3b 26 6c 74 3b 61 ..<p><a
2700: 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 72 65 href="http://re
2710: 70 6f 2e 6f 72 2e 63 7a 2f 77 2f 6a 69 6d 74 63 po.or.cz/w/jimtc
2720: 6c 2e 67 69 74 22 26 67 74 3b 68 74 74 70 3a 2f l.git">http:/
2730: 2f 72 65 70 6f 2e 6f 72 2e 63 7a 2f 77 2f 6a 69 /repo.or.cz/w/ji
2740: 6d 74 63 6c 2e 67 69 74 26 6c 74 3b 2f 61 26 67 mtcl.git</a&g
2750: 74 3b 20 6f 72 20 26 6c 74 3b 61 20 68 72 65 66 t; or <a href
2760: 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 ="https://github
2770: 2e 63 6f 6d 2f 6d 73 74 65 76 65 62 2f 6a 69 6d .com/msteveb/jim
2780: 74 63 6c 22 26 67 74 3b 68 74 74 70 73 3a 2f 2f tcl">https://
2790: 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 73 74 65 76 github.com/mstev
27a0: 65 62 2f 6a 69 6d 74 63 6c 26 6c 74 3b 2f 61 26 eb/jimtcl</a&
27b0: 67 74 3b 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 gt;</p>..&
27c0: 6c 74 3b 70 26 67 74 3b 46 69 6e 64 20 6f 75 74 lt;p>Find out
27d0: 20 61 6c 6c 20 61 62 6f 75 74 20 4a 69 6d 20 54 all about Jim T
27e0: 63 6c 20 61 74 20 26 6c 74 3b 61 20 68 72 65 66 cl at <a href
27f0: 3d 22 68 74 74 70 3a 2f 2f 6a 69 6d 2e 74 63 6c ="http://jim.tcl
2800: 2e 74 6b 2f 22 26 67 74 3b 68 74 74 70 3a 2f 2f .tk/">http://
2810: 6a 69 6d 2e 74 63 6c 2e 74 6b 2f 26 6c 74 3b 2f jim.tcl.tk/</
2820: 61 26 67 74 3b 26 6c 74 3b 2f 70 26 67 74 3b 0a a></p>.
2830: 0a 26 6c 74 3b 68 32 20 69 64 3d 22 63 68 61 6e .<h2 id="chan
2840: 67 65 73 2d 73 69 6e 63 65 2d 76 65 72 73 69 6f ges-since-versio
2850: 6e 2d 30 37 32 22 26 67 74 3b 43 48 41 4e 47 45 n-072">CHANGE
2860: 53 20 53 49 4e 43 45 20 56 45 52 53 49 4f 4e 20 S SINCE VERSION
2870: 30 2e 37 32 26 6c 74 3b 2f 68 32 26 67 74 3b 0a 0.72</h2>.
2880: 0a 26 6c 74 3b 70 26 67 74 3b 54 68 69 73 20 72 .<p>This r
2890: 65 6c 65 61 73 65 20 69 6e 63 6f 72 70 6f 72 61 elease incorpora
28a0: 74 65 73 20 62 75 67 20 66 69 78 65 73 20 61 6e tes bug fixes an
28b0: 64 20 6d 61 6e 79 20 6e 65 77 20 66 65 61 74 75 d many new featu
28c0: 72 65 73 2e 0a 41 20 73 75 6d 6d 61 72 79 20 69 res..A summary i
28d0: 73 20 62 65 6c 6f 77 2e 20 53 65 65 20 67 69 74 s below. See git
28e0: 20 66 6f 72 20 74 68 65 20 66 75 6c 6c 20 63 68 for the full ch
28f0: 61 6e 67 65 6c 6f 67 2e 26 6c 74 3b 2f 70 26 67 angelog.</p&g
2900: 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 26 6c 74 t;..<p><
2910: 3b 73 74 72 6f 6e 67 26 67 74 3b 42 75 67 73 20 ;strong>Bugs
2920: 66 69 78 65 64 20 69 6e 20 76 65 72 73 69 6f 6e fixed in version
2930: 20 30 2e 37 33 26 6c 74 3b 2f 73 74 72 6f 6e 67 0.73</strong
2940: 26 67 74 3b 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a ></p>..
2950: 26 6c 74 3b 75 6c 26 67 74 3b 0a 20 20 26 6c 74 <ul>. <
2960: 3b 6c 69 26 67 74 3b 26 6c 74 3b 63 6f 64 65 26 ;li><code&
2970: 67 74 3b 65 78 65 63 26 6c 74 3b 2f 63 6f 64 65 gt;exec</code
2980: 26 67 74 3b 20 6f 6e 20 63 79 67 77 69 6e 20 6e > on cygwin n
2990: 6f 77 20 63 6f 72 72 65 63 74 6c 79 20 70 61 73 ow correctly pas
29a0: 73 65 73 20 24 3a 3a 65 6e 76 26 6c 74 3b 2f 6c ses $::env</l
29b0: 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 i>. <li&g
29c0: 74 3b 4f 6e 20 6d 69 6e 67 77 20 61 6e 64 20 63 t;On mingw and c
29d0: 79 67 77 69 6e 2c 20 26 6c 74 3b 63 6f 64 65 26 ygwin, <code&
29e0: 67 74 3b 2d 2d 73 68 61 72 65 64 26 6c 74 3b 2f gt;--shared</
29f0: 63 6f 64 65 26 67 74 3b 20 63 72 65 61 74 65 73 code> creates
2a00: 20 6c 69 62 6a 69 6d 2e 64 6c 6c 20 72 61 74 68 libjim.dll rath
2a10: 65 72 20 74 68 61 6e 20 6c 69 62 6a 69 6d 2e 73 er than libjim.s
2a20: 6f 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 o</li>. &
2a30: 6c 74 3b 6c 69 26 67 74 3b 55 54 46 2d 38 20 63 lt;li>UTF-8 c
2a40: 61 73 65 20 66 6f 6c 64 69 6e 67 20 6d 61 79 20 ase folding may
2a50: 63 68 61 6e 67 65 20 74 68 65 20 65 6e 63 6f 64 change the encod
2a60: 65 64 20 6c 65 6e 67 74 68 26 6c 74 3b 2f 6c 69 ed length</li
2a70: 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 >. <li>
2a80: 3b 46 69 78 20 61 20 26 6c 74 3b 63 6f 64 65 26 ;Fix a <code&
2a90: 67 74 3b 72 65 67 65 78 70 26 6c 74 3b 2f 63 6f gt;regexp</co
2aa0: 64 65 26 67 74 3b 20 69 6e 66 69 6e 69 74 65 20 de> infinite
2ab0: 6c 6f 6f 70 20 6f 6e 20 69 6e 76 61 6c 69 64 20 loop on invalid
2ac0: 55 54 46 2d 38 20 73 74 72 69 6e 67 73 26 6c 74 UTF-8 strings<
2ad0: 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c ;/li>. <l
2ae0: 69 26 67 74 3b 50 72 65 76 65 6e 74 20 69 6e 66 i>Prevent inf
2af0: 69 6e 69 74 65 20 72 65 63 75 72 73 69 6f 6e 20 inite recursion
2b00: 69 6e 20 26 6c 74 3b 63 6f 64 65 26 67 74 3b 65 in <code>e
2b10: 76 61 6c 26 6c 74 3b 2f 63 6f 64 65 26 67 74 3b val</code>
2b20: 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c </li>. &l
2b30: 74 3b 6c 69 26 67 74 3b 44 6f 6e 26 61 6d 70 3b t;li>Don&
2b40: 72 73 71 75 6f 3b 74 20 61 6c 6c 6f 77 20 26 6c rsquo;t allow &l
2b50: 74 3b 63 6f 64 65 26 67 74 3b 75 70 76 61 72 26 t;code>upvar&
2b60: 6c 74 3b 2f 63 6f 64 65 26 67 74 3b 20 74 6f 20 lt;/code> to
2b70: 61 20 68 69 67 68 65 72 20 6c 65 76 65 6c 26 6c a higher level&l
2b80: 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b t;/li>. <
2b90: 6c 69 26 67 74 3b 26 6c 74 3b 63 6f 64 65 26 67 li><code&g
2ba0: 74 3b 72 65 67 65 78 70 26 6c 74 3b 2f 63 6f 64 t;regexp</cod
2bb0: 65 26 67 74 3b 20 63 6f 75 6e 74 65 64 20 6d 61 e> counted ma
2bc0: 74 63 68 65 73 20 6d 61 79 20 62 65 20 77 72 6f tches may be wro
2bd0: 6e 67 20 6f 6e 20 73 75 62 73 65 71 75 65 6e 74 ng on subsequent
2be0: 20 75 73 65 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a use</li>.
2bf0: 20 20 26 6c 74 3b 6c 69 26 67 74 3b 46 6f 72 6d <li>Form
2c00: 20 66 65 65 64 20 28 5c 66 29 20 69 73 20 61 20 feed (\f) is a
2c10: 76 61 6c 69 64 20 77 68 69 74 65 20 73 70 61 63 valid white spac
2c20: 65 20 63 68 61 72 61 63 74 65 72 26 6c 74 3b 2f e character</
2c30: 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 li>. <li&
2c40: 67 74 3b 50 61 72 73 69 6e 67 20 62 75 67 20 66 gt;Parsing bug f
2c50: 6f 72 20 71 75 6f 74 65 64 20 6f 72 70 68 61 6e or quoted orphan
2c60: 20 24 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 $</li>.
2c70: 26 6c 74 3b 6c 69 26 67 74 3b 53 74 61 6e 64 61 <li>Standa
2c80: 72 64 20 68 61 6e 64 6c 65 73 20 77 65 72 65 20 rd handles were
2c90: 6e 6f 74 20 62 65 69 6e 67 20 6b 65 70 74 20 6f not being kept o
2ca0: 70 65 6e 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 pen</li>.
2cb0: 20 26 6c 74 3b 6c 69 26 67 74 3b 46 69 78 20 65 <li>Fix e
2cc0: 64 67 65 20 63 61 73 65 73 20 77 69 74 68 20 26 dge cases with &
2cd0: 6c 74 3b 63 6f 64 65 26 67 74 3b 74 61 69 6c 63 lt;code>tailc
2ce0: 61 6c 6c 26 6c 74 3b 2f 63 6f 64 65 26 67 74 3b all</code>
2cf0: 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 26 6c 74 3b </li>.<
2d00: 2f 75 6c 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 /ul>..<p&g
2d10: 74 3b 26 6c 74 3b 73 74 72 6f 6e 67 26 67 74 3b t;<strong>
2d20: 46 65 61 74 75 72 65 73 20 61 64 64 65 64 20 69 Features added i
2d30: 6e 20 76 65 72 73 69 6f 6e 20 30 2e 37 33 26 6c n version 0.73&l
2d40: 74 3b 2f 73 74 72 6f 6e 67 26 67 74 3b 26 6c 74 t;/strong><
2d50: 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 75 6c 26 ;/p>..<ul&
2d60: 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b gt;. <li>
2d70: 41 64 64 65 64 20 73 75 70 70 6f 72 74 20 66 6f Added support fo
2d80: 72 20 6e 61 6d 65 73 70 61 63 65 73 20 61 6e 64 r namespaces and
2d90: 20 74 68 65 20 26 6c 74 3b 63 6f 64 65 26 67 74 the <code>
2da0: 3b 6e 61 6d 65 73 70 61 63 65 26 6c 74 3b 2f 63 ;namespace</c
2db0: 6f 64 65 26 67 74 3b 20 63 6f 6d 6d 61 6e 64 26 ode> command&
2dc0: 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 lt;/li>. <
2dd0: 3b 6c 69 26 67 74 3b 54 68 65 20 26 61 6d 70 3b ;li>The &
2de0: 6c 64 71 75 6f 3b 66 75 6c 6c 26 61 6d 70 3b 72 ldquo;full&r
2df0: 64 71 75 6f 3b 20 73 71 6c 69 74 65 33 20 65 78 dquo; sqlite3 ex
2e00: 74 65 6e 73 69 6f 6e 20 69 73 20 69 6e 63 6c 75 tension is inclu
2e10: 64 65 64 20 69 6e 20 74 68 65 20 72 65 70 6f 26 ded in the repo&
2e20: 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 lt;/li>. <
2e30: 3b 6c 69 26 67 74 3b 42 75 69 6c 74 2d 69 6e 20 ;li>Built-in
2e40: 72 65 67 65 78 70 20 6e 6f 77 20 73 75 70 70 6f regexp now suppo
2e50: 72 74 20 6e 6f 6e 2d 63 61 70 74 75 72 69 6e 67 rt non-capturing
2e60: 20 70 61 72 65 6e 74 68 65 73 65 73 3a 20 26 6c parentheses: &l
2e70: 74 3b 63 6f 64 65 26 67 74 3b 28 3f 3a 2e 2e 2e t;code>(?:...
2e80: 29 26 6c 74 3b 2f 63 6f 64 65 26 67 74 3b 26 6c )</code>&l
2e90: 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b t;/li>. <
2ea0: 6c 69 26 67 74 3b 41 64 64 65 64 20 26 6c 74 3b li>Added <
2eb0: 63 6f 64 65 26 67 74 3b 73 74 72 69 6e 67 20 72 code>string r
2ec0: 65 70 6c 61 63 65 26 6c 74 3b 2f 63 6f 64 65 26 eplace</code&
2ed0: 67 74 3b 20 61 6e 64 20 26 6c 74 3b 63 6f 64 65 gt; and <code
2ee0: 26 67 74 3b 73 74 72 69 6e 67 20 74 6f 74 69 74 >string totit
2ef0: 6c 65 26 6c 74 3b 2f 63 6f 64 65 26 67 74 3b 26 le</code>&
2f00: 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 lt;/li>. <
2f10: 3b 6c 69 26 67 74 3b 41 64 64 65 64 20 26 6c 74 ;li>Added <
2f20: 3b 63 6f 64 65 26 67 74 3b 69 6e 66 6f 20 73 74 ;code>info st
2f30: 61 74 69 63 73 26 6c 74 3b 2f 63 6f 64 65 26 67 atics</code&g
2f40: 74 3b 20 74 6f 20 61 63 63 65 73 73 20 70 72 6f t; to access pro
2f50: 63 20 73 74 61 74 69 63 20 76 61 72 69 61 62 6c c static variabl
2f60: 65 73 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 es</li>.
2f70: 26 6c 74 3b 6c 69 26 67 74 3b 41 64 64 65 64 20 <li>Added
2f80: 26 6c 74 3b 63 6f 64 65 26 67 74 3b 69 6e 66 6f <code>info
2f90: 20 61 6c 69 61 73 26 6c 74 3b 2f 63 6f 64 65 26 alias</code&
2fa0: 67 74 3b 20 74 6f 20 61 63 63 65 73 73 20 74 68 gt; to access th
2fb0: 65 20 74 61 72 67 65 74 20 6f 66 20 61 6e 20 61 e target of an a
2fc0: 6c 69 61 73 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a lias</li>.
2fd0: 20 20 26 6c 74 3b 6c 69 26 67 74 3b 41 64 64 65 <li>Adde
2fe0: 64 20 26 6c 74 3b 63 6f 64 65 26 67 74 3b 62 75 d <code>bu
2ff0: 69 6c 64 2d 6a 69 6d 2d 65 78 74 26 6c 74 3b 2f ild-jim-ext</
3000: 63 6f 64 65 26 67 74 3b 20 66 6f 72 20 65 61 73 code> for eas
3010: 79 20 73 65 70 61 72 61 74 65 20 62 75 69 6c 64 y separate build
3020: 69 6e 67 20 6f 66 20 6c 6f 61 64 61 62 6c 65 20 ing of loadable
3030: 6d 6f 64 75 6c 65 73 20 28 65 78 74 65 6e 73 69 modules (extensi
3040: 6f 6e 73 29 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a ons)</li>.
3050: 20 20 26 6c 74 3b 6c 69 26 67 74 3b 26 6c 74 3b <li><
3060: 63 6f 64 65 26 67 74 3b 6c 6f 63 61 6c 26 6c 74 code>local<
3070: 3b 2f 63 6f 64 65 26 67 74 3b 20 6e 6f 77 20 77 ;/code> now w
3080: 6f 72 6b 73 20 77 69 74 68 20 61 6e 79 20 63 6f orks with any co
3090: 6d 6d 61 6e 64 2c 20 6e 6f 74 20 6a 75 73 74 20 mmand, not just
30a0: 70 72 6f 63 73 26 6c 74 3b 2f 6c 69 26 67 74 3b procs</li>
30b0: 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b 55 54 46 . <li>UTF
30c0: 2d 38 20 65 6e 63 6f 64 69 6e 67 20 70 61 73 74 -8 encoding past
30d0: 20 74 68 65 20 62 61 73 69 63 20 6d 75 6c 74 69 the basic multi
30e0: 6c 69 6e 67 75 61 6c 20 70 6c 61 6e 65 20 28 42 lingual plane (B
30f0: 4d 50 29 20 69 73 20 73 75 70 70 6f 72 74 65 64 MP) is supported
3100: 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c </li>. &l
3110: 74 3b 6c 69 26 67 74 3b 41 64 64 65 64 20 26 6c t;li>Added &l
3120: 74 3b 63 6f 64 65 26 67 74 3b 74 63 6c 3a 3a 70 t;code>tcl::p
3130: 72 65 66 69 78 26 6c 74 3b 2f 63 6f 64 65 26 67 refix</code&g
3140: 74 3b 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 t;</li>.
3150: 26 6c 74 3b 6c 69 26 67 74 3b 41 64 64 65 64 20 <li>Added
3160: 74 68 65 20 26 6c 74 3b 63 6f 64 65 26 67 74 3b the <code>
3170: 68 69 73 74 6f 72 79 26 6c 74 3b 2f 63 6f 64 65 history</code
3180: 26 67 74 3b 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 > command to
3190: 61 63 63 65 73 73 20 63 6f 6d 6d 61 6e 64 20 6c access command l
31a0: 69 6e 65 20 65 64 69 74 69 6e 67 20 61 6e 64 20 ine editing and
31b0: 68 69 73 74 6f 72 79 20 66 72 6f 6d 20 73 63 72 history from scr
31c0: 69 70 74 73 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a ipts</li>.
31d0: 20 20 26 6c 74 3b 6c 69 26 67 74 3b 41 64 64 65 <li>Adde
31e0: 64 20 61 20 54 63 6c 2d 63 6f 6d 70 61 74 69 62 d a Tcl-compatib
31f0: 6c 65 20 26 6c 74 3b 63 6f 64 65 26 67 74 3b 61 le <code>a
3200: 70 70 6c 79 26 6c 74 3b 2f 63 6f 64 65 26 67 74 pply</code>
3210: 3b 20 63 6f 6d 6d 61 6e 64 26 6c 74 3b 2f 6c 69 ; command</li
3220: 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 >. <li>
3230: 3b 4d 6f 73 74 20 65 78 74 65 6e 73 69 6f 6e 73 ;Most extensions
3240: 20 61 72 65 20 6e 6f 77 20 65 6e 61 62 6c 65 64 are now enabled
3250: 20 62 79 20 64 65 66 61 75 6c 74 26 6c 74 3b 2f by default</
3260: 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 li>. <li&
3270: 67 74 3b 4a 69 6d 20 54 63 6c 20 6e 6f 77 20 63 gt;Jim Tcl now c
3280: 6f 6d 70 69 6c 65 73 20 77 69 74 68 20 4d 53 56 ompiles with MSV
3290: 43 20 6f 6e 20 57 69 6e 64 6f 77 73 20 28 62 75 C on Windows (bu
32a0: 74 20 6e 6f 20 62 75 69 6c 64 20 73 75 70 70 6f t no build suppo
32b0: 72 74 29 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 26 rt)</li>.&
32c0: 6c 74 3b 2f 75 6c 26 67 74 3b 0a 0a 26 6c 74 3b lt;/ul>..<
32d0: 70 26 67 74 3b 53 74 65 76 65 20 42 65 6e 6e 65 p>Steve Benne
32e0: 74 74 20 28 26 6c 74 3b 61 20 68 72 65 66 3d 22 tt (<a href="
32f0: 26 61 6d 70 3b 23 31 30 39 3b 26 61 6d 70 3b 23 &#109;&#
3300: 30 39 37 3b 26 61 6d 70 3b 23 31 30 35 3b 26 61 097;&#105;&a
3310: 6d 70 3b 23 31 30 38 3b 26 61 6d 70 3b 23 31 31 mp;#108;&#11
3320: 36 3b 26 61 6d 70 3b 23 31 31 31 3b 3a 26 61 6d 6;&#111;:&am
3330: 70 3b 23 31 31 35 3b 26 61 6d 70 3b 23 31 31 36 p;#115;&#116
3340: 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b ;&#101;&
3350: 23 31 31 38 3b 26 61 6d 70 3b 23 31 30 31 3b 26 #118;&#101;&
3360: 61 6d 70 3b 23 30 39 38 3b 26 61 6d 70 3b 23 30 amp;#098;&#0
3370: 36 34 3b 26 61 6d 70 3b 23 31 31 39 3b 26 61 6d 64;&#119;&am
3380: 70 3b 23 31 31 31 3b 26 61 6d 70 3b 23 31 31 34 p;#111;&#114
3390: 3b 26 61 6d 70 3b 23 31 30 37 3b 26 61 6d 70 3b ;&#107;&
33a0: 23 31 31 39 3b 26 61 6d 70 3b 23 30 39 37 3b 26 #119;&#097;&
33b0: 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 3b 23 31 amp;#114;&#1
33c0: 30 31 3b 26 61 6d 70 3b 23 30 34 36 3b 26 61 6d 01;&#046;&am
33d0: 70 3b 23 31 31 30 3b 26 61 6d 70 3b 23 31 30 31 p;#110;&#101
33e0: 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 3b ;&#116;&
33f0: 23 30 34 36 3b 26 61 6d 70 3b 23 30 39 37 3b 26 #046;&#097;&
3400: 61 6d 70 3b 23 31 31 37 3b 22 26 67 74 3b 26 61 amp;#117;">&a
3410: 6d 70 3b 23 31 31 35 3b 26 61 6d 70 3b 23 31 31 mp;#115;&#11
3420: 36 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 6;&#101;&
3430: 3b 23 31 31 38 3b 26 61 6d 70 3b 23 31 30 31 3b ;#118;&#101;
3440: 26 61 6d 70 3b 23 30 39 38 3b 26 61 6d 70 3b 23 &#098;&#
3450: 30 36 34 3b 26 61 6d 70 3b 23 31 31 39 3b 26 61 064;&#119;&a
3460: 6d 70 3b 23 31 31 31 3b 26 61 6d 70 3b 23 31 31 mp;#111;&#11
3470: 34 3b 26 61 6d 70 3b 23 31 30 37 3b 26 61 6d 70 4;&#107;&
3480: 3b 23 31 31 39 3b 26 61 6d 70 3b 23 30 39 37 3b ;#119;&#097;
3490: 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 3b 23 &#114;&#
34a0: 31 30 31 3b 26 61 6d 70 3b 23 30 34 36 3b 26 61 101;&#046;&a
34b0: 6d 70 3b 23 31 31 30 3b 26 61 6d 70 3b 23 31 30 mp;#110;&#10
34c0: 31 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 1;&#116;&
34d0: 3b 23 30 34 36 3b 26 61 6d 70 3b 23 30 39 37 3b ;#046;&#097;
34e0: 26 61 6d 70 3b 23 31 31 37 3b 26 6c 74 3b 2f 61 &#117;</a
34f0: 26 67 74 3b 29 26 6c 74 3b 2f 70 26 67 74 3b 0a >)</p>.
3500: 3c 2f 63 6f 6e 74 65 6e 74 3e 0a 20 20 3c 2f 65 </content>. </e
3510: 6e 74 72 79 3e 0a 20 20 3c 65 6e 74 72 79 3e 0a ntry>. <entry>.
3520: 20 20 20 20 3c 69 64 3e 74 61 67 3a 6a 69 6d 2e <id>tag:jim.
3530: 62 65 72 6c 69 6f 73 2e 64 65 2c 32 30 31 31 2d berlios.de,2011-
3540: 31 32 2d 31 35 3a 2f 61 72 74 69 63 6c 65 73 2f 12-15:/articles/
3550: 6c 69 67 68 74 2d 77 65 69 67 68 74 2d 6e 61 6d light-weight-nam
3560: 65 73 70 61 63 65 73 2f 3c 2f 69 64 3e 0a 20 20 espaces/</id>.
3570: 20 20 3c 74 69 74 6c 65 20 74 79 70 65 3d 22 68 <title type="h
3580: 74 6d 6c 22 3e 4c 69 67 68 74 77 65 69 67 68 74 tml">Lightweight
3590: 20 4e 61 6d 65 73 70 61 63 65 73 3c 2f 74 69 74 Namespaces</tit
35a0: 6c 65 3e 0a 20 20 20 20 3c 70 75 62 6c 69 73 68 le>. <publish
35b0: 65 64 3e 32 30 31 31 2d 31 32 2d 31 34 54 31 34 ed>2011-12-14T14
35c0: 3a 30 30 3a 30 30 5a 3c 2f 70 75 62 6c 69 73 68 :00:00Z</publish
35d0: 65 64 3e 0a 20 20 20 20 3c 75 70 64 61 74 65 64 ed>. <updated
35e0: 3e 32 30 31 31 2d 31 32 2d 31 34 54 31 34 3a 30 >2011-12-14T14:0
35f0: 30 3a 30 30 5a 3c 2f 75 70 64 61 74 65 64 3e 0a 0:00Z</updated>.
3600: 20 20 20 20 3c 6c 69 6e 6b 20 72 65 6c 3d 22 61 <link rel="a
3610: 6c 74 65 72 6e 61 74 65 22 20 68 72 65 66 3d 22 lternate" href="
3620: 68 74 74 70 3a 2f 2f 6a 69 6d 2e 62 65 72 6c 69 http://jim.berli
3630: 6f 73 2e 64 65 2f 61 72 74 69 63 6c 65 73 2f 6c os.de/articles/l
3640: 69 67 68 74 2d 77 65 69 67 68 74 2d 6e 61 6d 65 ight-weight-name
3650: 73 70 61 63 65 73 2f 22 2f 3e 0a 20 20 20 20 3c spaces/"/>. <
3660: 63 6f 6e 74 65 6e 74 20 74 79 70 65 3d 22 68 74 content type="ht
3670: 6d 6c 22 3e 26 6c 74 3b 70 26 67 74 3b 4e 65 77 ml"><p>New
3680: 20 69 6e 20 4a 69 6d 20 54 63 6c 20 76 30 2e 37 in Jim Tcl v0.7
3690: 33 20 69 73 20 28 6f 70 74 69 6f 6e 61 6c 29 20 3 is (optional)
36a0: 73 75 70 70 6f 72 74 20 66 6f 72 20 6e 61 6d 65 support for name
36b0: 73 70 61 63 65 73 2e 26 6c 74 3b 2f 70 26 67 74 spaces.</p>
36c0: 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 54 68 65 20 ;..<p>The
36d0: 66 6f 6c 6c 6f 77 69 6e 67 20 69 73 20 74 61 6b following is tak
36e0: 65 6e 20 64 69 72 65 63 74 6c 79 20 66 72 6f 6d en directly from
36f0: 20 52 45 41 44 4d 45 2e 6e 61 6d 65 73 70 61 63 README.namespac
3700: 65 73 20 69 6e 20 74 68 65 20 4a 69 6d 20 54 63 es in the Jim Tc
3710: 6c 20 72 65 70 6f 73 69 74 6f 72 79 2e 26 6c 74 l repository.<
3720: 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 68 72 20 ;/p>..<hr
3730: 2f 26 67 74 3b 0a 0a 26 6c 74 3b 68 31 20 69 64 />..<h1 id
3740: 3d 22 6c 69 67 68 74 77 65 69 67 68 74 2d 6e 61 ="lightweight-na
3750: 6d 65 73 70 61 63 65 73 2d 66 6f 72 2d 6a 69 6d mespaces-for-jim
3760: 2d 74 63 6c 22 26 67 74 3b 4c 69 67 68 74 77 65 -tcl">Lightwe
3770: 69 67 68 74 20 4e 61 6d 65 73 70 61 63 65 73 20 ight Namespaces
3780: 66 6f 72 20 4a 69 6d 20 54 63 6c 26 6c 74 3b 2f for Jim Tcl</
3790: 68 31 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 h1>..<p>
37a0: 3b 54 68 65 72 65 20 61 72 65 20 74 77 6f 20 62 ;There are two b
37b0: 72 6f 61 64 20 72 65 71 75 69 72 65 6d 65 6e 74 road requirement
37c0: 73 20 66 6f 72 20 6e 61 6d 65 73 70 61 63 65 20 s for namespace
37d0: 73 75 70 70 6f 72 74 20 69 6e 20 4a 69 6d 20 54 support in Jim T
37e0: 63 6c 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 cl.</p>..&
37f0: 6c 74 3b 75 6c 26 67 74 3b 0a 20 20 26 6c 74 3b lt;ul>. <
3800: 6c 69 26 67 74 3b 28 31 29 20 54 6f 20 61 6c 6c li>(1) To all
3810: 6f 77 20 63 6f 64 65 20 66 72 6f 6d 20 6d 75 6c ow code from mul
3820: 74 69 70 6c 65 20 73 6f 75 72 63 65 73 20 77 68 tiple sources wh
3830: 69 6c 65 20 72 65 64 75 63 69 6e 67 20 74 68 65 ile reducing the
3840: 20 63 68 61 6e 63 65 20 6f 66 20 6e 61 6d 65 20 chance of name
3850: 63 6c 61 73 68 65 73 26 6c 74 3b 2f 6c 69 26 67 clashes</li&g
3860: 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b 28 t;. <li>(
3870: 32 29 20 54 6f 20 73 69 6d 70 6c 69 66 79 20 70 2) To simplify p
3880: 6f 72 74 69 6e 67 20 65 78 69 73 74 69 6e 67 20 orting existing
3890: 54 63 6c 20 63 6f 64 65 20 77 68 69 63 68 20 75 Tcl code which u
38a0: 73 65 73 20 6e 61 6d 65 73 70 61 63 65 73 26 6c ses namespaces&l
38b0: 74 3b 2f 6c 69 26 67 74 3b 0a 26 6c 74 3b 2f 75 t;/li>.</u
38c0: 6c 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b l>..<p>
38d0: 54 68 69 73 20 70 72 6f 70 6f 73 61 6c 20 61 64 This proposal ad
38e0: 64 72 65 73 73 65 73 20 62 6f 74 68 20 6f 66 20 dresses both of
38f0: 74 68 65 73 65 20 72 65 71 75 69 72 65 6d 65 6e these requiremen
3900: 74 73 2c 20 77 69 74 68 20 74 68 65 20 66 6f 6c ts, with the fol
3910: 6c 6f 77 69 6e 67 0a 61 64 64 69 74 69 6f 6e 61 lowing.additiona
3920: 6c 20 72 65 71 75 69 72 65 6d 65 6e 74 73 20 69 l requirements i
3930: 6d 70 6f 73 65 64 20 62 79 20 4a 69 6d 20 54 63 mposed by Jim Tc
3940: 6c 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c l.</p>..&l
3950: 74 3b 75 6c 26 67 74 3b 0a 20 20 26 6c 74 3b 6c t;ul>. <l
3960: 69 26 67 74 3b 28 33 29 20 53 75 70 70 6f 72 74 i>(3) Support
3970: 20 66 6f 72 20 6e 61 6d 65 73 70 61 63 65 73 20 for namespaces
3980: 73 68 6f 75 6c 64 20 62 65 20 6f 70 74 69 6f 6e should be option
3990: 61 6c 2c 20 77 69 74 68 20 74 68 65 20 73 70 61 al, with the spa
39a0: 63 65 20 61 6e 64 20 74 69 6d 65 20 6f 76 65 72 ce and time over
39b0: 68 65 61 64 0a 20 77 68 65 6e 20 6e 61 6d 65 73 head. when names
39c0: 70 61 63 65 73 20 61 72 65 20 64 69 73 61 62 6c paces are disabl
39d0: 65 64 20 61 73 20 63 6c 6f 73 65 20 74 6f 20 7a ed as close to z
39e0: 65 72 6f 20 61 73 20 70 6f 73 73 69 62 6c 65 2e ero as possible.
39f0: 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c </li>. &l
3a00: 74 3b 6c 69 26 67 74 3b 28 34 29 20 54 68 65 20 t;li>(4) The
3a10: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 73 implementation s
3a20: 68 6f 75 6c 64 20 62 65 20 73 6d 61 6c 6c 20 61 hould be small a
3a30: 6e 64 20 72 65 61 73 6f 6e 61 62 6c 79 20 65 66 nd reasonably ef
3a40: 66 69 63 69 65 6e 74 2e 26 6c 74 3b 2f 6c 69 26 ficient.</li&
3a50: 67 74 3b 0a 26 6c 74 3b 2f 75 6c 26 67 74 3b 0a gt;.</ul>.
3a60: 0a 26 6c 74 3b 70 26 67 74 3b 54 6f 20 66 75 72 .<p>To fur
3a70: 74 68 65 72 20 65 78 70 61 6e 64 20 6f 6e 20 72 ther expand on r
3a80: 65 71 75 69 72 65 6d 65 6e 74 20 28 32 29 2c 20 equirement (2),
3a90: 74 68 65 20 67 6f 61 6c 20 69 73 20 6e 6f 74 20 the goal is not
3aa0: 74 6f 20 62 65 20 61 62 6c 65 20 74 6f 20 72 75 to be able to ru
3ab0: 6e 0a 61 6e 79 20 54 63 6c 20 73 63 72 69 70 74 n.any Tcl script
3ac0: 73 20 75 73 69 6e 67 20 6e 61 6d 65 73 70 61 63 s using namespac
3ad0: 65 73 20 77 69 74 68 20 6e 6f 20 63 68 61 6e 67 es with no chang
3ae0: 65 73 2e 20 52 61 74 68 65 72 2c 20 73 63 72 69 es. Rather, scri
3af0: 70 74 73 0a 77 68 69 63 68 20 75 73 65 20 6e 61 pts.which use na
3b00: 6d 65 73 70 61 63 65 73 20 69 6e 20 61 20 73 74 mespaces in a st
3b10: 72 61 69 67 68 74 66 6f 72 77 61 72 64 20 6d 61 raightforward ma
3b20: 6e 6e 65 72 2c 20 73 68 6f 75 6c 64 20 62 65 20 nner, should be
3b30: 65 61 73 69 6c 79 0a 70 6f 72 74 65 64 20 77 69 easily.ported wi
3b40: 74 68 20 63 68 61 6e 67 65 73 20 77 68 69 63 68 th changes which
3b50: 20 61 72 65 20 63 6f 6d 70 61 74 69 62 6c 65 20 are compatible
3b60: 77 69 74 68 20 54 63 6c 2e 26 6c 74 3b 2f 70 26 with Tcl.</p&
3b70: 67 74 3b 0a 0a 26 6c 74 3b 68 32 20 69 64 3d 22 gt;..<h2 id="
3b80: 69 6d 70 6c 69 63 69 74 2d 6e 61 6d 65 73 70 61 implicit-namespa
3b90: 63 65 73 22 26 67 74 3b 49 6d 70 6c 69 63 69 74 ces">Implicit
3ba0: 20 6e 61 6d 65 73 70 61 63 65 73 26 6c 74 3b 2f namespaces</
3bb0: 68 32 26 67 74 3b 0a 26 6c 74 3b 70 26 67 74 3b h2>.<p>
3bc0: 52 61 74 68 65 72 20 74 68 61 6e 20 73 75 70 70 Rather than supp
3bd0: 6f 72 74 69 6e 67 20 65 78 70 6c 69 63 69 74 20 orting explicit
3be0: 6e 61 6d 65 73 70 61 63 65 73 20 61 73 20 54 63 namespaces as Tc
3bf0: 6c 20 64 6f 65 73 2c 20 4a 69 6d 20 54 63 6c 0a l does, Jim Tcl.
3c00: 73 75 70 70 6f 72 74 73 20 69 6d 70 6c 69 63 69 supports implici
3c10: 74 20 6e 61 6d 65 73 70 61 63 65 73 2e 20 41 6e t namespaces. An
3c20: 79 20 70 72 6f 63 65 64 75 72 65 20 6f 72 20 76 y procedure or v
3c30: 61 72 69 61 62 6c 65 20 77 68 69 63 68 0a 69 73 ariable which.is
3c40: 20 64 65 66 69 6e 65 64 20 77 69 74 68 20 61 20 defined with a
3c50: 6e 61 6d 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 name containing
3c60: 3a 3a 2c 20 69 73 20 69 6d 70 6c 69 63 69 74 6c ::, is implicitl
3c70: 79 20 73 63 6f 70 65 64 20 77 69 74 68 69 6e 0a y scoped within.
3c80: 61 20 6e 61 6d 65 73 70 61 63 65 2e 26 6c 74 3b a namespace.<
3c90: 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 /p>..<p>
3ca0: 3b 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 ;For example, th
3cb0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 72 6f 63 e following proc
3cc0: 65 64 75 72 65 20 61 6e 64 20 76 61 72 69 61 62 edure and variab
3cd0: 6c 65 20 61 72 65 20 63 72 65 61 74 65 64 0a 69 le are created.i
3ce0: 6e 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 n the namespace
3cf0: 26 61 6d 70 3b 6c 73 71 75 6f 3b 74 65 73 74 26 &lsquo;test&
3d00: 61 6d 70 3b 72 73 71 75 6f 3b 26 6c 74 3b 2f 70 amp;rsquo;</p
3d10: 26 67 74 3b 0a 0a 26 6c 74 3b 70 72 65 20 63 6c >..<pre cl
3d20: 61 73 73 3d 22 73 68 5f 74 63 6c 22 26 67 74 3b ass="sh_tcl">
3d30: 0a 70 72 6f 63 20 3a 3a 74 65 73 74 3a 3a 6d 79 .proc ::test::my
3d40: 70 72 6f 63 20 7b 7d 20 7b 0a 20 20 70 75 74 73 proc {} {. puts
3d50: 20 22 49 20 61 6d 20 69 6e 20 6e 61 6d 65 73 70 "I am in namesp
3d60: 61 63 65 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 ace [namespace c
3d70: 75 72 72 65 6e 74 5d 22 0a 7d 0a 73 65 74 20 3a urrent]".}.set :
3d80: 3a 74 65 73 74 3a 3a 6d 79 76 61 72 20 33 0a 26 :test::myvar 3.&
3d90: 6c 74 3b 2f 70 72 65 26 67 74 3b 0a 0a 26 6c 74 lt;/pre>..<
3da0: 3b 70 26 67 74 3b 54 68 69 73 20 61 70 70 72 6f ;p>This appro
3db0: 61 63 68 20 61 6c 6c 6f 77 73 20 6d 75 63 68 20 ach allows much
3dc0: 6f 66 20 74 68 65 20 65 78 69 73 74 69 6e 67 20 of the existing
3dd0: 76 61 72 69 61 62 6c 65 20 61 6e 64 20 63 6f 6d variable and com
3de0: 6d 61 6e 64 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 mand.resolution
3df0: 6d 61 63 68 69 6e 65 72 79 20 74 6f 20 62 65 20 machinery to be
3e00: 75 73 65 64 20 77 69 74 68 20 6c 69 74 74 6c 65 used with little
3e10: 20 63 68 61 6e 67 65 2e 20 49 74 20 61 6c 73 6f change. It also
3e20: 20 6d 65 61 6e 73 0a 74 68 61 74 20 69 74 20 69 means.that it i
3e30: 73 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 73 69 s possible to si
3e40: 6d 70 6c 79 20 64 65 66 69 6e 65 20 61 20 6e 61 mply define a na
3e50: 6d 65 73 70 61 63 65 2d 73 63 6f 70 65 64 20 76 mespace-scoped v
3e60: 61 72 69 61 62 6c 65 0a 6f 72 20 70 72 6f 63 65 ariable.or proce
3e70: 64 75 72 65 20 77 69 74 68 6f 75 74 20 66 69 72 dure without fir
3e80: 73 74 20 63 72 65 61 74 69 6e 67 20 74 68 65 20 st creating the
3e90: 6e 61 6d 65 73 70 61 63 65 2c 20 61 6e 64 20 73 namespace, and s
3ea0: 69 6d 69 6c 61 72 6c 79 2c 0a 6e 61 6d 65 73 70 imilarly,.namesp
3eb0: 61 63 65 73 20 26 61 6d 70 3b 6c 64 71 75 6f 3b aces &ldquo;
3ec0: 64 69 73 61 70 70 65 61 72 26 61 6d 70 3b 72 64 disappear&rd
3ed0: 71 75 6f 3b 20 77 68 65 6e 20 61 6c 6c 20 76 61 quo; when all va
3ee0: 72 69 61 62 6c 65 73 20 61 6e 64 20 70 72 6f 63 riables and proc
3ef0: 65 64 75 72 65 73 20 64 65 66 69 6e 65 64 0a 77 edures defined.w
3f00: 69 74 68 20 74 68 65 20 6e 61 6d 65 73 70 61 63 ith the namespac
3f10: 65 20 73 63 6f 70 65 20 61 72 65 20 64 65 6c 65 e scope are dele
3f20: 74 65 64 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a ted.</p>..
3f30: 26 6c 74 3b 68 32 20 69 64 3d 22 6e 61 6d 65 73 <h2 id="names
3f40: 70 61 63 65 73 2d 70 72 6f 63 65 64 75 72 65 73 paces-procedures
3f50: 2d 61 6e 64 2d 63 61 6c 6c 2d 66 72 61 6d 65 73 -and-call-frames
3f60: 22 26 67 74 3b 4e 61 6d 65 73 70 61 63 65 73 2c ">Namespaces,
3f70: 20 70 72 6f 63 65 64 75 72 65 73 20 61 6e 64 20 procedures and
3f80: 63 61 6c 6c 20 66 72 61 6d 65 73 26 6c 74 3b 2f call frames</
3f90: 68 32 26 67 74 3b 0a 26 6c 74 3b 70 26 67 74 3b h2>.<p>
3fa0: 57 68 65 6e 20 6e 61 6d 65 73 70 61 63 65 20 73 When namespace s
3fb0: 75 70 70 6f 72 74 20 69 73 20 65 6e 61 62 6c 65 upport is enable
3fc0: 64 20 28 61 74 20 62 75 69 6c 64 20 74 69 6d 65 d (at build time
3fd0: 29 2c 20 65 61 63 68 20 70 72 6f 63 65 64 75 72 ), each procedur
3fe0: 65 20 68 61 73 20 61 6e 20 61 73 73 6f 63 69 61 e has an associa
3ff0: 74 65 64 0a 6e 61 6d 65 73 70 61 63 65 20 28 62 ted.namespace (b
4000: 61 73 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 63 ased on the proc
4010: 65 64 75 72 65 20 6e 61 6d 65 29 2e 20 57 68 65 edure name). Whe
4020: 6e 20 74 68 65 20 70 72 6f 63 65 64 75 72 65 20 n the procedure
4030: 69 73 20 65 76 61 6c 75 61 74 65 64 2c 0a 74 68 is evaluated,.th
4040: 65 20 6e 61 6d 65 73 70 61 63 65 20 66 6f 72 20 e namespace for
4050: 74 68 65 20 63 72 65 61 74 65 64 20 63 61 6c 6c the created call
4060: 20 66 72 61 6d 65 20 69 73 20 73 65 74 20 74 6f frame is set to
4070: 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 61 the namespace a
4080: 73 73 6f 63 69 61 74 65 64 0a 77 69 74 68 20 74 ssociated.with t
4090: 68 65 20 70 72 6f 63 65 64 75 72 65 2e 26 6c 74 he procedure.<
40a0: 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 ;/p>..<p&g
40b0: 74 3b 43 6f 6d 6d 61 6e 64 20 72 65 73 6f 6c 75 t;Command resolu
40c0: 74 69 6f 6e 20 69 73 20 62 61 73 65 64 20 6f 6e tion is based on
40d0: 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 6f the namespace o
40e0: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 61 f the current ca
40f0: 6c 6c 20 66 72 61 6d 65 2e 0a 41 6e 20 75 6e 73 ll frame..An uns
4100: 63 6f 70 65 64 20 63 6f 6d 6d 61 6e 64 20 6e 61 coped command na
4110: 6d 65 20 77 69 6c 6c 20 66 69 72 73 74 20 62 65 me will first be
4120: 20 6c 6f 6f 6b 65 64 20 75 70 20 69 6e 20 74 68 looked up in th
4130: 65 20 63 75 72 72 65 6e 74 20 6e 61 6d 65 73 70 e current namesp
4140: 61 63 65 2c 0a 61 6e 64 20 74 68 65 6e 20 69 6e ace,.and then in
4150: 20 74 68 65 20 67 6c 6f 62 61 6c 20 6e 61 6d 65 the global name
4160: 73 70 61 63 65 2e 26 6c 74 3b 2f 70 26 67 74 3b space.</p>
4170: 0a 0a 26 6c 74 3b 70 26 67 74 3b 54 68 69 73 20 ..<p>This
4180: 61 6c 73 6f 20 6d 65 61 6e 73 20 74 68 61 74 20 also means that
4190: 63 6f 6d 6d 61 6e 64 73 20 77 68 69 63 68 20 64 commands which d
41a0: 6f 20 6e 6f 74 20 63 72 65 61 74 65 20 61 20 63 o not create a c
41b0: 61 6c 6c 20 66 72 61 6d 65 20 28 73 75 63 68 20 all frame (such
41c0: 61 73 20 63 6f 6d 6d 61 6e 64 73 0a 69 6d 70 6c as commands.impl
41d0: 65 6d 65 6e 74 65 64 20 69 6e 20 43 29 20 64 6f emented in C) do
41e0: 20 6e 6f 74 20 68 61 76 65 20 61 6e 20 61 73 73 not have an ass
41f0: 6f 63 69 61 74 65 64 20 6e 61 6d 65 73 70 61 63 ociated namespac
4200: 65 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c e.</p>..&l
4210: 74 3b 70 26 67 74 3b 53 69 6d 69 6c 61 72 6c 79 t;p>Similarly
4220: 20 74 6f 20 54 63 6c 2c 20 6e 61 6d 65 73 70 61 to Tcl, namespa
4230: 63 65 20 65 76 61 6c 20 69 6e 74 72 6f 64 75 63 ce eval introduc
4240: 65 73 20 61 20 74 65 6d 70 6f 72 61 72 79 2c 20 es a temporary,
4250: 61 6e 6f 6e 79 6d 6f 75 73 0a 63 61 6c 6c 20 66 anonymous.call f
4260: 72 61 6d 65 20 77 69 74 68 20 74 68 65 20 61 73 rame with the as
4270: 73 6f 63 69 61 74 65 64 20 6e 61 6d 65 73 70 61 sociated namespa
4280: 63 65 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c ce. For example,
4290: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 77 the following.w
42a0: 69 6c 6c 20 72 65 74 75 72 6e 20 26 61 6d 70 3b ill return &
42b0: 6c 64 71 75 6f 3b 3a 3a 74 65 73 74 2c 31 26 61 ldquo;::test,1&a
42c0: 6d 70 3b 72 64 71 75 6f 3b 2e 26 6c 74 3b 2f 70 mp;rdquo;.</p
42d0: 26 67 74 3b 0a 0a 26 6c 74 3b 70 72 65 20 63 6c >..<pre cl
42e0: 61 73 73 3d 22 73 68 5f 74 63 6c 22 26 67 74 3b ass="sh_tcl">
42f0: 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 .namespace eval
4300: 74 65 73 74 20 7b 0a 09 70 75 74 73 20 5b 6e 61 test {..puts [na
4310: 6d 65 73 70 61 63 65 20 63 75 72 72 65 6e 74 5d mespace current]
4320: 2c 5b 69 6e 66 6f 20 6c 65 76 65 6c 5d 0a 7d 0a ,[info level].}.
4330: 26 6c 74 3b 2f 70 72 65 26 67 74 3b 0a 0a 26 6c </pre>..&l
4340: 74 3b 68 32 20 69 64 3d 22 76 61 72 69 61 62 6c t;h2 id="variabl
4350: 65 2d 72 65 73 6f 6c 75 74 69 6f 6e 22 26 67 74 e-resolution">
4360: 3b 56 61 72 69 61 62 6c 65 20 72 65 73 6f 6c 75 ;Variable resolu
4370: 74 69 6f 6e 26 6c 74 3b 2f 68 32 26 67 74 3b 0a tion</h2>.
4380: 26 6c 74 3b 70 26 67 74 3b 54 68 65 20 76 61 72 <p>The var
4390: 69 61 62 6c 65 20 63 6f 6d 6d 61 6e 64 20 69 6e iable command in
43a0: 20 4a 69 6d 20 54 63 6c 20 68 61 73 20 74 68 65 Jim Tcl has the
43b0: 20 73 61 6d 65 20 73 79 6e 74 61 78 20 61 73 20 same syntax as
43c0: 54 63 6c 2c 20 62 75 74 20 69 73 20 63 6c 6f 73 Tcl, but is clos
43d0: 65 72 20 69 6e 20 62 65 68 61 76 69 6f 75 72 20 er in behaviour
43e0: 74 6f 20 74 68 65 20 67 6c 6f 62 61 6c 20 63 6f to the global co
43f0: 6d 6d 61 6e 64 2e 0a 54 68 65 20 76 61 72 69 61 mmand..The varia
4400: 62 6c 65 20 63 6f 6d 6d 61 6e 64 20 63 72 65 61 ble command crea
4410: 74 65 73 20 61 20 6c 69 6e 6b 20 66 72 6f 6d 20 tes a link from
4420: 61 20 6c 6f 63 61 6c 20 76 61 72 69 61 62 6c 65 a local variable
4430: 20 74 6f 20 61 20 6e 61 6d 65 73 70 61 63 65 20 to a namespace
4440: 76 61 72 69 61 62 6c 65 2c 20 70 6f 73 73 69 62 variable, possib
4450: 6c 79 20 69 6e 69 74 69 61 6c 69 73 69 6e 67 20 ly initialising
4460: 69 74 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 it.</p>..&
4470: 6c 74 3b 70 26 67 74 3b 46 6f 72 20 65 78 61 6d lt;p>For exam
4480: 70 6c 65 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 ple, the followi
4490: 6e 67 20 70 72 6f 63 65 64 75 72 65 20 75 73 65 ng procedure use
44a0: 73 20 26 61 6d 70 3b 6c 73 71 75 6f 3b 76 61 72 s &lsquo;var
44b0: 69 61 62 6c 65 26 61 6d 70 3b 72 73 71 75 6f 3b iable&rsquo;
44c0: 20 74 6f 20 69 6e 69 74 69 61 6c 73 65 20 61 6e to initialse an
44d0: 64 20 61 63 63 65 73 73 20 6d 79 76 61 72 2e 26 d access myvar.&
44e0: 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 lt;/p>..<p
44f0: 72 65 20 63 6c 61 73 73 3d 22 73 68 5f 74 63 6c re class="sh_tcl
4500: 22 26 67 74 3b 0a 70 72 6f 63 20 3a 3a 74 65 73 ">.proc ::tes
4510: 74 3a 3a 6d 79 70 72 6f 63 20 7b 7d 20 7b 0a 20 t::myproc {} {.
4520: 20 76 61 72 69 61 62 6c 65 20 6d 79 76 61 72 20 variable myvar
4530: 34 0a 20 20 69 6e 63 72 20 6d 79 76 61 72 0a 7d 4. incr myvar.}
4540: 0a 26 6c 74 3b 2f 70 72 65 26 67 74 3b 0a 0a 26 .</pre>..&
4550: 6c 74 3b 70 26 67 74 3b 4e 6f 74 65 20 74 68 61 lt;p>Note tha
4560: 74 20 74 68 65 72 65 20 69 73 20 6e 6f 20 61 75 t there is no au
4570: 74 6f 6d 61 74 69 63 20 72 65 73 6f 6c 75 74 69 tomatic resoluti
4580: 6f 6e 20 6f 66 20 6e 61 6d 65 73 70 61 63 65 20 on of namespace
4590: 76 61 72 69 61 62 6c 65 73 2e 0a 46 6f 72 20 65 variables..For e
45a0: 78 61 6d 70 6c 65 2c 20 74 68 65 20 66 6f 6c 6c xample, the foll
45b0: 6f 77 69 6e 67 20 77 69 6c 6c 20 26 6c 74 3b 65 owing will <e
45c0: 6d 26 67 74 3b 6e 6f 74 26 6c 74 3b 2f 65 6d 26 m>not</em&
45d0: 67 74 3b 20 77 6f 72 6b 2e 26 6c 74 3b 2f 70 26 gt; work.</p&
45e0: 67 74 3b 0a 0a 26 6c 74 3b 70 72 65 20 63 6c 61 gt;..<pre cla
45f0: 73 73 3d 22 73 68 5f 74 63 6c 22 26 67 74 3b 0a ss="sh_tcl">.
4600: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a namespace eval :
4610: 3a 74 65 73 74 20 7b 0a 20 20 76 61 72 69 61 62 :test {. variab
4620: 6c 65 20 6d 79 76 61 72 20 34 0a 7d 0a 6e 61 6d le myvar 4.}.nam
4630: 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 74 65 espace eval ::te
4640: 73 74 20 7b 0a 20 20 23 20 54 68 69 73 20 77 69 st {. # This wi
4650: 6c 6c 20 69 6e 63 72 65 6d 65 6e 74 20 61 20 6c ll increment a l
4660: 6f 63 61 6c 20 76 61 72 69 61 62 6c 65 2c 20 6e ocal variable, n
4670: 6f 74 20 3a 3a 74 65 73 74 3a 3a 6d 79 76 61 72 ot ::test::myvar
4680: 0a 20 20 69 6e 63 72 20 6d 79 76 61 72 0a 7d 0a . incr myvar.}.
4690: 26 6c 74 3b 2f 70 72 65 26 67 74 3b 0a 0a 26 6c </pre>..&l
46a0: 74 3b 70 26 67 74 3b 41 6e 64 20 73 69 6d 69 6c t;p>And simil
46b0: 61 72 6c 79 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 arly, the follow
46c0: 69 6e 67 20 77 69 6c 6c 20 6f 6e 6c 79 20 61 63 ing will only ac
46d0: 63 65 73 73 20 6c 6f 63 61 6c 20 76 61 72 69 61 cess local varia
46e0: 62 6c 65 73 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a bles</p>..
46f0: 26 6c 74 3b 70 72 65 20 63 6c 61 73 73 3d 22 73 <pre class="s
4700: 68 5f 74 63 6c 22 26 67 74 3b 0a 73 65 74 20 78 h_tcl">.set x
4710: 20 33 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 61 3.namespace eva
4720: 6c 20 3a 3a 74 65 73 74 20 7b 0a 09 23 20 54 68 l ::test {..# Th
4730: 69 73 20 77 69 6c 6c 20 69 6e 63 72 65 6d 65 6d is will incremem
4740: 65 6e 74 20 61 20 6c 6f 63 61 6c 20 76 61 72 69 ent a local vari
4750: 61 62 6c 65 2c 20 6e 6f 74 20 3a 3a 78 0a 09 69 able, not ::x..i
4760: 6e 63 72 20 78 0a 09 23 20 54 68 69 73 20 77 69 ncr x..# This wi
4770: 6c 6c 20 61 6c 73 6f 20 69 6e 63 72 65 6d 65 6e ll also incremen
4780: 74 20 61 20 6c 6f 63 61 6c 20 76 61 72 69 61 62 t a local variab
4790: 6c 65 0a 09 69 6e 63 72 20 61 62 63 3a 3a 64 65 le..incr abc::de
47a0: 66 0a 7d 0a 26 6c 74 3b 2f 70 72 65 26 67 74 3b f.}.</pre>
47b0: 0a 0a 26 6c 74 3b 70 26 67 74 3b 49 6e 20 74 68 ..<p>In th
47c0: 65 20 73 61 6d 65 20 77 61 79 20 74 68 61 74 20 e same way that
47d0: 76 61 72 69 61 62 6c 65 20 72 65 73 6f 6c 75 74 variable resolut
47e0: 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 26 61 6d ion does not &am
47f0: 70 3b 6c 64 71 75 6f 3b 66 61 6c 6c 20 62 61 63 p;ldquo;fall bac
4800: 6b 26 61 6d 70 3b 72 64 71 75 6f 3b 20 74 6f 0a k&rdquo; to.
4810: 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 73 global variables
4820: 2c 20 69 74 20 61 6c 73 6f 20 64 6f 65 73 20 6e , it also does n
4830: 6f 74 20 26 61 6d 70 3b 6c 64 71 75 6f 3b 66 61 ot &ldquo;fa
4840: 6c 6c 20 62 61 63 6b 26 61 6d 70 3b 72 64 71 75 ll back&rdqu
4850: 6f 3b 20 74 6f 20 6e 61 6d 65 73 70 61 63 65 20 o; to namespace
4860: 76 61 72 69 61 62 6c 65 73 2e 26 6c 74 3b 2f 70 variables.</p
4870: 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 54 >..<p>T
4880: 68 69 73 20 61 70 70 72 6f 61 63 68 20 61 6c 6c his approach all
4890: 6f 77 73 20 6e 61 6d 65 20 72 65 73 6f 6c 75 74 ows name resolut
48a0: 69 6f 6e 20 74 6f 20 62 65 20 73 69 6d 70 6c 65 ion to be simple
48b0: 72 20 61 6e 64 20 6d 6f 72 65 20 65 66 66 69 63 r and more effic
48c0: 69 65 6e 74 0a 73 69 6e 63 65 20 69 74 20 75 73 ient.since it us
48d0: 65 73 20 74 68 65 20 73 61 6d 65 20 76 61 72 69 es the same vari
48e0: 61 62 6c 65 20 6c 69 6e 6b 69 6e 67 20 6d 65 63 able linking mec
48f0: 68 61 6e 69 73 6d 20 61 73 20 75 70 76 61 72 2f hanism as upvar/
4900: 67 6c 6f 62 61 6c 0a 61 6e 64 20 69 74 20 61 6c global.and it al
4910: 6c 6f 77 73 20 6e 61 6d 65 73 70 61 63 65 73 20 lows namespaces
4920: 74 6f 20 62 65 20 69 6d 70 6c 69 63 69 74 2e 20 to be implicit.
4930: 49 74 20 61 6c 73 6f 20 73 6f 6c 76 65 73 20 74 It also solves t
4940: 68 65 20 26 61 6d 70 3b 6c 64 71 75 6f 3b 63 72 he &ldquo;cr
4950: 65 61 74 69 76 65 0a 77 72 69 74 69 6e 67 26 61 eative.writing&a
4960: 6d 70 3b 72 64 71 75 6f 3b 20 70 72 6f 62 6c 65 mp;rdquo; proble
4970: 6d 20 77 68 65 72 65 20 61 20 76 61 72 69 61 62 m where a variab
4980: 6c 65 20 6d 61 79 20 62 65 20 63 72 65 61 74 65 le may be create
4990: 64 20 69 6e 20 61 6e 20 75 6e 69 6e 74 65 6e 74 d in an unintent
49a0: 69 6f 6e 61 6c 0a 73 63 6f 70 65 2e 26 6c 74 3b ional.scope.<
49b0: 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 68 32 20 69 /p>..<h2 i
49c0: 64 3d 22 74 68 65 2d 6e 61 6d 65 73 70 61 63 65 d="the-namespace
49d0: 2d 63 6f 6d 6d 61 6e 64 22 26 67 74 3b 54 68 65 -command">The
49e0: 20 6e 61 6d 65 73 70 61 63 65 20 63 6f 6d 6d 61 namespace comma
49f0: 6e 64 26 6c 74 3b 2f 68 32 26 67 74 3b 0a 26 6c nd</h2>.&l
4a00: 74 3b 70 26 67 74 3b 43 75 72 72 65 6e 74 6c 79 t;p>Currently
4a10: 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 , the following
4a20: 6e 61 6d 65 73 70 61 63 65 20 63 6f 6d 6d 61 6e namespace comman
4a30: 64 73 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 ds are supported
4a40: 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 .</p>..<
4a50: 3b 75 6c 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 ;ul>. <li
4a60: 26 67 74 3b 63 75 72 72 65 6e 74 20 2d 20 72 65 >current - re
4a70: 74 75 72 6e 73 20 74 68 65 20 63 75 72 72 65 6e turns the curren
4a80: 74 2c 20 66 75 6c 6c 79 2d 71 75 61 6c 69 66 69 t, fully-qualifi
4a90: 65 64 20 6e 61 6d 65 73 70 61 63 65 26 6c 74 3b ed namespace<
4aa0: 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 /li>. <li
4ab0: 26 67 74 3b 65 76 61 6c 20 2d 20 65 76 61 6c 75 >eval - evalu
4ac0: 61 74 65 73 20 61 20 73 63 72 69 70 74 20 69 6e ates a script in
4ad0: 20 61 20 6e 61 6d 65 73 70 61 63 65 20 28 69 6e a namespace (in
4ae0: 74 72 6f 64 75 63 65 73 20 61 20 63 61 6c 6c 20 troduces a call
4af0: 66 72 61 6d 65 29 26 6c 74 3b 2f 6c 69 26 67 74 frame)</li>
4b00: 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b 71 75 ;. <li>qu
4b10: 61 6c 69 66 69 65 72 73 2c 20 74 61 69 6c 2c 20 alifiers, tail,
4b20: 70 61 72 65 6e 74 20 2d 20 6e 6f 74 65 20 74 68 parent - note th
4b30: 61 74 20 74 68 65 73 65 20 64 6f 20 6e 6f 74 20 at these do not
4b40: 63 68 65 63 6b 20 66 6f 72 20 65 78 69 73 74 65 check for existe
4b50: 6e 63 65 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 nce</li>.
4b60: 20 26 6c 74 3b 6c 69 26 67 74 3b 63 6f 64 65 2c <li>code,
4b70: 20 69 6e 73 63 6f 70 65 20 2d 20 69 6d 70 6c 65 inscope - imple
4b80: 6d 65 6e 74 65 64 26 6c 74 3b 2f 6c 69 26 67 74 mented</li>
4b90: 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b 64 65 ;. <li>de
4ba0: 6c 65 74 65 20 2d 20 64 65 6c 65 74 65 73 20 61 lete - deletes a
4bb0: 6c 6c 20 76 61 72 69 61 62 6c 65 73 20 61 6e 64 ll variables and
4bc0: 20 63 6f 6d 6d 61 6e 64 73 20 77 69 74 68 20 74 commands with t
4bd0: 68 65 20 6e 61 6d 65 73 70 61 63 65 20 70 72 65 he namespace pre
4be0: 66 69 78 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 fix</li>.
4bf0: 20 26 6c 74 3b 6c 69 26 67 74 3b 77 68 69 63 68 <li>which
4c00: 20 2d 20 69 6d 70 6c 65 6d 65 6e 74 65 64 26 6c - implemented&l
4c10: 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b t;/li>. <
4c20: 6c 69 26 67 74 3b 75 70 76 61 72 20 2d 20 69 6d li>upvar - im
4c30: 70 6c 65 6d 65 6e 74 65 64 26 6c 74 3b 2f 6c 69 plemented</li
4c40: 26 67 74 3b 0a 26 6c 74 3b 2f 75 6c 26 67 74 3b >.</ul>
4c50: 0a 0a 26 6c 74 3b 68 32 20 69 64 3d 22 6e 61 6d ..<h2 id="nam
4c60: 65 73 70 61 63 65 2d 63 68 69 6c 64 72 65 6e 2d espace-children-
4c70: 65 78 69 73 74 73 2d 70 61 74 68 22 26 67 74 3b exists-path">
4c80: 6e 61 6d 65 73 70 61 63 65 20 63 68 69 6c 64 72 namespace childr
4c90: 65 6e 2c 20 65 78 69 73 74 73 2c 20 70 61 74 68 en, exists, path
4ca0: 26 6c 74 3b 2f 68 32 26 67 74 3b 0a 26 6c 74 3b </h2>.<
4cb0: 70 26 67 74 3b 57 69 74 68 20 69 6d 70 6c 69 63 p>With implic
4cc0: 69 74 20 6e 61 6d 65 73 70 61 63 65 73 2c 20 74 it namespaces, t
4cd0: 68 65 20 6e 61 6d 65 73 70 61 63 65 20 65 78 69 he namespace exi
4ce0: 73 74 73 20 61 6e 64 20 6e 61 6d 65 73 70 61 63 sts and namespac
4cf0: 65 20 63 68 69 6c 64 72 65 6e 20 63 6f 6d 6d 61 e children comma
4d00: 6e 64 73 0a 61 72 65 20 65 78 70 65 6e 73 69 76 nds.are expensiv
4d10: 65 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 61 e to implement a
4d20: 6e 64 20 61 72 65 20 6f 66 20 6c 69 6d 69 74 65 nd are of limite
4d30: 64 20 75 73 65 2e 20 43 68 65 63 6b 69 6e 67 20 d use. Checking
4d40: 74 68 65 20 65 78 69 73 74 65 6e 63 65 0a 6f 66 the existence.of
4d50: 20 61 20 6e 61 6d 65 73 70 61 63 65 20 63 61 6e a namespace can
4d60: 20 62 65 20 62 65 74 74 65 72 20 64 6f 6e 65 20 be better done
4d70: 62 79 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 by checking for
4d80: 74 68 65 20 65 78 69 73 74 65 6e 63 65 20 6f 66 the existence of
4d90: 20 61 20 6b 6e 6f 77 6e 20 70 72 6f 63 65 64 75 a known procedu
4da0: 72 65 0a 6f 72 20 76 61 72 69 61 62 6c 65 20 69 re.or variable i
4db0: 6e 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 2e n the namespace.
4dc0: 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b </p>..<
4dd0: 70 26 67 74 3b 43 6f 6d 6d 61 6e 64 20 72 65 73 p>Command res
4de0: 6f 6c 75 74 69 6f 6e 20 69 73 20 61 6c 77 61 79 olution is alway
4df0: 73 20 64 6f 6e 65 20 62 79 20 66 69 72 73 74 20 s done by first
4e00: 6c 6f 6f 6b 69 6e 67 20 69 6e 20 74 68 65 20 6e looking in the n
4e10: 61 6d 65 73 70 61 63 65 20 61 6e 64 20 74 68 65 amespace and the
4e20: 6e 0a 61 74 20 74 68 65 20 67 6c 6f 62 61 6c 20 n.at the global
4e30: 73 63 6f 70 65 2c 20 73 6f 20 6e 61 6d 65 73 70 scope, so namesp
4e40: 61 63 65 20 70 61 74 68 20 69 73 20 6e 6f 74 20 ace path is not
4e50: 72 65 71 75 69 72 65 64 2e 26 6c 74 3b 2f 70 26 required.</p&
4e60: 67 74 3b 0a 0a 26 6c 74 3b 68 32 20 69 64 3d 22 gt;..<h2 id="
4e70: 6e 61 6d 65 73 70 61 63 65 2d 65 6e 73 65 6d 62 namespace-ensemb
4e80: 6c 65 22 26 67 74 3b 6e 61 6d 65 73 70 61 63 65 le">namespace
4e90: 20 65 6e 73 65 6d 62 6c 65 26 6c 74 3b 2f 68 32 ensemble</h2
4ea0: 26 67 74 3b 0a 26 6c 74 3b 70 26 67 74 3b 54 68 >.<p>Th
4eb0: 65 20 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 e namespace ense
4ec0: 6d 62 6c 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20 mble command is
4ed0: 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 73 75 not currently su
4ee0: 70 70 6f 72 74 65 64 2e 20 41 20 66 75 74 75 72 pported. A futur
4ef0: 65 20 76 65 72 73 69 6f 6e 0a 6f 66 20 4a 69 6d e version.of Jim
4f00: 20 54 63 6c 20 77 69 6c 6c 20 68 61 76 65 20 61 Tcl will have a
4f10: 20 67 65 6e 65 72 61 6c 2d 70 75 72 70 6f 73 65 general-purpose
4f20: 20 65 6e 73 65 6d 62 6c 65 20 63 72 65 61 74 69 ensemble creati
4f30: 6f 6e 20 61 6e 64 20 6d 61 6e 69 70 75 6c 61 74 on and manipulat
4f40: 69 6f 6e 0a 6d 65 63 68 61 6e 69 73 6d 20 61 6e ion.mechanism an
4f50: 64 20 6e 61 6d 65 73 70 61 63 65 20 65 6e 73 65 d namespace ense
4f60: 6d 62 6c 65 20 77 69 6c 6c 20 62 65 20 69 6d 70 mble will be imp
4f70: 6c 65 6d 65 6e 74 65 64 20 69 6e 20 74 65 72 6d lemented in term
4f80: 73 20 6f 66 20 74 68 61 74 20 6d 65 63 68 61 6e s of that mechan
4f90: 69 73 6d 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a ism.</p>..
4fa0: 26 6c 74 3b 68 32 20 69 64 3d 22 6e 61 6d 65 73 <h2 id="names
4fb0: 70 61 63 65 2d 69 6d 70 6f 72 74 2d 65 78 70 6f pace-import-expo
4fc0: 72 74 2d 66 6f 72 67 65 74 2d 6f 72 69 67 69 6e rt-forget-origin
4fd0: 22 26 67 74 3b 6e 61 6d 65 73 70 61 63 65 20 69 ">namespace i
4fe0: 6d 70 6f 72 74 2c 20 65 78 70 6f 72 74 2c 20 66 mport, export, f
4ff0: 6f 72 67 65 74 2c 20 6f 72 69 67 69 6e 26 6c 74 orget, origin<
5000: 3b 2f 68 32 26 67 74 3b 0a 26 6c 74 3b 70 26 67 ;/h2>.<p&g
5010: 74 3b 53 69 6e 63 65 20 4a 69 6d 20 54 63 6c 20 t;Since Jim Tcl
5020: 6e 61 6d 65 73 70 61 63 65 73 20 61 72 65 20 69 namespaces are i
5030: 6d 70 6c 69 63 69 74 2c 20 74 68 65 72 65 20 69 mplicit, there i
5040: 73 20 6e 6f 20 6c 6f 63 61 74 69 6f 6e 20 74 6f s no location to
5050: 20 73 74 6f 72 65 20 65 78 70 6f 72 74 20 70 61 store export pa
5060: 74 74 65 72 6e 73 2e 0a 54 68 65 72 65 66 6f 72 tterns..Therefor
5070: 65 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 e the namespace
5080: 65 78 70 6f 72 74 20 63 6f 6d 6d 61 6e 64 20 69 export command i
5090: 73 20 61 20 64 75 6d 6d 79 20 63 6f 6d 6d 61 6e s a dummy comman
50a0: 64 20 77 68 69 63 68 20 64 6f 65 73 20 6e 6f 74 d which does not
50b0: 68 69 6e 67 2e 0a 41 6c 6c 20 70 72 6f 63 65 64 hing..All proced
50c0: 75 72 65 73 20 69 6e 20 61 20 6e 61 6d 65 73 70 ures in a namesp
50d0: 61 63 65 20 61 72 65 20 63 6f 6e 73 69 64 65 72 ace are consider
50e0: 65 64 20 74 6f 20 62 65 20 65 78 70 6f 72 74 65 ed to be exporte
50f0: 64 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c d.</p>..&l
5100: 74 3b 70 26 67 74 3b 54 68 65 20 6e 61 6d 65 73 t;p>The names
5110: 70 61 63 65 20 69 6d 70 6f 72 74 20 63 6f 6d 6d pace import comm
5120: 61 6e 64 20 77 6f 72 6b 73 20 62 79 20 63 72 65 and works by cre
5130: 61 74 69 6e 67 20 61 6c 69 61 73 65 73 20 74 6f ating aliases to
5140: 20 74 68 65 20 74 61 72 67 65 74 20 6e 61 6d 65 the target name
5150: 73 70 61 63 65 0a 70 72 6f 63 65 64 75 72 65 73 space.procedures
5160: 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 .</p>..<
5170: 3b 70 26 67 74 3b 6e 61 6d 65 73 70 61 63 65 20 ;p>namespace
5180: 66 6f 72 67 65 74 20 69 73 20 6e 6f 74 20 69 6d forget is not im
5190: 70 6c 65 6d 65 6e 74 65 64 2e 26 6c 74 3b 2f 70 plemented.</p
51a0: 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 6e >..<p>n
51b0: 61 6d 65 73 70 61 63 65 20 6f 72 69 67 69 6e 20 amespace origin
51c0: 75 6e 64 65 72 73 74 61 6e 64 73 20 61 6c 69 61 understands alia
51d0: 73 65 73 20 63 72 65 61 74 65 64 20 62 79 20 6e ses created by n
51e0: 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 0a amespace import.
51f0: 61 6e 64 20 63 61 6e 20 72 65 74 75 72 6e 20 74 and can return t
5200: 68 65 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d he original comm
5210: 61 6e 64 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a and.</p>..
5220: 26 6c 74 3b 68 32 20 69 64 3d 22 6e 61 6d 65 73 <h2 id="names
5230: 70 61 63 65 2d 75 6e 6b 6e 6f 77 6e 22 26 67 74 pace-unknown">
5240: 3b 6e 61 6d 65 73 70 61 63 65 20 75 6e 6b 6e 6f ;namespace unkno
5250: 77 6e 26 6c 74 3b 2f 68 32 26 67 74 3b 0a 26 6c wn</h2>.&l
5260: 74 3b 70 26 67 74 3b 49 66 20 61 6e 20 75 6e 64 t;p>If an und
5270: 65 66 69 6e 65 64 20 63 6f 6d 6d 61 6e 64 20 69 efined command i
5280: 73 20 69 6e 76 6f 6b 65 64 2c 20 74 68 65 20 26 s invoked, the &
5290: 61 6d 70 3b 6c 64 71 75 6f 3b 75 6e 6b 6e 6f 77 amp;ldquo;unknow
52a0: 6e 26 61 6d 70 3b 72 64 71 75 6f 3b 20 63 6f 6d n&rdquo; com
52b0: 6d 61 6e 64 20 69 73 20 69 6e 76 6f 6b 65 64 2e mand is invoked.
52c0: 0a 54 68 65 20 73 61 6d 65 20 6e 61 6d 65 73 70 .The same namesp
52d0: 61 63 65 20 72 65 73 6f 6c 75 74 69 6f 6e 20 72 ace resolution r
52e0: 75 6c 65 73 20 61 70 70 6c 79 20 66 6f 72 20 74 ules apply for t
52f0: 68 65 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 he unknown comma
5300: 6e 64 2e 0a 54 68 69 73 20 6d 65 61 6e 73 20 74 nd..This means t
5310: 68 61 74 20 69 6e 20 74 68 65 20 66 6f 6c 6c 6f hat in the follo
5320: 77 69 6e 67 20 65 78 61 6d 70 6c 65 2c 20 74 65 wing example, te
5330: 73 74 3a 3a 75 6e 6b 6e 6f 77 6e 20 77 69 6c 6c st::unknown will
5340: 20 62 65 20 69 6e 76 6f 6b 65 64 0a 66 6f 72 20 be invoked.for
5350: 74 68 65 20 6d 69 73 73 69 6e 67 20 63 6f 6d 6d the missing comm
5360: 61 6e 64 20 72 61 74 68 65 72 20 74 68 61 6e 20 and rather than
5370: 74 68 65 20 67 6c 6f 62 61 6c 20 3a 3a 75 6e 6b the global ::unk
5380: 6e 6f 77 6e 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a nown.</p>.
5390: 0a 26 6c 74 3b 70 72 65 20 63 6c 61 73 73 3d 22 .<pre class="
53a0: 73 68 5f 74 63 6c 22 26 67 74 3b 0a 70 72 6f 63 sh_tcl">.proc
53b0: 20 75 6e 6b 6e 6f 77 6e 20 7b 61 72 67 73 7d 20 unknown {args}
53c0: 7b 0a 09 70 75 74 73 20 22 67 6c 6f 62 61 6c 20 {..puts "global
53d0: 75 6e 6b 6e 6f 77 6e 22 0a 7d 0a 0a 70 72 6f 63 unknown".}..proc
53e0: 20 74 65 73 74 3a 3a 75 6e 6b 6e 6f 77 6e 20 7b test::unknown {
53f0: 61 72 67 73 7d 20 7b 0a 09 70 75 74 73 20 22 74 args} {..puts "t
5400: 65 73 74 20 75 6e 6b 6e 6f 77 6e 22 0a 7d 0a 0a est unknown".}..
5410: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 74 namespace eval t
5420: 65 73 74 20 7b 0a 09 62 6f 67 75 73 0a 7d 0a 26 est {..bogus.}.&
5430: 6c 74 3b 2f 70 72 65 26 67 74 3b 0a 0a 26 6c 74 lt;/pre>..<
5440: 3b 70 26 67 74 3b 54 68 69 73 20 61 70 70 72 6f ;p>This appro
5450: 61 63 68 20 72 65 71 75 69 72 65 73 20 6e 6f 20 ach requires no
5460: 73 70 65 63 69 61 6c 20 73 75 70 70 6f 72 74 20 special support
5470: 61 6e 64 20 70 72 6f 76 69 64 65 73 20 65 6e 6f and provides eno
5480: 75 67 68 20 66 6c 65 78 69 62 69 6c 69 74 79 20 ugh flexibility
5490: 74 68 61 74 0a 74 68 65 20 6e 61 6d 65 73 70 61 that.the namespa
54a0: 63 65 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 ce unknown comma
54b0: 6e 64 20 69 73 20 6e 6f 74 20 69 6d 70 6c 65 6d nd is not implem
54c0: 65 6e 74 65 64 2e 26 6c 74 3b 2f 70 26 67 74 3b ented.</p>
54d0: 0a 0a 26 6c 74 3b 68 32 20 69 64 3d 22 70 6f 72 ..<h2 id="por
54e0: 74 69 6e 67 2d 6e 61 6d 65 73 70 61 63 65 2d 63 ting-namespace-c
54f0: 6f 64 65 2d 66 72 6f 6d 2d 74 63 6c 2d 74 6f 2d ode-from-tcl-to-
5500: 6a 69 6d 2d 74 63 6c 22 26 67 74 3b 50 6f 72 74 jim-tcl">Port
5510: 69 6e 67 20 6e 61 6d 65 73 70 61 63 65 20 63 6f ing namespace co
5520: 64 65 20 66 72 6f 6d 20 54 63 6c 20 74 6f 20 4a de from Tcl to J
5530: 69 6d 20 54 63 6c 26 6c 74 3b 2f 68 32 26 67 74 im Tcl</h2>
5540: 3b 0a 26 6c 74 3b 70 26 67 74 3b 46 6f 72 20 6d ;.<p>For m
5550: 6f 73 74 20 63 6f 64 65 2c 20 74 68 65 20 66 6f ost code, the fo
5560: 6c 6c 6f 77 69 6e 67 20 63 68 61 6e 67 65 73 20 llowing changes
5570: 77 69 6c 6c 20 62 65 20 73 75 66 66 69 63 69 65 will be sufficie
5580: 6e 74 20 74 6f 20 70 6f 72 74 20 63 6f 64 65 2e nt to port code.
5590: 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b </p>..<
55a0: 6f 6c 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 ol>. <li&
55b0: 67 74 3b 0a 20 20 20 20 26 6c 74 3b 70 26 67 74 gt;. <p>
55c0: 3b 43 61 6e 6f 6e 69 63 61 6c 69 73 65 20 6e 61 ;Canonicalise na
55d0: 6d 65 73 70 61 63 65 20 6e 61 6d 65 73 2e 20 46 mespace names. F
55e0: 6f 72 20 65 78 61 6d 70 6c 65 2c 20 3a 3a 6e 73 or example, ::ns
55f0: 3a 3a 20 73 68 6f 75 6c 64 20 62 65 20 77 72 69 :: should be wri
5600: 74 74 65 6e 0a 61 73 20 3a 3a 6e 73 20 6f 72 20 tten.as ::ns or
5610: 6e 73 20 61 73 20 61 70 70 72 6f 70 72 69 61 74 ns as appropriat
5620: 65 2c 20 61 6e 64 20 65 78 63 65 73 73 20 63 6f e, and excess co
5630: 6c 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 72 lons should be r
5640: 65 6d 6f 76 65 64 2e 0a 46 6f 72 20 65 78 61 6d emoved..For exam
5650: 70 6c 65 20 3a 3a 6e 73 3a 3a 3a 62 6c 61 68 20 ple ::ns:::blah
5660: 73 68 6f 75 6c 64 20 62 65 20 77 72 69 74 74 65 should be writte
5670: 6e 20 61 73 20 3a 3a 6e 73 3a 3a 62 6c 61 68 0a n as ::ns::blah.
5680: 28 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 6f (Note that the o
5690: 6e 6c 79 20 26 61 6d 70 3b 6c 64 71 75 6f 3b 65 nly &ldquo;e
56a0: 78 63 65 73 73 20 63 6f 6c 6f 6e 26 61 6d 70 3b xcess colon&
56b0: 72 64 71 75 6f 3b 20 63 61 73 65 20 73 75 70 70 rdquo; case supp
56c0: 6f 72 74 65 64 20 69 73 20 3a 3a 3a 3a 61 62 63 orted is ::::abc
56d0: 0a 69 6e 20 6f 72 64 65 72 20 74 6f 20 73 75 70 .in order to sup
56e0: 70 6f 72 74 20 5b 6e 61 6d 65 73 70 61 63 65 20 port [namespace
56f0: 63 75 72 72 65 6e 74 5d 3a 3a 61 62 63 20 69 6e current]::abc in
5700: 20 74 68 65 20 67 6c 6f 62 61 6c 20 6e 61 6d 65 the global name
5710: 73 70 61 63 65 29 26 6c 74 3b 2f 70 26 67 74 3b space)</p>
5720: 0a 20 20 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 . </li>.
5730: 20 26 6c 74 3b 6c 69 26 67 74 3b 0a 20 20 20 20 <li>.
5740: 26 6c 74 3b 70 26 67 74 3b 54 68 65 20 76 61 72 <p>The var
5750: 69 61 62 6c 65 20 63 6f 6d 6d 61 6e 64 20 73 68 iable command sh
5760: 6f 75 6c 64 20 62 65 20 75 73 65 64 20 77 69 74 ould be used wit
5770: 68 69 6e 20 6e 61 6d 65 73 70 61 63 65 20 65 76 hin namespace ev
5780: 61 6c 20 74 6f 20 6c 69 6e 6b 0a 74 6f 20 6e 61 al to link.to na
5790: 6d 65 73 70 61 63 65 20 76 61 72 69 61 62 6c 65 mespace variable
57a0: 73 2c 20 61 6e 64 20 61 63 63 65 73 73 20 74 6f s, and access to
57b0: 20 76 61 72 69 61 62 6c 65 73 20 69 6e 20 6f 74 variables in ot
57c0: 68 65 72 20 6e 61 6d 65 73 70 61 63 65 73 0a 73 her namespaces.s
57d0: 68 6f 75 6c 64 20 62 65 20 66 75 6c 6c 79 20 71 hould be fully q
57e0: 75 61 6c 69 66 69 65 64 26 6c 74 3b 2f 70 26 67 ualified</p&g
57f0: 74 3b 0a 20 20 26 6c 74 3b 2f 6c 69 26 67 74 3b t;. </li>
5800: 0a 26 6c 74 3b 2f 6f 6c 26 67 74 3b 0a 0a 26 6c .</ol>..&l
5810: 74 3b 68 32 20 69 64 3d 22 63 68 61 6e 67 65 73 t;h2 id="changes
5820: 2d 69 6e 2d 74 68 65 2d 63 6f 72 65 2d 6a 69 6d -in-the-core-jim
5830: 2d 74 63 6c 22 26 67 74 3b 43 68 61 6e 67 65 73 -tcl">Changes
5840: 20 69 6e 20 74 68 65 20 63 6f 72 65 20 4a 69 6d in the core Jim
5850: 20 54 63 6c 26 6c 74 3b 2f 68 32 26 67 74 3b 0a Tcl</h2>.
5860: 26 6c 74 3b 70 26 67 74 3b 50 72 65 76 69 6f 75 <p>Previou
5870: 73 6c 79 20 4a 69 6d 20 54 63 6c 20 70 65 72 66 sly Jim Tcl perf
5880: 6f 72 6d 65 64 20 6e 6f 20 73 63 6f 70 69 6e 67 ormed no scoping
5890: 20 6f 66 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d 65 of command name
58a0: 73 2e 20 20 69 2e 65 2e 20 54 68 65 0a 3a 3a 66 s. i.e. The.::f
58b0: 6f 72 6d 61 74 20 63 6f 6d 6d 61 6e 64 20 77 61 ormat command wa
58c0: 73 20 63 6f 6e 73 69 64 65 72 65 64 20 64 69 66 s considered dif
58d0: 66 65 72 65 6e 74 20 66 72 6f 6d 20 74 68 65 20 ferent from the
58e0: 66 6f 72 6d 61 74 20 63 6f 6d 6d 61 6e 64 2e 26 format command.&
58f0: 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 lt;/p>..<p
5900: 26 67 74 3b 45 76 65 6e 20 69 66 20 6e 61 6d 65 >Even if name
5910: 73 70 61 63 65 20 73 75 70 70 6f 72 74 20 69 73 space support is
5920: 20 64 69 73 61 62 6c 65 64 2c 20 74 68 65 20 63 disabled, the c
5930: 6f 6d 6d 61 6e 64 20 72 65 73 6f 6c 75 74 69 6f ommand resolutio
5940: 6e 20 77 69 6c 6c 0a 72 65 63 6f 67 6e 69 73 65 n will.recognise
5950: 64 20 67 6c 6f 62 61 6c 20 73 63 6f 70 69 6e 67 d global scoping
5960: 20 6f 66 20 63 6f 6d 6d 61 6e 64 73 20 61 6e 64 of commands and
5970: 20 74 72 65 61 74 20 74 68 65 73 65 20 61 73 20 treat these as
5980: 69 64 65 6e 74 69 63 61 6c 2e 26 6c 74 3b 2f 70 identical.</p
5990: 26 67 74 3b 0a 3c 2f 63 6f 6e 74 65 6e 74 3e 0a >.</content>.
59a0: 20 20 3c 2f 65 6e 74 72 79 3e 0a 20 20 3c 65 6e </entry>. <en
59b0: 74 72 79 3e 0a 20 20 20 20 3c 69 64 3e 74 61 67 try>. <id>tag
59c0: 3a 6a 69 6d 2e 62 65 72 6c 69 6f 73 2e 64 65 2c :jim.berlios.de,
59d0: 32 30 31 31 2d 31 31 2d 31 30 3a 2f 61 72 74 69 2011-11-10:/arti
59e0: 63 6c 65 73 2f 6a 69 6d 2d 74 63 6c 2d 74 6b 2d cles/jim-tcl-tk-
59f0: 32 30 31 31 2d 70 61 70 65 72 2f 3c 2f 69 64 3e 2011-paper/</id>
5a00: 0a 20 20 20 20 3c 74 69 74 6c 65 20 74 79 70 65 . <title type
5a10: 3d 22 68 74 6d 6c 22 3e 4a 69 6d 20 40 20 54 63 ="html">Jim @ Tc
5a20: 6c 2f 54 6b 20 32 30 31 31 3c 2f 74 69 74 6c 65 l/Tk 2011</title
5a30: 3e 0a 20 20 20 20 3c 70 75 62 6c 69 73 68 65 64 >. <published
5a40: 3e 32 30 31 31 2d 31 31 2d 30 39 54 31 34 3a 30 >2011-11-09T14:0
5a50: 30 3a 30 30 5a 3c 2f 70 75 62 6c 69 73 68 65 64 0:00Z</published
5a60: 3e 0a 20 20 20 20 3c 75 70 64 61 74 65 64 3e 32 >. <updated>2
5a70: 30 31 31 2d 31 31 2d 30 39 54 31 34 3a 30 30 3a 011-11-09T14:00:
5a80: 30 30 5a 3c 2f 75 70 64 61 74 65 64 3e 0a 20 20 00Z</updated>.
5a90: 20 20 3c 6c 69 6e 6b 20 72 65 6c 3d 22 61 6c 74 <link rel="alt
5aa0: 65 72 6e 61 74 65 22 20 68 72 65 66 3d 22 68 74 ernate" href="ht
5ab0: 74 70 3a 2f 2f 6a 69 6d 2e 62 65 72 6c 69 6f 73 tp://jim.berlios
5ac0: 2e 64 65 2f 61 72 74 69 63 6c 65 73 2f 6a 69 6d .de/articles/jim
5ad0: 2d 74 63 6c 2d 74 6b 2d 32 30 31 31 2d 70 61 70 -tcl-tk-2011-pap
5ae0: 65 72 2f 22 2f 3e 0a 20 20 20 20 3c 63 6f 6e 74 er/"/>. <cont
5af0: 65 6e 74 20 74 79 70 65 3d 22 68 74 6d 6c 22 3e ent type="html">
5b00: 26 6c 74 3b 70 26 67 74 3b 41 74 20 74 68 65 20 <p>At the
5b10: 26 6c 74 3b 61 20 68 72 65 66 3d 22 68 74 74 70 <a href="http
5b20: 3a 2f 2f 77 77 77 2e 74 63 6c 2e 74 6b 2f 63 6f ://www.tcl.tk/co
5b30: 6d 6d 75 6e 69 74 79 2f 74 63 6c 32 30 31 31 2f mmunity/tcl2011/
5b40: 22 26 67 74 3b 54 63 6b 2f 54 6b 20 32 30 31 31 ">Tck/Tk 2011
5b50: 20 63 6f 6e 66 65 72 65 6e 63 65 26 6c 74 3b 2f conference</
5b60: 61 26 67 74 3b 20 49 0a 70 72 65 73 65 6e 74 65 a> I.presente
5b70: 64 20 61 20 70 61 70 65 72 20 6f 6e 20 4a 69 6d d a paper on Jim
5b80: 20 54 63 6c 2e 20 49 74 20 73 65 65 6d 65 64 20 Tcl. It seemed
5b90: 74 6f 20 62 65 20 77 65 6c 6c 20 72 65 63 65 69 to be well recei
5ba0: 76 65 64 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a ved.</p>..
5bb0: 26 6c 74 3b 70 26 67 74 3b 59 6f 75 20 63 61 6e <p>You can
5bc0: 20 72 65 61 64 20 74 68 65 20 70 61 70 65 72 20 read the paper
5bd0: 62 79 20 63 6c 69 63 6b 69 6e 67 20 6f 6e 20 74 by clicking on t
5be0: 68 65 20 69 6d 61 67 65 20 62 65 6c 6f 77 2e 26 he image below.&
5bf0: 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 lt;/p>..<p
5c00: 26 67 74 3b 26 6c 74 3b 61 20 68 72 65 66 3d 22 ><a href="
5c10: 68 74 74 70 3a 2f 2f 77 6f 72 6b 77 61 72 65 2e http://workware.
5c20: 6e 65 74 2e 61 75 2f 70 61 70 65 72 73 2f 6a 69 net.au/papers/ji
5c30: 6d 74 63 6c 2d 74 63 6c 2d 74 6b 2d 32 30 31 31 mtcl-tcl-tk-2011
5c40: 2e 70 64 66 22 26 67 74 3b 26 6c 74 3b 69 6d 67 .pdf"><img
5c50: 20 73 72 63 3d 22 2f 69 6d 67 2f 6a 69 6d 74 63 src="/img/jimtc
5c60: 6c 2d 74 63 6c 2d 74 6b 2d 32 30 31 31 2d 66 72 l-tcl-tk-2011-fr
5c70: 6f 6e 74 2e 70 6e 67 22 20 2f 26 67 74 3b 26 6c ont.png" />&l
5c80: 74 3b 2f 61 26 67 74 3b 26 6c 74 3b 2f 70 26 67 t;/a></p&g
5c90: 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 53 74 65 t;..<p>Ste
5ca0: 76 65 20 42 65 6e 6e 65 74 74 20 28 26 6c 74 3b ve Bennett (<
5cb0: 61 20 68 72 65 66 3d 22 26 61 6d 70 3b 23 31 30 a href="&#10
5cc0: 39 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 9;&#097;&
5cd0: 3b 23 31 30 35 3b 26 61 6d 70 3b 23 31 30 38 3b ;#105;&#108;
5ce0: 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 &#116;&#
5cf0: 31 31 31 3b 3a 26 61 6d 70 3b 23 31 31 35 3b 26 111;:&#115;&
5d00: 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 31 amp;#116;&#1
5d10: 30 31 3b 26 61 6d 70 3b 23 31 31 38 3b 26 61 6d 01;&#118;&am
5d20: 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 30 39 38 p;#101;&#098
5d30: 3b 26 61 6d 70 3b 23 30 36 34 3b 26 61 6d 70 3b ;&#064;&
5d40: 23 31 31 39 3b 26 61 6d 70 3b 23 31 31 31 3b 26 #119;&#111;&
5d50: 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 3b 23 31 amp;#114;&#1
5d60: 30 37 3b 26 61 6d 70 3b 23 31 31 39 3b 26 61 6d 07;&#119;&am
5d70: 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 31 31 34 p;#097;&#114
5d80: 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b ;&#101;&
5d90: 23 30 34 36 3b 26 61 6d 70 3b 23 31 31 30 3b 26 #046;&#110;&
5da0: 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 amp;#101;&#1
5db0: 31 36 3b 26 61 6d 70 3b 23 30 34 36 3b 26 61 6d 16;&#046;&am
5dc0: 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 31 31 37 p;#097;&#117
5dd0: 3b 22 26 67 74 3b 26 61 6d 70 3b 23 31 31 35 3b ;">&#115;
5de0: 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 &#116;&#
5df0: 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 3b 26 61 101;&#118;&a
5e00: 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 30 39 mp;#101;&#09
5e10: 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 61 6d 70 8;&#064;&
5e20: 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 31 31 3b ;#119;&#111;
5e30: 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 3b 23 &#114;&#
5e40: 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 3b 26 61 107;&#119;&a
5e50: 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 31 31 mp;#097;&#11
5e60: 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 4;&#101;&
5e70: 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 31 30 3b ;#046;&#110;
5e80: 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 &#101;&#
5e90: 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 3b 26 61 116;&#046;&a
5ea0: 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 31 31 mp;#097;&#11
5eb0: 37 3b 26 6c 74 3b 2f 61 26 67 74 3b 29 26 6c 74 7;</a>)<
5ec0: 3b 2f 70 26 67 74 3b 0a 3c 2f 63 6f 6e 74 65 6e ;/p>.</conten
5ed0: 74 3e 0a 20 20 3c 2f 65 6e 74 72 79 3e 0a 20 20 t>. </entry>.
5ee0: 3c 65 6e 74 72 79 3e 0a 20 20 20 20 3c 69 64 3e <entry>. <id>
5ef0: 74 61 67 3a 6a 69 6d 2e 62 65 72 6c 69 6f 73 2e tag:jim.berlios.
5f00: 64 65 2c 32 30 31 31 2d 31 30 2d 30 36 3a 2f 61 de,2011-10-06:/a
5f10: 72 74 69 63 6c 65 73 2f 6a 69 6d 2d 72 65 6c 65 rticles/jim-rele
5f20: 61 73 65 2d 30 2d 37 32 2f 3c 2f 69 64 3e 0a 20 ase-0-72/</id>.
5f30: 20 20 20 3c 74 69 74 6c 65 20 74 79 70 65 3d 22 <title type="
5f40: 68 74 6d 6c 22 3e 4a 69 6d 20 54 63 6c 20 76 65 html">Jim Tcl ve
5f50: 72 73 69 6f 6e 20 30 2e 37 32 3c 2f 74 69 74 6c rsion 0.72</titl
5f60: 65 3e 0a 20 20 20 20 3c 70 75 62 6c 69 73 68 65 e>. <publishe
5f70: 64 3e 32 30 31 31 2d 31 30 2d 30 35 54 31 34 3a d>2011-10-05T14:
5f80: 30 30 3a 30 30 5a 3c 2f 70 75 62 6c 69 73 68 65 00:00Z</publishe
5f90: 64 3e 0a 20 20 20 20 3c 75 70 64 61 74 65 64 3e d>. <updated>
5fa0: 32 30 31 31 2d 31 30 2d 30 35 54 31 34 3a 30 30 2011-10-05T14:00
5fb0: 3a 30 30 5a 3c 2f 75 70 64 61 74 65 64 3e 0a 20 :00Z</updated>.
5fc0: 20 20 20 3c 6c 69 6e 6b 20 72 65 6c 3d 22 61 6c <link rel="al
5fd0: 74 65 72 6e 61 74 65 22 20 68 72 65 66 3d 22 68 ternate" href="h
5fe0: 74 74 70 3a 2f 2f 6a 69 6d 2e 62 65 72 6c 69 6f ttp://jim.berlio
5ff0: 73 2e 64 65 2f 61 72 74 69 63 6c 65 73 2f 6a 69 s.de/articles/ji
6000: 6d 2d 72 65 6c 65 61 73 65 2d 30 2d 37 32 2f 22 m-release-0-72/"
6010: 2f 3e 0a 20 20 20 20 3c 63 6f 6e 74 65 6e 74 20 />. <content
6020: 74 79 70 65 3d 22 68 74 6d 6c 22 3e 26 6c 74 3b type="html"><
6030: 68 32 20 69 64 3d 22 61 6e 6e 6f 75 6e 63 65 2d h2 id="announce-
6040: 6a 69 6d 2d 74 63 6c 2d 76 65 72 73 69 6f 6e 2d jim-tcl-version-
6050: 30 37 32 22 26 67 74 3b 41 4e 4e 4f 55 4e 43 45 072">ANNOUNCE
6060: 3a 20 4a 69 6d 20 54 63 6c 20 76 65 72 73 69 6f : Jim Tcl versio
6070: 6e 20 30 2e 37 32 26 6c 74 3b 2f 68 32 26 67 74 n 0.72</h2>
6080: 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 4a 69 6d 20 ;..<p>Jim
6090: 54 63 6c 20 30 2e 37 32 20 68 61 73 20 62 65 65 Tcl 0.72 has bee
60a0: 6e 20 72 65 6c 65 61 73 65 64 20 61 6e 64 20 69 n released and i
60b0: 73 20 61 76 61 69 6c 61 62 6c 65 20 66 72 6f 6d s available from
60c0: 3a 20 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c : </p>..&l
60d0: 74 3b 70 26 67 74 3b 26 6c 74 3b 61 20 68 72 65 t;p><a hre
60e0: 66 3d 22 68 74 74 70 3a 2f 2f 72 65 70 6f 2e 6f f="http://repo.o
60f0: 72 2e 63 7a 2f 77 2f 6a 69 6d 74 63 6c 2e 67 69 r.cz/w/jimtcl.gi
6100: 74 22 26 67 74 3b 68 74 74 70 3a 2f 2f 72 65 70 t">http://rep
6110: 6f 2e 6f 72 2e 63 7a 2f 77 2f 6a 69 6d 74 63 6c o.or.cz/w/jimtcl
6120: 2e 67 69 74 26 6c 74 3b 2f 61 26 67 74 3b 20 6f .git</a> o
6130: 72 20 26 6c 74 3b 61 20 68 72 65 66 3d 22 68 74 r <a href="ht
6140: 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d tps://github.com
6150: 2f 6d 73 74 65 76 65 62 2f 6a 69 6d 74 63 6c 22 /msteveb/jimtcl"
6160: 26 67 74 3b 68 74 74 70 73 3a 2f 2f 67 69 74 68 >https://gith
6170: 75 62 2e 63 6f 6d 2f 6d 73 74 65 76 65 62 2f 6a ub.com/msteveb/j
6180: 69 6d 74 63 6c 26 6c 74 3b 2f 61 26 67 74 3b 26 imtcl</a>&
6190: 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 68 lt;/p>..<h
61a0: 32 20 69 64 3d 22 63 68 61 6e 67 65 73 2d 73 69 2 id="changes-si
61b0: 6e 63 65 2d 76 65 72 73 69 6f 6e 2d 30 37 31 22 nce-version-071"
61c0: 26 67 74 3b 43 48 41 4e 47 45 53 20 53 49 4e 43 >CHANGES SINC
61d0: 45 20 56 45 52 53 49 4f 4e 20 30 2e 37 31 26 6c E VERSION 0.71&l
61e0: 74 3b 2f 68 32 26 67 74 3b 0a 0a 26 6c 74 3b 70 t;/h2>..<p
61f0: 26 67 74 3b 54 68 69 73 20 72 65 6c 65 61 73 65 >This release
6200: 20 69 6e 63 6f 72 70 6f 72 61 74 65 73 20 62 75 incorporates bu
6210: 67 20 66 69 78 65 73 20 61 6e 64 20 6d 61 6e 79 g fixes and many
6220: 20 6e 65 77 20 66 65 61 74 75 72 65 73 2e 26 6c new features.&l
6230: 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 t;/p>..<p&
6240: 67 74 3b 26 6c 74 3b 73 74 72 6f 6e 67 26 67 74 gt;<strong>
6250: 3b 42 75 67 73 20 66 69 78 65 64 20 69 6e 20 76 ;Bugs fixed in v
6260: 65 72 73 69 6f 6e 20 30 2e 37 32 26 6c 74 3b 2f ersion 0.72</
6270: 73 74 72 6f 6e 67 26 67 74 3b 26 6c 74 3b 2f 70 strong></p
6280: 26 67 74 3b 0a 0a 26 6c 74 3b 75 6c 26 67 74 3b >..<ul>
6290: 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b 49 6d 70 . <li>Imp
62a0: 72 6f 76 65 6d 65 6e 74 73 20 74 6f 20 63 6f 6e rovements to con
62b0: 66 69 67 75 72 65 20 28 61 75 74 6f 73 65 74 75 figure (autosetu
62c0: 70 29 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 p)</li>.
62d0: 26 6c 74 3b 6c 69 26 67 74 3b 46 69 78 20 6d 65 <li>Fix me
62e0: 6d 6f 72 79 20 6f 76 65 72 77 72 69 74 65 20 69 mory overwrite i
62f0: 6e 20 62 75 69 6c 74 2d 69 6e 20 72 65 67 65 78 n built-in regex
6300: 70 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 p</li>. &
6310: 6c 74 3b 6c 69 26 67 74 3b 5b 72 65 67 65 78 70 lt;li>[regexp
6320: 5d 2c 20 5b 72 65 67 73 75 62 5d 20 63 6f 75 6c ], [regsub] coul
6330: 64 20 6c 65 61 6b 20 6f 62 6a 65 63 74 73 20 69 d leak objects i
6340: 6e 20 73 6f 6d 65 20 63 69 72 63 75 6d 73 74 61 n some circumsta
6350: 6e 63 65 73 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a nces</li>.
6360: 20 20 26 6c 74 3b 6c 69 26 67 74 3b 46 69 78 20 <li>Fix
6370: 5b 66 69 6c 65 20 6a 6f 69 6e 5d 20 69 6e 20 73 [file join] in s
6380: 6f 6d 65 20 63 61 73 65 73 26 6c 74 3b 2f 6c 69 ome cases</li
6390: 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 >. <li>
63a0: 3b 5b 69 6e 66 6f 20 6e 61 6d 65 6f 66 65 78 65 ;[info nameofexe
63b0: 63 75 74 61 62 6c 65 5d 20 6e 6f 77 20 61 6c 77 cutable] now alw
63c0: 61 79 73 20 72 65 74 75 72 6e 73 20 61 6e 20 61 ays returns an a
63d0: 62 73 6f 6c 75 74 65 20 70 61 74 68 26 6c 74 3b bsolute path<
63e0: 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 /li>. <li
63f0: 26 67 74 3b 5b 63 61 74 63 68 5d 20 77 6f 72 6b >[catch] work
6400: 73 20 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 20 s correctly for
6410: 70 6c 61 74 66 6f 72 6d 73 20 77 69 74 68 6f 75 platforms withou
6420: 74 20 6c 6f 6e 67 20 6c 6f 6e 67 26 6c 74 3b 2f t long long</
6430: 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 li>. <li&
6440: 67 74 3b 5b 64 69 63 74 20 75 6e 73 65 74 5d 20 gt;[dict unset]
6450: 6e 6f 20 6c 6f 6e 67 65 72 20 67 69 76 65 73 20 no longer gives
6460: 61 6e 20 65 72 72 6f 72 20 6f 6e 20 6d 69 73 73 an error on miss
6470: 69 6e 67 20 6c 61 73 74 20 6b 65 79 26 6c 74 3b ing last key<
6480: 2f 6c 69 26 67 74 3b 0a 26 6c 74 3b 2f 75 6c 26 /li>.</ul&
6490: 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 26 6c gt;..<p>&l
64a0: 74 3b 73 74 72 6f 6e 67 26 67 74 3b 46 65 61 74 t;strong>Feat
64b0: 75 72 65 73 20 61 64 64 65 64 20 69 6e 20 76 65 ures added in ve
64c0: 72 73 69 6f 6e 20 30 2e 37 32 26 6c 74 3b 2f 73 rsion 0.72</s
64d0: 74 72 6f 6e 67 26 67 74 3b 26 6c 74 3b 2f 70 26 trong></p&
64e0: 67 74 3b 0a 0a 26 6c 74 3b 75 6c 26 67 74 3b 0a gt;..<ul>.
64f0: 20 20 26 6c 74 3b 6c 69 26 67 74 3b 5b 70 72 6f <li>[pro
6500: 63 5d 20 6e 6f 77 20 61 63 63 65 70 74 73 20 6f c] now accepts o
6510: 70 74 69 6f 6e 61 6c 20 70 61 72 61 6d 65 74 65 ptional paramete
6520: 72 73 20 61 6e 64 20 26 61 6d 70 3b 6c 64 71 75 rs and &ldqu
6530: 6f 3b 61 72 67 73 26 61 6d 70 3b 72 64 71 75 6f o;args&rdquo
6540: 3b 20 69 6e 20 61 6e 79 20 70 6f 73 69 74 69 6f ; in any positio
6550: 6e 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 n</li>. &
6560: 6c 74 3b 6c 69 26 67 74 3b 4d 75 63 68 20 69 6d lt;li>Much im
6570: 70 72 6f 76 65 64 20 73 75 70 70 6f 72 74 20 66 proved support f
6580: 6f 72 20 6d 69 6e 67 77 33 32 20 69 6e 63 6c 75 or mingw32 inclu
6590: 64 69 6e 67 20 36 34 2d 62 69 74 20 6d 69 6e 67 ding 64-bit ming
65a0: 77 0a 20 20 20 20 26 6c 74 3b 75 6c 26 67 74 3b w. <ul>
65b0: 0a 20 20 20 20 20 20 26 6c 74 3b 6c 69 26 67 74 . <li>
65c0: 3b 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c ;tcl_platform(pl
65d0: 61 74 66 6f 72 6d 29 20 69 73 20 73 65 74 20 74 atform) is set t
65e0: 6f 20 26 61 6d 70 3b 6c 64 71 75 6f 3b 77 69 6e o &ldquo;win
65f0: 64 6f 77 73 26 61 6d 70 3b 72 64 71 75 6f 3b 26 dows&rdquo;&
6600: 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 20 20 20 lt;/li>.
6610: 20 26 6c 74 3b 6c 69 26 67 74 3b 5b 66 69 6c 65 <li>[file
6620: 20 64 69 72 6e 61 6d 65 5d 20 68 61 6e 64 6c 65 dirname] handle
6630: 73 20 6c 65 61 64 69 6e 67 20 64 72 69 76 65 20 s leading drive
6640: 28 65 2e 67 2e 20 63 3a 2f 29 26 6c 74 3b 2f 6c (e.g. c:/)</l
6650: 69 26 67 74 3b 0a 20 20 20 20 20 20 26 6c 74 3b i>. <
6660: 6c 69 26 67 74 3b 5b 70 77 64 5d 20 72 65 74 75 li>[pwd] retu
6670: 72 6e 73 20 61 20 70 61 74 68 20 63 6f 6e 74 61 rns a path conta
6680: 69 6e 69 6e 67 20 6f 6e 6c 79 20 66 6f 72 77 61 ining only forwa
6690: 72 64 20 73 6c 61 73 68 65 73 26 6c 74 3b 2f 6c rd slashes</l
66a0: 69 26 67 74 3b 0a 20 20 20 20 20 20 26 6c 74 3b i>. <
66b0: 6c 69 26 67 74 3b 5b 67 6c 6f 62 5d 20 6e 6f 77 li>[glob] now
66c0: 20 77 6f 72 6b 73 20 63 6f 72 72 65 63 74 6c 79 works correctly
66d0: 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 20 20 </li>.
66e0: 20 20 26 6c 74 3b 6c 69 26 67 74 3b 5b 65 78 65 <li>[exe
66f0: 63 5d 20 69 73 20 6e 6f 77 20 66 75 6c 6c 79 20 c] is now fully
6700: 69 6d 70 6c 65 6d 65 6e 74 20 6f 6e 20 6d 69 6e implement on min
6710: 67 77 33 32 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a gw32</li>.
6720: 20 20 20 20 20 20 26 6c 74 3b 6c 69 26 67 74 3b <li>
6730: 43 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 65 64 69 Command line edi
6740: 74 69 6e 67 20 6e 6f 77 20 77 6f 72 6b 73 20 69 ting now works i
6750: 6e 20 74 68 65 20 77 69 6e 33 32 20 63 6f 6e 73 n the win32 cons
6760: 6f 6c 65 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 ole</li>.
6770: 20 20 20 20 20 26 6c 74 3b 6c 69 26 67 74 3b 4e <li>N
6780: 65 77 20 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 ew tcl_platform(
6790: 70 61 74 68 53 65 70 61 72 61 74 6f 72 29 26 6c pathSeparator)&l
67a0: 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 20 20 26 6c t;/li>. &l
67b0: 74 3b 2f 75 6c 26 67 74 3b 0a 20 20 26 6c 74 3b t;/ul>. <
67c0: 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 /li>. <li
67d0: 26 67 74 3b 42 75 69 6c 74 69 6e 20 72 65 67 65 >Builtin rege
67e0: 78 70 20 69 73 20 6d 6f 72 65 20 65 66 66 69 63 xp is more effic
67f0: 69 65 6e 74 2e 20 50 61 74 74 65 72 6e 73 20 61 ient. Patterns a
6800: 72 65 20 6f 6e 6c 79 20 63 6f 6d 70 69 6c 65 64 re only compiled
6810: 20 6f 6e 63 65 2e 26 6c 74 3b 2f 6c 69 26 67 74 once.</li>
6820: 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b 41 64 ;. <li>Ad
6830: 64 20 72 61 6e 64 28 29 2c 20 73 72 61 6e 64 28 d rand(), srand(
6840: 29 20 61 6e 64 20 70 6f 77 28 29 20 6d 61 74 68 ) and pow() math
6850: 20 66 75 6e 63 74 69 6f 6e 73 26 6c 74 3b 2f 6c functions</l
6860: 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 i>. <li&g
6870: 74 3b 5b 66 69 6c 65 20 64 65 6c 65 74 65 5d 20 t;[file delete]
6880: 6e 6f 77 20 73 75 70 70 6f 72 74 73 20 74 68 65 now supports the
6890: 20 2d 66 6f 72 63 65 20 6f 70 74 69 6f 6e 26 6c -force option&l
68a0: 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b t;/li>. <
68b0: 6c 69 26 67 74 3b 5b 66 63 6f 6e 66 69 67 75 72 li>[fconfigur
68c0: 65 20 2d 74 72 61 6e 73 6c 61 74 69 6f 6e 5d 20 e -translation]
68d0: 69 73 20 6e 6f 77 20 61 63 63 65 70 74 65 64 20 is now accepted
68e0: 61 6e 64 20 69 67 6e 6f 72 65 64 20 66 6f 72 20 and ignored for
68f0: 54 63 6c 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 Tcl compatibilit
6900: 79 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 y</li>. &
6910: 6c 74 3b 6c 69 26 67 74 3b 49 6d 70 72 6f 76 65 lt;li>Improve
6920: 64 20 64 69 61 67 6e 6f 73 74 69 63 73 20 77 68 d diagnostics wh
6930: 65 6e 20 73 6f 75 72 63 69 6e 67 20 61 20 73 63 en sourcing a sc
6940: 72 69 70 74 20 77 69 74 68 20 6d 69 73 73 69 6e ript with missin
6950: 67 2f 6d 69 73 6d 61 74 63 68 65 73 20 62 72 61 g/mismatches bra
6960: 63 6b 65 74 73 2c 20 71 75 6f 74 65 73 2c 20 65 ckets, quotes, e
6970: 74 63 2e 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 tc.</li>.
6980: 20 26 6c 74 3b 6c 69 26 67 74 3b 4a 69 6d 20 54 <li>Jim T
6990: 63 6c 20 6e 6f 77 20 62 75 69 6c 64 73 20 6f 6e cl now builds on
69a0: 20 48 61 69 6b 75 20 28 42 65 4f 53 20 63 6c 6f Haiku (BeOS clo
69b0: 6e 65 29 20 61 6e 64 20 53 6f 6c 61 72 69 73 26 ne) and Solaris&
69c0: 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 lt;/li>. <
69d0: 3b 6c 69 26 67 74 3b 42 75 69 6c 64 20 6e 6f 77 ;li>Build now
69e0: 20 77 6f 72 6b 73 20 77 69 74 68 20 42 53 44 20 works with BSD
69f0: 6d 61 6b 65 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a make</li>.
6a00: 20 20 26 6c 74 3b 6c 69 26 67 74 3b 5b 66 69 6c <li>[fil
6a10: 65 20 6d 74 69 6d 65 5d 20 63 61 6e 20 6e 6f 77 e mtime] can now
6a20: 20 73 65 74 20 74 68 65 20 66 69 6c 65 20 74 69 set the file ti
6a30: 6d 65 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 me</li>.
6a40: 26 6c 74 3b 6c 69 26 67 74 3b 4e 65 77 20 5b 61 <li>New [a
6a50: 69 6f 20 6c 69 73 74 65 6e 5d 20 74 6f 20 73 65 io listen] to se
6a60: 74 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 t the size of th
6a70: 65 20 6c 69 73 74 65 6e 20 71 75 65 75 65 20 6f e listen queue o
6a80: 6e 20 73 65 72 76 65 72 20 73 6f 63 6b 65 74 73 n server sockets
6a90: 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c </li>. &l
6aa0: 74 3b 6c 69 26 67 74 3b 4a 69 6d 20 54 63 6c 20 t;li>Jim Tcl
6ab0: 4d 61 6e 75 61 6c 20 69 73 20 62 65 74 74 65 72 Manual is better
6ac0: 20 66 6f 72 6d 61 74 74 65 64 2c 20 63 6f 6d 6d formatted, comm
6ad0: 61 6e 64 73 20 61 72 65 20 68 79 70 65 72 6c 69 ands are hyperli
6ae0: 6e 6b 65 64 20 61 6e 64 20 76 61 72 69 6f 75 73 nked and various
6af0: 20 63 6f 72 72 65 63 74 69 6f 6e 73 20 68 61 76 corrections hav
6b00: 65 20 62 65 65 6e 20 6d 61 64 65 26 6c 74 3b 2f e been made</
6b10: 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 li>. <li&
6b20: 67 74 3b 54 68 65 20 6f 6f 2c 20 74 72 65 65 2c gt;The oo, tree,
6b30: 20 62 69 6e 61 72 79 20 61 6e 64 20 70 61 63 6b binary and pack
6b40: 20 65 78 74 65 6e 73 69 6f 6e 73 20 61 72 65 20 extensions are
6b50: 6e 6f 77 20 64 6f 63 75 6d 65 6e 74 65 64 26 6c now documented&l
6b60: 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b t;/li>. <
6b70: 6c 69 26 67 74 3b 4e 65 77 20 6d 65 74 61 6b 69 li>New metaki
6b80: 74 20 65 78 74 65 6e 73 69 6f 6e 26 6c 74 3b 2f t extension</
6b90: 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 li>. <li&
6ba0: 67 74 3b 54 68 65 20 53 44 4c 20 65 78 74 65 6e gt;The SDL exten
6bb0: 73 69 6f 6e 20 6f 6e 63 65 20 61 67 61 69 6e 20 sion once again
6bc0: 62 75 69 6c 64 73 20 61 6e 64 20 72 75 6e 73 26 builds and runs&
6bd0: 6c 74 3b 2f 6c 69 26 67 74 3b 0a 26 6c 74 3b 2f lt;/li>.</
6be0: 75 6c 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 ul>..<p>
6bf0: 3b 53 74 65 76 65 20 42 65 6e 6e 65 74 74 20 28 ;Steve Bennett (
6c00: 26 6c 74 3b 61 20 68 72 65 66 3d 22 26 61 6d 70 <a href="&
6c10: 3b 23 31 30 39 3b 26 61 6d 70 3b 23 30 39 37 3b ;#109;&#097;
6c20: 26 61 6d 70 3b 23 31 30 35 3b 26 61 6d 70 3b 23 &#105;&#
6c30: 31 30 38 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 108;&#116;&a
6c40: 6d 70 3b 23 31 31 31 3b 3a 26 61 6d 70 3b 23 31 mp;#111;:&#1
6c50: 31 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 15;&#116;&am
6c60: 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 p;#101;&#118
6c70: 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b ;&#101;&
6c80: 23 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 #098;&#064;&
6c90: 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 amp;#119;&#1
6ca0: 31 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 11;&#114;&am
6cb0: 70 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 p;#107;&#119
6cc0: 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b ;&#097;&
6cd0: 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 #114;&#101;&
6ce0: 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 amp;#046;&#1
6cf0: 31 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 10;&#101;&am
6d00: 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 p;#116;&#046
6d10: 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b ;&#097;&
6d20: 23 31 31 37 3b 22 26 67 74 3b 26 61 6d 70 3b 23 #117;">&#
6d30: 31 31 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 115;&#116;&a
6d40: 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 mp;#101;&#11
6d50: 38 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 8;&#101;&
6d60: 3b 23 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b ;#098;&#064;
6d70: 26 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 &#119;&#
6d80: 31 31 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 111;&#114;&a
6d90: 6d 70 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 mp;#107;&#11
6da0: 39 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 9;&#097;&
6db0: 3b 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b ;#114;&#101;
6dc0: 26 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 &#046;&#
6dd0: 31 31 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 110;&#101;&a
6de0: 6d 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 mp;#116;&#04
6df0: 36 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 6;&#097;&
6e00: 3b 23 31 31 37 3b 26 6c 74 3b 2f 61 26 67 74 3b ;#117;</a>
6e10: 29 26 6c 74 3b 2f 70 26 67 74 3b 0a 3c 2f 63 6f )</p>.</co
6e20: 6e 74 65 6e 74 3e 0a 20 20 3c 2f 65 6e 74 72 79 ntent>. </entry
6e30: 3e 0a 20 20 3c 65 6e 74 72 79 3e 0a 20 20 20 20 >. <entry>.
6e40: 3c 69 64 3e 74 61 67 3a 6a 69 6d 2e 62 65 72 6c <id>tag:jim.berl
6e50: 69 6f 73 2e 64 65 2c 32 30 31 31 2d 31 30 2d 30 ios.de,2011-10-0
6e60: 34 3a 2f 61 72 74 69 63 6c 65 73 2f 6a 69 6d 2d 4:/articles/jim-
6e70: 73 71 6c 69 74 65 2d 73 68 65 6c 6c 2f 3c 2f 69 sqlite-shell/</i
6e80: 64 3e 0a 20 20 20 20 3c 74 69 74 6c 65 20 74 79 d>. <title ty
6e90: 70 65 3d 22 68 74 6d 6c 22 3e 6a 53 51 4c 73 68 pe="html">jSQLsh
6ea0: 20 2d 20 4a 69 6d 20 54 63 6c 20 53 51 4c 69 74 - Jim Tcl SQLit
6eb0: 65 20 53 68 65 6c 6c 3c 2f 74 69 74 6c 65 3e 0a e Shell</title>.
6ec0: 20 20 20 20 3c 70 75 62 6c 69 73 68 65 64 3e 32 <published>2
6ed0: 30 31 31 2d 31 30 2d 30 33 54 31 34 3a 30 30 3a 011-10-03T14:00:
6ee0: 30 30 5a 3c 2f 70 75 62 6c 69 73 68 65 64 3e 0a 00Z</published>.
6ef0: 20 20 20 20 3c 75 70 64 61 74 65 64 3e 32 30 31 <updated>201
6f00: 31 2d 31 30 2d 30 33 54 31 34 3a 30 30 3a 30 30 1-10-03T14:00:00
6f10: 5a 3c 2f 75 70 64 61 74 65 64 3e 0a 20 20 20 20 Z</updated>.
6f20: 3c 6c 69 6e 6b 20 72 65 6c 3d 22 61 6c 74 65 72 <link rel="alter
6f30: 6e 61 74 65 22 20 68 72 65 66 3d 22 68 74 74 70 nate" href="http
6f40: 3a 2f 2f 6a 69 6d 2e 62 65 72 6c 69 6f 73 2e 64 ://jim.berlios.d
6f50: 65 2f 61 72 74 69 63 6c 65 73 2f 6a 69 6d 2d 73 e/articles/jim-s
6f60: 71 6c 69 74 65 2d 73 68 65 6c 6c 2f 22 2f 3e 0a qlite-shell/"/>.
6f70: 20 20 20 20 3c 63 6f 6e 74 65 6e 74 20 74 79 70 <content typ
6f80: 65 3d 22 68 74 6d 6c 22 3e 26 6c 74 3b 70 26 67 e="html"><p&g
6f90: 74 3b 54 68 65 20 6a 53 51 4c 73 68 20 70 72 6f t;The jSQLsh pro
6fa0: 6a 65 63 74 20 61 74 20 26 6c 74 3b 61 20 68 72 ject at <a hr
6fb0: 65 66 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 ef="https://gith
6fc0: 75 62 2e 63 6f 6d 2f 4c 53 74 69 6e 73 6f 6e 2f ub.com/LStinson/
6fd0: 6a 53 51 4c 73 68 22 26 67 74 3b 68 74 74 70 73 jSQLsh">https
6fe0: 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 4c 53 ://github.com/LS
6ff0: 74 69 6e 73 6f 6e 2f 6a 53 51 4c 73 68 26 6c 74 tinson/jSQLsh<
7000: 3b 2f 61 26 67 74 3b 20 70 72 6f 76 69 64 65 73 ;/a> provides
7010: 0a 61 20 73 6d 61 6c 6c 20 62 75 74 20 70 6f 77 .a small but pow
7020: 65 72 66 75 6c 20 73 68 65 6c 6c 20 66 6f 72 20 erful shell for
7030: 73 71 6c 69 74 65 2c 20 6d 6f 64 65 6c 6c 65 64 sqlite, modelled
7040: 20 61 66 74 65 72 0a 26 6c 74 3b 61 20 68 72 65 after.<a hre
7050: 66 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 70 6f f="http://www.po
7060: 73 74 67 72 65 73 71 6c 2e 6f 72 67 2f 64 6f 63 stgresql.org/doc
7070: 73 2f 39 2e 30 2f 73 74 61 74 69 63 2f 61 70 70 s/9.0/static/app
7080: 2d 70 73 71 6c 2e 68 74 6d 6c 22 26 67 74 3b 70 -psql.html">p
7090: 73 71 6c 26 6c 74 3b 2f 61 26 67 74 3b 26 6c 74 sql</a><
70a0: 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 ;/p>..<p&g
70b0: 74 3b 54 68 65 20 63 72 65 61 74 6f 72 2c 20 4c t;The creator, L
70c0: 6f 72 61 6e 63 65 20 53 74 69 6e 73 6f 6e 2c 20 orance Stinson,
70d0: 77 61 6e 74 65 64 20 61 6e 20 73 71 6c 69 74 65 wanted an sqlite
70e0: 20 63 6f 6d 6d 61 6e 64 20 73 68 65 6c 6c 20 77 command shell w
70f0: 68 69 63 68 0a 61 64 64 72 65 73 73 65 64 20 73 hich.addressed s
7100: 6f 6d 65 20 6f 66 20 74 68 65 20 64 65 66 69 63 ome of the defic
7110: 69 65 6e 63 69 65 73 20 6f 66 20 74 68 65 20 6e iencies of the n
7120: 61 74 69 76 65 20 73 71 6c 69 74 65 20 63 6f 6d ative sqlite com
7130: 6d 61 6e 64 0a 73 68 65 6c 6c 2c 20 73 6f 20 68 mand.shell, so h
7140: 65 20 64 65 63 69 64 65 64 20 74 6f 20 63 72 65 e decided to cre
7150: 61 74 65 20 68 69 73 20 6f 77 6e 20 77 69 74 68 ate his own with
7160: 20 4a 69 6d 20 54 63 6c 2e 26 6c 74 3b 2f 70 26 Jim Tcl.</p&
7170: 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 54 6f gt;..<p>To
7180: 20 72 75 6e 20 69 74 2c 20 79 6f 75 20 73 69 6d run it, you sim
7190: 70 6c 79 20 6e 65 65 64 20 26 6c 74 3b 63 6f 64 ply need <cod
71a0: 65 26 67 74 3b 6a 69 6d 73 68 26 6c 74 3b 2f 63 e>jimsh</c
71b0: 6f 64 65 26 67 74 3b 20 62 75 69 6c 74 20 77 69 ode> built wi
71c0: 74 68 20 26 6c 74 3b 65 6d 26 67 74 3b 73 71 6c th <em>sql
71d0: 69 74 65 33 26 6c 74 3b 2f 65 6d 26 67 74 3b 20 ite3</em>
71e0: 61 6e 64 20 26 6c 74 3b 65 6d 26 67 74 3b 72 65 and <em>re
71f0: 61 64 6c 69 6e 65 26 6c 74 3b 2f 65 6d 26 67 74 adline</em>
7200: 3b 20 73 75 70 70 6f 72 74 2e 0a 46 6f 72 20 65 ; support..For e
7210: 78 61 6d 70 6c 65 2c 20 74 6f 20 62 75 69 6c 64 xample, to build
7220: 20 61 20 76 65 72 73 69 6f 6e 20 6f 66 20 26 6c a version of &l
7230: 74 3b 63 6f 64 65 26 67 74 3b 6a 69 6d 73 68 26 t;code>jimsh&
7240: 6c 74 3b 2f 63 6f 64 65 26 67 74 3b 20 77 69 74 lt;/code> wit
7250: 68 20 74 68 65 73 65 20 65 78 74 65 6e 73 69 6f h these extensio
7260: 6e 73 20 69 6e 63 6c 75 64 65 64 20 73 74 61 74 ns included stat
7270: 69 63 61 6c 6c 79 3a 26 6c 74 3b 2f 70 26 67 74 ically:</p>
7280: 3b 0a 0a 26 6c 74 3b 70 72 65 20 63 6c 61 73 73 ;..<pre class
7290: 3d 22 73 68 5f 75 6e 69 78 22 26 67 74 3b 0a 24 ="sh_unix">.$
72a0: 20 2e 2f 63 6f 6e 66 69 67 75 72 65 20 2d 2d 77 ./configure --w
72b0: 69 74 68 2d 65 78 74 3d 22 73 71 6c 69 74 65 33 ith-ext="sqlite3
72c0: 20 72 6c 70 72 6f 6d 70 74 22 0a 2e 2e 2e 0a 24 rlprompt".....$
72d0: 20 6d 61 6b 65 0a 2e 2e 2e 0a 26 6c 74 3b 2f 70 make.....</p
72e0: 72 65 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 re>..<p>
72f0: 3b 41 6e 64 20 74 68 65 6e 20 74 72 79 20 69 74 ;And then try it
7300: 20 6f 75 74 3a 26 6c 74 3b 2f 70 26 67 74 3b 0a out:</p>.
7310: 0a 26 6c 74 3b 70 72 65 20 63 6c 61 73 73 3d 22 .<pre class="
7320: 73 68 5f 75 6e 69 78 22 26 67 74 3b 0a 24 20 2e sh_unix">.$ .
7330: 2f 6a 69 6d 73 68 20 6a 73 71 6c 73 68 0a 57 65 /jimsh jsqlsh.We
7340: 6c 63 6f 6d 65 20 74 6f 20 74 68 65 20 53 51 4c lcome to the SQL
7350: 69 74 65 20 53 68 65 6c 6c 20 69 6e 20 4a 69 6d ite Shell in Jim
7360: 20 54 43 4c 20 30 2e 37 32 2e 0a 4f 70 65 6e 69 TCL 0.72..Openi
7370: 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20 ng the database
7380: 27 3a 6d 65 6d 6f 72 79 3a 27 2e 0a 54 6f 20 65 ':memory:'..To e
7390: 78 65 63 75 74 65 20 61 20 71 75 65 72 79 20 74 xecute a query t
73a0: 79 70 65 20 27 2f 27 2e 20 46 6f 72 20 68 65 6c ype '/'. For hel
73b0: 70 20 74 79 70 65 20 27 2f 68 27 2e 0a 3a 6d 65 p type '/h'..:me
73c0: 6d 6f 72 79 3a 20 28 30 20 72 6f 77 73 2c 20 30 mory: (0 rows, 0
73d0: 20 63 68 61 6e 67 65 73 29 20 23 20 2f 68 0a 43 changes) # /h.C
73e0: 6f 6d 6d 61 6e 64 73 3a 0a 20 20 2f 41 28 55 54 ommands:. /A(UT
73f0: 4f 29 20 20 20 20 20 54 6f 67 67 6c 65 20 74 68 O) Toggle th
7400: 65 20 61 75 74 6f 20 6f 70 74 69 6f 6e 20 73 74 e auto option st
7410: 61 74 65 2e 0a 20 20 2f 63 28 6c 65 61 72 29 20 ate.. /c(lear)
7420: 20 20 20 43 6c 65 61 72 20 74 68 65 20 71 75 65 Clear the que
7430: 72 79 20 62 75 66 66 65 72 0a 20 20 2f 44 28 45 ry buffer. /D(E
7440: 42 55 47 29 20 20 20 20 54 6f 67 67 6c 65 20 74 BUG) Toggle t
7450: 68 65 20 64 65 62 75 67 20 6f 70 74 69 6f 6e 20 he debug option
7460: 73 74 61 74 65 2e 0a 20 20 2f 64 20 20 20 20 20 state.. /d
7470: 20 20 20 20 20 44 69 73 70 6c 61 79 20 61 6c 6c Display all
7480: 20 6f 62 6a 65 63 74 73 20 69 6e 20 74 68 65 20 objects in the
7490: 64 61 74 61 62 61 73 65 2e 0a 20 20 2f 64 5b 69 database.. /d[i
74a0: 74 76 5d 20 20 20 20 20 44 69 73 70 6c 61 79 20 tv] Display
74b0: 61 6c 6c 20 69 6e 64 65 78 65 73 20 28 2f 64 69 all indexes (/di
74c0: 29 20 2f 20 74 61 62 6c 65 73 20 28 2f 64 74 29 ) / tables (/dt)
74d0: 20 2f 20 76 69 65 77 73 20 28 2f 64 76 29 2e 0a / views (/dv)..
74e0: 20 20 2f 64 20 4f 42 4a 20 20 20 20 20 20 44 65 /d OBJ De
74f0: 73 63 72 69 62 65 20 74 68 65 20 6f 62 6a 65 63 scribe the objec
7500: 74 20 4f 42 4a 2e 0a 20 20 2f 64 73 20 4f 42 4a t OBJ.. /ds OBJ
7510: 20 20 20 20 20 44 69 73 70 6c 61 79 73 20 74 68 Displays th
7520: 65 20 73 63 68 65 6d 61 20 66 6f 72 20 74 68 65 e schema for the
7530: 20 6f 62 6a 65 63 74 20 4f 42 4a 2e 0a 20 20 2f object OBJ.. /
7540: 65 28 64 69 74 29 20 20 20 20 20 45 64 69 74 20 e(dit) Edit
7550: 74 68 65 20 71 75 65 72 79 20 62 75 66 66 65 72 the query buffer
7560: 2e 0a 20 20 2f 67 6f 20 7c 20 2f 20 20 20 20 20 .. /go | /
7570: 45 78 65 63 75 74 65 20 74 68 65 20 71 75 65 72 Execute the quer
7580: 79 20 69 6e 20 74 68 65 20 71 75 65 72 79 20 62 y in the query b
7590: 75 66 66 65 72 2e 0a 20 20 2f 68 28 65 6c 70 29 uffer.. /h(elp)
75a0: 20 20 20 20 20 50 72 69 6e 74 20 74 68 69 73 20 Print this
75b0: 68 65 6c 70 20 74 65 78 74 2e 0a 20 20 2f 6f 28 help text.. /o(
75c0: 70 65 6e 29 20 20 20 20 20 4f 70 65 6e 20 61 20 pen) Open a
75d0: 64 61 74 61 62 61 73 65 20 66 69 6c 65 2c 20 63 database file, c
75e0: 68 61 6e 67 65 20 64 69 72 65 63 74 6f 72 69 65 hange directorie
75f0: 73 20 61 6e 64 20 6c 69 73 74 20 66 69 6c 65 73 s and list files
7600: 2e 0a 20 20 2f 50 28 41 47 45 52 29 20 20 20 20 .. /P(AGER)
7610: 54 6f 67 67 6c 65 20 74 68 65 20 70 61 67 65 20 Toggle the page
7620: 6f 70 74 69 6f 6e 20 73 74 61 74 65 2e 0a 20 20 option state..
7630: 2f 70 28 72 69 6e 74 29 20 20 20 20 50 72 69 6e /p(rint) Prin
7640: 74 20 74 68 65 20 71 75 65 72 79 20 62 75 66 66 t the query buff
7650: 65 72 2e 0a 20 20 2f 73 28 65 74 29 20 20 20 20 er.. /s(et)
7660: 20 20 53 65 74 2f 4c 69 73 74 20 63 6f 6e 66 69 Set/List confi
7670: 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 guration options
7680: 2e 20 27 2f 73 20 4f 50 54 49 4f 4e 20 56 41 4c . '/s OPTION VAL
7690: 55 45 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 UE'.
76a0: 20 20 56 61 6c 75 65 73 20 61 72 65 20 74 72 65 Values are tre
76b0: 61 74 65 64 20 61 73 20 54 43 4c 20 73 74 72 69 ated as TCL stri
76c0: 6e 67 73 20 61 6e 64 20 63 61 6e 20 62 65 20 71 ngs and can be q
76d0: 75 6f 74 65 64 2e 0a 20 20 2f 51 28 75 69 65 74 uoted.. /Q(uiet
76e0: 29 20 20 20 20 54 6f 67 67 6c 65 20 74 68 65 20 ) Toggle the
76f0: 71 75 69 65 74 20 6f 70 74 69 6f 6e 20 73 74 61 quiet option sta
7700: 74 65 2e 0a 20 20 2f 71 28 75 69 74 29 20 20 20 te.. /q(uit)
7710: 20 20 51 75 69 74 20 20 28 41 6c 73 6f 20 43 74 Quit (Also Ct
7720: 72 6c 2d 44 29 0a 20 20 2f 75 28 73 65 72 29 20 rl-D). /u(ser)
7730: 20 20 20 20 44 69 73 70 6c 61 79 20 74 68 65 20 Display the
7740: 75 73 65 72 20 6d 61 63 72 6f 73 2e 0a 20 20 2f user macros.. /
7750: 75 28 73 65 72 29 23 20 20 20 20 43 6f 70 79 20 u(ser)# Copy
7760: 75 73 65 72 20 6d 61 63 72 6f 20 23 20 69 6e 74 user macro # int
7770: 6f 20 74 68 65 20 71 75 65 72 79 20 62 75 66 66 o the query buff
7780: 65 72 2e 0a 20 20 2f 75 28 73 65 72 29 23 20 2d er.. /u(ser)# -
7790: 20 20 43 6f 70 79 20 74 68 65 20 71 75 65 72 79 Copy the query
77a0: 20 62 75 66 66 65 72 2c 20 6f 72 20 73 75 70 70 buffer, or supp
77b0: 6c 69 65 64 20 74 65 78 74 2c 20 69 6e 74 6f 20 lied text, into
77c0: 6d 61 63 72 6f 20 23 2e 0a 3a 6d 65 6d 6f 72 79 macro #..:memory
77d0: 3a 20 28 30 20 72 6f 77 73 2c 20 30 20 63 68 61 : (0 rows, 0 cha
77e0: 6e 67 65 73 29 20 23 20 0a 26 6c 74 3b 2f 70 72 nges) # .</pr
77f0: 65 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b e>..<p>
7800: 53 74 65 76 65 20 42 65 6e 6e 65 74 74 20 28 26 Steve Bennett (&
7810: 6c 74 3b 61 20 68 72 65 66 3d 22 26 61 6d 70 3b lt;a href="&
7820: 23 31 30 39 3b 26 61 6d 70 3b 23 30 39 37 3b 26 #109;&#097;&
7830: 61 6d 70 3b 23 31 30 35 3b 26 61 6d 70 3b 23 31 amp;#105;&#1
7840: 30 38 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 08;&#116;&am
7850: 70 3b 23 31 31 31 3b 3a 26 61 6d 70 3b 23 31 31 p;#111;:&#11
7860: 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 5;&#116;&
7870: 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 3b ;#101;&#118;
7880: 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 &#101;&#
7890: 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 61 098;&#064;&a
78a0: 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 31 mp;#119;&#11
78b0: 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 1;&#114;&
78c0: 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 3b ;#107;&#119;
78d0: 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 &#097;&#
78e0: 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 114;&#101;&a
78f0: 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 31 mp;#046;&#11
7900: 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 0;&#101;&
7910: 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 3b ;#116;&#046;
7920: 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 &#097;&#
7930: 31 31 37 3b 22 26 67 74 3b 26 61 6d 70 3b 23 31 117;">&#1
7940: 31 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 15;&#116;&am
7950: 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 p;#101;&#118
7960: 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b ;&#101;&
7970: 23 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 #098;&#064;&
7980: 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 amp;#119;&#1
7990: 31 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 11;&#114;&am
79a0: 70 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 p;#107;&#119
79b0: 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b ;&#097;&
79c0: 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 #114;&#101;&
79d0: 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 amp;#046;&#1
79e0: 31 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 10;&#101;&am
79f0: 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 p;#116;&#046
7a00: 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b ;&#097;&
7a10: 23 31 31 37 3b 26 6c 74 3b 2f 61 26 67 74 3b 29 #117;</a>)
7a20: 26 6c 74 3b 2f 70 26 67 74 3b 0a 3c 2f 63 6f 6e </p>.</con
7a30: 74 65 6e 74 3e 0a 20 20 3c 2f 65 6e 74 72 79 3e tent>. </entry>
7a40: 0a 20 20 3c 65 6e 74 72 79 3e 0a 20 20 20 20 3c . <entry>. <
7a50: 69 64 3e 74 61 67 3a 6a 69 6d 2e 62 65 72 6c 69 id>tag:jim.berli
7a60: 6f 73 2e 64 65 2c 32 30 31 31 2d 30 39 2d 30 36 os.de,2011-09-06
7a70: 3a 2f 61 72 74 69 63 6c 65 73 2f 6d 65 74 61 6b :/articles/metak
7a80: 69 74 2d 65 78 74 65 6e 73 69 6f 6e 2f 3c 2f 69 it-extension/</i
7a90: 64 3e 0a 20 20 20 20 3c 74 69 74 6c 65 20 74 79 d>. <title ty
7aa0: 70 65 3d 22 68 74 6d 6c 22 3e 4e 65 77 20 4d 65 pe="html">New Me
7ab0: 74 61 6b 69 74 20 45 78 74 65 6e 73 69 6f 6e 3c takit Extension<
7ac0: 2f 74 69 74 6c 65 3e 0a 20 20 20 20 3c 70 75 62 /title>. <pub
7ad0: 6c 69 73 68 65 64 3e 32 30 31 31 2d 30 39 2d 30 lished>2011-09-0
7ae0: 35 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 70 75 62 5T14:00:00Z</pub
7af0: 6c 69 73 68 65 64 3e 0a 20 20 20 20 3c 75 70 64 lished>. <upd
7b00: 61 74 65 64 3e 32 30 31 31 2d 30 39 2d 30 35 54 ated>2011-09-05T
7b10: 31 34 3a 30 30 3a 30 30 5a 3c 2f 75 70 64 61 74 14:00:00Z</updat
7b20: 65 64 3e 0a 20 20 20 20 3c 6c 69 6e 6b 20 72 65 ed>. <link re
7b30: 6c 3d 22 61 6c 74 65 72 6e 61 74 65 22 20 68 72 l="alternate" hr
7b40: 65 66 3d 22 68 74 74 70 3a 2f 2f 6a 69 6d 2e 62 ef="http://jim.b
7b50: 65 72 6c 69 6f 73 2e 64 65 2f 61 72 74 69 63 6c erlios.de/articl
7b60: 65 73 2f 6d 65 74 61 6b 69 74 2d 65 78 74 65 6e es/metakit-exten
7b70: 73 69 6f 6e 2f 22 2f 3e 0a 20 20 20 20 3c 63 6f sion/"/>. <co
7b80: 6e 74 65 6e 74 20 74 79 70 65 3d 22 68 74 6d 6c ntent type="html
7b90: 22 3e 26 6c 74 3b 70 26 67 74 3b 41 6c 65 78 61 "><p>Alexa
7ba0: 6e 64 65 72 20 53 68 70 69 6c 6b 69 6e 20 68 61 nder Shpilkin ha
7bb0: 73 20 63 6f 6e 74 72 69 62 75 74 65 64 20 74 68 s contributed th
7bc0: 65 20 6d 65 74 61 6b 69 74 20 65 78 74 65 6e 73 e metakit extens
7bd0: 69 6f 6e 20 74 6f 20 4a 69 6d 20 54 63 6c 2e 26 ion to Jim Tcl.&
7be0: 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 lt;/p>..<p
7bf0: 26 67 74 3b 4d 65 74 61 6b 69 74 20 28 26 6c 74 >Metakit (<
7c00: 3b 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f ;a href="http://
7c10: 65 71 75 69 34 2e 63 6f 6d 2f 6d 65 74 61 6b 69 equi4.com/metaki
7c20: 74 2f 22 26 67 74 3b 68 74 74 70 3a 2f 2f 65 71 t/">http://eq
7c30: 75 69 34 2e 63 6f 6d 2f 6d 65 74 61 6b 69 74 2f ui4.com/metakit/
7c40: 26 6c 74 3b 2f 61 26 67 74 3b 29 20 69 73 20 61 </a>) is a
7c50: 6e 20 65 6d 62 65 64 64 61 62 6c 65 20 6e 6f 6e n embeddable non
7c60: 2d 53 51 4c 0a 64 61 74 61 62 61 73 65 20 77 69 -SQL.database wi
7c70: 74 68 20 61 64 76 61 6e 63 65 64 20 64 61 74 61 th advanced data
7c80: 20 6d 61 6e 69 70 75 6c 61 74 69 6f 6e 20 66 65 manipulation fe
7c90: 61 74 75 72 65 73 20 74 68 72 6f 75 67 68 20 74 atures through t
7ca0: 68 65 20 75 73 65 20 6f 66 20 76 69 65 77 73 2e he use of views.
7cb0: 0a 55 73 69 6e 67 20 6d 65 74 61 6b 69 74 20 63 .Using metakit c
7cc0: 61 6e 20 62 65 20 61 6e 20 61 6c 74 65 72 6e 61 an be an alterna
7cd0: 74 69 76 65 20 74 6f 20 73 71 6c 69 74 65 2e 26 tive to sqlite.&
7ce0: 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 lt;/p>..<p
7cf0: 26 67 74 3b 54 68 65 20 4a 69 6d 20 54 63 6c 20 >The Jim Tcl
7d00: 6d 65 74 61 6b 69 74 20 69 6e 74 65 72 66 61 63 metakit interfac
7d10: 65 20 69 73 20 64 69 66 66 65 72 65 6e 74 20 66 e is different f
7d20: 72 6f 6d 20 74 68 65 20 54 63 6c 20 6d 65 74 61 rom the Tcl meta
7d30: 6b 69 74 20 69 6e 74 65 72 66 61 63 65 20 61 73 kit interface as
7d40: 20 69 74 0a 6d 61 6b 65 73 20 75 73 65 20 6f 66 it.makes use of
7d50: 20 75 6e 69 71 75 65 20 4a 69 6d 20 54 63 6c 20 unique Jim Tcl
7d60: 66 65 61 74 75 72 65 73 20 73 75 63 68 20 61 73 features such as
7d70: 20 72 65 66 65 72 65 6e 63 65 73 2e 20 54 68 65 references. The
7d80: 20 26 6c 74 3b 61 20 68 72 65 66 3d 22 2f 64 6f <a href="/do
7d90: 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 6d 65 74 61 cumentation/meta
7da0: 6b 69 74 2f 22 26 67 74 3b 6d 65 74 61 6b 69 74 kit/">metakit
7db0: 20 65 78 74 65 6e 73 69 6f 6e 26 6c 74 3b 2f 61 extension</a
7dc0: 26 67 74 3b 0a 64 6f 63 75 6d 65 6e 74 61 74 69 >.documentati
7dd0: 6f 6e 20 66 75 6c 6c 79 20 65 78 70 6c 61 69 6e on fully explain
7de0: 73 20 74 68 65 20 41 50 49 2e 26 6c 74 3b 2f 70 s the API.</p
7df0: 26 67 74 3b 0a 0a 26 6c 74 3b 68 32 20 69 64 3d >..<h2 id=
7e00: 22 62 75 69 6c 64 69 6e 67 2d 74 68 65 2d 6d 65 "building-the-me
7e10: 74 61 6b 69 74 2d 65 78 74 65 6e 73 69 6f 6e 22 takit-extension"
7e20: 26 67 74 3b 42 75 69 6c 64 69 6e 67 20 74 68 65 >Building the
7e30: 20 4d 65 74 61 6b 69 74 20 45 78 74 65 6e 73 69 Metakit Extensi
7e40: 6f 6e 26 6c 74 3b 2f 68 32 26 67 74 3b 0a 0a 26 on</h2>..&
7e50: 6c 74 3b 70 26 67 74 3b 42 75 69 6c 64 69 6e 67 lt;p>Building
7e60: 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 20 72 the extension r
7e70: 65 71 75 69 72 65 73 20 74 68 65 20 6d 65 74 61 equires the meta
7e80: 6b 69 74 20 68 65 61 64 65 72 73 20 61 6e 64 20 kit headers and
7e90: 6c 69 62 72 61 72 79 20 74 6f 20 62 65 0a 61 76 library to be.av
7ea0: 61 69 6c 61 62 6c 65 2e 20 48 65 72 65 20 69 73 ailable. Here is
7eb0: 20 6f 6e 65 20 77 61 79 20 74 6f 20 73 74 61 74 one way to stat
7ec0: 69 63 61 6c 6c 79 20 62 75 69 6c 64 20 74 68 65 ically build the
7ed0: 20 6d 65 74 61 6b 69 74 20 65 78 74 65 6e 73 69 metakit extensi
7ee0: 6f 6e 20 69 6e 74 6f 20 6a 69 6d 73 68 2e 26 6c on into jimsh.&l
7ef0: 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 72 t;/p>..<pr
7f00: 65 20 63 6c 61 73 73 3d 22 73 68 5f 75 6e 69 78 e class="sh_unix
7f10: 22 26 67 74 3b 0a 24 20 63 64 20 6a 69 6d 74 63 ">.$ cd jimtc
7f20: 6c 0a 24 20 73 76 6e 20 63 6f 20 73 76 6e 3a 2f l.$ svn co svn:/
7f30: 2f 73 76 6e 2e 65 71 75 69 34 2e 63 6f 6d 2f 6d /svn.equi4.com/m
7f40: 65 74 61 6b 69 74 2f 74 72 75 6e 6b 20 6d 65 74 etakit/trunk met
7f50: 61 6b 69 74 0a 24 20 63 64 20 6d 65 74 61 6b 69 akit.$ cd metaki
7f60: 74 2f 75 6e 69 78 0a 24 20 2e 2f 63 6f 6e 66 69 t/unix.$ ./confi
7f70: 67 75 72 65 20 2d 2d 77 69 74 68 6f 75 74 2d 74 gure --without-t
7f80: 63 6c 20 2d 2d 77 69 74 68 6f 75 74 2d 70 79 74 cl --without-pyt
7f90: 68 6f 6e 20 2d 2d 64 69 73 61 62 6c 65 2d 73 68 hon --disable-sh
7fa0: 61 72 65 64 0a 24 20 6d 61 6b 65 0a 24 20 63 64 ared.$ make.$ cd
7fb0: 20 2e 2e 2f 2e 2e 0a 24 20 2e 2f 63 6f 6e 66 69 ../...$ ./confi
7fc0: 67 75 72 65 20 2d 2d 77 69 74 68 2d 65 78 74 3d gure --with-ext=
7fd0: 6d 6b 20 43 46 4c 41 47 53 3d 22 2d 49 6d 65 74 mk CFLAGS="-Imet
7fe0: 61 6b 69 74 2f 69 6e 63 6c 75 64 65 20 2d 4c 6d akit/include -Lm
7ff0: 65 74 61 6b 69 74 2f 75 6e 69 78 22 0a 24 20 6d etakit/unix".$ m
8000: 61 6b 65 0a 24 20 2e 2f 6a 69 6d 73 68 20 65 78 ake.$ ./jimsh ex
8010: 61 6d 70 6c 65 73 2f 6d 65 74 61 6b 69 74 2e 74 amples/metakit.t
8020: 63 6c 0a 20 20 2e 2e 2e 0a 26 6c 74 3b 2f 70 72 cl. ....</pr
8030: 65 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b e>..<p>
8040: 53 74 65 76 65 20 42 65 6e 6e 65 74 74 20 28 26 Steve Bennett (&
8050: 6c 74 3b 61 20 68 72 65 66 3d 22 26 61 6d 70 3b lt;a href="&
8060: 23 31 30 39 3b 26 61 6d 70 3b 23 30 39 37 3b 26 #109;&#097;&
8070: 61 6d 70 3b 23 31 30 35 3b 26 61 6d 70 3b 23 31 amp;#105;&#1
8080: 30 38 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 08;&#116;&am
8090: 70 3b 23 31 31 31 3b 3a 26 61 6d 70 3b 23 31 31 p;#111;:&#11
80a0: 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 5;&#116;&
80b0: 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 3b ;#101;&#118;
80c0: 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 &#101;&#
80d0: 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 61 098;&#064;&a
80e0: 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 31 mp;#119;&#11
80f0: 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 1;&#114;&
8100: 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 3b ;#107;&#119;
8110: 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 &#097;&#
8120: 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 114;&#101;&a
8130: 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 31 mp;#046;&#11
8140: 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 0;&#101;&
8150: 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 3b ;#116;&#046;
8160: 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 &#097;&#
8170: 31 31 37 3b 22 26 67 74 3b 26 61 6d 70 3b 23 31 117;">&#1
8180: 31 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 15;&#116;&am
8190: 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 p;#101;&#118
81a0: 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b ;&#101;&
81b0: 23 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 #098;&#064;&
81c0: 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 amp;#119;&#1
81d0: 31 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 11;&#114;&am
81e0: 70 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 p;#107;&#119
81f0: 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b ;&#097;&
8200: 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 #114;&#101;&
8210: 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 amp;#046;&#1
8220: 31 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 10;&#101;&am
8230: 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 p;#116;&#046
8240: 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b ;&#097;&
8250: 23 31 31 37 3b 26 6c 74 3b 2f 61 26 67 74 3b 29 #117;</a>)
8260: 26 6c 74 3b 2f 70 26 67 74 3b 0a 3c 2f 63 6f 6e </p>.</con
8270: 74 65 6e 74 3e 0a 20 20 3c 2f 65 6e 74 72 79 3e tent>. </entry>
8280: 0a 20 20 3c 65 6e 74 72 79 3e 0a 20 20 20 20 3c . <entry>. <
8290: 69 64 3e 74 61 67 3a 6a 69 6d 2e 62 65 72 6c 69 id>tag:jim.berli
82a0: 6f 73 2e 64 65 2c 32 30 31 31 2d 30 36 2d 32 34 os.de,2011-06-24
82b0: 3a 2f 61 72 74 69 63 6c 65 73 2f 6a 69 6d 2d 72 :/articles/jim-r
82c0: 65 6c 65 61 73 65 2d 30 2d 37 31 2f 3c 2f 69 64 elease-0-71/</id
82d0: 3e 0a 20 20 20 20 3c 74 69 74 6c 65 20 74 79 70 >. <title typ
82e0: 65 3d 22 68 74 6d 6c 22 3e 4a 69 6d 20 54 63 6c e="html">Jim Tcl
82f0: 20 76 65 72 73 69 6f 6e 20 30 2e 37 31 3c 2f 74 version 0.71</t
8300: 69 74 6c 65 3e 0a 20 20 20 20 3c 70 75 62 6c 69 itle>. <publi
8310: 73 68 65 64 3e 32 30 31 31 2d 30 36 2d 32 33 54 shed>2011-06-23T
8320: 31 34 3a 30 30 3a 30 30 5a 3c 2f 70 75 62 6c 69 14:00:00Z</publi
8330: 73 68 65 64 3e 0a 20 20 20 20 3c 75 70 64 61 74 shed>. <updat
8340: 65 64 3e 32 30 31 31 2d 30 36 2d 32 33 54 31 34 ed>2011-06-23T14
8350: 3a 30 30 3a 30 30 5a 3c 2f 75 70 64 61 74 65 64 :00:00Z</updated
8360: 3e 0a 20 20 20 20 3c 6c 69 6e 6b 20 72 65 6c 3d >. <link rel=
8370: 22 61 6c 74 65 72 6e 61 74 65 22 20 68 72 65 66 "alternate" href
8380: 3d 22 68 74 74 70 3a 2f 2f 6a 69 6d 2e 62 65 72 ="http://jim.ber
8390: 6c 69 6f 73 2e 64 65 2f 61 72 74 69 63 6c 65 73 lios.de/articles
83a0: 2f 6a 69 6d 2d 72 65 6c 65 61 73 65 2d 30 2d 37 /jim-release-0-7
83b0: 31 2f 22 2f 3e 0a 20 20 20 20 3c 63 6f 6e 74 65 1/"/>. <conte
83c0: 6e 74 20 74 79 70 65 3d 22 68 74 6d 6c 22 3e 26 nt type="html">&
83d0: 6c 74 3b 68 32 20 69 64 3d 22 61 6e 6e 6f 75 6e lt;h2 id="announ
83e0: 63 65 2d 6a 69 6d 2d 74 63 6c 2d 76 65 72 73 69 ce-jim-tcl-versi
83f0: 6f 6e 2d 30 37 31 22 26 67 74 3b 41 4e 4e 4f 55 on-071">ANNOU
8400: 4e 43 45 3a 20 4a 69 6d 20 54 63 6c 20 76 65 72 NCE: Jim Tcl ver
8410: 73 69 6f 6e 20 30 2e 37 31 26 6c 74 3b 2f 68 32 sion 0.71</h2
8420: 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 4a >..<p>J
8430: 69 6d 20 54 63 6c 20 30 2e 37 31 20 68 61 73 20 im Tcl 0.71 has
8440: 62 65 65 6e 20 72 65 6c 65 61 73 65 64 20 61 6e been released an
8450: 64 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 66 d is available f
8460: 72 6f 6d 3a 20 26 6c 74 3b 2f 70 26 67 74 3b 0a rom: </p>.
8470: 0a 26 6c 74 3b 70 26 67 74 3b 26 6c 74 3b 61 20 .<p><a
8480: 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 72 65 70 href="http://rep
8490: 6f 2e 6f 72 2e 63 7a 2f 77 2f 6a 69 6d 74 63 6c o.or.cz/w/jimtcl
84a0: 2e 67 69 74 22 26 67 74 3b 68 74 74 70 3a 2f 2f .git">http://
84b0: 72 65 70 6f 2e 6f 72 2e 63 7a 2f 77 2f 6a 69 6d repo.or.cz/w/jim
84c0: 74 63 6c 2e 67 69 74 26 6c 74 3b 2f 61 26 67 74 tcl.git</a>
84d0: 3b 20 6f 72 20 26 6c 74 3b 61 20 68 72 65 66 3d ; or <a href=
84e0: 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e "https://github.
84f0: 63 6f 6d 2f 6d 73 74 65 76 65 62 2f 6a 69 6d 74 com/msteveb/jimt
8500: 63 6c 22 26 67 74 3b 68 74 74 70 73 3a 2f 2f 67 cl">https://g
8510: 69 74 68 75 62 2e 63 6f 6d 2f 6d 73 74 65 76 65 ithub.com/msteve
8520: 62 2f 6a 69 6d 74 63 6c 26 6c 74 3b 2f 61 26 67 b/jimtcl</a&g
8530: 74 3b 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c t;</p>..&l
8540: 74 3b 68 32 20 69 64 3d 22 63 68 61 6e 67 65 73 t;h2 id="changes
8550: 2d 73 69 6e 63 65 2d 76 65 72 73 69 6f 6e 2d 30 -since-version-0
8560: 37 30 22 26 67 74 3b 43 48 41 4e 47 45 53 20 53 70">CHANGES S
8570: 49 4e 43 45 20 56 45 52 53 49 4f 4e 20 30 2e 37 INCE VERSION 0.7
8580: 30 26 6c 74 3b 2f 68 32 26 67 74 3b 0a 0a 26 6c 0</h2>..&l
8590: 74 3b 70 26 67 74 3b 54 68 69 73 20 72 65 6c 65 t;p>This rele
85a0: 61 73 65 20 69 6e 63 6f 72 70 6f 72 61 74 65 73 ase incorporates
85b0: 20 62 75 67 20 66 69 78 65 73 20 61 6e 64 0a 73 bug fixes and.s
85c0: 65 76 65 72 61 6c 20 6e 65 77 20 66 65 61 74 75 everal new featu
85d0: 72 65 73 2c 20 69 6e 63 6c 75 64 69 6e 67 3a 26 res, including:&
85e0: 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 lt;/p>..<p
85f0: 26 67 74 3b 42 75 67 73 20 66 69 78 65 64 26 6c >Bugs fixed&l
8600: 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 75 6c t;/p>..<ul
8610: 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 >. <li>
8620: 3b 4c 69 6e 65 20 65 64 69 74 69 6e 67 20 77 6f ;Line editing wo
8630: 72 6b 73 20 62 65 74 74 65 72 20 6f 6e 20 73 65 rks better on se
8640: 72 69 61 6c 20 63 6f 6e 73 6f 6c 65 73 26 6c 74 rial consoles<
8650: 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c ;/li>. <l
8660: 69 26 67 74 3b 46 69 78 20 76 61 72 69 6f 75 73 i>Fix various
8670: 20 70 61 72 73 69 6e 67 20 62 75 67 73 20 61 6e parsing bugs an
8680: 64 20 63 72 61 73 68 65 73 20 69 6e 20 75 6e 75 d crashes in unu
8690: 73 75 61 6c 20 63 61 73 65 73 26 6c 74 3b 2f 6c sual cases</l
86a0: 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 i>. <li&g
86b0: 74 3b 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 t;package requir
86c0: 65 20 6e 6f 77 20 6c 6f 61 64 73 20 70 61 63 6b e now loads pack
86d0: 61 67 65 73 20 61 74 20 74 68 65 20 67 6c 6f 62 ages at the glob
86e0: 61 6c 20 6c 65 76 65 6c 26 6c 74 3b 2f 6c 69 26 al level</li&
86f0: 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b gt;. <li>
8700: 73 74 72 69 6e 67 20 74 72 69 6d 2a 20 61 6e 64 string trim* and
8710: 20 73 74 72 69 6e 67 20 6c 61 73 74 20 61 72 65 string last are
8720: 20 6e 6f 77 20 38 2d 62 69 74 20 63 6c 65 61 6e now 8-bit clean
8730: 20 61 6e 64 20 66 61 73 74 65 72 26 6c 74 3b 2f and faster</
8740: 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 li>. <li&
8750: 67 74 3b 65 78 65 63 20 63 68 69 6c 64 20 70 72 gt;exec child pr
8760: 6f 63 65 73 73 65 73 20 61 72 65 20 6e 6f 77 20 ocesses are now
8770: 72 65 61 70 65 64 26 6c 74 3b 2f 6c 69 26 67 74 reaped</li>
8780: 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b 46 44 ;. <li>FD
8790: 5f 43 4c 4f 45 58 45 43 20 69 73 20 6e 6f 77 20 _CLOEXEC is now
87a0: 73 65 74 20 6f 6e 20 6f 70 65 6e 65 64 20 66 69 set on opened fi
87b0: 6c 65 68 61 6e 64 6c 65 73 26 6c 74 3b 2f 6c 69 lehandles</li
87c0: 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 >. <li>
87d0: 3b 64 6c 6f 70 65 6e 28 29 20 68 61 6e 64 6c 65 ;dlopen() handle
87e0: 73 20 61 72 65 20 6e 6f 77 20 66 72 65 65 64 20 s are now freed
87f0: 6f 6e 20 66 72 65 65 69 6e 67 20 69 6e 74 65 72 on freeing inter
8800: 70 72 65 74 65 72 26 6c 74 3b 2f 6c 69 26 67 74 preter</li>
8810: 3b 0a 26 6c 74 3b 2f 75 6c 26 67 74 3b 0a 0a 26 ;.</ul>..&
8820: 6c 74 3b 70 26 67 74 3b 46 65 61 74 75 72 65 73 lt;p>Features
8830: 20 61 64 64 65 64 26 6c 74 3b 2f 70 26 67 74 3b added</p>
8840: 0a 0a 26 6c 74 3b 75 6c 26 67 74 3b 0a 20 20 26 ..<ul>. &
8850: 6c 74 3b 6c 69 26 67 74 3b 41 64 64 20 6f 70 74 lt;li>Add opt
8860: 69 6f 6e 61 6c 20 73 75 70 70 6f 72 74 20 66 6f ional support fo
8870: 72 20 74 68 65 20 62 69 6e 61 72 79 20 63 6f 6d r the binary com
8880: 6d 61 6e 64 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a mand</li>.
8890: 20 20 26 6c 74 3b 6c 69 26 67 74 3b 54 65 73 74 <li>Test
88a0: 20 73 75 69 74 65 20 69 73 20 6e 6f 77 20 74 63 suite is now tc
88b0: 6c 74 65 73 74 73 20 76 32 20 63 6f 6d 70 61 74 ltests v2 compat
88c0: 69 62 6c 65 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a ible</li>.
88d0: 20 20 26 6c 74 3b 6c 69 26 67 74 3b 70 72 6f 63 <li>proc
88e0: 20 26 61 6d 70 3b 6c 73 71 75 6f 3b 61 72 67 73 &lsquo;args
88f0: 26 61 6d 70 3b 72 73 71 75 6f 3b 20 63 61 6e 20 &rsquo; can
8900: 6e 6f 77 20 62 65 20 72 65 6e 61 6d 65 64 26 6c now be renamed&l
8910: 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b t;/li>. <
8920: 6c 69 26 67 74 3b 41 75 74 6f 6d 61 74 69 63 20 li>Automatic
8930: 70 72 6f 63 20 75 70 72 65 66 20 61 72 67 73 20 proc upref args
8940: 61 72 65 20 6e 6f 77 20 73 75 70 70 6f 72 74 65 are now supporte
8950: 64 20 77 69 74 68 20 26 61 6d 70 3b 61 6d 70 3b d with &amp;
8960: 76 61 72 6e 61 6d 65 26 6c 74 3b 2f 6c 69 26 67 varname</li&g
8970: 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b 65 t;. <li>e
8980: 78 70 72 20 73 68 6f 72 74 68 61 6e 64 20 73 79 xpr shorthand sy
8990: 6e 74 61 78 20 77 69 74 68 20 24 28 26 61 6d 70 ntax with $(&
89a0: 3b 68 65 6c 6c 69 70 3b 29 26 6c 74 3b 2f 6c 69 ;hellip;)</li
89b0: 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 >. <li>
89c0: 3b 50 72 65 76 69 6f 75 73 20 70 72 6f 63 20 64 ;Previous proc d
89d0: 65 66 69 6e 69 74 69 6f 6e 73 20 63 61 6e 20 62 efinitions can b
89e0: 65 20 73 61 76 65 64 20 77 69 74 68 20 6c 6f 63 e saved with loc
89f0: 61 6c 20 61 6e 64 20 69 6e 76 6f 6b 65 64 20 77 al and invoked w
8a00: 69 74 68 20 75 70 63 61 6c 6c 26 6c 74 3b 2f 6c ith upcall</l
8a10: 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 i>. <li&g
8a20: 74 3b 4e 6f 6e 2d 67 72 65 65 64 79 20 72 65 67 t;Non-greedy reg
8a30: 65 78 70 2f 72 65 67 73 75 62 20 73 75 70 70 6f exp/regsub suppo
8a40: 72 74 20 77 69 74 68 20 74 68 65 20 62 75 69 6c rt with the buil
8a50: 74 2d 69 6e 20 72 65 67 65 78 70 20 69 6d 70 6c t-in regexp impl
8a60: 65 6d 65 6e 74 61 74 69 6f 6e 26 6c 74 3b 2f 6c ementation</l
8a70: 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 i>. <li&g
8a80: 74 3b 4d 69 6e 69 6d 61 6c 20 65 78 65 63 20 69 t;Minimal exec i
8a90: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 mplementation is
8aa0: 20 73 75 70 70 6f 72 74 65 64 20 65 76 65 6e 20 supported even
8ab0: 77 69 74 68 6f 75 74 20 76 66 6f 72 6b 2f 77 61 without vfork/wa
8ac0: 69 74 70 69 64 26 6c 74 3b 2f 6c 69 26 67 74 3b itpid</li>
8ad0: 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b 63 6f 6e . <li>con
8ae0: 66 69 67 75 72 65 20 69 73 20 6e 6f 77 20 66 61 figure is now fa
8af0: 73 74 65 72 20 61 6e 64 20 73 69 6d 70 6c 65 72 ster and simpler
8b00: 20 77 69 74 68 20 61 75 74 6f 73 65 74 75 70 20 with autosetup
8b10: 28 26 6c 74 3b 61 20 68 72 65 66 3d 22 68 74 74 (<a href="htt
8b20: 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f ps://github.com/
8b30: 6d 73 74 65 76 65 62 2f 61 75 74 6f 73 65 74 75 msteveb/autosetu
8b40: 70 22 26 67 74 3b 68 74 74 70 73 3a 2f 2f 67 69 p">https://gi
8b50: 74 68 75 62 2e 63 6f 6d 2f 6d 73 74 65 76 65 62 thub.com/msteveb
8b60: 2f 61 75 74 6f 73 65 74 75 70 26 6c 74 3b 2f 61 /autosetup</a
8b70: 26 67 74 3b 29 26 6c 74 3b 2f 6c 69 26 67 74 3b >)</li>
8b80: 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b 41 64 64 . <li>Add
8b90: 20 73 74 72 69 6e 67 20 62 79 74 65 72 61 6e 67 string byterang
8ba0: 65 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 e</li>. &
8bb0: 6c 74 3b 6c 69 26 67 74 3b 41 62 69 6c 69 74 79 lt;li>Ability
8bc0: 20 74 6f 20 63 72 65 61 74 65 20 61 20 73 69 6e to create a sin
8bd0: 67 6c 65 20 73 6f 75 72 63 65 20 66 69 6c 65 20 gle source file
8be0: 62 6f 6f 74 73 74 72 61 70 20 6a 69 6d 73 68 26 bootstrap jimsh&
8bf0: 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 lt;/li>. <
8c00: 3b 6c 69 26 67 74 3b 41 64 64 65 64 20 64 65 62 ;li>Added deb
8c10: 69 61 6e 20 70 61 63 6b 61 67 69 6e 67 20 73 75 ian packaging su
8c20: 70 70 6f 72 74 26 6c 74 3b 2f 6c 69 26 67 74 3b pport</li>
8c30: 0a 26 6c 74 3b 2f 75 6c 26 67 74 3b 0a 0a 26 6c .</ul>..&l
8c40: 74 3b 70 26 67 74 3b 53 74 65 76 65 20 42 65 6e t;p>Steve Ben
8c50: 6e 65 74 74 20 28 26 6c 74 3b 61 20 68 72 65 66 nett (<a href
8c60: 3d 22 26 61 6d 70 3b 23 31 30 39 3b 26 61 6d 70 ="&#109;&
8c70: 3b 23 30 39 37 3b 26 61 6d 70 3b 23 31 30 35 3b ;#097;&#105;
8c80: 26 61 6d 70 3b 23 31 30 38 3b 26 61 6d 70 3b 23 &#108;&#
8c90: 31 31 36 3b 26 61 6d 70 3b 23 31 31 31 3b 3a 26 116;&#111;:&
8ca0: 61 6d 70 3b 23 31 31 35 3b 26 61 6d 70 3b 23 31 amp;#115;&#1
8cb0: 31 36 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 16;&#101;&am
8cc0: 70 3b 23 31 31 38 3b 26 61 6d 70 3b 23 31 30 31 p;#118;&#101
8cd0: 3b 26 61 6d 70 3b 23 30 39 38 3b 26 61 6d 70 3b ;&#098;&
8ce0: 23 30 36 34 3b 26 61 6d 70 3b 23 31 31 39 3b 26 #064;&#119;&
8cf0: 61 6d 70 3b 23 31 31 31 3b 26 61 6d 70 3b 23 31 amp;#111;&#1
8d00: 31 34 3b 26 61 6d 70 3b 23 31 30 37 3b 26 61 6d 14;&#107;&am
8d10: 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 30 39 37 p;#119;&#097
8d20: 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 3b ;&#114;&
8d30: 23 31 30 31 3b 26 61 6d 70 3b 23 30 34 36 3b 26 #101;&#046;&
8d40: 61 6d 70 3b 23 31 31 30 3b 26 61 6d 70 3b 23 31 amp;#110;&#1
8d50: 30 31 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 01;&#116;&am
8d60: 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 30 39 37 p;#046;&#097
8d70: 3b 26 61 6d 70 3b 23 31 31 37 3b 22 26 67 74 3b ;&#117;">
8d80: 26 61 6d 70 3b 23 31 31 35 3b 26 61 6d 70 3b 23 &#115;&#
8d90: 31 31 36 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 116;&#101;&a
8da0: 6d 70 3b 23 31 31 38 3b 26 61 6d 70 3b 23 31 30 mp;#118;&#10
8db0: 31 3b 26 61 6d 70 3b 23 30 39 38 3b 26 61 6d 70 1;&#098;&
8dc0: 3b 23 30 36 34 3b 26 61 6d 70 3b 23 31 31 39 3b ;#064;&#119;
8dd0: 26 61 6d 70 3b 23 31 31 31 3b 26 61 6d 70 3b 23 &#111;&#
8de0: 31 31 34 3b 26 61 6d 70 3b 23 31 30 37 3b 26 61 114;&#107;&a
8df0: 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 30 39 mp;#119;&#09
8e00: 37 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 7;&#114;&
8e10: 3b 23 31 30 31 3b 26 61 6d 70 3b 23 30 34 36 3b ;#101;&#046;
8e20: 26 61 6d 70 3b 23 31 31 30 3b 26 61 6d 70 3b 23 &#110;&#
8e30: 31 30 31 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 101;&#116;&a
8e40: 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 30 39 mp;#046;&#09
8e50: 37 3b 26 61 6d 70 3b 23 31 31 37 3b 26 6c 74 3b 7;&#117;<
8e60: 2f 61 26 67 74 3b 29 26 6c 74 3b 2f 70 26 67 74 /a>)</p>
8e70: 3b 0a 3c 2f 63 6f 6e 74 65 6e 74 3e 0a 20 20 3c ;.</content>. <
8e80: 2f 65 6e 74 72 79 3e 0a 20 20 3c 65 6e 74 72 79 /entry>. <entry
8e90: 3e 0a 20 20 20 20 3c 69 64 3e 74 61 67 3a 6a 69 >. <id>tag:ji
8ea0: 6d 2e 62 65 72 6c 69 6f 73 2e 64 65 2c 32 30 31 m.berlios.de,201
8eb0: 31 2d 30 36 2d 31 30 3a 2f 61 72 74 69 63 6c 65 1-06-10:/article
8ec0: 73 2f 6e 65 77 2d 63 6f 6d 6d 65 6e 74 2d 73 79 s/new-comment-sy
8ed0: 73 74 65 6d 2f 3c 2f 69 64 3e 0a 20 20 20 20 3c stem/</id>. <
8ee0: 74 69 74 6c 65 20 74 79 70 65 3d 22 68 74 6d 6c title type="html
8ef0: 22 3e 4e 65 77 20 43 6f 6d 6d 65 6e 74 20 53 79 ">New Comment Sy
8f00: 73 74 65 6d 3c 2f 74 69 74 6c 65 3e 0a 20 20 20 stem</title>.
8f10: 20 3c 70 75 62 6c 69 73 68 65 64 3e 32 30 31 31 <published>2011
8f20: 2d 30 36 2d 30 39 54 31 34 3a 30 30 3a 30 30 5a -06-09T14:00:00Z
8f30: 3c 2f 70 75 62 6c 69 73 68 65 64 3e 0a 20 20 20 </published>.
8f40: 20 3c 75 70 64 61 74 65 64 3e 32 30 31 31 2d 30 <updated>2011-0
8f50: 36 2d 30 39 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 6-09T14:00:00Z</
8f60: 75 70 64 61 74 65 64 3e 0a 20 20 20 20 3c 6c 69 updated>. <li
8f70: 6e 6b 20 72 65 6c 3d 22 61 6c 74 65 72 6e 61 74 nk rel="alternat
8f80: 65 22 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f e" href="http://
8f90: 6a 69 6d 2e 62 65 72 6c 69 6f 73 2e 64 65 2f 61 jim.berlios.de/a
8fa0: 72 74 69 63 6c 65 73 2f 6e 65 77 2d 63 6f 6d 6d rticles/new-comm
8fb0: 65 6e 74 2d 73 79 73 74 65 6d 2f 22 2f 3e 0a 20 ent-system/"/>.
8fc0: 20 20 20 3c 63 6f 6e 74 65 6e 74 20 74 79 70 65 <content type
8fd0: 3d 22 68 74 6d 6c 22 3e 26 6c 74 3b 70 26 67 74 ="html"><p>
8fe0: 3b 49 20 68 61 76 65 20 61 64 64 65 64 20 61 20 ;I have added a
8ff0: 63 6f 6d 6d 65 6e 74 20 73 79 73 74 65 6d 20 74 comment system t
9000: 6f 20 74 68 65 20 4a 69 6d 20 54 63 6c 20 77 65 o the Jim Tcl we
9010: 62 73 69 74 65 2e 0a 4c 65 74 20 6d 65 20 6b 6e bsite..Let me kn
9020: 6f 77 20 69 66 20 74 68 65 72 65 20 61 72 65 20 ow if there are
9030: 61 6e 79 20 70 72 6f 62 6c 65 6d 73 20 77 69 74 any problems wit
9040: 68 20 69 74 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a h it.</p>.
9050: 0a 26 6c 74 3b 70 26 67 74 3b 53 74 65 76 65 20 .<p>Steve
9060: 42 65 6e 6e 65 74 74 20 28 26 6c 74 3b 61 20 68 Bennett (<a h
9070: 72 65 66 3d 22 26 61 6d 70 3b 23 31 30 39 3b 26 ref="&#109;&
9080: 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 31 amp;#097;&#1
9090: 30 35 3b 26 61 6d 70 3b 23 31 30 38 3b 26 61 6d 05;&#108;&am
90a0: 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 31 31 31 p;#116;&#111
90b0: 3b 3a 26 61 6d 70 3b 23 31 31 35 3b 26 61 6d 70 ;:&#115;&
90c0: 3b 23 31 31 36 3b 26 61 6d 70 3b 23 31 30 31 3b ;#116;&#101;
90d0: 26 61 6d 70 3b 23 31 31 38 3b 26 61 6d 70 3b 23 &#118;&#
90e0: 31 30 31 3b 26 61 6d 70 3b 23 30 39 38 3b 26 61 101;&#098;&a
90f0: 6d 70 3b 23 30 36 34 3b 26 61 6d 70 3b 23 31 31 mp;#064;&#11
9100: 39 3b 26 61 6d 70 3b 23 31 31 31 3b 26 61 6d 70 9;&#111;&
9110: 3b 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 37 3b ;#114;&#107;
9120: 26 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 &#119;&#
9130: 30 39 37 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 097;&#114;&a
9140: 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 30 34 mp;#101;&#04
9150: 36 3b 26 61 6d 70 3b 23 31 31 30 3b 26 61 6d 70 6;&#110;&
9160: 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 36 3b ;#101;&#116;
9170: 26 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 &#046;&#
9180: 30 39 37 3b 26 61 6d 70 3b 23 31 31 37 3b 22 26 097;&#117;"&
9190: 67 74 3b 26 61 6d 70 3b 23 31 31 35 3b 26 61 6d gt;&#115;&am
91a0: 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 31 30 31 p;#116;&#101
91b0: 3b 26 61 6d 70 3b 23 31 31 38 3b 26 61 6d 70 3b ;&#118;&
91c0: 23 31 30 31 3b 26 61 6d 70 3b 23 30 39 38 3b 26 #101;&#098;&
91d0: 61 6d 70 3b 23 30 36 34 3b 26 61 6d 70 3b 23 31 amp;#064;&#1
91e0: 31 39 3b 26 61 6d 70 3b 23 31 31 31 3b 26 61 6d 19;&#111;&am
91f0: 70 3b 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 37 p;#114;&#107
9200: 3b 26 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b ;&#119;&
9210: 23 30 39 37 3b 26 61 6d 70 3b 23 31 31 34 3b 26 #097;&#114;&
9220: 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 30 amp;#101;&#0
9230: 34 36 3b 26 61 6d 70 3b 23 31 31 30 3b 26 61 6d 46;&#110;&am
9240: 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 36 p;#101;&#116
9250: 3b 26 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b ;&#046;&
9260: 23 30 39 37 3b 26 61 6d 70 3b 23 31 31 37 3b 26 #097;&#117;&
9270: 6c 74 3b 2f 61 26 67 74 3b 29 26 6c 74 3b 2f 70 lt;/a>)</p
9280: 26 67 74 3b 0a 3c 2f 63 6f 6e 74 65 6e 74 3e 0a >.</content>.
9290: 20 20 3c 2f 65 6e 74 72 79 3e 0a 20 20 3c 65 6e </entry>. <en
92a0: 74 72 79 3e 0a 20 20 20 20 3c 69 64 3e 74 61 67 try>. <id>tag
92b0: 3a 6a 69 6d 2e 62 65 72 6c 69 6f 73 2e 64 65 2c :jim.berlios.de,
92c0: 32 30 31 31 2d 30 36 2d 30 39 3a 2f 61 72 74 69 2011-06-09:/arti
92d0: 63 6c 65 73 2f 62 6f 6f 74 73 74 72 61 70 2d 6a cles/bootstrap-j
92e0: 69 6d 73 68 2f 3c 2f 69 64 3e 0a 20 20 20 20 3c imsh/</id>. <
92f0: 74 69 74 6c 65 20 74 79 70 65 3d 22 68 74 6d 6c title type="html
9300: 22 3e 42 6f 6f 74 73 74 72 61 70 20 6a 69 6d 73 ">Bootstrap jims
9310: 68 3c 2f 74 69 74 6c 65 3e 0a 20 20 20 20 3c 70 h</title>. <p
9320: 75 62 6c 69 73 68 65 64 3e 32 30 31 31 2d 30 36 ublished>2011-06
9330: 2d 30 38 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 70 -08T14:00:00Z</p
9340: 75 62 6c 69 73 68 65 64 3e 0a 20 20 20 20 3c 75 ublished>. <u
9350: 70 64 61 74 65 64 3e 32 30 31 31 2d 30 36 2d 30 pdated>2011-06-0
9360: 38 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 75 70 64 8T14:00:00Z</upd
9370: 61 74 65 64 3e 0a 20 20 20 20 3c 6c 69 6e 6b 20 ated>. <link
9380: 72 65 6c 3d 22 61 6c 74 65 72 6e 61 74 65 22 20 rel="alternate"
9390: 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 6a 69 6d href="http://jim
93a0: 2e 62 65 72 6c 69 6f 73 2e 64 65 2f 61 72 74 69 .berlios.de/arti
93b0: 63 6c 65 73 2f 62 6f 6f 74 73 74 72 61 70 2d 6a cles/bootstrap-j
93c0: 69 6d 73 68 2f 22 2f 3e 0a 20 20 20 20 3c 63 6f imsh/"/>. <co
93d0: 6e 74 65 6e 74 20 74 79 70 65 3d 22 68 74 6d 6c ntent type="html
93e0: 22 3e 26 6c 74 3b 70 26 67 74 3b 54 68 65 20 4a "><p>The J
93f0: 69 6d 20 69 6e 74 65 72 70 72 65 74 65 72 20 69 im interpreter i
9400: 73 20 73 6d 61 6c 6c 2c 20 70 6f 72 74 61 62 6c s small, portabl
9410: 65 20 61 6e 64 20 66 75 6c 6c 2d 66 65 61 74 75 e and full-featu
9420: 72 65 64 2e 20 54 68 69 73 20 6d 61 6b 65 73 0a red. This makes.
9430: 26 6c 74 3b 63 6f 64 65 26 67 74 3b 6a 69 6d 73 <code>jims
9440: 68 26 6c 74 3b 2f 63 6f 64 65 26 67 74 3b 20 61 h</code> a
9450: 6e 20 69 64 65 61 6c 20 74 6f 6f 6c 20 74 6f 20 n ideal tool to
9460: 62 6f 6f 74 73 74 72 61 70 20 61 20 64 65 76 65 bootstrap a deve
9470: 6c 6f 70 6d 65 6e 74 20 73 79 73 74 65 6d 20 74 lopment system t
9480: 68 61 74 0a 72 65 71 75 69 72 65 73 20 61 6e 20 hat.requires an
9490: 69 6e 74 65 72 70 72 65 74 65 72 2e 26 6c 74 3b interpreter.<
94a0: 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 /p>..<p>
94b0: 3b 43 6f 6e 73 69 64 65 72 20 74 68 65 20 63 61 ;Consider the ca
94c0: 73 65 20 6f 66 20 61 20 64 65 76 65 6c 6f 70 6d se of a developm
94d0: 65 6e 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f ent configuratio
94e0: 6e 20 73 79 73 74 65 6d 20 73 75 63 68 20 61 73 n system such as
94f0: 0a 26 6c 74 3b 61 20 68 72 65 66 3d 22 68 74 74 .<a href="htt
9500: 70 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f p://www.gnu.org/
9510: 73 6f 66 74 77 61 72 65 2f 61 75 74 6f 63 6f 6e software/autocon
9520: 66 2f 22 26 67 74 3b 47 4e 55 20 61 75 74 6f 74 f/">GNU autot
9530: 6f 6f 6c 73 26 6c 74 3b 2f 61 26 67 74 3b 2e 20 ools</a>.
9540: 20 48 65 72 65 20 69 74 0a 69 73 20 6e 65 63 65 Here it.is nece
9550: 73 73 61 72 79 20 74 6f 20 72 75 6e 20 66 61 69 ssary to run fai
9560: 72 6c 79 20 63 6f 6d 70 6c 65 78 20 73 63 72 69 rly complex scri
9570: 70 74 73 20 74 68 61 74 20 69 6e 76 6f 6b 65 20 pts that invoke
9580: 65 78 74 65 72 6e 61 6c 0a 70 72 6f 67 72 61 6d external.program
9590: 73 20 28 73 75 63 68 20 61 73 20 74 68 65 20 63 s (such as the c
95a0: 6f 6d 70 69 6c 65 72 29 20 61 6e 64 20 70 65 72 ompiler) and per
95b0: 66 6f 72 6d 20 69 6e 74 65 6e 73 69 76 65 20 73 form intensive s
95c0: 74 72 69 6e 67 0a 70 72 6f 63 65 73 73 69 6e 67 tring.processing
95d0: 2e 20 54 68 65 20 61 75 74 6f 74 6f 6f 6c 73 20 . The autotools
95e0: 73 6f 6c 75 74 69 6f 6e 20 75 73 65 73 20 61 20 solution uses a
95f0: 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 20 26 combination of &
9600: 6c 74 3b 61 20 68 72 65 66 3d 22 68 74 74 70 3a lt;a href="http:
9610: 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f //en.wikipedia.o
9620: 72 67 2f 77 69 6b 69 2f 42 6f 75 72 6e 65 5f 73 rg/wiki/Bourne_s
9630: 68 65 6c 6c 22 26 67 74 3b 42 6f 75 72 6e 65 0a hell">Bourne.
9640: 53 68 65 6c 6c 26 6c 74 3b 2f 61 26 67 74 3b 2c Shell</a>,
9650: 20 74 68 65 20 26 6c 74 3b 61 20 68 72 65 66 3d the <a href=
9660: 22 68 74 74 70 3a 2f 2f 77 77 77 2e 67 6e 75 2e "http://www.gnu.
9670: 6f 72 67 2f 73 6f 66 74 77 61 72 65 2f 6d 34 2f org/software/m4/
9680: 22 26 67 74 3b 6d 34 20 4d 61 63 72 6f 0a 50 72 ">m4 Macro.Pr
9690: 6f 63 65 73 73 6f 72 26 6c 74 3b 2f 61 26 67 74 ocessor</a>
96a0: 3b 20 61 6e 64 20 76 61 72 69 6f 75 73 20 65 78 ; and various ex
96b0: 74 65 72 6e 61 6c 0a 74 6f 6f 6c 73 20 73 75 63 ternal.tools suc
96c0: 68 20 61 73 20 26 6c 74 3b 63 6f 64 65 26 67 74 h as <code>
96d0: 3b 73 65 64 26 6c 74 3b 2f 63 6f 64 65 26 67 74 ;sed</code>
96e0: 3b 2e 20 53 69 6e 63 65 20 74 68 69 73 20 6e 65 ;. Since this ne
96f0: 65 64 73 20 74 6f 20 77 6f 72 6b 20 61 63 72 6f eds to work acro
9700: 73 73 20 61 20 77 69 64 65 20 72 61 6e 67 65 0a ss a wide range.
9710: 6f 66 20 73 79 73 74 65 6d 73 2c 20 65 76 65 6e of systems, even
9720: 20 74 68 6f 73 65 20 77 69 74 68 20 62 75 67 67 those with bugg
9730: 79 20 73 68 65 6c 6c 73 20 6f 72 20 65 78 74 65 y shells or exte
9740: 72 6e 61 6c 20 74 6f 6f 6c 73 2c 20 6d 61 6e 79 rnal tools, many
9750: 0a 63 6f 6e 74 6f 72 74 69 6f 6e 73 20 61 72 65 .contortions are
9760: 20 72 65 71 75 69 72 65 64 2e 20 20 54 68 65 20 required. The
9770: 72 65 73 75 6c 74 69 6e 67 20 73 79 73 74 65 6d resulting system
9780: 20 69 73 0a 26 6c 74 3b 61 20 68 72 65 66 3d 22 is.<a href="
9790: 68 74 74 70 3a 2f 2f 66 72 65 73 68 6d 65 61 74 http://freshmeat
97a0: 2e 6e 65 74 2f 61 72 74 69 63 6c 65 73 2f 73 74 .net/articles/st
97b0: 6f 70 2d 74 68 65 2d 61 75 74 6f 63 6f 6e 66 2d op-the-autoconf-
97c0: 69 6e 73 61 6e 69 74 79 2d 77 68 79 2d 77 65 2d insanity-why-we-
97d0: 6e 65 65 64 2d 61 2d 6e 65 77 2d 62 75 69 6c 64 need-a-new-build
97e0: 2d 73 79 73 74 65 6d 22 26 67 74 3b 73 6c 6f 77 -system">slow
97f0: 2c 20 63 75 6d 62 65 72 73 6f 6d 65 20 61 6e 64 , cumbersome and
9800: 20 63 6f 6d 70 6c 65 78 26 6c 74 3b 2f 61 26 67 complex</a&g
9810: 74 3b 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 t;.</p>..&
9820: 6c 74 3b 70 26 67 74 3b 4e 6f 77 20 63 6f 6e 73 lt;p>Now cons
9830: 69 64 65 72 20 74 68 65 20 64 69 66 66 65 72 65 ider the differe
9840: 6e 74 20 61 70 70 72 6f 61 63 68 20 74 61 6b 65 nt approach take
9850: 6e 20 62 79 0a 26 6c 74 3b 61 20 68 72 65 66 3d n by.<a href=
9860: 22 68 74 74 70 3a 2f 2f 6d 73 74 65 76 65 62 2e "http://msteveb.
9870: 67 69 74 68 75 62 2e 63 6f 6d 2f 61 75 74 6f 73 github.com/autos
9880: 65 74 75 70 2f 22 26 67 74 3b 61 75 74 6f 73 65 etup/">autose
9890: 74 75 70 26 6c 74 3b 2f 61 26 67 74 3b 2e 20 20 tup</a>.
98a0: 48 65 72 65 20 61 20 73 63 72 69 70 74 69 6e 67 Here a scripting
98b0: 0a 6c 61 6e 67 75 61 67 65 20 69 73 20 75 73 65 .language is use
98c0: 64 20 74 68 61 74 20 68 61 73 20 65 78 63 65 6c d that has excel
98d0: 6c 65 6e 74 20 73 75 70 70 6f 72 74 20 66 6f 72 lent support for
98e0: 20 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 69 string processi
98f0: 6e 67 2c 0a 64 61 74 61 20 73 74 72 75 63 74 75 ng,.data structu
9900: 72 65 73 20 28 61 72 72 61 79 73 2f 64 69 63 74 res (arrays/dict
9910: 73 20 61 6e 64 20 6c 69 73 74 73 29 20 61 6e 64 s and lists) and
9920: 20 72 75 6e 6e 69 6e 67 20 65 78 74 65 72 6e 61 running externa
9930: 6c 0a 70 72 6f 67 72 61 6d 73 20 26 61 6d 70 3b l.programs &
9940: 6d 64 61 73 68 3b 20 54 63 6c 2e 20 54 68 65 20 mdash; Tcl. The
9950: 6f 6e 6c 79 20 70 72 6f 62 6c 65 6d 20 69 73 20 only problem is
9960: 62 6f 6f 74 73 74 72 61 70 2e 20 57 68 61 74 20 bootstrap. What
9970: 69 66 20 74 68 65 20 74 61 72 67 65 74 0a 73 79 if the target.sy
9980: 73 74 65 6d 20 64 6f 65 73 6e 26 61 6d 70 3b 72 stem doesn&r
9990: 73 71 75 6f 3b 74 20 68 61 76 65 20 61 20 73 75 squo;t have a su
99a0: 69 74 61 62 6c 65 20 54 63 6c 20 69 6e 74 65 72 itable Tcl inter
99b0: 70 72 65 74 65 72 20 61 76 61 69 6c 61 62 6c 65 preter available
99c0: 3f 20 20 54 68 65 0a 73 6f 6c 75 74 69 6f 6e 20 ? The.solution
99d0: 69 73 20 61 20 62 6f 6f 74 73 74 72 61 70 20 76 is a bootstrap v
99e0: 65 72 73 69 6f 6e 20 6f 66 20 4a 69 6d 20 54 63 ersion of Jim Tc
99f0: 6c 20 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e l is included in
9a00: 20 74 68 65 0a 64 69 73 74 72 69 62 75 74 69 6f the.distributio
9a10: 6e 20 61 73 20 61 20 26 6c 74 3b 73 74 72 6f 6e n as a <stron
9a20: 67 26 67 74 3b 73 69 6e 67 6c 65 20 73 6f 75 72 g>single sour
9a30: 63 65 20 66 69 6c 65 26 6c 74 3b 2f 73 74 72 6f ce file</stro
9a40: 6e 67 26 67 74 3b 20 61 6e 64 20 73 69 6d 70 6c ng> and simpl
9a50: 79 20 72 65 71 75 69 72 65 73 20 61 20 43 20 63 y requires a C c
9a60: 6f 6d 70 69 6c 65 72 0a 74 6f 20 63 72 65 61 74 ompiler.to creat
9a70: 65 20 74 68 65 20 69 6e 74 65 72 70 72 65 74 65 e the interprete
9a80: 72 2e 20 20 49 6e 20 66 61 63 74 2c 20 61 75 74 r. In fact, aut
9a90: 6f 73 65 74 75 70 20 61 75 74 6f 6d 61 74 69 63 osetup automatic
9aa0: 61 6c 6c 79 0a 64 65 74 65 72 6d 69 6e 65 73 20 ally.determines
9ab0: 69 66 20 6e 6f 20 73 75 69 74 61 62 6c 65 20 61 if no suitable a
9ac0: 6e 64 20 69 6e 74 65 72 70 72 65 74 65 72 20 69 nd interpreter i
9ad0: 73 20 61 76 61 69 6c 61 62 6c 65 20 61 6e 64 20 s available and
9ae0: 73 65 61 6d 6c 65 73 73 6c 79 0a 62 75 69 6c 64 seamlessly.build
9af0: 73 20 61 6e 64 20 72 75 6e 73 20 74 68 65 20 62 s and runs the b
9b00: 6f 6f 74 73 74 72 61 70 20 69 6e 74 65 72 70 72 ootstrap interpr
9b10: 65 74 65 72 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a eter.</p>.
9b20: 0a 26 6c 74 3b 70 72 65 20 63 6c 61 73 73 3d 22 .<pre class="
9b30: 73 68 5f 75 6e 69 78 22 26 67 74 3b 0a 24 20 2e sh_unix">.$ .
9b40: 2f 63 6f 6e 66 69 67 75 72 65 20 0a 4e 6f 20 69 /configure .No i
9b50: 6e 73 74 61 6c 6c 65 64 20 6a 69 6d 73 68 20 6f nstalled jimsh o
9b60: 72 20 74 63 6c 73 68 2c 20 62 75 69 6c 64 69 6e r tclsh, buildin
9b70: 67 20 6c 6f 63 61 6c 20 62 6f 6f 74 73 74 72 61 g local bootstra
9b80: 70 20 6a 69 6d 73 68 30 0a 48 6f 73 74 20 53 79 p jimsh0.Host Sy
9b90: 73 74 65 6d 2e 2e 2e 78 38 36 5f 36 34 2d 61 70 stem...x86_64-ap
9ba0: 70 6c 65 2d 64 61 72 77 69 6e 31 30 2e 37 2e 30 ple-darwin10.7.0
9bb0: 0a 42 75 69 6c 64 20 53 79 73 74 65 6d 2e 2e 2e .Build System...
9bc0: 78 38 36 5f 36 34 2d 61 70 70 6c 65 2d 64 61 72 x86_64-apple-dar
9bd0: 77 69 6e 31 30 2e 37 2e 30 0a 43 20 63 6f 6d 70 win10.7.0.C comp
9be0: 69 6c 65 72 2e 2e 2e 63 63 61 63 68 65 20 63 63 iler...ccache cc
9bf0: 20 2d 67 20 2d 4f 32 0a 43 2b 2b 20 63 6f 6d 70 -g -O2.C++ comp
9c00: 69 6c 65 72 2e 2e 2e 63 63 61 63 68 65 20 63 2b iler...ccache c+
9c10: 2b 20 2d 67 20 2d 4f 32 0a 43 68 65 63 6b 69 6e + -g -O2.Checkin
9c20: 67 20 66 6f 72 20 73 74 64 6c 69 62 2e 68 2e 2e g for stdlib.h..
9c30: 2e 6f 6b 0a 2e 2e 2e 0a 26 6c 74 3b 2f 70 72 65 .ok.....</pre
9c40: 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 41 >..<p>A
9c50: 20 73 63 72 69 70 74 20 74 6f 20 63 72 65 61 74 script to creat
9c60: 65 20 74 68 65 20 62 6f 6f 74 73 74 72 61 70 20 e the bootstrap
9c70: 69 6e 74 65 72 70 72 65 74 65 72 20 73 6f 75 72 interpreter sour
9c80: 63 65 20 69 73 20 69 6e 63 6c 75 64 65 64 20 69 ce is included i
9c90: 6e 20 74 68 65 0a 26 6c 74 3b 61 20 68 72 65 66 n the.<a href
9ca0: 3d 22 68 74 74 70 3a 2f 2f 72 65 70 6f 2e 6f 72 ="http://repo.or
9cb0: 2e 63 7a 2f 77 2f 6a 69 6d 74 63 6c 2e 67 69 74 .cz/w/jimtcl.git
9cc0: 2f 62 6c 6f 62 2f 48 45 41 44 3a 2f 6d 61 6b 65 /blob/HEAD:/make
9cd0: 2d 62 6f 6f 74 73 74 72 61 70 2d 6a 69 6d 22 26 -bootstrap-jim"&
9ce0: 67 74 3b 6a 69 6d 74 63 6c 20 67 69 74 20 72 65 gt;jimtcl git re
9cf0: 70 6f 73 69 74 6f 72 79 26 6c 74 3b 2f 61 26 67 pository</a&g
9d00: 74 3b 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c t;</p>..&l
9d10: 74 3b 70 72 65 20 63 6c 61 73 73 3d 22 73 68 5f t;pre class="sh_
9d20: 75 6e 69 78 22 26 67 74 3b 0a 24 20 73 68 20 6d unix">.$ sh m
9d30: 61 6b 65 2d 62 6f 6f 74 73 74 72 61 70 2d 6a 69 ake-bootstrap-ji
9d40: 6d 20 26 61 6d 70 3b 67 74 3b 6a 69 6d 73 68 30 m &gt;jimsh0
9d50: 2e 63 0a 24 20 74 69 6d 65 20 63 63 20 2d 6f 20 .c.$ time cc -o
9d60: 6a 69 6d 73 68 30 20 6a 69 6d 73 68 30 2e 63 0a jimsh0 jimsh0.c.
9d70: 72 65 61 6c 20 20 20 30 6d 31 2e 33 33 39 73 0a real 0m1.339s.
9d80: 75 73 65 72 20 20 20 30 6d 31 2e 31 32 31 73 0a user 0m1.121s.
9d90: 73 79 73 20 20 20 20 30 6d 30 2e 31 30 39 73 0a sys 0m0.109s.
9da0: 24 20 2e 2f 6a 69 6d 73 68 30 0a 57 65 6c 63 6f $ ./jimsh0.Welco
9db0: 6d 65 20 74 6f 20 4a 69 6d 20 76 65 72 73 69 6f me to Jim versio
9dc0: 6e 20 30 2e 37 31 0a 2e 20 0a 26 6c 74 3b 2f 70 n 0.71.. .</p
9dd0: 72 65 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 re>..<p>
9de0: 3b 53 74 65 76 65 20 42 65 6e 6e 65 74 74 20 28 ;Steve Bennett (
9df0: 26 6c 74 3b 61 20 68 72 65 66 3d 22 26 61 6d 70 <a href="&
9e00: 3b 23 31 30 39 3b 26 61 6d 70 3b 23 30 39 37 3b ;#109;&#097;
9e10: 26 61 6d 70 3b 23 31 30 35 3b 26 61 6d 70 3b 23 &#105;&#
9e20: 31 30 38 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 108;&#116;&a
9e30: 6d 70 3b 23 31 31 31 3b 3a 26 61 6d 70 3b 23 31 mp;#111;:&#1
9e40: 31 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 15;&#116;&am
9e50: 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 p;#101;&#118
9e60: 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b ;&#101;&
9e70: 23 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 #098;&#064;&
9e80: 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 amp;#119;&#1
9e90: 31 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 11;&#114;&am
9ea0: 70 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 p;#107;&#119
9eb0: 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b ;&#097;&
9ec0: 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 #114;&#101;&
9ed0: 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 amp;#046;&#1
9ee0: 31 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 10;&#101;&am
9ef0: 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 p;#116;&#046
9f00: 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b ;&#097;&
9f10: 23 31 31 37 3b 22 26 67 74 3b 26 61 6d 70 3b 23 #117;">&#
9f20: 31 31 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 115;&#116;&a
9f30: 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 mp;#101;&#11
9f40: 38 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 8;&#101;&
9f50: 3b 23 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b ;#098;&#064;
9f60: 26 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 &#119;&#
9f70: 31 31 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 111;&#114;&a
9f80: 6d 70 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 mp;#107;&#11
9f90: 39 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 9;&#097;&
9fa0: 3b 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b ;#114;&#101;
9fb0: 26 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 &#046;&#
9fc0: 31 31 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 110;&#101;&a
9fd0: 6d 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 mp;#116;&#04
9fe0: 36 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 6;&#097;&
9ff0: 3b 23 31 31 37 3b 26 6c 74 3b 2f 61 26 67 74 3b ;#117;</a>
a000: 29 26 6c 74 3b 2f 70 26 67 74 3b 0a 3c 2f 63 6f )</p>.</co
a010: 6e 74 65 6e 74 3e 0a 20 20 3c 2f 65 6e 74 72 79 ntent>. </entry
a020: 3e 0a 20 20 3c 65 6e 74 72 79 3e 0a 20 20 20 20 >. <entry>.
a030: 3c 69 64 3e 74 61 67 3a 6a 69 6d 2e 62 65 72 6c <id>tag:jim.berl
a040: 69 6f 73 2e 64 65 2c 32 30 31 31 2d 30 35 2d 32 ios.de,2011-05-2
a050: 36 3a 2f 61 72 74 69 63 6c 65 73 2f 6e 6f 2d 6e 6:/articles/no-n
a060: 61 6d 65 73 70 61 63 65 73 2f 3c 2f 69 64 3e 0a amespaces/</id>.
a070: 20 20 20 20 3c 74 69 74 6c 65 20 74 79 70 65 3d <title type=
a080: 22 68 74 6d 6c 22 3e 43 6f 70 69 6e 67 20 77 69 "html">Coping wi
a090: 74 68 6f 75 74 20 4e 61 6d 65 73 70 61 63 65 73 thout Namespaces
a0a0: 3c 2f 74 69 74 6c 65 3e 0a 20 20 20 20 3c 70 75 </title>. <pu
a0b0: 62 6c 69 73 68 65 64 3e 32 30 31 31 2d 30 35 2d blished>2011-05-
a0c0: 32 35 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 70 75 25T14:00:00Z</pu
a0d0: 62 6c 69 73 68 65 64 3e 0a 20 20 20 20 3c 75 70 blished>. <up
a0e0: 64 61 74 65 64 3e 32 30 31 31 2d 30 35 2d 32 35 dated>2011-05-25
a0f0: 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 75 70 64 61 T14:00:00Z</upda
a100: 74 65 64 3e 0a 20 20 20 20 3c 6c 69 6e 6b 20 72 ted>. <link r
a110: 65 6c 3d 22 61 6c 74 65 72 6e 61 74 65 22 20 68 el="alternate" h
a120: 72 65 66 3d 22 68 74 74 70 3a 2f 2f 6a 69 6d 2e ref="http://jim.
a130: 62 65 72 6c 69 6f 73 2e 64 65 2f 61 72 74 69 63 berlios.de/artic
a140: 6c 65 73 2f 6e 6f 2d 6e 61 6d 65 73 70 61 63 65 les/no-namespace
a150: 73 2f 22 2f 3e 0a 20 20 20 20 3c 63 6f 6e 74 65 s/"/>. <conte
a160: 6e 74 20 74 79 70 65 3d 22 68 74 6d 6c 22 3e 26 nt type="html">&
a170: 6c 74 3b 70 26 67 74 3b 4f 6e 65 20 6f 66 20 74 lt;p>One of t
a180: 68 65 20 66 65 61 74 75 72 65 73 20 6f 66 20 54 he features of T
a190: 63 6c 20 77 68 69 63 68 20 4a 69 6d 20 6c 61 63 cl which Jim lac
a1a0: 6b 73 20 69 73 20 73 75 70 70 6f 72 74 20 66 6f ks is support fo
a1b0: 72 0a 26 6c 74 3b 61 20 68 72 65 66 3d 22 68 74 r.<a href="ht
a1c0: 74 70 3a 2f 2f 77 77 77 2e 74 63 6c 2e 74 6b 2f tp://www.tcl.tk/
a1d0: 6d 61 6e 2f 74 63 6c 38 2e 35 2f 54 63 6c 43 6d man/tcl8.5/TclCm
a1e0: 64 2f 6e 61 6d 65 73 70 61 63 65 2e 68 74 6d 22 d/namespace.htm"
a1f0: 26 67 74 3b 6e 61 6d 65 73 70 61 63 65 73 26 6c >namespaces&l
a200: 74 3b 2f 61 26 67 74 3b 2e 26 6c 74 3b 2f 70 26 t;/a>.</p&
a210: 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 54 68 gt;..<p>Th
a220: 65 20 6c 61 63 6b 20 6f 66 20 6e 61 6d 65 73 70 e lack of namesp
a230: 61 63 65 73 20 69 6e 20 4a 69 6d 20 69 73 20 67 aces in Jim is g
a240: 65 6e 65 72 61 6c 6c 79 20 6e 6f 74 20 61 20 70 enerally not a p
a250: 72 6f 62 6c 65 6d 20 69 6e 20 74 68 65 0a 73 6d roblem in the.sm
a260: 61 6c 6c 2c 20 65 6d 62 65 64 64 65 64 20 61 70 all, embedded ap
a270: 70 6c 69 63 61 74 69 6f 6e 73 20 66 6f 72 20 77 plications for w
a280: 68 69 63 68 20 4a 69 6d 20 69 73 20 6d 6f 73 74 hich Jim is most
a290: 20 73 75 69 74 65 64 2e 20 48 6f 77 65 76 65 72 suited. However
a2a0: 0a 6f 63 63 61 73 69 6f 6e 61 6c 6c 79 20 69 74 .occasionally it
a2b0: 20 75 73 65 66 75 6c 20 74 6f 20 62 65 20 61 62 useful to be ab
a2c0: 6c 65 20 74 6f 20 70 6f 72 74 20 54 63 6c 20 63 le to port Tcl c
a2d0: 6f 64 65 20 77 68 69 63 68 20 75 73 65 73 0a 6e ode which uses.n
a2e0: 61 6d 65 73 70 61 63 65 2e 20 20 46 6f 72 20 65 amespace. For e
a2f0: 78 61 6d 70 6c 65 2c 20 26 6c 74 3b 61 20 68 72 xample, <a hr
a300: 65 66 3d 22 68 74 74 70 3a 2f 2f 74 63 6c 6c 69 ef="http://tclli
a310: 62 2e 73 6f 75 72 63 65 66 6f 72 67 65 2e 6e 65 b.sourceforge.ne
a320: 74 2f 22 26 67 74 3b 74 63 6c 6c 69 62 26 6c 74 t/">tcllib<
a330: 3b 2f 61 26 67 74 3b 0a 6d 61 6b 65 73 20 68 65 ;/a>.makes he
a340: 61 76 79 20 75 73 65 20 6f 66 20 6e 61 6d 65 73 avy use of names
a350: 70 61 63 65 73 2e 20 54 68 69 73 20 61 72 74 69 paces. This arti
a360: 63 6c 65 20 64 65 73 63 72 69 62 65 73 20 6f 6e cle describes on
a370: 65 20 61 70 70 72 6f 61 63 68 0a 74 6f 20 65 61 e approach.to ea
a380: 73 69 6c 79 20 70 6f 72 74 69 6e 67 20 74 68 69 sily porting thi
a390: 73 20 63 6f 64 65 20 74 6f 20 4a 69 6d 2e 26 6c s code to Jim.&l
a3a0: 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 t;/p>..<p&
a3b0: 67 74 3b 46 6f 72 20 74 68 69 73 20 65 78 61 6d gt;For this exam
a3c0: 70 6c 65 2c 20 77 65 20 77 69 6c 6c 20 70 6f 72 ple, we will por
a3d0: 74 20 26 6c 74 3b 61 20 68 72 65 66 3d 22 68 74 t <a href="ht
a3e0: 74 70 3a 2f 2f 74 63 6c 6c 69 62 2e 63 76 73 2e tp://tcllib.cvs.
a3f0: 73 6f 75 72 63 65 66 6f 72 67 65 2e 6e 65 74 2f sourceforge.net/
a400: 76 69 65 77 76 63 2f 74 63 6c 6c 69 62 2f 74 63 viewvc/tcllib/tc
a410: 6c 6c 69 62 2f 6d 6f 64 75 6c 65 73 2f 64 6e 73 llib/modules/dns
a420: 2f 64 6e 73 2e 74 63 6c 22 26 67 74 3b 64 6e 73 /dns.tcl">dns
a430: 2e 74 63 6c 26 6c 74 3b 2f 61 26 67 74 3b 20 74 .tcl</a> t
a440: 6f 20 4a 69 6d 2e 26 6c 74 3b 2f 70 26 67 74 3b o Jim.</p>
a450: 0a 0a 26 6c 74 3b 70 26 67 74 3b 54 68 65 20 67 ..<p>The g
a460: 65 6e 65 72 61 6c 20 61 70 70 72 6f 61 63 68 20 eneral approach
a470: 69 73 20 74 6f 20 6d 6f 64 69 66 79 20 74 68 65 is to modify the
a480: 20 63 6f 64 65 20 66 72 6f 6d 20 75 73 69 6e 67 code from using
a490: 20 69 6d 70 6c 69 63 69 74 20 73 63 6f 70 69 6e implicit scopin
a4a0: 67 20 74 6f 20 65 78 70 6c 69 63 69 74 20 73 63 g to explicit sc
a4b0: 6f 70 69 6e 67 2e 0a 43 6f 6e 73 69 64 65 72 20 oping..Consider
a4c0: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f the following co
a4d0: 64 65 20 77 68 69 63 68 20 75 73 65 73 20 6e 61 de which uses na
a4e0: 6d 65 73 70 61 63 65 73 20 74 6f 20 64 65 63 6c mespaces to decl
a4f0: 61 72 65 20 61 20 70 72 6f 63 20 61 6e 64 20 61 are a proc and a
a500: 20 76 61 72 69 61 62 6c 65 20 77 69 74 68 69 6e variable within
a510: 20 61 20 6e 61 6d 65 73 70 61 63 65 2e 26 6c 74 a namespace.<
a520: 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 72 65 ;/p>..<pre
a530: 20 63 6c 61 73 73 3d 22 73 68 5f 74 63 6c 22 26 class="sh_tcl"&
a540: 67 74 3b 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 gt;.namespace ev
a550: 61 6c 20 64 6e 73 20 7b 0a 09 76 61 72 69 61 62 al dns {..variab
a560: 6c 65 20 74 69 6d 65 6f 75 74 20 31 30 20 0a 09 le timeout 10 ..
a570: 70 72 6f 63 20 63 6f 6e 66 69 67 75 72 65 20 7b proc configure {
a580: 6e 65 77 7d 20 7b 0a 09 09 76 61 72 69 61 62 6c new} {...variabl
a590: 65 20 74 69 6d 65 6f 75 74 0a 09 09 73 65 74 20 e timeout...set
a5a0: 74 69 6d 65 6f 75 74 20 24 6e 65 77 0a 09 7d 0a timeout $new..}.
a5b0: 7d 0a 26 6c 74 3b 2f 70 72 65 26 67 74 3b 0a 0a }.</pre>..
a5c0: 26 6c 74 3b 70 26 67 74 3b 54 68 69 73 20 63 6f <p>This co
a5d0: 64 65 20 63 72 65 61 74 65 20 61 20 76 61 72 69 de create a vari
a5e0: 61 62 6c 65 20 26 6c 74 3b 63 6f 64 65 26 67 74 able <code>
a5f0: 3b 3a 3a 64 6e 73 3a 3a 74 69 6d 65 6f 75 74 26 ;::dns::timeout&
a600: 6c 74 3b 2f 63 6f 64 65 26 67 74 3b 20 61 6e 64 lt;/code> and
a610: 20 61 20 70 72 6f 63 20 26 6c 74 3b 63 6f 64 65 a proc <code
a620: 26 67 74 3b 3a 3a 64 6e 73 3a 3a 63 6f 6e 66 69 >::dns::confi
a630: 67 75 72 65 26 6c 74 3b 2f 63 6f 64 65 26 67 74 gure</code>
a640: 3b 2e 20 57 65 20 63 61 6e 20 64 6f 20 74 68 65 ;. We can do the
a650: 20 73 61 6d 65 0a 65 78 70 6c 69 63 69 74 6c 79 same.explicitly
a660: 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 .</p>..<
a670: 3b 70 72 65 20 63 6c 61 73 73 3d 22 73 68 5f 74 ;pre class="sh_t
a680: 63 6c 22 26 67 74 3b 0a 73 65 74 20 64 6e 73 3a cl">.set dns:
a690: 3a 74 69 6d 65 6f 75 74 20 31 30 0a 0a 70 72 6f :timeout 10..pro
a6a0: 63 20 64 6e 73 3a 3a 63 6f 6e 66 69 67 75 72 65 c dns::configure
a6b0: 20 7b 6e 65 77 7d 20 7b 0a 09 67 6c 6f 62 61 6c {new} {..global
a6c0: 20 64 6e 73 3a 3a 74 69 6d 65 6f 75 74 0a 09 73 dns::timeout..s
a6d0: 65 74 20 64 6e 73 3a 3a 74 69 6d 65 6f 75 74 20 et dns::timeout
a6e0: 24 6e 65 77 0a 7d 0a 26 6c 74 3b 2f 70 72 65 26 $new.}.</pre&
a6f0: 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 54 68 gt;..<p>Th
a700: 65 20 6d 61 69 6e 20 64 69 66 66 65 72 65 6e 63 e main differenc
a710: 65 73 20 62 65 74 77 65 65 6e 20 74 68 69 73 20 es between this
a720: 63 6f 64 65 20 61 6e 64 20 74 68 65 20 6e 61 6d code and the nam
a730: 65 73 70 61 63 65 20 63 6f 64 65 20 61 72 65 3a espace code are:
a740: 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b </p>..<
a750: 75 6c 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 ul>. <li&
a760: 67 74 3b 41 6c 6c 20 76 61 72 69 61 62 6c 65 73 gt;All variables
a770: 20 61 6e 64 20 70 72 6f 63 73 20 61 72 65 20 76 and procs are v
a780: 69 73 69 62 6c 65 2c 20 65 76 65 6e 20 69 66 20 isible, even if
a790: 6e 6f 74 20 26 6c 74 3b 65 6d 26 67 74 3b 65 78 not <em>ex
a7a0: 70 6f 72 74 65 64 26 6c 74 3b 2f 65 6d 26 67 74 ported</em>
a7b0: 3b 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 ;</li>. &
a7c0: 6c 74 3b 6c 69 26 67 74 3b 4e 61 6d 65 73 70 61 lt;li>Namespa
a7d0: 63 65 20 70 72 6f 63 73 20 6e 65 65 64 20 74 6f ce procs need to
a7e0: 20 62 65 20 72 65 66 65 72 65 6e 63 65 64 20 77 be referenced w
a7f0: 69 74 68 20 61 20 66 75 6c 6c 79 20 71 75 61 6c ith a fully qual
a800: 69 66 69 65 64 20 6e 61 6d 65 26 6c 74 3b 2f 6c ified name</l
a810: 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 i>. <li&g
a820: 74 3b 4e 61 6d 65 73 70 61 63 65 20 76 61 72 69 t;Namespace vari
a830: 61 62 6c 65 73 20 6e 65 65 64 20 74 6f 20 62 65 ables need to be
a840: 20 72 65 66 65 72 65 6e 63 65 64 20 77 69 74 68 referenced with
a850: 20 61 20 66 75 6c 6c 79 20 71 75 61 6c 69 66 69 a fully qualifi
a860: 65 64 20 6e 61 6d 65 26 6c 74 3b 2f 6c 69 26 67 ed name</li&g
a870: 74 3b 0a 26 6c 74 3b 2f 75 6c 26 67 74 3b 0a 0a t;.</ul>..
a880: 26 6c 74 3b 70 26 67 74 3b 57 65 20 63 61 6e 20 <p>We can
a890: 6d 69 74 69 67 61 74 65 20 74 68 69 73 20 6c 61 mitigate this la
a8a0: 73 74 20 64 69 66 66 65 72 65 6e 63 65 20 77 69 st difference wi
a8b0: 74 68 20 6f 6e 65 20 73 6d 61 6c 6c 20 63 68 61 th one small cha
a8c0: 6e 67 65 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a nge.</p>..
a8d0: 26 6c 74 3b 70 72 65 20 63 6c 61 73 73 3d 22 73 <pre class="s
a8e0: 68 5f 74 63 6c 22 26 67 74 3b 0a 23 20 50 6f 6f h_tcl">.# Poo
a8f0: 72 20 6d 61 6e 27 73 20 76 61 72 69 61 62 6c 65 r man's variable
a900: 20 66 6f 72 20 4a 69 6d 20 54 63 6c 0a 23 20 4c for Jim Tcl.# L
a910: 69 6e 6b 73 20 61 20 67 6c 6f 62 61 6c 20 76 61 inks a global va
a920: 72 69 61 62 6c 65 2c 20 3a 3a 6e 73 3a 3a 76 61 riable, ::ns::va
a930: 72 20 74 6f 20 61 20 6c 6f 63 61 6c 20 76 61 72 r to a local var
a940: 69 61 62 6c 65 2c 20 76 61 72 0a 70 72 6f 63 20 iable, var.proc
a950: 76 61 72 69 61 62 6c 65 20 7b 6e 73 20 76 61 72 variable {ns var
a960: 7d 20 7b 0a 20 20 20 20 75 70 6c 65 76 65 6c 20 } {. uplevel
a970: 31 20 5b 6c 69 73 74 20 75 70 76 61 72 20 23 30 1 [list upvar #0
a980: 20 24 7b 6e 73 7d 3a 3a 24 76 61 72 20 24 76 61 ${ns}::$var $va
a990: 72 5d 0a 7d 0a 0a 73 65 74 20 64 6e 73 3a 3a 74 r].}..set dns::t
a9a0: 69 6d 65 6f 75 74 20 31 30 0a 0a 70 72 6f 63 20 imeout 10..proc
a9b0: 64 6e 73 3a 3a 63 6f 6e 66 69 67 75 72 65 20 7b dns::configure {
a9c0: 6e 65 77 7d 20 7b 0a 09 76 61 72 69 61 62 6c 65 new} {..variable
a9d0: 20 64 6e 73 20 74 69 6d 65 6f 75 74 0a 09 73 65 dns timeout..se
a9e0: 74 20 74 69 6d 65 6f 75 74 20 24 6e 65 77 0a 7d t timeout $new.}
a9f0: 0a 26 6c 74 3b 2f 70 72 65 26 67 74 3b 0a 0a 26 .</pre>..&
aa00: 6c 74 3b 70 26 67 74 3b 57 69 74 68 20 74 68 69 lt;p>With thi
aa10: 73 20 63 68 61 6e 67 65 2c 20 63 6f 64 65 20 63 s change, code c
aa20: 61 6e 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 an refer to the
aa30: 75 6e 71 75 61 6c 69 66 69 65 64 20 76 61 72 69 unqualified vari
aa40: 61 62 6c 65 20 6e 61 6d 65 0a 77 68 69 63 68 20 able name.which
aa50: 69 73 20 6c 69 6e 6b 65 64 20 74 6f 20 74 68 65 is linked to the
aa60: 20 66 75 6c 6c 79 20 71 75 61 6c 69 66 69 65 64 fully qualified
aa70: 20 6e 61 6d 65 2e 26 6c 74 3b 2f 70 26 67 74 3b name.</p>
aa80: 0a 0a 26 6c 74 3b 70 26 67 74 3b 59 6f 75 20 63 ..<p>You c
aa90: 61 6e 20 73 65 65 20 74 68 65 20 66 75 6c 6c 79 an see the fully
aaa0: 20 63 6f 6e 76 65 72 74 65 64 20 76 65 72 73 69 converted versi
aab0: 6f 6e 20 6f 66 20 26 6c 74 3b 61 20 68 72 65 66 on of <a href
aac0: 3d 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 ="https://github
aad0: 2e 63 6f 6d 2f 6d 73 74 65 76 65 62 2f 6a 69 6d .com/msteveb/jim
aae0: 74 63 6c 2f 62 6c 6f 62 2f 30 2e 37 33 2f 65 78 tcl/blob/0.73/ex
aaf0: 61 6d 70 6c 65 73 2f 64 6e 73 2e 74 63 6c 22 26 amples/dns.tcl"&
ab00: 67 74 3b 64 6e 73 2e 74 63 6c 20 66 6f 72 20 4a gt;dns.tcl for J
ab10: 69 6d 26 6c 74 3b 2f 61 26 67 74 3b 26 6c 74 3b im</a><
ab20: 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 /p>..<p>
ab30: 3b 54 6f 20 73 75 6d 6d 61 72 69 73 65 3a 26 6c ;To summarise:&l
ab40: 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 75 6c t;/p>..<ul
ab50: 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 >. <li>
ab60: 3b 52 65 6d 6f 76 65 20 26 6c 74 3b 63 6f 64 65 ;Remove <code
ab70: 26 67 74 3b 6e 61 6d 65 73 70 61 63 65 20 65 76 >namespace ev
ab80: 61 6c 26 6c 74 3b 2f 63 6f 64 65 26 67 74 3b 26 al</code>&
ab90: 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 lt;/li>. <
aba0: 3b 6c 69 26 67 74 3b 49 6e 69 74 69 61 6c 69 73 ;li>Initialis
abb0: 65 20 76 61 72 69 61 62 6c 65 73 20 77 69 74 68 e variables with
abc0: 20 66 75 6c 6c 79 20 71 75 61 6c 69 66 69 65 64 fully qualified
abd0: 20 6e 61 6d 65 73 3a 20 26 6c 74 3b 63 6f 64 65 names: <code
abe0: 26 67 74 3b 73 65 74 20 6e 73 3a 3a 76 61 72 20 >set ns::var
abf0: 76 61 6c 75 65 26 6c 74 3b 2f 63 6f 64 65 26 67 value</code&g
ac00: 74 3b 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 t;</li>.
ac10: 26 6c 74 3b 6c 69 26 67 74 3b 45 6e 73 75 72 65 <li>Ensure
ac20: 20 70 72 6f 63 73 20 61 72 65 20 64 65 63 6c 61 procs are decla
ac30: 72 65 64 20 77 69 74 68 20 66 75 6c 6c 79 20 71 red with fully q
ac40: 75 61 6c 69 74 79 20 6e 61 6d 65 73 3a 20 26 6c uality names: &l
ac50: 74 3b 63 6f 64 65 26 67 74 3b 70 72 6f 63 20 6e t;code>proc n
ac60: 73 3a 3a 70 72 6f 63 6e 61 6d 65 20 7b 20 2e 2e s::procname { ..
ac70: 2e 20 7d 26 6c 74 3b 2f 63 6f 64 65 26 67 74 3b . }</code>
ac80: 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c </li>. &l
ac90: 74 3b 6c 69 26 67 74 3b 55 73 65 20 66 75 6c 6c t;li>Use full
aca0: 79 20 71 75 61 6c 69 66 69 65 64 20 6e 61 6d 65 y qualified name
acb0: 73 20 77 68 65 6e 20 69 6e 76 6f 6b 69 6e 67 20 s when invoking
acc0: 70 72 6f 63 73 20 77 69 74 68 69 6e 20 74 68 65 procs within the
acd0: 20 6e 61 6d 65 73 70 61 63 65 2e 26 6c 74 3b 2f namespace.</
ace0: 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 li>. <li&
acf0: 67 74 3b 52 65 70 6c 61 63 65 20 74 68 65 20 75 gt;Replace the u
ad00: 73 65 20 6f 66 20 26 6c 74 3b 63 6f 64 65 26 67 se of <code&g
ad10: 74 3b 6e 61 6d 65 73 70 61 63 65 20 63 75 72 72 t;namespace curr
ad20: 65 6e 74 26 6c 74 3b 2f 63 6f 64 65 26 67 74 3b ent</code>
ad30: 20 77 69 74 68 20 74 68 65 20 6e 61 6d 65 73 70 with the namesp
ad40: 61 63 65 20 6e 61 6d 65 26 6c 74 3b 2f 6c 69 26 ace name</li&
ad50: 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b gt;. <li>
ad60: 52 65 70 6c 61 63 65 20 74 68 65 20 75 73 65 20 Replace the use
ad70: 6f 66 20 26 6c 74 3b 63 6f 64 65 26 67 74 3b 6e of <code>n
ad80: 61 6d 65 73 70 61 63 65 20 6f 72 69 67 69 6e 26 amespace origin&
ad90: 6c 74 3b 2f 63 6f 64 65 26 67 74 3b 20 77 69 74 lt;/code> wit
ada0: 68 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 h the namespace
adb0: 6e 61 6d 65 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a name</li>.
adc0: 20 20 26 6c 74 3b 6c 69 26 67 74 3b 55 73 65 20 <li>Use
add0: 74 68 65 20 26 6c 74 3b 63 6f 64 65 26 67 74 3b the <code>
ade0: 76 61 72 69 61 62 6c 65 26 6c 74 3b 2f 63 6f 64 variable</cod
adf0: 65 26 67 74 3b 20 70 72 6f 63 20 74 6f 20 64 65 e> proc to de
ae00: 63 6c 61 72 65 20 76 61 72 69 61 62 6c 65 73 20 clare variables
ae10: 77 69 74 68 69 6e 20 70 72 6f 63 73 26 6c 74 3b within procs<
ae20: 2f 6c 69 26 67 74 3b 0a 26 6c 74 3b 2f 75 6c 26 /li>.</ul&
ae30: 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 53 74 gt;..<p>St
ae40: 65 76 65 20 42 65 6e 6e 65 74 74 20 28 26 6c 74 eve Bennett (<
ae50: 3b 61 20 68 72 65 66 3d 22 26 61 6d 70 3b 23 31 ;a href="&#1
ae60: 30 39 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 09;&#097;&am
ae70: 70 3b 23 31 30 35 3b 26 61 6d 70 3b 23 31 30 38 p;#105;&#108
ae80: 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 3b ;&#116;&
ae90: 23 31 31 31 3b 3a 26 61 6d 70 3b 23 31 31 35 3b #111;:&#115;
aea0: 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 &#116;&#
aeb0: 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 3b 26 61 101;&#118;&a
aec0: 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 30 39 mp;#101;&#09
aed0: 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 61 6d 70 8;&#064;&
aee0: 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 31 31 3b ;#119;&#111;
aef0: 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 3b 23 &#114;&#
af00: 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 3b 26 61 107;&#119;&a
af10: 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 31 31 mp;#097;&#11
af20: 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 4;&#101;&
af30: 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 31 30 3b ;#046;&#110;
af40: 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 &#101;&#
af50: 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 3b 26 61 116;&#046;&a
af60: 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 31 31 mp;#097;&#11
af70: 37 3b 22 26 67 74 3b 26 61 6d 70 3b 23 31 31 35 7;">&#115
af80: 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 3b ;&#116;&
af90: 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 3b 26 #101;&#118;&
afa0: 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 30 amp;#101;&#0
afb0: 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 61 6d 98;&#064;&am
afc0: 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 31 31 p;#119;&#111
afd0: 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 3b ;&#114;&
afe0: 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 3b 26 #107;&#119;&
aff0: 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 31 amp;#097;&#1
b000: 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 14;&#101;&am
b010: 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 31 30 p;#046;&#110
b020: 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b ;&#101;&
b030: 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 3b 26 #116;&#046;&
b040: 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 31 amp;#097;&#1
b050: 31 37 3b 26 6c 74 3b 2f 61 26 67 74 3b 29 26 6c 17;</a>)&l
b060: 74 3b 2f 70 26 67 74 3b 0a 3c 2f 63 6f 6e 74 65 t;/p>.</conte
b070: 6e 74 3e 0a 20 20 3c 2f 65 6e 74 72 79 3e 0a 20 nt>. </entry>.
b080: 20 3c 65 6e 74 72 79 3e 0a 20 20 20 20 3c 69 64 <entry>. <id
b090: 3e 74 61 67 3a 6a 69 6d 2e 62 65 72 6c 69 6f 73 >tag:jim.berlios
b0a0: 2e 64 65 2c 32 30 31 31 2d 30 35 2d 32 35 3a 2f .de,2011-05-25:/
b0b0: 61 72 74 69 63 6c 65 73 2f 6a 69 6d 2d 69 73 2d articles/jim-is-
b0c0: 6d 6f 64 75 6c 61 72 2f 3c 2f 69 64 3e 0a 20 20 modular/</id>.
b0d0: 20 20 3c 74 69 74 6c 65 20 74 79 70 65 3d 22 68 <title type="h
b0e0: 74 6d 6c 22 3e 4a 69 6d 20 49 73 20 4d 6f 64 75 tml">Jim Is Modu
b0f0: 6c 61 72 3c 2f 74 69 74 6c 65 3e 0a 20 20 20 20 lar</title>.
b100: 3c 70 75 62 6c 69 73 68 65 64 3e 32 30 31 31 2d <published>2011-
b110: 30 35 2d 32 34 54 31 34 3a 30 30 3a 30 30 5a 3c 05-24T14:00:00Z<
b120: 2f 70 75 62 6c 69 73 68 65 64 3e 0a 20 20 20 20 /published>.
b130: 3c 75 70 64 61 74 65 64 3e 32 30 31 31 2d 30 35 <updated>2011-05
b140: 2d 32 34 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 75 -24T14:00:00Z</u
b150: 70 64 61 74 65 64 3e 0a 20 20 20 20 3c 6c 69 6e pdated>. <lin
b160: 6b 20 72 65 6c 3d 22 61 6c 74 65 72 6e 61 74 65 k rel="alternate
b170: 22 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 6a " href="http://j
b180: 69 6d 2e 62 65 72 6c 69 6f 73 2e 64 65 2f 61 72 im.berlios.de/ar
b190: 74 69 63 6c 65 73 2f 6a 69 6d 2d 69 73 2d 6d 6f ticles/jim-is-mo
b1a0: 64 75 6c 61 72 2f 22 2f 3e 0a 20 20 20 20 3c 63 dular/"/>. <c
b1b0: 6f 6e 74 65 6e 74 20 74 79 70 65 3d 22 68 74 6d ontent type="htm
b1c0: 6c 22 3e 26 6c 74 3b 70 26 67 74 3b 4f 6e 65 20 l"><p>One
b1d0: 6f 66 20 74 68 65 20 61 64 76 61 6e 74 61 67 65 of the advantage
b1e0: 73 20 6f 66 20 4a 69 6d 20 54 63 6c 20 69 73 20 s of Jim Tcl is
b1f0: 74 68 61 74 20 74 68 65 20 63 6f 72 65 20 69 6e that the core in
b200: 74 65 72 70 72 65 74 65 72 0a 63 6f 6e 74 61 69 terpreter.contai
b210: 6e 73 20 6f 6e 6c 79 20 74 68 65 20 62 61 72 65 ns only the bare
b220: 20 65 73 73 65 6e 74 69 61 6c 73 2e 20 4d 61 6e essentials. Man
b230: 79 20 54 63 6c 20 73 74 61 6e 64 61 72 64 20 63 y Tcl standard c
b240: 6f 6d 6d 61 6e 64 73 20 61 72 65 20 70 72 6f 76 ommands are prov
b250: 69 64 65 64 20 62 79 0a 6f 70 74 69 6f 6e 61 6c ided by.optional
b260: 20 65 78 74 65 6e 73 69 6f 6e 73 20 77 68 69 63 extensions whic
b270: 68 20 63 61 6e 20 62 65 20 64 69 73 61 62 6c 65 h can be disable
b280: 20 6f 72 20 62 75 69 6c 74 20 61 73 20 6c 6f 61 or built as loa
b290: 64 61 62 6c 65 20 6d 6f 64 75 6c 65 73 20 69 66 dable modules if
b2a0: 20 72 65 71 75 69 72 65 64 2e 26 6c 74 3b 2f 70 required.</p
b2b0: 26 67 74 3b 0a 0a 26 6c 74 3b 64 6c 26 67 74 3b >..<dl>
b2c0: 0a 20 20 26 6c 74 3b 64 74 26 67 74 3b 63 6f 72 . <dt>cor
b2d0: 65 20 63 6f 6d 6d 61 6e 64 73 26 6c 74 3b 2f 64 e commands</d
b2e0: 74 26 67 74 3b 0a 20 20 26 6c 74 3b 64 64 26 67 t>. <dd&g
b2f0: 74 3b 2a 2c 20 2b 2c 20 2d 2c 20 2f 2c 20 61 6c t;*, +, -, /, al
b300: 69 61 73 2c 20 61 70 70 65 6e 64 2c 20 62 72 65 ias, append, bre
b310: 61 6b 2c 20 63 61 74 63 68 2c 20 63 6f 6c 6c 65 ak, catch, colle
b320: 63 74 2c 20 63 6f 6e 63 61 74 2c 0a 63 6f 6e 74 ct, concat,.cont
b330: 69 6e 75 65 2c 20 63 75 72 72 79 2c 20 64 69 63 inue, curry, dic
b340: 74 2c 20 65 6e 76 2c 20 65 72 72 6f 72 2c 20 65 t, env, error, e
b350: 72 72 6f 72 49 6e 66 6f 2c 20 65 76 61 6c 2c 20 rrorInfo, eval,
b360: 65 78 69 73 74 73 2c 20 65 78 69 74 2c 0a 65 78 exists, exit,.ex
b370: 70 72 2c 20 66 69 6e 61 6c 69 7a 65 2c 20 66 6f pr, finalize, fo
b380: 72 2c 20 66 6f 72 65 61 63 68 2c 20 66 6f 72 6d r, foreach, form
b390: 61 74 2c 20 67 65 74 72 65 66 2c 20 67 6c 6f 62 at, getref, glob
b3a0: 61 6c 2c 20 69 66 2c 20 69 6e 63 72 2c 0a 69 6e al, if, incr,.in
b3b0: 66 6f 2c 20 6a 6f 69 6e 2c 20 6c 61 6d 62 64 61 fo, join, lambda
b3c0: 2c 20 6c 61 70 70 65 6e 64 2c 20 6c 61 73 73 69 , lappend, lassi
b3d0: 67 6e 2c 20 6c 69 6e 64 65 78 2c 20 6c 69 6e 73 gn, lindex, lins
b3e0: 65 72 74 2c 20 6c 69 73 74 2c 20 6c 6c 65 6e 67 ert, list, lleng
b3f0: 74 68 2c 0a 6c 6d 61 70 2c 20 6c 6f 63 61 6c 2c th,.lmap, local,
b400: 20 6c 72 61 6e 67 65 2c 20 6c 72 65 70 65 61 74 lrange, lrepeat
b410: 2c 20 6c 72 65 70 6c 61 63 65 2c 20 6c 72 65 76 , lreplace, lrev
b420: 65 72 73 65 2c 20 6c 73 65 61 72 63 68 2c 20 6c erse, lsearch, l
b430: 73 65 74 2c 0a 6c 73 6f 72 74 2c 20 70 72 6f 63 set,.lsort, proc
b440: 2c 20 72 61 6e 64 2c 20 72 61 6e 67 65 2c 20 72 , rand, range, r
b450: 65 66 2c 20 72 65 6e 61 6d 65 2c 20 72 65 74 75 ef, rename, retu
b460: 72 6e 2c 20 73 63 61 6e 2c 20 73 65 74 2c 20 73 rn, scan, set, s
b470: 65 74 72 65 66 2c 0a 73 6f 75 72 63 65 2c 20 73 etref,.source, s
b480: 70 6c 69 74 2c 20 73 74 61 63 6b 64 75 6d 70 2c plit, stackdump,
b490: 20 73 74 61 63 6b 74 72 61 63 65 2c 20 73 74 72 stacktrace, str
b4a0: 69 6e 67 2c 20 73 75 62 73 74 2c 20 73 77 69 74 ing, subst, swit
b4b0: 63 68 2c 20 74 61 69 6c 63 61 6c 6c 2c 0a 74 65 ch, tailcall,.te
b4c0: 6c 6c 2c 20 74 68 72 6f 77 2c 20 74 69 6d 65 2c ll, throw, time,
b4d0: 20 75 6e 73 65 74 2c 20 75 70 6c 65 76 65 6c 2c unset, uplevel,
b4e0: 20 75 70 76 61 72 2c 20 77 68 69 6c 65 26 6c 74 upvar, while<
b4f0: 3b 2f 64 64 26 67 74 3b 0a 20 20 26 6c 74 3b 64 ;/dd>. <d
b500: 74 26 67 74 3b 61 69 6f 20 65 78 74 65 6e 73 69 t>aio extensi
b510: 6f 6e 26 6c 74 3b 2f 64 74 26 67 74 3b 0a 20 20 on</dt>.
b520: 26 6c 74 3b 64 64 26 67 74 3b 6f 70 65 6e 2c 20 <dd>open,
b530: 73 6f 63 6b 65 74 26 6c 74 3b 2f 64 64 26 67 74 socket</dd>
b540: 3b 0a 20 20 26 6c 74 3b 64 74 26 67 74 3b 65 76 ;. <dt>ev
b550: 65 6e 74 6c 6f 6f 70 20 65 78 74 65 6e 73 69 6f entloop extensio
b560: 6e 26 6c 74 3b 2f 64 74 26 67 74 3b 0a 20 20 26 n</dt>. &
b570: 6c 74 3b 64 64 26 67 74 3b 76 77 61 69 74 2c 20 lt;dd>vwait,
b580: 75 70 64 61 74 65 2c 20 61 66 74 65 72 26 6c 74 update, after<
b590: 3b 2f 64 64 26 67 74 3b 0a 20 20 26 6c 74 3b 64 ;/dd>. <d
b5a0: 74 26 67 74 3b 74 63 6c 63 6f 6d 70 61 74 20 65 t>tclcompat e
b5b0: 78 74 65 6e 73 69 6f 6e 26 6c 74 3b 2f 64 74 26 xtension</dt&
b5c0: 67 74 3b 0a 20 20 26 6c 74 3b 64 64 26 67 74 3b gt;. <dd>
b5d0: 70 75 74 73 2c 20 67 65 74 73 2c 20 72 65 61 64 puts, gets, read
b5e0: 2c 20 63 6c 6f 73 65 2c 20 74 65 6c 6c 2c 20 73 , close, tell, s
b5f0: 65 65 6b 2c 20 65 6f 66 2c 20 66 6c 75 73 68 2c eek, eof, flush,
b600: 20 70 61 72 72 61 79 2c 20 74 72 79 2c 20 74 68 parray, try, th
b610: 72 6f 77 2c 20 63 61 73 65 26 6c 74 3b 2f 64 64 row, case</dd
b620: 26 67 74 3b 0a 20 20 26 6c 74 3b 64 74 26 67 74 >. <dt>
b630: 3b 61 72 72 61 79 20 65 78 74 65 6e 73 69 6f 6e ;array extension
b640: 26 6c 74 3b 2f 64 74 26 67 74 3b 0a 20 20 26 6c </dt>. &l
b650: 74 3b 64 64 26 67 74 3b 61 72 72 61 79 26 6c 74 t;dd>array<
b660: 3b 2f 64 64 26 67 74 3b 0a 20 20 26 6c 74 3b 64 ;/dd>. <d
b670: 74 26 67 74 3b 63 6c 6f 63 6b 20 65 78 74 65 6e t>clock exten
b680: 73 69 6f 6e 26 6c 74 3b 2f 64 74 26 67 74 3b 0a sion</dt>.
b690: 20 20 26 6c 74 3b 64 64 26 67 74 3b 63 6c 6f 63 <dd>cloc
b6a0: 6b 26 6c 74 3b 2f 64 64 26 67 74 3b 0a 20 20 26 k</dd>. &
b6b0: 6c 74 3b 64 74 26 67 74 3b 66 69 6c 65 20 65 78 lt;dt>file ex
b6c0: 74 65 6e 73 69 6f 6e 26 6c 74 3b 2f 64 74 26 67 tension</dt&g
b6d0: 74 3b 0a 20 20 26 6c 74 3b 64 64 26 67 74 3b 66 t;. <dd>f
b6e0: 69 6c 65 2c 20 63 64 2c 20 70 77 64 26 6c 74 3b ile, cd, pwd<
b6f0: 2f 64 64 26 67 74 3b 0a 20 20 26 6c 74 3b 64 74 /dd>. <dt
b700: 26 67 74 3b 65 78 65 63 20 65 78 74 65 6e 73 69 >exec extensi
b710: 6f 6e 26 6c 74 3b 2f 64 74 26 67 74 3b 0a 20 20 on</dt>.
b720: 26 6c 74 3b 64 64 26 67 74 3b 65 78 65 63 26 6c <dd>exec&l
b730: 74 3b 2f 64 64 26 67 74 3b 0a 20 20 26 6c 74 3b t;/dd>. <
b740: 64 74 26 67 74 3b 6c 6f 61 64 20 65 78 74 65 6e dt>load exten
b750: 73 69 6f 6e 26 6c 74 3b 2f 64 74 26 67 74 3b 0a sion</dt>.
b760: 20 20 26 6c 74 3b 64 64 26 67 74 3b 6c 6f 61 64 <dd>load
b770: 26 6c 74 3b 2f 64 64 26 67 74 3b 0a 20 20 26 6c </dd>. &l
b780: 74 3b 64 74 26 67 74 3b 70 61 63 6b 61 67 65 20 t;dt>package
b790: 65 78 74 65 6e 73 69 6f 6e 26 6c 74 3b 2f 64 74 extension</dt
b7a0: 26 67 74 3b 0a 20 20 26 6c 74 3b 64 64 26 67 74 >. <dd>
b7b0: 3b 70 61 63 6b 61 67 65 26 6c 74 3b 2f 64 64 26 ;package</dd&
b7c0: 67 74 3b 0a 20 20 26 6c 74 3b 64 74 26 67 74 3b gt;. <dt>
b7d0: 70 6f 73 69 78 20 65 78 74 65 6e 73 69 6f 6e 26 posix extension&
b7e0: 6c 74 3b 2f 64 74 26 67 74 3b 0a 20 20 26 6c 74 lt;/dt>. <
b7f0: 3b 64 64 26 67 74 3b 6f 73 2e 66 6f 72 6b 2c 20 ;dd>os.fork,
b800: 6f 73 2e 77 61 69 74 2c 20 6f 73 2e 67 65 74 69 os.wait, os.geti
b810: 64 73 2c 20 6f 73 2e 67 65 74 68 6f 73 74 6e 61 ds, os.gethostna
b820: 6d 65 2c 20 6f 73 2e 75 70 74 69 6d 65 2c 20 70 me, os.uptime, p
b830: 69 64 26 6c 74 3b 2f 64 64 26 67 74 3b 0a 20 20 id</dd>.
b840: 26 6c 74 3b 64 74 26 67 74 3b 67 6c 6f 62 2c 20 <dt>glob,
b850: 72 65 61 64 64 69 72 20 65 78 74 65 6e 73 69 6f readdir extensio
b860: 6e 73 26 6c 74 3b 2f 64 74 26 67 74 3b 0a 20 20 ns</dt>.
b870: 26 6c 74 3b 64 64 26 67 74 3b 67 6c 6f 62 2c 20 <dd>glob,
b880: 72 65 61 64 64 69 72 26 6c 74 3b 2f 64 64 26 67 readdir</dd&g
b890: 74 3b 0a 20 20 26 6c 74 3b 64 74 26 67 74 3b 72 t;. <dt>r
b8a0: 65 67 65 78 70 20 65 78 74 65 6e 73 69 6f 6e 26 egexp extension&
b8b0: 6c 74 3b 2f 64 74 26 67 74 3b 0a 20 20 26 6c 74 lt;/dt>. <
b8c0: 3b 64 64 26 67 74 3b 72 65 67 65 78 70 2c 20 72 ;dd>regexp, r
b8d0: 65 67 73 75 62 26 6c 74 3b 2f 64 64 26 67 74 3b egsub</dd>
b8e0: 0a 20 20 26 6c 74 3b 64 74 26 67 74 3b 73 69 67 . <dt>sig
b8f0: 6e 61 6c 20 65 78 74 65 6e 73 69 6f 6e 26 6c 74 nal extension<
b900: 3b 2f 64 74 26 67 74 3b 0a 20 20 26 6c 74 3b 64 ;/dt>. <d
b910: 64 26 67 74 3b 73 69 67 6e 61 6c 2c 20 61 6c 61 d>signal, ala
b920: 72 6d 2c 20 6b 69 6c 6c 2c 20 73 6c 65 65 70 26 rm, kill, sleep&
b930: 6c 74 3b 2f 64 64 26 67 74 3b 0a 26 6c 74 3b 2f lt;/dd>.</
b940: 64 6c 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 dl>..<p>
b950: 3b 49 6e 20 61 64 64 69 74 69 6f 6e 2c 20 66 65 ;In addition, fe
b960: 61 74 75 72 65 73 20 69 6e 63 6c 75 64 69 6e 67 atures including
b970: 20 72 65 66 65 72 65 6e 63 65 73 2c 20 55 54 46 references, UTF
b980: 2d 38 20 73 75 70 70 6f 72 74 2c 20 49 50 76 36 -8 support, IPv6
b990: 20 61 6e 64 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e and command lin
b9a0: 65 20 65 64 69 74 69 6e 67 0a 63 61 6e 20 62 65 e editing.can be
b9b0: 20 64 69 73 61 62 6c 65 64 20 77 69 74 68 20 26 disabled with &
b9c0: 6c 74 3b 63 6f 64 65 26 67 74 3b 63 6f 6e 66 69 lt;code>confi
b9d0: 67 75 72 65 26 6c 74 3b 2f 63 6f 64 65 26 67 74 gure</code>
b9e0: 3b 2e 20 53 65 65 20 26 6c 74 3b 63 6f 64 65 26 ;. See <code&
b9f0: 67 74 3b 63 6f 6e 66 69 67 75 72 65 20 2d 2d 68 gt;configure --h
ba00: 65 6c 70 26 6c 74 3b 2f 63 6f 64 65 26 67 74 3b elp</code>
ba10: 20 66 6f 72 20 66 75 6c 6c 20 64 65 74 61 69 6c for full detail
ba20: 73 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c s.</p>..&l
ba30: 74 3b 70 26 67 74 3b 53 74 65 76 65 20 42 65 6e t;p>Steve Ben
ba40: 6e 65 74 74 20 28 26 6c 74 3b 61 20 68 72 65 66 nett (<a href
ba50: 3d 22 26 61 6d 70 3b 23 31 30 39 3b 26 61 6d 70 ="&#109;&
ba60: 3b 23 30 39 37 3b 26 61 6d 70 3b 23 31 30 35 3b ;#097;&#105;
ba70: 26 61 6d 70 3b 23 31 30 38 3b 26 61 6d 70 3b 23 &#108;&#
ba80: 31 31 36 3b 26 61 6d 70 3b 23 31 31 31 3b 3a 26 116;&#111;:&
ba90: 61 6d 70 3b 23 31 31 35 3b 26 61 6d 70 3b 23 31 amp;#115;&#1
baa0: 31 36 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 16;&#101;&am
bab0: 70 3b 23 31 31 38 3b 26 61 6d 70 3b 23 31 30 31 p;#118;&#101
bac0: 3b 26 61 6d 70 3b 23 30 39 38 3b 26 61 6d 70 3b ;&#098;&
bad0: 23 30 36 34 3b 26 61 6d 70 3b 23 31 31 39 3b 26 #064;&#119;&
bae0: 61 6d 70 3b 23 31 31 31 3b 26 61 6d 70 3b 23 31 amp;#111;&#1
baf0: 31 34 3b 26 61 6d 70 3b 23 31 30 37 3b 26 61 6d 14;&#107;&am
bb00: 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 30 39 37 p;#119;&#097
bb10: 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 3b ;&#114;&
bb20: 23 31 30 31 3b 26 61 6d 70 3b 23 30 34 36 3b 26 #101;&#046;&
bb30: 61 6d 70 3b 23 31 31 30 3b 26 61 6d 70 3b 23 31 amp;#110;&#1
bb40: 30 31 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 01;&#116;&am
bb50: 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 30 39 37 p;#046;&#097
bb60: 3b 26 61 6d 70 3b 23 31 31 37 3b 22 26 67 74 3b ;&#117;">
bb70: 26 61 6d 70 3b 23 31 31 35 3b 26 61 6d 70 3b 23 &#115;&#
bb80: 31 31 36 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 116;&#101;&a
bb90: 6d 70 3b 23 31 31 38 3b 26 61 6d 70 3b 23 31 30 mp;#118;&#10
bba0: 31 3b 26 61 6d 70 3b 23 30 39 38 3b 26 61 6d 70 1;&#098;&
bbb0: 3b 23 30 36 34 3b 26 61 6d 70 3b 23 31 31 39 3b ;#064;&#119;
bbc0: 26 61 6d 70 3b 23 31 31 31 3b 26 61 6d 70 3b 23 &#111;&#
bbd0: 31 31 34 3b 26 61 6d 70 3b 23 31 30 37 3b 26 61 114;&#107;&a
bbe0: 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 30 39 mp;#119;&#09
bbf0: 37 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 7;&#114;&
bc00: 3b 23 31 30 31 3b 26 61 6d 70 3b 23 30 34 36 3b ;#101;&#046;
bc10: 26 61 6d 70 3b 23 31 31 30 3b 26 61 6d 70 3b 23 &#110;&#
bc20: 31 30 31 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 101;&#116;&a
bc30: 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 30 39 mp;#046;&#09
bc40: 37 3b 26 61 6d 70 3b 23 31 31 37 3b 26 6c 74 3b 7;&#117;<
bc50: 2f 61 26 67 74 3b 29 26 6c 74 3b 2f 70 26 67 74 /a>)</p>
bc60: 3b 0a 3c 2f 63 6f 6e 74 65 6e 74 3e 0a 20 20 3c ;.</content>. <
bc70: 2f 65 6e 74 72 79 3e 0a 20 20 3c 65 6e 74 72 79 /entry>. <entry
bc80: 3e 0a 20 20 20 20 3c 69 64 3e 74 61 67 3a 6a 69 >. <id>tag:ji
bc90: 6d 2e 62 65 72 6c 69 6f 73 2e 64 65 2c 32 30 31 m.berlios.de,201
bca0: 31 2d 30 34 2d 32 34 3a 2f 61 72 74 69 63 6c 65 1-04-24:/article
bcb0: 73 2f 32 30 31 31 2d 30 34 2d 32 34 2f 3c 2f 69 s/2011-04-24/</i
bcc0: 64 3e 0a 20 20 20 20 3c 74 69 74 6c 65 20 74 79 d>. <title ty
bcd0: 70 65 3d 22 68 74 6d 6c 22 3e 4e 65 77 20 57 65 pe="html">New We
bce0: 62 73 69 74 65 20 4c 61 75 6e 63 68 65 64 3c 2f bsite Launched</
bcf0: 74 69 74 6c 65 3e 0a 20 20 20 20 3c 70 75 62 6c title>. <publ
bd00: 69 73 68 65 64 3e 32 30 31 31 2d 30 34 2d 32 33 ished>2011-04-23
bd10: 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 70 75 62 6c T14:00:00Z</publ
bd20: 69 73 68 65 64 3e 0a 20 20 20 20 3c 75 70 64 61 ished>. <upda
bd30: 74 65 64 3e 32 30 31 31 2d 30 34 2d 32 33 54 31 ted>2011-04-23T1
bd40: 34 3a 30 30 3a 30 30 5a 3c 2f 75 70 64 61 74 65 4:00:00Z</update
bd50: 64 3e 0a 20 20 20 20 3c 6c 69 6e 6b 20 72 65 6c d>. <link rel
bd60: 3d 22 61 6c 74 65 72 6e 61 74 65 22 20 68 72 65 ="alternate" hre
bd70: 66 3d 22 68 74 74 70 3a 2f 2f 6a 69 6d 2e 62 65 f="http://jim.be
bd80: 72 6c 69 6f 73 2e 64 65 2f 61 72 74 69 63 6c 65 rlios.de/article
bd90: 73 2f 32 30 31 31 2d 30 34 2d 32 34 2f 22 2f 3e s/2011-04-24/"/>
bda0: 0a 20 20 20 20 3c 63 6f 6e 74 65 6e 74 20 74 79 . <content ty
bdb0: 70 65 3d 22 68 74 6d 6c 22 3e 26 6c 74 3b 70 26 pe="html"><p&
bdc0: 67 74 3b 4a 69 6d 20 54 63 6c 20 64 65 76 65 6c gt;Jim Tcl devel
bdd0: 6f 70 6d 65 6e 74 20 68 61 73 20 62 65 65 6e 20 opment has been
bde0: 70 72 6f 63 65 65 64 69 6e 67 20 61 70 61 63 65 proceeding apace
bdf0: 2c 20 62 75 74 20 74 68 65 20 26 6c 74 3b 61 20 , but the <a
be00: 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 6a 69 6d href="http://jim
be10: 2e 62 65 72 6c 69 6f 73 2e 64 65 2f 22 26 67 74 .berlios.de/">
be20: 3b 77 65 62 73 69 74 65 26 6c 74 3b 2f 61 26 67 ;website</a&g
be30: 74 3b 0a 68 61 64 20 6e 6f 74 20 62 65 65 6e 20 t;.had not been
be40: 75 70 64 61 74 65 64 20 66 6f 72 20 73 65 76 65 updated for seve
be50: 72 61 6c 20 79 65 61 72 73 2e 20 49 6e 20 6f 72 ral years. In or
be60: 64 65 72 20 74 6f 20 6d 61 6b 65 20 4a 69 6d 20 der to make Jim
be70: 54 63 6c 0a 6d 6f 72 65 20 61 70 70 72 6f 61 63 Tcl.more approac
be80: 68 61 62 6c 65 2c 20 77 65 20 68 61 76 65 20 67 hable, we have g
be90: 69 76 65 6e 20 74 68 65 20 77 65 62 73 69 74 65 iven the website
bea0: 20 61 6e 64 20 75 70 64 61 74 65 64 20 74 68 65 and updated the
beb0: 20 63 6f 6e 74 65 6e 74 0a 74 6f 20 72 65 66 6c content.to refl
bec0: 65 63 74 20 63 75 72 72 65 6e 74 20 72 65 61 6c ect current real
bed0: 69 74 79 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a ity.</p>..
bee0: 26 6c 74 3b 70 26 67 74 3b 53 74 65 76 65 20 42 <p>Steve B
bef0: 65 6e 6e 65 74 74 20 28 26 6c 74 3b 61 20 68 72 ennett (<a hr
bf00: 65 66 3d 22 26 61 6d 70 3b 23 31 30 39 3b 26 61 ef="&#109;&a
bf10: 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 31 30 mp;#097;&#10
bf20: 35 3b 26 61 6d 70 3b 23 31 30 38 3b 26 61 6d 70 5;&#108;&
bf30: 3b 23 31 31 36 3b 26 61 6d 70 3b 23 31 31 31 3b ;#116;&#111;
bf40: 3a 26 61 6d 70 3b 23 31 31 35 3b 26 61 6d 70 3b :&#115;&
bf50: 23 31 31 36 3b 26 61 6d 70 3b 23 31 30 31 3b 26 #116;&#101;&
bf60: 61 6d 70 3b 23 31 31 38 3b 26 61 6d 70 3b 23 31 amp;#118;&#1
bf70: 30 31 3b 26 61 6d 70 3b 23 30 39 38 3b 26 61 6d 01;&#098;&am
bf80: 70 3b 23 30 36 34 3b 26 61 6d 70 3b 23 31 31 39 p;#064;&#119
bf90: 3b 26 61 6d 70 3b 23 31 31 31 3b 26 61 6d 70 3b ;&#111;&
bfa0: 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 37 3b 26 #114;&#107;&
bfb0: 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 30 amp;#119;&#0
bfc0: 39 37 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 97;&#114;&am
bfd0: 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 30 34 36 p;#101;&#046
bfe0: 3b 26 61 6d 70 3b 23 31 31 30 3b 26 61 6d 70 3b ;&#110;&
bff0: 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 36 3b 26 #101;&#116;&
c000: 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 30 amp;#046;&#0
c010: 39 37 3b 26 61 6d 70 3b 23 31 31 37 3b 22 26 67 97;&#117;"&g
c020: 74 3b 26 61 6d 70 3b 23 31 31 35 3b 26 61 6d 70 t;&#115;&
c030: 3b 23 31 31 36 3b 26 61 6d 70 3b 23 31 30 31 3b ;#116;&#101;
c040: 26 61 6d 70 3b 23 31 31 38 3b 26 61 6d 70 3b 23 &#118;&#
c050: 31 30 31 3b 26 61 6d 70 3b 23 30 39 38 3b 26 61 101;&#098;&a
c060: 6d 70 3b 23 30 36 34 3b 26 61 6d 70 3b 23 31 31 mp;#064;&#11
c070: 39 3b 26 61 6d 70 3b 23 31 31 31 3b 26 61 6d 70 9;&#111;&
c080: 3b 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 37 3b ;#114;&#107;
c090: 26 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 &#119;&#
c0a0: 30 39 37 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 097;&#114;&a
c0b0: 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 30 34 mp;#101;&#04
c0c0: 36 3b 26 61 6d 70 3b 23 31 31 30 3b 26 61 6d 70 6;&#110;&
c0d0: 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 36 3b ;#101;&#116;
c0e0: 26 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 &#046;&#
c0f0: 30 39 37 3b 26 61 6d 70 3b 23 31 31 37 3b 26 6c 097;&#117;&l
c100: 74 3b 2f 61 26 67 74 3b 29 26 6c 74 3b 2f 70 26 t;/a>)</p&
c110: 67 74 3b 0a 3c 2f 63 6f 6e 74 65 6e 74 3e 0a 20 gt;.</content>.
c120: 20 3c 2f 65 6e 74 72 79 3e 0a 20 20 3c 65 6e 74 </entry>. <ent
c130: 72 79 3e 0a 20 20 20 20 3c 69 64 3e 74 61 67 3a ry>. <id>tag:
c140: 6a 69 6d 2e 62 65 72 6c 69 6f 73 2e 64 65 2c 32 jim.berlios.de,2
c150: 30 31 31 2d 30 34 2d 32 32 3a 2f 61 72 74 69 63 011-04-22:/artic
c160: 6c 65 73 2f 32 30 31 31 2d 30 34 2d 32 32 2f 3c les/2011-04-22/<
c170: 2f 69 64 3e 0a 20 20 20 20 3c 74 69 74 6c 65 20 /id>. <title
c180: 74 79 70 65 3d 22 68 74 6d 6c 22 3e 52 6f 61 64 type="html">Road
c190: 6d 61 70 20 66 6f 72 20 4a 69 6d 20 54 63 6c 3c map for Jim Tcl<
c1a0: 2f 74 69 74 6c 65 3e 0a 20 20 20 20 3c 70 75 62 /title>. <pub
c1b0: 6c 69 73 68 65 64 3e 32 30 31 31 2d 30 34 2d 32 lished>2011-04-2
c1c0: 31 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 70 75 62 1T14:00:00Z</pub
c1d0: 6c 69 73 68 65 64 3e 0a 20 20 20 20 3c 75 70 64 lished>. <upd
c1e0: 61 74 65 64 3e 32 30 31 31 2d 30 34 2d 32 31 54 ated>2011-04-21T
c1f0: 31 34 3a 30 30 3a 30 30 5a 3c 2f 75 70 64 61 74 14:00:00Z</updat
c200: 65 64 3e 0a 20 20 20 20 3c 6c 69 6e 6b 20 72 65 ed>. <link re
c210: 6c 3d 22 61 6c 74 65 72 6e 61 74 65 22 20 68 72 l="alternate" hr
c220: 65 66 3d 22 68 74 74 70 3a 2f 2f 6a 69 6d 2e 62 ef="http://jim.b
c230: 65 72 6c 69 6f 73 2e 64 65 2f 61 72 74 69 63 6c erlios.de/articl
c240: 65 73 2f 32 30 31 31 2d 30 34 2d 32 32 2f 22 2f es/2011-04-22/"/
c250: 3e 0a 20 20 20 20 3c 63 6f 6e 74 65 6e 74 20 74 >. <content t
c260: 79 70 65 3d 22 68 74 6d 6c 22 3e 26 6c 74 3b 70 ype="html"><p
c270: 26 67 74 3b 49 20 68 61 76 65 20 61 20 66 65 77 >I have a few
c280: 20 74 68 69 6e 67 73 20 6f 6e 20 6d 79 20 6c 69 things on my li
c290: 73 74 20 74 68 61 74 20 49 20 77 6f 75 6c 64 20 st that I would
c2a0: 6c 69 6b 65 20 74 6f 20 73 65 65 20 67 6f 20 69 like to see go i
c2b0: 6e 74 6f 20 74 68 65 0a 6e 65 78 74 20 72 65 6c nto the.next rel
c2c0: 65 61 73 65 20 6f 66 20 4a 69 6d 20 54 63 6c 2e ease of Jim Tcl.
c2d0: 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b </p>..<
c2e0: 68 32 20 69 64 3d 22 62 6f 72 69 6e 67 2d 73 74 h2 id="boring-st
c2f0: 75 66 66 22 26 67 74 3b 42 6f 72 69 6e 67 20 53 uff">Boring S
c300: 74 75 66 66 26 6c 74 3b 2f 68 32 26 67 74 3b 0a tuff</h2>.
c310: 26 6c 74 3b 75 6c 26 67 74 3b 0a 20 20 26 6c 74 <ul>. <
c320: 3b 6c 69 26 67 74 3b 42 75 67 20 66 69 78 65 73 ;li>Bug fixes
c330: 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c </li>. &l
c340: 74 3b 6c 69 26 67 74 3b 50 65 72 66 6f 72 6d 61 t;li>Performa
c350: 6e 63 65 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73 nce improvements
c360: 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c </li>. &l
c370: 74 3b 6c 69 26 67 74 3b 53 69 7a 65 20 72 65 64 t;li>Size red
c380: 75 63 74 69 6f 6e 26 6c 74 3b 2f 6c 69 26 67 74 uction</li>
c390: 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b 43 6c ;. <li>Cl
c3a0: 65 61 6e 20 75 70 20 64 6c 6f 70 65 6e 28 29 20 ean up dlopen()
c3b0: 68 61 6e 64 6c 65 73 20 6f 6e 20 69 6e 74 65 72 handles on inter
c3c0: 70 72 65 74 65 72 20 64 65 6c 65 74 69 6f 6e 26 preter deletion&
c3d0: 6c 74 3b 2f 6c 69 26 67 74 3b 0a 26 6c 74 3b 2f lt;/li>.</
c3e0: 75 6c 26 67 74 3b 0a 0a 26 6c 74 3b 68 32 20 69 ul>..<h2 i
c3f0: 64 3d 22 74 63 6c 2d 38 78 2d 66 65 61 74 75 72 d="tcl-8x-featur
c400: 65 73 22 26 67 74 3b 54 63 6c 20 38 2e 78 20 46 es">Tcl 8.x F
c410: 65 61 74 75 72 65 73 26 6c 74 3b 2f 68 32 26 67 eatures</h2&g
c420: 74 3b 0a 26 6c 74 3b 75 6c 26 67 74 3b 0a 20 20 t;.<ul>.
c430: 26 6c 74 3b 6c 69 26 67 74 3b 41 64 64 20 73 75 <li>Add su
c440: 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 5b 62 pport for the [b
c450: 69 6e 61 72 79 5d 20 63 6f 6d 6d 61 6e 64 26 6c inary] command&l
c460: 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b t;/li>. <
c470: 6c 69 26 67 74 3b 53 75 70 70 6f 72 74 20 66 6f li>Support fo
c480: 72 20 6e 6f 6e 2d 67 72 65 65 64 79 20 71 75 61 r non-greedy qua
c490: 6e 74 69 66 69 65 72 73 20 69 6e 20 5b 72 65 67 ntifiers in [reg
c4a0: 65 78 70 5d 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a exp]</li>.
c4b0: 26 6c 74 3b 2f 75 6c 26 67 74 3b 0a 0a 26 6c 74 </ul>..<
c4c0: 3b 68 32 20 69 64 3d 22 74 63 6c 78 2d 66 65 61 ;h2 id="tclx-fea
c4d0: 74 75 72 65 73 22 26 67 74 3b 54 63 6c 58 20 46 tures">TclX F
c4e0: 65 61 74 75 72 65 73 26 6c 74 3b 2f 68 32 26 67 eatures</h2&g
c4f0: 74 3b 0a 26 6c 74 3b 75 6c 26 67 74 3b 0a 20 20 t;.<ul>.
c500: 26 6c 74 3b 6c 69 26 67 74 3b 41 64 64 20 74 68 <li>Add th
c510: 65 20 5b 6c 6f 6f 70 5d 20 63 6f 6d 6d 61 6e 64 e [loop] command
c520: 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 26 6c 74 3b </li>.<
c530: 2f 75 6c 26 67 74 3b 0a 0a 26 6c 74 3b 68 32 20 /ul>..<h2
c540: 69 64 3d 22 74 63 6c 2d 39 2d 70 72 6f 70 6f 73 id="tcl-9-propos
c550: 65 64 2d 66 65 61 74 75 72 65 73 22 26 67 74 3b ed-features">
c560: 54 63 6c 20 39 20 28 50 72 6f 70 6f 73 65 64 29 Tcl 9 (Proposed)
c570: 20 46 65 61 74 75 72 65 73 26 6c 74 3b 2f 68 32 Features</h2
c580: 26 67 74 3b 0a 26 6c 74 3b 75 6c 26 67 74 3b 0a >.<ul>.
c590: 20 20 26 6c 74 3b 6c 69 26 67 74 3b 5b 65 78 70 <li>[exp
c5a0: 72 5d 20 73 68 6f 72 74 68 61 6e 64 20 73 79 6e r] shorthand syn
c5b0: 74 61 78 3a 20 24 28 26 61 6d 70 3b 68 65 6c 6c tax: $(&hell
c5c0: 69 70 3b 29 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a ip;)</li>.
c5d0: 20 20 26 6c 74 3b 6c 69 26 67 74 3b 41 75 74 6f <li>Auto
c5e0: 6d 61 74 69 63 20 75 70 76 61 72 73 20 69 6e 20 matic upvars in
c5f0: 70 72 6f 67 20 61 72 67 73 3a 20 26 61 6d 70 3b prog args: &
c600: 61 6d 70 3b 76 61 72 6e 61 6d 65 26 6c 74 3b 2f amp;varname</
c610: 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 li>. <li&
c620: 67 74 3b 41 6c 6c 6f 77 20 70 72 6f 63 20 26 61 gt;Allow proc &a
c630: 6d 70 3b 6c 73 71 75 6f 3b 61 72 67 73 26 61 6d mp;lsquo;args&am
c640: 70 3b 72 73 71 75 6f 3b 20 74 6f 20 62 65 20 72 p;rsquo; to be r
c650: 65 6e 61 6d 65 64 26 6c 74 3b 2f 6c 69 26 67 74 enamed</li>
c660: 3b 0a 26 6c 74 3b 2f 75 6c 26 67 74 3b 0a 0a 26 ;.</ul>..&
c670: 6c 74 3b 68 32 20 69 64 3d 22 62 75 69 6c 64 2d lt;h2 id="build-
c680: 73 79 73 74 65 6d 22 26 67 74 3b 42 75 69 6c 64 system">Build
c690: 20 53 79 73 74 65 6d 26 6c 74 3b 2f 68 32 26 67 System</h2&g
c6a0: 74 3b 0a 26 6c 74 3b 75 6c 26 67 74 3b 0a 20 20 t;.<ul>.
c6b0: 26 6c 74 3b 6c 69 26 67 74 3b 52 65 70 6c 61 63 <li>Replac
c6c0: 65 20 61 75 74 6f 63 6f 6e 66 20 77 69 74 68 20 e autoconf with
c6d0: 54 63 6c 2d 62 61 73 65 64 20 61 75 74 6f 73 65 Tcl-based autose
c6e0: 74 75 70 20 28 26 6c 74 3b 61 20 68 72 65 66 3d tup (<a href=
c6f0: 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e "https://github.
c700: 63 6f 6d 2f 6d 73 74 65 76 65 62 2f 61 75 74 6f com/msteveb/auto
c710: 73 65 74 75 70 22 26 67 74 3b 68 74 74 70 73 3a setup">https:
c720: 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 73 74 //github.com/mst
c730: 65 76 65 62 2f 61 75 74 6f 73 65 74 75 70 26 6c eveb/autosetup&l
c740: 74 3b 2f 61 26 67 74 3b 29 26 6c 74 3b 2f 6c 69 t;/a>)</li
c750: 26 67 74 3b 0a 26 6c 74 3b 2f 75 6c 26 67 74 3b >.</ul>
c760: 0a 0a 26 6c 74 3b 68 32 20 69 64 3d 22 6f 74 68 ..<h2 id="oth
c770: 65 72 2d 65 6e 68 61 6e 63 65 6d 65 6e 74 73 22 er-enhancements"
c780: 26 67 74 3b 4f 74 68 65 72 20 45 6e 68 61 6e 63 >Other Enhanc
c790: 65 6d 65 6e 74 73 26 6c 74 3b 2f 68 32 26 67 74 ements</h2>
c7a0: 3b 0a 26 6c 74 3b 75 6c 26 67 74 3b 0a 20 20 26 ;.<ul>. &
c7b0: 6c 74 3b 6c 69 26 67 74 3b 41 62 69 6c 69 74 79 lt;li>Ability
c7c0: 20 74 6f 20 26 61 6d 70 3b 6c 64 71 75 6f 3b 70 to &ldquo;p
c7d0: 75 73 68 26 61 6d 70 3b 72 64 71 75 6f 3b 20 61 ush&rdquo; a
c7e0: 20 70 72 6f 63 20 6f 76 65 72 20 74 68 65 20 74 proc over the t
c7f0: 6f 70 20 6f 66 20 61 6e 20 65 78 69 73 74 69 6e op of an existin
c800: 67 20 70 72 6f 63 20 74 6f 20 65 61 73 69 6c 79 g proc to easily
c810: 20 63 72 65 61 74 65 20 61 0a 77 72 61 70 70 65 create a.wrappe
c820: 72 20 70 72 6f 63 2c 20 69 6e 63 6c 75 64 69 6e r proc, includin
c830: 67 20 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f g the ability to
c840: 20 26 61 6d 70 3b 6c 64 71 75 6f 3b 75 70 63 61 &ldquo;upca
c850: 6c 6c 26 61 6d 70 3b 72 64 71 75 6f 3b 20 74 68 ll&rdquo; th
c860: 65 20 6f 72 69 67 69 6e 61 6c 20 70 72 6f 63 2e e original proc.
c870: 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 26 6c 74 3b </li>.<
c880: 2f 75 6c 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 /ul>..<p&g
c890: 74 3b 53 74 65 76 65 20 42 65 6e 6e 65 74 74 20 t;Steve Bennett
c8a0: 28 26 6c 74 3b 61 20 68 72 65 66 3d 22 26 61 6d (<a href="&am
c8b0: 70 3b 23 31 30 39 3b 26 61 6d 70 3b 23 30 39 37 p;#109;&#097
c8c0: 3b 26 61 6d 70 3b 23 31 30 35 3b 26 61 6d 70 3b ;&#105;&
c8d0: 23 31 30 38 3b 26 61 6d 70 3b 23 31 31 36 3b 26 #108;&#116;&
c8e0: 61 6d 70 3b 23 31 31 31 3b 3a 26 61 6d 70 3b 23 amp;#111;:&#
c8f0: 31 31 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 115;&#116;&a
c900: 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 mp;#101;&#11
c910: 38 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 8;&#101;&
c920: 3b 23 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b ;#098;&#064;
c930: 26 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 &#119;&#
c940: 31 31 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 111;&#114;&a
c950: 6d 70 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 mp;#107;&#11
c960: 39 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 9;&#097;&
c970: 3b 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b ;#114;&#101;
c980: 26 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 &#046;&#
c990: 31 31 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 110;&#101;&a
c9a0: 6d 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 mp;#116;&#04
c9b0: 36 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 6;&#097;&
c9c0: 3b 23 31 31 37 3b 22 26 67 74 3b 26 61 6d 70 3b ;#117;">&
c9d0: 23 31 31 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 #115;&#116;&
c9e0: 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 amp;#101;&#1
c9f0: 31 38 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 18;&#101;&am
ca00: 70 3b 23 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 p;#098;&#064
ca10: 3b 26 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b ;&#119;&
ca20: 23 31 31 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 #111;&#114;&
ca30: 61 6d 70 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 amp;#107;&#1
ca40: 31 39 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 19;&#097;&am
ca50: 70 3b 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 p;#114;&#101
ca60: 3b 26 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b ;&#046;&
ca70: 23 31 31 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 #110;&#101;&
ca80: 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 amp;#116;&#0
ca90: 34 36 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 46;&#097;&am
caa0: 70 3b 23 31 31 37 3b 26 6c 74 3b 2f 61 26 67 74 p;#117;</a>
cab0: 3b 29 26 6c 74 3b 2f 70 26 67 74 3b 0a 3c 2f 63 ;)</p>.</c
cac0: 6f 6e 74 65 6e 74 3e 0a 20 20 3c 2f 65 6e 74 72 ontent>. </entr
cad0: 79 3e 0a 20 20 3c 65 6e 74 72 79 3e 0a 20 20 20 y>. <entry>.
cae0: 20 3c 69 64 3e 74 61 67 3a 6a 69 6d 2e 62 65 72 <id>tag:jim.ber
caf0: 6c 69 6f 73 2e 64 65 2c 32 30 31 31 2d 30 34 2d lios.de,2011-04-
cb00: 31 34 3a 2f 61 72 74 69 63 6c 65 73 2f 32 30 31 14:/articles/201
cb10: 31 2d 30 34 2d 31 34 2f 3c 2f 69 64 3e 0a 20 20 1-04-14/</id>.
cb20: 20 20 3c 74 69 74 6c 65 20 74 79 70 65 3d 22 68 <title type="h
cb30: 74 6d 6c 22 3e 41 6e 6e 6f 75 6e 63 69 6e 67 20 tml">Announcing
cb40: 4a 69 6d 20 54 63 6c 20 76 65 72 73 69 6f 6e 20 Jim Tcl version
cb50: 30 2e 37 30 3c 2f 74 69 74 6c 65 3e 0a 20 20 20 0.70</title>.
cb60: 20 3c 70 75 62 6c 69 73 68 65 64 3e 32 30 31 31 <published>2011
cb70: 2d 30 34 2d 31 33 54 31 34 3a 30 30 3a 30 30 5a -04-13T14:00:00Z
cb80: 3c 2f 70 75 62 6c 69 73 68 65 64 3e 0a 20 20 20 </published>.
cb90: 20 3c 75 70 64 61 74 65 64 3e 32 30 31 31 2d 30 <updated>2011-0
cba0: 34 2d 31 33 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 4-13T14:00:00Z</
cbb0: 75 70 64 61 74 65 64 3e 0a 20 20 20 20 3c 6c 69 updated>. <li
cbc0: 6e 6b 20 72 65 6c 3d 22 61 6c 74 65 72 6e 61 74 nk rel="alternat
cbd0: 65 22 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f e" href="http://
cbe0: 6a 69 6d 2e 62 65 72 6c 69 6f 73 2e 64 65 2f 61 jim.berlios.de/a
cbf0: 72 74 69 63 6c 65 73 2f 32 30 31 31 2d 30 34 2d rticles/2011-04-
cc00: 31 34 2f 22 2f 3e 0a 20 20 20 20 3c 63 6f 6e 74 14/"/>. <cont
cc10: 65 6e 74 20 74 79 70 65 3d 22 68 74 6d 6c 22 3e ent type="html">
cc20: 26 6c 74 3b 70 26 67 74 3b 4a 69 6d 20 54 63 6c <p>Jim Tcl
cc30: 20 30 2e 37 30 20 68 61 73 20 62 65 65 6e 20 72 0.70 has been r
cc40: 65 6c 65 61 73 65 64 20 61 6e 64 20 69 73 20 61 eleased and is a
cc50: 76 61 69 6c 61 62 6c 65 20 66 72 6f 6d 3a 20 26 vailable from: &
cc60: 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 lt;/p>..<p
cc70: 26 67 74 3b 26 6c 74 3b 61 20 68 72 65 66 3d 22 ><a href="
cc80: 68 74 74 70 3a 2f 2f 72 65 70 6f 2e 6f 72 2e 63 http://repo.or.c
cc90: 7a 2f 77 2f 6a 69 6d 74 63 6c 2e 67 69 74 22 26 z/w/jimtcl.git"&
cca0: 67 74 3b 68 74 74 70 3a 2f 2f 72 65 70 6f 2e 6f gt;http://repo.o
ccb0: 72 2e 63 7a 2f 77 2f 6a 69 6d 74 63 6c 2e 67 69 r.cz/w/jimtcl.gi
ccc0: 74 26 6c 74 3b 2f 61 26 67 74 3b 0a 6f 72 20 26 t</a>.or &
ccd0: 6c 74 3b 61 20 68 72 65 66 3d 22 68 74 74 70 73 lt;a href="https
cce0: 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6d 73 ://github.com/ms
ccf0: 74 65 76 65 62 2f 6a 69 6d 74 63 6c 22 26 67 74 teveb/jimtcl">
cd00: 3b 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e ;https://github.
cd10: 63 6f 6d 2f 6d 73 74 65 76 65 62 2f 6a 69 6d 74 com/msteveb/jimt
cd20: 63 6c 26 6c 74 3b 2f 61 26 67 74 3b 26 6c 74 3b cl</a><
cd30: 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 68 32 20 69 /p>..<h2 i
cd40: 64 3d 22 63 68 61 6e 67 65 73 2d 73 69 6e 63 65 d="changes-since
cd50: 2d 76 65 72 73 69 6f 6e 2d 30 36 33 22 26 67 74 -version-063">
cd60: 3b 43 48 41 4e 47 45 53 20 53 49 4e 43 45 20 56 ;CHANGES SINCE V
cd70: 45 52 53 49 4f 4e 20 30 2e 36 33 26 6c 74 3b 2f ERSION 0.63</
cd80: 68 32 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 h2>..<p>
cd90: 3b 54 68 69 73 20 69 73 20 61 20 6d 61 6a 6f 72 ;This is a major
cda0: 20 75 70 64 61 74 65 20 77 68 69 63 68 20 69 6e update which in
cdb0: 63 6f 72 70 6f 72 61 74 65 73 20 6d 61 6e 79 20 corporates many
cdc0: 62 75 67 20 66 69 78 65 73 20 61 6e 64 0a 73 65 bug fixes and.se
cdd0: 76 65 72 61 6c 20 6e 65 77 20 66 65 61 74 75 72 veral new featur
cde0: 65 73 2c 20 69 6e 63 6c 75 64 69 6e 67 3a 26 6c es, including:&l
cdf0: 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 75 6c t;/p>..<ul
ce00: 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 >. <li>
ce10: 3b 4f 70 74 69 6f 6e 61 6c 20 55 54 46 2d 38 20 ;Optional UTF-8
ce20: 73 75 70 70 6f 72 74 26 6c 74 3b 2f 6c 69 26 67 support</li&g
ce30: 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b 4f t;. <li>O
ce40: 70 74 69 6f 6e 61 6c 20 62 75 69 6c 74 2d 69 6e ptional built-in
ce50: 20 72 65 67 65 78 70 20 65 6e 67 69 6e 65 73 20 regexp engines
ce60: 66 6f 72 20 62 65 74 74 65 72 20 54 63 6c 20 63 for better Tcl c
ce70: 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 61 6e 64 ompatibility and
ce80: 20 55 54 46 2d 38 20 73 75 70 70 6f 72 74 26 6c UTF-8 support&l
ce90: 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b t;/li>. <
cea0: 6c 69 26 67 74 3b 43 6f 6d 6d 61 6e 64 20 6c 69 li>Command li
ceb0: 6e 65 20 65 64 69 74 69 6e 67 20 77 69 74 68 20 ne editing with
cec0: 6c 69 6e 65 6e 6f 69 73 65 26 6c 74 3b 2f 6c 69 linenoise</li
ced0: 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 >. <li>
cee0: 3b 50 75 72 65 2d 54 63 6c 20 4f 4f 20 65 78 74 ;Pure-Tcl OO ext
cef0: 65 6e 73 69 6f 6e 20 26 6c 74 3b 2f 6c 69 26 67 ension </li&g
cf00: 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b 65 t;. <li>e
cf10: 78 65 63 20 75 73 65 73 20 6f 6e 6c 79 20 76 66 xec uses only vf
cf20: 6f 72 6b 28 29 20 66 6f 72 20 66 75 6c 6c 20 66 ork() for full f
cf30: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f 6e 20 unctionality on
cf40: 6e 6f 2d 6d 6d 75 20 75 43 6c 69 6e 75 78 26 6c no-mmu uClinux&l
cf50: 74 3b 2f 6c 69 26 67 74 3b 0a 26 6c 74 3b 2f 75 t;/li>.</u
cf60: 6c 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b l>..<p>
cf70: 53 74 65 76 65 20 42 65 6e 6e 65 74 74 20 28 26 Steve Bennett (&
cf80: 6c 74 3b 61 20 68 72 65 66 3d 22 26 61 6d 70 3b lt;a href="&
cf90: 23 31 30 39 3b 26 61 6d 70 3b 23 30 39 37 3b 26 #109;&#097;&
cfa0: 61 6d 70 3b 23 31 30 35 3b 26 61 6d 70 3b 23 31 amp;#105;&#1
cfb0: 30 38 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 08;&#116;&am
cfc0: 70 3b 23 31 31 31 3b 3a 26 61 6d 70 3b 23 31 31 p;#111;:&#11
cfd0: 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 5;&#116;&
cfe0: 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 3b ;#101;&#118;
cff0: 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 &#101;&#
d000: 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 61 098;&#064;&a
d010: 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 31 mp;#119;&#11
d020: 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 1;&#114;&
d030: 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 3b ;#107;&#119;
d040: 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 &#097;&#
d050: 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 114;&#101;&a
d060: 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 31 mp;#046;&#11
d070: 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 0;&#101;&
d080: 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 3b ;#116;&#046;
d090: 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 &#097;&#
d0a0: 31 31 37 3b 22 26 67 74 3b 26 61 6d 70 3b 23 31 117;">&#1
d0b0: 31 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 15;&#116;&am
d0c0: 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 p;#101;&#118
d0d0: 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b ;&#101;&
d0e0: 23 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 #098;&#064;&
d0f0: 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 amp;#119;&#1
d100: 31 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 11;&#114;&am
d110: 70 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 p;#107;&#119
d120: 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b ;&#097;&
d130: 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 #114;&#101;&
d140: 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 amp;#046;&#1
d150: 31 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 10;&#101;&am
d160: 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 p;#116;&#046
d170: 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b ;&#097;&
d180: 23 31 31 37 3b 26 6c 74 3b 2f 61 26 67 74 3b 29 #117;</a>)
d190: 26 6c 74 3b 2f 70 26 67 74 3b 0a 3c 2f 63 6f 6e </p>.</con
d1a0: 74 65 6e 74 3e 0a 20 20 3c 2f 65 6e 74 72 79 3e tent>. </entry>
d1b0: 0a 20 20 3c 65 6e 74 72 79 3e 0a 20 20 20 20 3c . <entry>. <
d1c0: 69 64 3e 74 61 67 3a 6a 69 6d 2e 62 65 72 6c 69 id>tag:jim.berli
d1d0: 6f 73 2e 64 65 2c 32 30 31 30 2d 31 31 2d 32 34 os.de,2010-11-24
d1e0: 3a 2f 61 72 74 69 63 6c 65 73 2f 32 30 31 30 2d :/articles/2010-
d1f0: 31 31 2d 32 34 2f 3c 2f 69 64 3e 0a 20 20 20 20 11-24/</id>.
d200: 3c 74 69 74 6c 65 20 74 79 70 65 3d 22 68 74 6d <title type="htm
d210: 6c 22 3e 41 20 48 69 73 74 6f 72 79 20 6f 66 20 l">A History of
d220: 4a 69 6d 3c 2f 74 69 74 6c 65 3e 0a 20 20 20 20 Jim</title>.
d230: 3c 70 75 62 6c 69 73 68 65 64 3e 32 30 31 30 2d <published>2010-
d240: 31 31 2d 32 33 54 31 34 3a 30 30 3a 30 30 5a 3c 11-23T14:00:00Z<
d250: 2f 70 75 62 6c 69 73 68 65 64 3e 0a 20 20 20 20 /published>.
d260: 3c 75 70 64 61 74 65 64 3e 32 30 31 30 2d 31 31 <updated>2010-11
d270: 2d 32 33 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 75 -23T14:00:00Z</u
d280: 70 64 61 74 65 64 3e 0a 20 20 20 20 3c 6c 69 6e pdated>. <lin
d290: 6b 20 72 65 6c 3d 22 61 6c 74 65 72 6e 61 74 65 k rel="alternate
d2a0: 22 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 6a " href="http://j
d2b0: 69 6d 2e 62 65 72 6c 69 6f 73 2e 64 65 2f 61 72 im.berlios.de/ar
d2c0: 74 69 63 6c 65 73 2f 32 30 31 30 2d 31 31 2d 32 ticles/2010-11-2
d2d0: 34 2f 22 2f 3e 0a 20 20 20 20 3c 63 6f 6e 74 65 4/"/>. <conte
d2e0: 6e 74 20 74 79 70 65 3d 22 68 74 6d 6c 22 3e 26 nt type="html">&
d2f0: 6c 74 3b 70 26 67 74 3b 26 6c 74 3b 61 20 68 72 lt;p><a hr
d300: 65 66 3d 22 2f 69 6d 67 2f 6a 69 6d 2d 68 69 73 ef="/img/jim-his
d310: 74 6f 72 79 2d 63 68 61 72 74 2e 70 64 66 22 26 tory-chart.pdf"&
d320: 67 74 3b 26 6c 74 3b 69 6d 67 20 73 72 63 3d 22 gt;<img src="
d330: 2f 69 6d 67 2f 6a 69 6d 2d 68 69 73 74 6f 72 79 /img/jim-history
d340: 2d 74 68 75 6d 62 2e 70 6e 67 22 20 2f 26 67 74 -thumb.png" />
d350: 3b 26 6c 74 3b 2f 61 26 67 74 3b 26 6c 74 3b 2f ;</a></
d360: 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b p>..<p>
d370: 49 20 69 6e 74 65 6e 64 20 74 6f 20 61 6e 61 6c I intend to anal
d380: 79 73 65 20 74 68 65 20 68 69 73 74 6f 72 79 20 yse the history
d390: 6f 66 20 4a 69 6d 20 69 6e 20 6d 6f 72 65 20 64 of Jim in more d
d3a0: 65 74 61 69 6c 20 61 74 20 73 6f 6d 65 20 70 6f etail at some po
d3b0: 69 6e 74 2e 0a 4e 6f 6e 65 74 68 65 6c 65 73 73 int..Nonetheless
d3c0: 2c 20 74 68 69 73 20 69 73 20 69 6e 74 65 72 65 , this is intere
d3d0: 73 74 69 6e 67 2e 20 46 6f 72 20 74 68 69 73 20 sting. For this
d3e0: 65 78 65 72 63 69 73 65 20 49 20 61 74 74 65 6d exercise I attem
d3f0: 70 74 65 64 20 74 6f 0a 62 75 69 6c 64 20 61 6e pted to.build an
d400: 64 20 72 75 6e 20 62 65 6e 63 68 6d 61 72 6b 73 d run benchmarks
d410: 20 66 6f 72 20 65 76 65 72 79 2c 20 73 69 6e 67 for every, sing
d420: 6c 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 4a 69 le version of Ji
d430: 6d 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c m.</p>..&l
d440: 74 3b 70 26 67 74 3b 26 6c 74 3b 73 74 72 6f 6e t;p><stron
d450: 67 26 67 74 3b 43 6c 69 63 6b 20 6f 6e 20 74 68 g>Click on th
d460: 65 20 69 6d 61 67 65 20 66 6f 72 20 61 20 6c 61 e image for a la
d470: 72 67 65 72 20 76 65 72 73 69 6f 6e 2e 26 6c 74 rger version.<
d480: 3b 2f 73 74 72 6f 6e 67 26 67 74 3b 26 6c 74 3b ;/strong><
d490: 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 /p>..<p>
d4a0: 3b 53 74 65 76 65 20 42 65 6e 6e 65 74 74 20 28 ;Steve Bennett (
d4b0: 26 6c 74 3b 61 20 68 72 65 66 3d 22 26 61 6d 70 <a href="&
d4c0: 3b 23 31 30 39 3b 26 61 6d 70 3b 23 30 39 37 3b ;#109;&#097;
d4d0: 26 61 6d 70 3b 23 31 30 35 3b 26 61 6d 70 3b 23 &#105;&#
d4e0: 31 30 38 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 108;&#116;&a
d4f0: 6d 70 3b 23 31 31 31 3b 3a 26 61 6d 70 3b 23 31 mp;#111;:&#1
d500: 31 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 15;&#116;&am
d510: 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 p;#101;&#118
d520: 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b ;&#101;&
d530: 23 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 #098;&#064;&
d540: 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 amp;#119;&#1
d550: 31 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 11;&#114;&am
d560: 70 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 p;#107;&#119
d570: 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b ;&#097;&
d580: 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 #114;&#101;&
d590: 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 amp;#046;&#1
d5a0: 31 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 10;&#101;&am
d5b0: 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 p;#116;&#046
d5c0: 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b ;&#097;&
d5d0: 23 31 31 37 3b 22 26 67 74 3b 26 61 6d 70 3b 23 #117;">&#
d5e0: 31 31 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 115;&#116;&a
d5f0: 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 mp;#101;&#11
d600: 38 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 8;&#101;&
d610: 3b 23 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b ;#098;&#064;
d620: 26 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 &#119;&#
d630: 31 31 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 111;&#114;&a
d640: 6d 70 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 mp;#107;&#11
d650: 39 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 9;&#097;&
d660: 3b 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b ;#114;&#101;
d670: 26 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 &#046;&#
d680: 31 31 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 110;&#101;&a
d690: 6d 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 mp;#116;&#04
d6a0: 36 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 6;&#097;&
d6b0: 3b 23 31 31 37 3b 26 6c 74 3b 2f 61 26 67 74 3b ;#117;</a>
d6c0: 29 26 6c 74 3b 2f 70 26 67 74 3b 0a 3c 2f 63 6f )</p>.</co
d6d0: 6e 74 65 6e 74 3e 0a 20 20 3c 2f 65 6e 74 72 79 ntent>. </entry
d6e0: 3e 0a 20 20 3c 65 6e 74 72 79 3e 0a 20 20 20 20 >. <entry>.
d6f0: 3c 69 64 3e 74 61 67 3a 6a 69 6d 2e 62 65 72 6c <id>tag:jim.berl
d700: 69 6f 73 2e 64 65 2c 32 30 31 30 2d 31 31 2d 31 ios.de,2010-11-1
d710: 35 3a 2f 61 72 74 69 63 6c 65 73 2f 32 30 31 30 5:/articles/2010
d720: 2d 31 31 2d 31 35 2f 3c 2f 69 64 3e 0a 20 20 20 -11-15/</id>.
d730: 20 3c 74 69 74 6c 65 20 74 79 70 65 3d 22 68 74 <title type="ht
d740: 6d 6c 22 3e 49 50 76 36 20 53 75 70 70 6f 72 74 ml">IPv6 Support
d750: 3c 2f 74 69 74 6c 65 3e 0a 20 20 20 20 3c 70 75 </title>. <pu
d760: 62 6c 69 73 68 65 64 3e 32 30 31 30 2d 31 31 2d blished>2010-11-
d770: 31 34 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 70 75 14T14:00:00Z</pu
d780: 62 6c 69 73 68 65 64 3e 0a 20 20 20 20 3c 75 70 blished>. <up
d790: 64 61 74 65 64 3e 32 30 31 30 2d 31 31 2d 31 34 dated>2010-11-14
d7a0: 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 75 70 64 61 T14:00:00Z</upda
d7b0: 74 65 64 3e 0a 20 20 20 20 3c 6c 69 6e 6b 20 72 ted>. <link r
d7c0: 65 6c 3d 22 61 6c 74 65 72 6e 61 74 65 22 20 68 el="alternate" h
d7d0: 72 65 66 3d 22 68 74 74 70 3a 2f 2f 6a 69 6d 2e ref="http://jim.
d7e0: 62 65 72 6c 69 6f 73 2e 64 65 2f 61 72 74 69 63 berlios.de/artic
d7f0: 6c 65 73 2f 32 30 31 30 2d 31 31 2d 31 35 2f 22 les/2010-11-15/"
d800: 2f 3e 0a 20 20 20 20 3c 63 6f 6e 74 65 6e 74 20 />. <content
d810: 74 79 70 65 3d 22 68 74 6d 6c 22 3e 26 6c 74 3b type="html"><
d820: 70 26 67 74 3b 4a 69 6d 20 54 63 6c 20 68 61 73 p>Jim Tcl has
d830: 20 68 61 64 20 69 70 76 36 20 73 75 70 70 6f 72 had ipv6 suppor
d840: 74 20 65 76 65 72 20 73 69 6e 63 65 20 74 68 65 t ever since the
d850: 20 57 6f 72 6b 57 61 72 65 20 66 6f 72 6b 20 77 WorkWare fork w
d860: 61 73 20 6d 65 72 67 65 64 0a 62 61 63 6b 20 69 as merged.back i
d870: 6e 74 6f 20 6d 61 69 6e 6c 69 6e 65 2e 26 6c 74 nto mainline.<
d880: 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 ;/p>..<p&g
d890: 74 3b 59 6f 75 20 63 61 6e 20 72 65 61 64 20 6d t;You can read m
d8a0: 6f 72 65 20 61 62 6f 75 74 20 69 74 20 69 6e 20 ore about it in
d8b0: 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f the documentatio
d8c0: 6e 20 61 74 3a 0a 26 6c 74 3b 61 20 68 72 65 66 n at:.<a href
d8d0: 3d 22 68 74 74 70 3a 2f 2f 72 65 70 6f 2e 6f 72 ="http://repo.or
d8e0: 2e 63 7a 2f 77 2f 6a 69 6d 74 63 6c 2e 67 69 74 .cz/w/jimtcl.git
d8f0: 2f 62 6c 6f 62 5f 70 6c 61 69 6e 2f 6d 61 73 74 /blob_plain/mast
d900: 65 72 3a 2f 54 63 6c 5f 73 68 69 70 70 65 64 2e er:/Tcl_shipped.
d910: 68 74 6d 6c 23 5f 73 6f 63 6b 65 74 22 26 67 74 html#_socket">
d920: 3b 73 6f 63 6b 65 74 26 6c 74 3b 2f 61 26 67 74 ;socket</a>
d930: 3b 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 ;</p>..<
d940: 3b 70 26 67 74 3b 42 61 73 69 63 61 6c 6c 79 20 ;p>Basically
d950: 69 74 20 69 73 20 61 20 6d 61 74 74 65 72 20 6f it is a matter o
d960: 66 20 73 70 65 63 69 66 79 69 6e 67 20 26 6c 74 f specifying <
d970: 3b 63 6f 64 65 26 67 74 3b 2d 69 70 76 36 26 6c ;code>-ipv6&l
d980: 74 3b 2f 63 6f 64 65 26 67 74 3b 20 77 68 65 6e t;/code> when
d990: 20 63 72 65 61 74 69 6e 67 20 74 68 65 0a 73 6f creating the.so
d9a0: 63 6b 65 74 20 61 6e 64 20 67 69 76 69 6e 67 20 cket and giving
d9b0: 61 6e 20 49 50 76 36 20 61 64 64 72 65 73 73 2e an IPv6 address.
d9c0: 20 46 6f 72 20 65 78 61 6d 70 6c 65 3a 26 6c 74 For example:<
d9d0: 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 72 65 ;/p>..<pre
d9e0: 20 63 6c 61 73 73 3d 22 73 68 5f 74 63 6c 22 26 class="sh_tcl"&
d9f0: 67 74 3b 0a 73 65 74 20 73 20 5b 73 6f 63 6b 65 gt;.set s [socke
da00: 74 20 2d 69 70 76 36 20 73 74 72 65 61 6d 2e 73 t -ipv6 stream.s
da10: 65 72 76 65 72 20 7b 5b 3a 3a 5d 3a 32 30 30 30 erver {[::]:2000
da20: 7d 5d 0a 26 6c 74 3b 2f 70 72 65 26 67 74 3b 0a }].</pre>.
da30: 0a 26 6c 74 3b 70 26 67 74 3b 4e 6f 74 65 20 74 .<p>Note t
da40: 68 61 74 20 49 50 76 36 20 61 64 64 72 65 73 73 hat IPv6 address
da50: 65 73 20 61 72 65 20 65 6e 63 6c 6f 73 65 64 20 es are enclosed
da60: 69 6e 20 73 71 75 61 72 65 20 62 72 61 63 6b 65 in square bracke
da70: 74 73 2e 20 54 68 69 73 20 69 73 0a 74 68 65 20 ts. This is.the
da80: 73 61 6d 65 20 6e 6f 74 61 74 69 6f 6e 20 75 73 same notation us
da90: 65 64 20 66 6f 72 20 49 50 76 36 20 55 52 4c 73 ed for IPv6 URLs
daa0: 20 61 6e 64 20 6d 61 6b 65 73 20 69 74 20 65 61 and makes it ea
dab0: 73 79 20 74 6f 20 6b 65 65 70 20 74 68 65 0a 61 sy to keep the.a
dac0: 64 64 72 65 73 73 3a 70 6f 72 74 20 73 79 6e 74 ddress:port synt
dad0: 61 78 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 ax.</p>..&
dae0: 6c 74 3b 70 26 67 74 3b 54 68 65 20 61 64 64 72 lt;p>The addr
daf0: 65 73 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 ess returned by
db00: 26 6c 74 3b 63 6f 64 65 26 67 74 3b 72 65 63 76 <code>recv
db10: 66 72 6f 6d 26 6c 74 3b 2f 63 6f 64 65 26 67 74 from</code>
db20: 3b 20 77 69 6c 6c 20 62 65 20 66 6f 72 6d 61 74 ; will be format
db30: 74 65 64 20 61 70 70 72 6f 70 72 69 61 74 65 6c ted appropriatel
db40: 79 2c 20 73 6f 20 69 74 20 63 61 6e 20 62 65 20 y, so it can be
db50: 75 73 65 64 20 64 69 72 65 63 74 6c 79 20 62 79 used directly by
db60: 20 26 6c 74 3b 63 6f 64 65 26 67 74 3b 73 65 6e <code>sen
db70: 64 74 6f 26 6c 74 3b 2f 63 6f 64 65 26 67 74 3b dto</code>
db80: 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 .</p>..<
db90: 3b 70 26 67 74 3b 53 6f 6d 65 20 73 69 6d 70 6c ;p>Some simpl
dba0: 65 20 49 50 76 36 20 65 78 61 6d 70 6c 65 73 20 e IPv6 examples
dbb0: 61 72 65 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 are included in
dbc0: 74 68 65 20 72 65 70 6f 73 69 74 6f 72 79 2e 20 the repository.
dbd0: 46 6f 72 20 65 78 61 6d 70 6c 65 3a 20 26 6c 74 For example: <
dbe0: 3b 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f ;a href="http://
dbf0: 72 65 70 6f 2e 6f 72 2e 63 7a 2f 77 2f 6a 69 6d repo.or.cz/w/jim
dc00: 74 63 6c 2e 67 69 74 2f 62 6c 6f 62 5f 70 6c 61 tcl.git/blob_pla
dc10: 69 6e 2f 6d 61 73 74 65 72 3a 2f 65 78 61 6d 70 in/master:/examp
dc20: 6c 65 73 2f 75 64 70 36 2e 73 65 72 76 65 72 22 les/udp6.server"
dc30: 26 67 74 3b 75 64 70 36 2e 73 65 72 76 65 72 26 >udp6.server&
dc40: 6c 74 3b 2f 61 26 67 74 3b 26 6c 74 3b 2f 70 26 lt;/a></p&
dc50: 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 4e 6f gt;..<p>No
dc60: 74 65 20 74 68 61 74 20 6f 6e 20 61 6c 6c 20 68 te that on all h
dc70: 6f 73 74 73 20 49 20 68 61 76 65 20 74 72 69 65 osts I have trie
dc80: 64 2c 20 6c 69 73 74 65 6e 69 6e 67 20 6f 6e 20 d, listening on
dc90: 61 6e 20 49 50 76 36 20 73 6f 63 6b 65 74 0a 77 an IPv6 socket.w
dca0: 69 6c 6c 20 61 6c 73 6f 20 6c 69 73 74 65 6e 20 ill also listen
dcb0: 6f 6e 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e on the correspon
dcc0: 64 69 6e 67 20 49 50 76 34 20 73 6f 63 6b 65 74 ding IPv4 socket
dcd0: 2e 20 59 6f 75 20 63 61 6e 20 74 72 79 20 74 68 . You can try th
dce0: 69 73 0a 62 79 20 72 75 6e 6e 69 6e 67 20 75 64 is.by running ud
dcf0: 70 36 2e 73 65 72 76 65 72 20 61 6e 64 20 63 6f p6.server and co
dd00: 6e 6e 65 63 74 69 6e 67 20 77 69 74 68 20 62 6f nnecting with bo
dd10: 74 68 20 75 64 70 36 2e 63 6c 69 65 6e 74 20 61 th udp6.client a
dd20: 6e 64 0a 75 64 70 2e 63 6c 69 65 6e 74 26 6c 74 nd.udp.client<
dd30: 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 ;/p>..<p&g
dd40: 74 3b 53 74 65 76 65 20 42 65 6e 6e 65 74 74 20 t;Steve Bennett
dd50: 28 26 6c 74 3b 61 20 68 72 65 66 3d 22 26 61 6d (<a href="&am
dd60: 70 3b 23 31 30 39 3b 26 61 6d 70 3b 23 30 39 37 p;#109;&#097
dd70: 3b 26 61 6d 70 3b 23 31 30 35 3b 26 61 6d 70 3b ;&#105;&
dd80: 23 31 30 38 3b 26 61 6d 70 3b 23 31 31 36 3b 26 #108;&#116;&
dd90: 61 6d 70 3b 23 31 31 31 3b 3a 26 61 6d 70 3b 23 amp;#111;:&#
dda0: 31 31 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 115;&#116;&a
ddb0: 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 mp;#101;&#11
ddc0: 38 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 8;&#101;&
ddd0: 3b 23 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b ;#098;&#064;
dde0: 26 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 &#119;&#
ddf0: 31 31 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 111;&#114;&a
de00: 6d 70 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 mp;#107;&#11
de10: 39 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 9;&#097;&
de20: 3b 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b ;#114;&#101;
de30: 26 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 &#046;&#
de40: 31 31 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 110;&#101;&a
de50: 6d 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 mp;#116;&#04
de60: 36 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 6;&#097;&
de70: 3b 23 31 31 37 3b 22 26 67 74 3b 26 61 6d 70 3b ;#117;">&
de80: 23 31 31 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 #115;&#116;&
de90: 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 amp;#101;&#1
dea0: 31 38 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 18;&#101;&am
deb0: 70 3b 23 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 p;#098;&#064
dec0: 3b 26 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b ;&#119;&
ded0: 23 31 31 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 #111;&#114;&
dee0: 61 6d 70 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 amp;#107;&#1
def0: 31 39 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 19;&#097;&am
df00: 70 3b 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 p;#114;&#101
df10: 3b 26 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b ;&#046;&
df20: 23 31 31 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 #110;&#101;&
df30: 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 amp;#116;&#0
df40: 34 36 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 46;&#097;&am
df50: 70 3b 23 31 31 37 3b 26 6c 74 3b 2f 61 26 67 74 p;#117;</a>
df60: 3b 29 26 6c 74 3b 2f 70 26 67 74 3b 0a 3c 2f 63 ;)</p>.</c
df70: 6f 6e 74 65 6e 74 3e 0a 20 20 3c 2f 65 6e 74 72 ontent>. </entr
df80: 79 3e 0a 20 20 3c 65 6e 74 72 79 3e 0a 20 20 20 y>. <entry>.
df90: 20 3c 69 64 3e 74 61 67 3a 6a 69 6d 2e 62 65 72 <id>tag:jim.ber
dfa0: 6c 69 6f 73 2e 64 65 2c 32 30 31 30 2d 31 31 2d lios.de,2010-11-
dfb0: 30 33 3a 2f 61 72 74 69 63 6c 65 73 2f 32 30 31 03:/articles/201
dfc0: 30 2d 31 31 2d 30 33 2f 3c 2f 69 64 3e 0a 20 20 0-11-03/</id>.
dfd0: 20 20 3c 74 69 74 6c 65 20 74 79 70 65 3d 22 68 <title type="h
dfe0: 74 6d 6c 22 3e 65 78 70 72 20 73 68 6f 72 74 68 tml">expr shorth
dff0: 61 6e 64 20 73 79 6e 74 61 78 3c 2f 74 69 74 6c and syntax</titl
e000: 65 3e 0a 20 20 20 20 3c 70 75 62 6c 69 73 68 65 e>. <publishe
e010: 64 3e 32 30 31 30 2d 31 31 2d 30 32 54 31 34 3a d>2010-11-02T14:
e020: 30 30 3a 30 30 5a 3c 2f 70 75 62 6c 69 73 68 65 00:00Z</publishe
e030: 64 3e 0a 20 20 20 20 3c 75 70 64 61 74 65 64 3e d>. <updated>
e040: 32 30 31 30 2d 31 31 2d 30 32 54 31 34 3a 30 30 2010-11-02T14:00
e050: 3a 30 30 5a 3c 2f 75 70 64 61 74 65 64 3e 0a 20 :00Z</updated>.
e060: 20 20 20 3c 6c 69 6e 6b 20 72 65 6c 3d 22 61 6c <link rel="al
e070: 74 65 72 6e 61 74 65 22 20 68 72 65 66 3d 22 68 ternate" href="h
e080: 74 74 70 3a 2f 2f 6a 69 6d 2e 62 65 72 6c 69 6f ttp://jim.berlio
e090: 73 2e 64 65 2f 61 72 74 69 63 6c 65 73 2f 32 30 s.de/articles/20
e0a0: 31 30 2d 31 31 2d 30 33 2f 22 2f 3e 0a 20 20 20 10-11-03/"/>.
e0b0: 20 3c 63 6f 6e 74 65 6e 74 20 74 79 70 65 3d 22 <content type="
e0c0: 68 74 6d 6c 22 3e 26 6c 74 3b 70 26 67 74 3b 4f html"><p>O
e0d0: 6e 65 20 6f 66 20 74 68 65 20 62 69 67 67 65 73 ne of the bigges
e0e0: 74 20 63 6f 6d 70 6c 61 69 6e 74 73 20 61 62 6f t complaints abo
e0f0: 75 74 20 54 63 6c 20 69 73 20 69 74 26 23 38 32 ut Tcl is itR
e100: 31 37 3b 73 20 76 65 72 62 6f 73 69 74 79 20 66 17;s verbosity f
e110: 6f 72 20 63 6f 6d 6d 6f 6e 20 65 78 70 72 65 73 or common expres
e120: 73 69 6f 6e 73 2e 20 43 6f 6e 73 69 64 65 72 3a sions. Consider:
e130: 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b </p>..<
e140: 70 72 65 20 63 6c 61 73 73 3d 22 73 68 5f 74 63 pre class="sh_tc
e150: 6c 22 26 67 74 3b 0a 73 65 74 20 73 75 62 6c 69 l">.set subli
e160: 73 74 20 5b 6c 72 61 6e 67 65 20 24 6c 69 73 74 st [lrange $list
e170: 20 5b 65 78 70 72 20 7b 24 61 20 2b 20 31 7d 5d [expr {$a + 1}]
e180: 20 5b 65 78 70 72 20 7b 24 62 20 2d 20 31 7d 5d [expr {$b - 1}]
e190: 5d 0a 26 6c 74 3b 2f 70 72 65 26 67 74 3b 0a 0a ].</pre>..
e1a0: 26 6c 74 3b 70 26 67 74 3b 54 68 69 73 20 69 73 <p>This is
e1b0: 20 6d 69 74 69 67 61 74 65 64 20 73 6f 6d 65 77 mitigated somew
e1c0: 68 61 74 20 69 6e 20 6c 69 73 74 20 61 6e 64 20 hat in list and
e1d0: 73 74 72 69 6e 67 20 69 6e 64 65 78 20 61 6e 64 string index and
e1e0: 20 72 61 6e 67 65 73 0a 65 78 70 72 65 73 73 69 ranges.expressi
e1f0: 6f 6e 20 77 68 69 63 68 20 73 75 70 70 6f 72 74 on which support
e200: 20 74 68 65 20 6e 6f 74 61 74 69 6f 6e 20 26 6c the notation &l
e210: 74 3b 63 6f 64 65 26 67 74 3b 69 6e 74 2b 69 6e t;code>int+in
e220: 74 26 6c 74 3b 2f 63 6f 64 65 26 67 74 3b 20 6f t</code> o
e230: 72 20 26 6c 74 3b 63 6f 64 65 26 67 74 3b 69 6e r <code>in
e240: 74 2d 69 6e 74 26 6c 74 3b 2f 63 6f 64 65 26 67 t-int</code&g
e250: 74 3b 2e 20 48 6f 77 65 76 65 72 2c 0a 6d 61 6e t;. However,.man
e260: 79 20 73 69 6d 70 6c 65 2c 20 63 6f 6d 6d 6f 6e y simple, common
e270: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 72 65 expressions are
e280: 20 73 74 69 6c 6c 20 63 75 6d 62 65 72 73 6f 6d still cumbersom
e290: 65 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c e.</p>..&l
e2a0: 74 3b 70 26 67 74 3b 54 68 65 72 65 20 68 61 73 t;p>There has
e2b0: 20 62 65 65 6e 20 6d 75 63 68 20 26 6c 74 3b 61 been much <a
e2c0: 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 77 69 href="http://wi
e2d0: 6b 69 2e 74 63 6c 2e 74 6b 2f 38 33 38 39 22 26 ki.tcl.tk/8389"&
e2e0: 67 74 3b 64 69 73 63 75 73 73 69 6f 6e 26 6c 74 gt;discussion<
e2f0: 3b 2f 61 26 67 74 3b 20 61 62 6f 75 74 0a 73 68 ;/a> about.sh
e300: 6f 72 74 68 61 6e 64 20 6e 6f 74 61 74 69 6f 6e orthand notation
e310: 20 66 6f 72 20 65 78 70 72 2c 20 68 6f 77 65 76 for expr, howev
e320: 65 72 20 61 73 20 66 6f 72 20 6d 61 6e 79 20 74 er as for many t
e330: 68 69 6e 67 73 20 77 69 74 68 20 54 63 6c 2c 0a hings with Tcl,.
e340: 70 72 6f 67 72 65 73 73 20 69 73 20 73 6c 6f 77 progress is slow
e350: 20 6f 72 20 6e 6f 6e 2d 65 78 69 73 74 65 6e 74 or non-existent
e360: 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 .</p>..<
e370: 3b 70 26 67 74 3b 54 68 65 72 65 20 69 73 20 6e ;p>There is n
e380: 6f 20 6e 65 65 64 20 74 6f 20 73 75 66 66 65 72 o need to suffer
e390: 20 74 68 65 20 73 61 6d 65 20 66 61 74 65 20 66 the same fate f
e3a0: 6f 72 20 4a 69 6d 2c 20 74 68 6f 75 67 68 2e 20 or Jim, though.
e3b0: 53 6f 20 49 0a 69 6d 70 6c 65 6d 65 6e 74 65 64 So I.implemented
e3c0: 20 61 20 74 72 69 76 69 61 6c 20 70 61 74 63 68 a trivial patch
e3d0: 20 74 6f 20 73 75 70 70 6f 72 74 20 74 68 65 20 to support the
e3e0: 73 79 6e 74 61 78 20 26 6c 74 3b 63 6f 64 65 26 syntax <code&
e3f0: 67 74 3b 24 28 2e 2e 2e 29 26 6c 74 3b 2f 63 6f gt;$(...)</co
e400: 64 65 26 67 74 3b 20 61 73 20 61 0a 73 68 6f 72 de> as a.shor
e410: 74 68 61 6e 64 20 66 6f 72 20 65 78 70 72 2e 20 thand for expr.
e420: 20 4c 65 74 26 23 38 32 31 37 3b 73 20 73 65 65 Let’s see
e430: 20 68 6f 77 20 69 74 20 6c 6f 6f 6b 73 3a 26 6c how it looks:&l
e440: 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 72 t;/p>..<pr
e450: 65 20 63 6c 61 73 73 3d 22 73 68 5f 74 63 6c 22 e class="sh_tcl"
e460: 26 67 74 3b 0a 2e 20 73 65 74 20 78 20 24 28 33 >.. set x $(3
e470: 20 2b 20 34 29 0a 37 0a 2e 20 69 6e 63 72 20 79 + 4).7.. incr y
e480: 20 24 28 37 20 2a 20 5b 69 6e 63 72 20 78 5d 29 $(7 * [incr x])
e490: 0a 35 36 0a 2e 20 73 65 74 20 7a 20 24 28 22 62 .56.. set z $("b
e4a0: 62 22 20 69 6e 20 7b 61 61 20 62 62 20 63 63 7d b" in {aa bb cc}
e4b0: 29 0a 31 0a 26 6c 74 3b 2f 70 72 65 26 67 74 3b ).1.</pre>
e4c0: 0a 0a 26 6c 74 3b 70 26 67 74 3b 41 20 6c 6f 74 ..<p>A lot
e4d0: 20 62 65 74 74 65 72 21 20 45 73 73 65 6e 74 69 better! Essenti
e4e0: 61 6c 6c 79 20 61 76 6f 69 64 69 6e 67 20 6f 6e ally avoiding on
e4f0: 65 20 73 65 74 20 6f 66 20 62 72 61 63 6b 65 74 e set of bracket
e500: 73 20 70 6c 75 73 20 74 68 65 0a 63 6f 6d 6d 61 s plus the.comma
e510: 6e 64 20 6e 61 6d 65 2e 20 43 75 72 72 65 6e 74 nd name. Current
e520: 6c 79 20 69 6e 20 54 63 6c 2c 20 26 6c 74 3b 63 ly in Tcl, <c
e530: 6f 64 65 26 67 74 3b 24 28 2e 2e 2e 29 26 6c 74 ode>$(...)<
e540: 3b 2f 63 6f 64 65 26 67 74 3b 20 69 73 20 61 6e ;/code> is an
e550: 20 61 63 63 69 64 65 6e 74 61 6c 20 76 61 6c 69 accidental vali
e560: 64 0a 65 78 70 72 65 73 73 69 6f 6e 2c 20 61 63 d.expression, ac
e570: 63 65 73 73 69 6e 67 20 61 6e 20 61 72 72 61 79 cessing an array
e580: 20 6e 61 6d 65 64 20 77 69 74 68 20 74 68 65 20 named with the
e590: 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 20 47 69 empty string. Gi
e5a0: 76 69 6e 67 0a 75 70 20 74 68 69 73 20 69 73 20 ving.up this is
e5b0: 61 20 76 65 72 79 20 73 6d 61 6c 6c 20 70 72 69 a very small pri
e5c0: 63 65 20 74 6f 20 70 61 79 20 66 6f 72 20 74 68 ce to pay for th
e5d0: 69 73 20 6d 6f 72 65 20 61 63 63 65 73 73 69 62 is more accessib
e5e0: 6c 65 20 73 79 6e 74 61 78 2e 0a 50 65 72 68 61 le syntax..Perha
e5f0: 70 73 20 61 73 20 54 63 6c 20 67 72 69 6e 64 73 ps as Tcl grinds
e600: 20 69 74 26 23 38 32 31 37 3b 73 20 77 61 79 20 it’s way
e610: 74 6f 77 61 72 64 73 20 76 65 72 73 69 6f 6e 20 towards version
e620: 39 2e 30 2c 20 69 74 20 63 6f 75 6c 64 20 67 69 9.0, it could gi
e630: 76 65 0a 75 70 20 61 20 74 69 6e 79 20 62 69 74 ve.up a tiny bit
e640: 20 6f 66 20 62 61 63 6b 77 61 72 64 20 63 6f 6d of backward com
e650: 70 61 74 69 62 69 6c 69 74 79 20 66 6f 72 20 65 patibility for e
e660: 61 73 79 20 6f 66 20 75 73 65 2e 26 6c 74 3b 2f asy of use.</
e670: 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b p>..<p>
e680: 53 74 65 76 65 20 42 65 6e 6e 65 74 74 20 28 26 Steve Bennett (&
e690: 6c 74 3b 61 20 68 72 65 66 3d 22 26 61 6d 70 3b lt;a href="&
e6a0: 23 31 30 39 3b 26 61 6d 70 3b 23 30 39 37 3b 26 #109;&#097;&
e6b0: 61 6d 70 3b 23 31 30 35 3b 26 61 6d 70 3b 23 31 amp;#105;&#1
e6c0: 30 38 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 08;&#116;&am
e6d0: 70 3b 23 31 31 31 3b 3a 26 61 6d 70 3b 23 31 31 p;#111;:&#11
e6e0: 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 5;&#116;&
e6f0: 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 3b ;#101;&#118;
e700: 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 &#101;&#
e710: 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 61 098;&#064;&a
e720: 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 31 mp;#119;&#11
e730: 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 1;&#114;&
e740: 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 3b ;#107;&#119;
e750: 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 &#097;&#
e760: 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 114;&#101;&a
e770: 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 31 mp;#046;&#11
e780: 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 0;&#101;&
e790: 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 3b ;#116;&#046;
e7a0: 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 &#097;&#
e7b0: 31 31 37 3b 22 26 67 74 3b 26 61 6d 70 3b 23 31 117;">&#1
e7c0: 31 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 15;&#116;&am
e7d0: 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 p;#101;&#118
e7e0: 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b ;&#101;&
e7f0: 23 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 #098;&#064;&
e800: 61 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 amp;#119;&#1
e810: 31 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 11;&#114;&am
e820: 70 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 p;#107;&#119
e830: 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b ;&#097;&
e840: 23 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 #114;&#101;&
e850: 61 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 amp;#046;&#1
e860: 31 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 10;&#101;&am
e870: 70 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 p;#116;&#046
e880: 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b ;&#097;&
e890: 23 31 31 37 3b 26 6c 74 3b 2f 61 26 67 74 3b 29 #117;</a>)
e8a0: 26 6c 74 3b 2f 70 26 67 74 3b 0a 3c 2f 63 6f 6e </p>.</con
e8b0: 74 65 6e 74 3e 0a 20 20 3c 2f 65 6e 74 72 79 3e tent>. </entry>
e8c0: 0a 20 20 3c 65 6e 74 72 79 3e 0a 20 20 20 20 3c . <entry>. <
e8d0: 69 64 3e 74 61 67 3a 6a 69 6d 2e 62 65 72 6c 69 id>tag:jim.berli
e8e0: 6f 73 2e 64 65 2c 32 30 31 30 2d 31 30 2d 32 39 os.de,2010-10-29
e8f0: 3a 2f 61 72 74 69 63 6c 65 73 2f 32 30 31 30 2d :/articles/2010-
e900: 31 30 2d 32 39 2f 3c 2f 69 64 3e 0a 20 20 20 20 10-29/</id>.
e910: 3c 74 69 74 6c 65 20 74 79 70 65 3d 22 68 74 6d <title type="htm
e920: 6c 22 3e 41 6e 6e 6f 75 6e 63 69 6e 67 20 4a 69 l">Announcing Ji
e930: 6d 20 54 63 6c 20 76 65 72 73 69 6f 6e 20 30 2e m Tcl version 0.
e940: 36 33 3c 2f 74 69 74 6c 65 3e 0a 20 20 20 20 3c 63</title>. <
e950: 70 75 62 6c 69 73 68 65 64 3e 32 30 31 30 2d 31 published>2010-1
e960: 30 2d 32 38 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 0-28T14:00:00Z</
e970: 70 75 62 6c 69 73 68 65 64 3e 0a 20 20 20 20 3c published>. <
e980: 75 70 64 61 74 65 64 3e 32 30 31 30 2d 31 30 2d updated>2010-10-
e990: 32 38 54 31 34 3a 30 30 3a 30 30 5a 3c 2f 75 70 28T14:00:00Z</up
e9a0: 64 61 74 65 64 3e 0a 20 20 20 20 3c 6c 69 6e 6b dated>. <link
e9b0: 20 72 65 6c 3d 22 61 6c 74 65 72 6e 61 74 65 22 rel="alternate"
e9c0: 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 6a 69 href="http://ji
e9d0: 6d 2e 62 65 72 6c 69 6f 73 2e 64 65 2f 61 72 74 m.berlios.de/art
e9e0: 69 63 6c 65 73 2f 32 30 31 30 2d 31 30 2d 32 39 icles/2010-10-29
e9f0: 2f 22 2f 3e 0a 20 20 20 20 3c 63 6f 6e 74 65 6e /"/>. <conten
ea00: 74 20 74 79 70 65 3d 22 68 74 6d 6c 22 3e 26 6c t type="html">&l
ea10: 74 3b 70 26 67 74 3b 4a 69 6d 20 54 63 6c 20 30 t;p>Jim Tcl 0
ea20: 2e 36 33 20 68 61 73 20 62 65 65 6e 20 72 65 6c .63 has been rel
ea30: 65 61 73 65 64 20 61 6e 64 20 69 73 20 61 76 61 eased and is ava
ea40: 69 6c 61 62 6c 65 20 66 72 6f 6d 3a 20 26 6c 74 ilable from: <
ea50: 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 ;/p>..<p&g
ea60: 74 3b 26 6c 74 3b 61 20 68 72 65 66 3d 22 68 74 t;<a href="ht
ea70: 74 70 3a 2f 2f 72 65 70 6f 2e 6f 72 2e 63 7a 2f tp://repo.or.cz/
ea80: 77 2f 6a 69 6d 74 63 6c 2e 67 69 74 22 26 67 74 w/jimtcl.git">
ea90: 3b 68 74 74 70 3a 2f 2f 72 65 70 6f 2e 6f 72 2e ;http://repo.or.
eaa0: 63 7a 2f 77 2f 6a 69 6d 74 63 6c 2e 67 69 74 26 cz/w/jimtcl.git&
eab0: 6c 74 3b 2f 61 26 67 74 3b 26 6c 74 3b 2f 70 26 lt;/a></p&
eac0: 67 74 3b 0a 0a 26 6c 74 3b 68 32 20 69 64 3d 22 gt;..<h2 id="
ead0: 63 68 61 6e 67 65 73 2d 73 69 6e 63 65 2d 76 65 changes-since-ve
eae0: 72 73 69 6f 6e 2d 30 35 31 22 26 67 74 3b 43 48 rsion-051">CH
eaf0: 41 4e 47 45 53 20 53 49 4e 43 45 20 56 45 52 53 ANGES SINCE VERS
eb00: 49 4f 4e 20 30 2e 35 31 26 6c 74 3b 2f 68 32 26 ION 0.51</h2&
eb10: 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 54 68 gt;..<p>Th
eb20: 69 73 20 69 73 20 61 20 6d 61 6a 6f 72 20 75 70 is is a major up
eb30: 64 61 74 65 20 77 68 69 63 68 20 69 6e 63 6f 72 date which incor
eb40: 70 6f 72 61 74 65 73 20 6d 61 6e 79 20 62 75 67 porates many bug
eb50: 20 66 69 78 65 73 20 61 6e 64 20 6e 65 77 20 66 fixes and new f
eb60: 65 61 74 75 72 65 73 2e 26 6c 74 3b 2f 70 26 67 eatures.</p&g
eb70: 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 53 6f 6d t;..<p>Som
eb80: 65 20 6f 66 20 74 68 65 20 6e 65 77 20 66 65 61 e of the new fea
eb90: 74 75 72 65 73 20 6f 76 65 72 20 4a 69 6d 20 30 tures over Jim 0
eba0: 2e 35 31 20 69 6e 63 6c 75 64 65 3a 26 6c 74 3b .51 include:<
ebb0: 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 75 6c 26 67 /p>..<ul&g
ebc0: 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b 4e t;. <li>N
ebd0: 6f 77 20 69 6e 63 6c 75 64 65 73 20 63 6f 6d 70 ow includes comp
ebe0: 72 65 68 65 6e 73 69 76 65 20 64 6f 63 75 6d 65 rehensive docume
ebf0: 6e 74 61 74 69 6f 6e 0a 53 65 65 3a 20 26 6c 74 ntation.See: <
ec00: 3b 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f ;a href="http://
ec10: 72 65 70 6f 2e 6f 72 2e 63 7a 2f 77 2f 6a 69 6d repo.or.cz/w/jim
ec20: 74 63 6c 2e 67 69 74 2f 62 6c 6f 62 5f 70 6c 61 tcl.git/blob_pla
ec30: 69 6e 2f 48 45 41 44 3a 2f 54 63 6c 5f 73 68 69 in/HEAD:/Tcl_shi
ec40: 70 70 65 64 2e 68 74 6d 6c 22 26 67 74 3b 54 63 pped.html">Tc
ec50: 6c 5f 53 68 69 70 70 65 64 2e 68 74 6d 6c 26 6c l_Shipped.html&l
ec60: 74 3b 2f 61 26 67 74 3b 26 6c 74 3b 2f 6c 69 26 t;/a></li&
ec70: 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b gt;. <li>
ec80: 4e 6f 77 20 69 6e 63 6c 75 64 65 73 20 65 78 74 Now includes ext
ec90: 65 6e 73 69 76 65 20 75 6e 69 74 20 74 65 73 74 ensive unit test
eca0: 73 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 s</li>. &
ecb0: 6c 74 3b 6c 69 26 67 74 3b 46 61 72 20 62 65 74 lt;li>Far bet
ecc0: 74 65 72 20 74 72 61 63 6b 69 6e 67 20 6f 66 20 ter tracking of
ecd0: 73 6f 75 72 63 65 20 6c 6f 63 61 74 69 6f 6e 2c source location,
ece0: 20 69 6e 63 6c 75 64 69 6e 67 20 26 61 6d 70 3b including &
ecf0: 6c 73 71 75 6f 3b 69 6e 66 6f 20 73 6f 75 72 63 lsquo;info sourc
ed00: 65 26 61 6d 70 3b 72 73 71 75 6f 3b 2c 20 26 61 e&rsquo;, &a
ed10: 6d 70 3b 6c 73 71 75 6f 3b 73 74 61 63 6b 74 72 mp;lsquo;stacktr
ed20: 61 63 65 26 61 6d 70 3b 72 73 71 75 6f 3b 20 61 ace&rsquo; a
ed30: 6e 64 20 26 61 6d 70 3b 6c 73 71 75 6f 3b 73 74 nd &lsquo;st
ed40: 61 63 6b 64 75 6d 70 26 61 6d 70 3b 72 73 71 75 ackdump&rsqu
ed50: 6f 3b 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 o;</li>.
ed60: 26 6c 74 3b 6c 69 26 67 74 3b 4e 65 74 77 6f 72 <li>Networ
ed70: 6b 69 6e 67 20 73 75 70 70 6f 72 74 20 69 6e 63 king support inc
ed80: 6c 75 64 65 73 20 49 50 76 36 2c 20 77 6f 72 6b ludes IPv6, work
ed90: 69 6e 67 20 55 44 50 20 73 75 70 70 6f 72 74 2c ing UDP support,
eda0: 20 26 61 6d 70 3b 6c 73 71 75 6f 3b 73 6f 63 6b &lsquo;sock
edb0: 65 74 20 70 69 70 65 26 61 6d 70 3b 72 73 71 75 et pipe&rsqu
edc0: 6f 3b 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 o;</li>.
edd0: 26 6c 74 3b 6c 69 26 67 74 3b 4d 61 6e 79 20 62 <li>Many b
ede0: 75 67 20 66 69 78 65 73 20 61 6e 64 20 69 6d 70 ug fixes and imp
edf0: 72 6f 76 65 6d 65 6e 74 73 20 69 6e 20 26 61 6d rovements in &am
ee00: 70 3b 6c 73 71 75 6f 3b 65 78 70 72 26 61 6d 70 p;lsquo;expr&
ee10: 3b 72 73 71 75 6f 3b 26 6c 74 3b 2f 6c 69 26 67 ;rsquo;</li&g
ee20: 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 67 74 3b 26 t;. <li>&
ee30: 61 6d 70 3b 6c 73 71 75 6f 3b 65 78 65 63 26 61 amp;lsquo;exec&a
ee40: 6d 70 3b 72 73 71 75 6f 3b 20 69 6d 70 72 6f 76 mp;rsquo; improv
ee50: 65 6d 65 6e 74 73 20 69 6e 63 6c 75 64 69 6e 67 ements including
ee60: 20 72 65 64 69 72 65 63 74 69 6f 6e 20 6f 70 74 redirection opt
ee70: 69 6f 6e 73 20 61 6e 64 20 72 65 73 70 65 63 74 ions and respect
ee80: 20 66 6f 72 20 24 3a 3a 65 6e 76 26 6c 74 3b 2f for $::env</
ee90: 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 26 li>. <li&
eea0: 67 74 3b 46 75 6c 6c 20 26 61 6d 70 3b 6c 73 71 gt;Full &lsq
eeb0: 75 6f 3b 63 6f 6e 66 69 67 75 72 65 26 61 6d 70 uo;configure&
eec0: 3b 72 73 71 75 6f 3b 20 73 75 70 70 6f 72 74 20 ;rsquo; support
eed0: 66 6f 72 20 73 74 61 74 69 63 20 65 78 74 65 6e for static exten
eee0: 73 69 6f 6e 73 26 6c 74 3b 2f 6c 69 26 67 74 3b sions</li>
eef0: 0a 26 6c 74 3b 2f 75 6c 26 67 74 3b 0a 0a 26 6c .</ul>..&l
ef00: 74 3b 70 26 67 74 3b 53 6f 6d 65 20 6e 6f 74 61 t;p>Some nota
ef10: 62 6c 65 20 64 69 66 66 65 72 65 6e 63 65 73 20 ble differences
ef20: 69 6e 63 6c 75 64 65 3a 26 6c 74 3b 2f 70 26 67 include:</p&g
ef30: 74 3b 0a 0a 26 6c 74 3b 75 6c 26 67 74 3b 0a 20 t;..<ul>.
ef40: 20 26 6c 74 3b 6c 69 26 67 74 3b 61 69 6f 2e 6f <li>aio.o
ef50: 70 65 6e 20 61 6e 64 20 61 69 6f 2e 73 6f 63 6b pen and aio.sock
ef60: 65 74 20 61 72 65 20 6e 6f 77 20 70 6c 61 69 6e et are now plain
ef70: 20 26 61 6d 70 3b 6c 73 71 75 6f 3b 6f 70 65 6e &lsquo;open
ef80: 26 61 6d 70 3b 72 73 71 75 6f 3b 20 61 6e 64 20 &rsquo; and
ef90: 26 61 6d 70 3b 6c 73 71 75 6f 3b 73 6f 63 6b 65 &lsquo;socke
efa0: 74 26 61 6d 70 3b 72 73 71 75 6f 3b 26 6c 74 3b t&rsquo;<
efb0: 2f 6c 69 26 67 74 3b 0a 20 20 26 6c 74 3b 6c 69 /li>. <li
efc0: 26 67 74 3b 26 61 6d 70 3b 6c 73 71 75 6f 3b 70 >&lsquo;p
efd0: 72 6f 63 26 61 6d 70 3b 72 73 71 75 6f 3b 20 6e roc&rsquo; n
efe0: 6f 77 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e ow returns the n
eff0: 61 6d 65 20 6f 66 20 74 68 65 20 70 72 6f 63 65 ame of the proce
f000: 64 75 72 65 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a dure</li>.
f010: 20 20 26 6c 74 3b 6c 69 26 67 74 3b 43 68 61 6e <li>Chan
f020: 67 65 73 20 74 6f 20 74 68 65 20 70 61 63 6b 61 ges to the packa
f030: 67 65 20 73 79 73 74 65 6d 20 61 6e 64 20 65 78 ge system and ex
f040: 74 65 6e 73 69 6f 6e 20 69 6e 74 65 72 66 61 63 tension interfac
f050: 65 26 6c 74 3b 2f 6c 69 26 67 74 3b 0a 20 20 26 e</li>. &
f060: 6c 74 3b 6c 69 26 67 74 3b 26 61 6d 70 3b 6c 73 lt;li>&ls
f070: 71 75 6f 3b 6a 69 6d 26 61 6d 70 3b 72 73 71 75 quo;jim&rsqu
f080: 6f 3b 20 69 73 20 6e 6f 77 20 26 61 6d 70 3b 6c o; is now &l
f090: 73 71 75 6f 3b 6a 69 6d 73 68 26 61 6d 70 3b 72 squo;jimsh&r
f0a0: 73 71 75 6f 3b 26 6c 74 3b 2f 6c 69 26 67 74 3b squo;</li>
f0b0: 0a 26 6c 74 3b 2f 75 6c 26 67 74 3b 0a 0a 26 6c .</ul>..&l
f0c0: 74 3b 70 26 67 74 3b 53 74 65 76 65 20 42 65 6e t;p>Steve Ben
f0d0: 6e 65 74 74 20 28 26 6c 74 3b 61 20 68 72 65 66 nett (<a href
f0e0: 3d 22 26 61 6d 70 3b 23 31 30 39 3b 26 61 6d 70 ="&#109;&
f0f0: 3b 23 30 39 37 3b 26 61 6d 70 3b 23 31 30 35 3b ;#097;&#105;
f100: 26 61 6d 70 3b 23 31 30 38 3b 26 61 6d 70 3b 23 &#108;&#
f110: 31 31 36 3b 26 61 6d 70 3b 23 31 31 31 3b 3a 26 116;&#111;:&
f120: 61 6d 70 3b 23 31 31 35 3b 26 61 6d 70 3b 23 31 amp;#115;&#1
f130: 31 36 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 16;&#101;&am
f140: 70 3b 23 31 31 38 3b 26 61 6d 70 3b 23 31 30 31 p;#118;&#101
f150: 3b 26 61 6d 70 3b 23 30 39 38 3b 26 61 6d 70 3b ;&#098;&
f160: 23 30 36 34 3b 26 61 6d 70 3b 23 31 31 39 3b 26 #064;&#119;&
f170: 61 6d 70 3b 23 31 31 31 3b 26 61 6d 70 3b 23 31 amp;#111;&#1
f180: 31 34 3b 26 61 6d 70 3b 23 31 30 37 3b 26 61 6d 14;&#107;&am
f190: 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 30 39 37 p;#119;&#097
f1a0: 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 3b ;&#114;&
f1b0: 23 31 30 31 3b 26 61 6d 70 3b 23 30 34 36 3b 26 #101;&#046;&
f1c0: 61 6d 70 3b 23 31 31 30 3b 26 61 6d 70 3b 23 31 amp;#110;&#1
f1d0: 30 31 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 01;&#116;&am
f1e0: 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 30 39 37 p;#046;&#097
f1f0: 3b 26 61 6d 70 3b 23 31 31 37 3b 22 26 67 74 3b ;&#117;">
f200: 26 61 6d 70 3b 23 31 31 35 3b 26 61 6d 70 3b 23 &#115;&#
f210: 31 31 36 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 116;&#101;&a
f220: 6d 70 3b 23 31 31 38 3b 26 61 6d 70 3b 23 31 30 mp;#118;&#10
f230: 31 3b 26 61 6d 70 3b 23 30 39 38 3b 26 61 6d 70 1;&#098;&
f240: 3b 23 30 36 34 3b 26 61 6d 70 3b 23 31 31 39 3b ;#064;&#119;
f250: 26 61 6d 70 3b 23 31 31 31 3b 26 61 6d 70 3b 23 &#111;&#
f260: 31 31 34 3b 26 61 6d 70 3b 23 31 30 37 3b 26 61 114;&#107;&a
f270: 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 30 39 mp;#119;&#09
f280: 37 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 7;&#114;&
f290: 3b 23 31 30 31 3b 26 61 6d 70 3b 23 30 34 36 3b ;#101;&#046;
f2a0: 26 61 6d 70 3b 23 31 31 30 3b 26 61 6d 70 3b 23 &#110;&#
f2b0: 31 30 31 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 101;&#116;&a
f2c0: 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 30 39 mp;#046;&#09
f2d0: 37 3b 26 61 6d 70 3b 23 31 31 37 3b 26 6c 74 3b 7;&#117;<
f2e0: 2f 61 26 67 74 3b 29 26 6c 74 3b 2f 70 26 67 74 /a>)</p>
f2f0: 3b 0a 3c 2f 63 6f 6e 74 65 6e 74 3e 0a 20 20 3c ;.</content>. <
f300: 2f 65 6e 74 72 79 3e 0a 20 20 3c 65 6e 74 72 79 /entry>. <entry
f310: 3e 0a 20 20 20 20 3c 69 64 3e 74 61 67 3a 6a 69 >. <id>tag:ji
f320: 6d 2e 62 65 72 6c 69 6f 73 2e 64 65 2c 32 30 31 m.berlios.de,201
f330: 30 2d 30 39 2d 30 39 3a 2f 61 72 74 69 63 6c 65 0-09-09:/article
f340: 73 2f 32 30 31 30 2d 30 39 2d 30 39 2f 3c 2f 69 s/2010-09-09/</i
f350: 64 3e 0a 20 20 20 20 3c 74 69 74 6c 65 20 74 79 d>. <title ty
f360: 70 65 3d 22 68 74 6d 6c 22 3e 53 4d 54 50 20 4d pe="html">SMTP M
f370: 61 69 6c 20 77 69 74 68 20 4a 69 6d 3c 2f 74 69 ail with Jim</ti
f380: 74 6c 65 3e 0a 20 20 20 20 3c 70 75 62 6c 69 73 tle>. <publis
f390: 68 65 64 3e 32 30 31 30 2d 30 39 2d 30 38 54 31 hed>2010-09-08T1
f3a0: 34 3a 30 30 3a 30 30 5a 3c 2f 70 75 62 6c 69 73 4:00:00Z</publis
f3b0: 68 65 64 3e 0a 20 20 20 20 3c 75 70 64 61 74 65 hed>. <update
f3c0: 64 3e 32 30 31 30 2d 30 39 2d 30 38 54 31 34 3a d>2010-09-08T14:
f3d0: 30 30 3a 30 30 5a 3c 2f 75 70 64 61 74 65 64 3e 00:00Z</updated>
f3e0: 0a 20 20 20 20 3c 6c 69 6e 6b 20 72 65 6c 3d 22 . <link rel="
f3f0: 61 6c 74 65 72 6e 61 74 65 22 20 68 72 65 66 3d alternate" href=
f400: 22 68 74 74 70 3a 2f 2f 6a 69 6d 2e 62 65 72 6c "http://jim.berl
f410: 69 6f 73 2e 64 65 2f 61 72 74 69 63 6c 65 73 2f ios.de/articles/
f420: 32 30 31 30 2d 30 39 2d 30 39 2f 22 2f 3e 0a 20 2010-09-09/"/>.
f430: 20 20 20 3c 63 6f 6e 74 65 6e 74 20 74 79 70 65 <content type
f440: 3d 22 68 74 6d 6c 22 3e 26 6c 74 3b 70 26 67 74 ="html"><p>
f450: 3b 49 20 72 65 63 65 6e 74 6c 79 20 68 61 64 20 ;I recently had
f460: 74 68 65 20 6e 65 65 64 20 74 6f 20 73 65 6e 64 the need to send
f470: 20 65 6d 61 69 6c 20 66 72 6f 6d 20 6d 79 20 4a email from my J
f480: 69 6d 2d 65 6e 61 62 6c 65 64 20 65 6d 62 65 64 im-enabled embed
f490: 64 65 64 0a 77 65 62 20 61 70 70 6c 69 63 61 74 ded.web applicat
f4a0: 69 6f 6e 2e 20 54 68 65 72 65 20 61 72 65 20 6d ion. There are m
f4b0: 61 6e 79 20 77 61 79 73 20 74 6f 20 61 63 68 69 any ways to achi
f4c0: 65 76 65 20 74 68 69 73 2c 20 69 6e 63 6c 75 64 eve this, includ
f4d0: 69 6e 67 20 76 69 61 0a 61 20 63 6f 6d 6d 61 6e ing via.a comman
f4e0: 64 20 6c 69 6e 65 20 61 70 70 6c 69 63 61 74 69 d line applicati
f4f0: 6f 6e 2c 20 62 75 74 20 49 20 63 68 6f 73 65 20 on, but I chose
f500: 74 6f 20 75 73 65 20 74 68 65 20 6e 65 74 77 6f to use the netwo
f510: 72 6b 69 6e 67 0a 63 61 70 61 62 69 6c 69 74 69 rking.capabiliti
f520: 65 73 20 6f 66 20 4a 69 6d 20 74 6f 20 73 65 6e es of Jim to sen
f530: 64 20 65 6d 61 69 6c 20 64 69 72 65 63 74 6c 79 d email directly
f540: 20 76 69 61 20 53 4d 54 50 2e 20 49 74 20 74 75 via SMTP. It tu
f550: 72 6e 65 64 20 6f 75 74 0a 74 6f 20 62 65 20 72 rned out.to be r
f560: 65 6d 61 72 6b 61 62 6c 79 20 65 61 73 79 2e 26 emarkably easy.&
f570: 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 3b 70 lt;/p>..<p
f580: 26 67 74 3b 46 69 72 73 74 20 74 68 65 20 74 65 >First the te
f590: 73 74 20 63 6f 64 65 3a 26 6c 74 3b 2f 70 26 67 st code:</p&g
f5a0: 74 3b 0a 0a 26 6c 74 3b 70 72 65 20 63 6c 61 73 t;..<pre clas
f5b0: 73 3d 22 73 68 5f 74 63 6c 22 26 67 74 3b 0a 23 s="sh_tcl">.#
f5c0: 20 54 65 73 74 20 74 68 65 20 73 6d 74 70 20 70 Test the smtp p
f5d0: 61 63 6b 61 67 65 0a 0a 70 61 63 6b 61 67 65 20 ackage..package
f5e0: 72 65 71 75 69 72 65 20 73 6d 74 70 0a 0a 23 20 require smtp..#
f5f0: 53 75 62 63 6c 61 73 73 20 73 6d 74 70 20 74 6f Subclass smtp to
f600: 20 70 72 6f 76 69 64 65 20 61 20 63 75 73 74 6f provide a custo
f610: 6d 20 6c 6f 67 20 6d 65 74 68 6f 64 0a 63 6c 61 m log method.cla
f620: 73 73 20 73 6d 74 70 5f 6c 6f 67 20 73 6d 74 70 ss smtp_log smtp
f630: 20 7b 7d 0a 0a 73 6d 74 70 5f 6c 6f 67 20 6d 65 {}..smtp_log me
f640: 74 68 6f 64 20 6c 6f 67 20 7b 6d 73 67 7d 20 7b thod log {msg} {
f650: 0a 20 20 20 20 70 75 74 73 20 24 6d 73 67 0a 7d . puts $msg.}
f660: 0a 0a 23 20 43 72 65 61 74 65 20 61 6e 20 69 6e ..# Create an in
f670: 73 74 61 6e 63 65 20 74 6f 20 73 65 6e 64 20 6f stance to send o
f680: 75 72 20 6d 65 73 73 61 67 65 0a 73 65 74 20 73 ur message.set s
f690: 20 5b 73 6d 74 70 5f 6c 6f 67 20 6e 65 77 20 7b [smtp_log new {
f6a0: 73 65 72 76 65 72 20 6d 61 69 6c 2e 77 6f 72 6b server mail.work
f6b0: 77 61 72 65 2e 6e 65 74 2e 61 75 7d 5d 0a 0a 23 ware.net.au}]..#
f6c0: 20 41 6e 64 20 73 65 6e 64 20 69 74 0a 73 65 74 And send it.set
f6d0: 20 72 65 73 75 6c 74 20 5b 24 73 20 73 65 6e 64 result [$s send
f6e0: 20 7b 0a 20 20 20 20 74 6f 20 73 74 65 76 65 62 {. to steveb
f6f0: 40 77 6f 72 6b 77 61 72 65 2e 6e 65 74 2e 61 75 @workware.net.au
f700: 0a 20 20 20 20 66 72 6f 6d 20 73 74 65 76 65 62 . from steveb
f710: 40 77 6f 72 6b 77 61 72 65 2e 6e 65 74 2e 61 75 @workware.net.au
f720: 0a 20 20 20 20 73 75 62 6a 65 63 74 20 22 54 65 . subject "Te
f730: 73 74 20 6d 65 73 73 61 67 65 22 0a 20 20 20 20 st message".
f740: 62 6f 64 79 20 22 68 65 6c 6c 6f 20 66 72 6f 6d body "hello from
f750: 20 73 74 65 76 65 22 0a 7d 5d 0a 69 66 20 7b 24 steve".}].if {$
f760: 72 65 73 75 6c 74 20 6e 65 20 22 22 7d 20 7b 0a result ne ""} {.
f770: 20 20 20 20 70 75 74 73 20 22 52 65 73 75 6c 74 puts "Result
f780: 20 69 73 20 24 72 65 73 75 6c 74 22 0a 7d 0a 26 is $result".}.&
f790: 6c 74 3b 2f 70 72 65 26 67 74 3b 0a 0a 26 6c 74 lt;/pre>..<
f7a0: 3b 70 26 67 74 3b 41 6e 64 20 74 68 65 20 72 65 ;p>And the re
f7b0: 73 75 6c 74 20 6f 66 20 72 75 6e 6e 69 6e 67 20 sult of running
f7c0: 69 74 3a 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 it:</p>..&
f7d0: 6c 74 3b 70 72 65 26 67 74 3b 26 6c 74 3b 63 6f lt;pre><co
f7e0: 64 65 26 67 74 3b 26 61 6d 70 3b 6c 74 3b 26 61 de>&lt;&a
f7f0: 6d 70 3b 6c 74 3b 26 61 6d 70 3b 6c 74 3b 20 32 mp;lt;&lt; 2
f800: 32 30 20 6d 61 69 6c 2e 77 6f 72 6b 77 61 72 65 20 mail.workware
f810: 2e 6e 65 74 2e 61 75 20 45 53 4d 54 50 20 50 6f .net.au ESMTP Po
f820: 73 74 66 69 78 0a 26 61 6d 70 3b 67 74 3b 26 61 stfix.&gt;&a
f830: 6d 70 3b 67 74 3b 26 61 6d 70 3b 67 74 3b 20 48 mp;gt;&gt; H
f840: 45 4c 4f 20 73 74 65 76 65 62 6d 61 63 2e 69 6e ELO stevebmac.in
f850: 74 65 72 6e 61 6c 2e 77 6f 72 6b 77 61 72 65 2e ternal.workware.
f860: 6e 65 74 2e 61 75 0a 26 61 6d 70 3b 6c 74 3b 26 net.au.&lt;&
f870: 61 6d 70 3b 6c 74 3b 26 61 6d 70 3b 6c 74 3b 20 amp;lt;&lt;
f880: 32 35 30 20 6d 61 69 6c 2e 77 6f 72 6b 77 61 72 250 mail.workwar
f890: 65 2e 6e 65 74 2e 61 75 0a 26 61 6d 70 3b 67 74 e.net.au.&gt
f8a0: 3b 26 61 6d 70 3b 67 74 3b 26 61 6d 70 3b 67 74 ;&gt;&gt
f8b0: 3b 20 4d 41 49 4c 20 46 52 4f 4d 3a 20 6a 69 6d ; MAIL FROM: jim
f8c0: 40 77 6f 72 6b 77 61 72 65 2e 6e 65 74 2e 61 75 @workware.net.au
f8d0: 0a 26 61 6d 70 3b 6c 74 3b 26 61 6d 70 3b 6c 74 .&lt;&lt
f8e0: 3b 26 61 6d 70 3b 6c 74 3b 20 32 35 30 20 32 2e ;&lt; 250 2.
f8f0: 31 2e 30 20 4f 6b 0a 26 61 6d 70 3b 67 74 3b 26 1.0 Ok.&gt;&
f900: 61 6d 70 3b 67 74 3b 26 61 6d 70 3b 67 74 3b 20 amp;gt;&gt;
f910: 52 43 50 54 20 54 4f 3a 20 73 74 65 76 65 62 40 RCPT TO: steveb@
f920: 77 6f 72 6b 77 61 72 65 2e 6e 65 74 2e 61 75 0a workware.net.au.
f930: 26 61 6d 70 3b 6c 74 3b 26 61 6d 70 3b 6c 74 3b &lt;&lt;
f940: 26 61 6d 70 3b 6c 74 3b 20 32 35 30 20 32 2e 31 &lt; 250 2.1
f950: 2e 35 20 4f 6b 0a 26 61 6d 70 3b 67 74 3b 26 61 .5 Ok.&gt;&a
f960: 6d 70 3b 67 74 3b 26 61 6d 70 3b 67 74 3b 20 44 mp;gt;&gt; D
f970: 41 54 41 0a 26 61 6d 70 3b 6c 74 3b 26 61 6d 70 ATA.&lt;&
f980: 3b 6c 74 3b 26 61 6d 70 3b 6c 74 3b 20 33 35 34 ;lt;&lt; 354
f990: 20 45 6e 64 20 64 61 74 61 20 77 69 74 68 20 26 End data with &
f9a0: 61 6d 70 3b 6c 74 3b 43 52 26 61 6d 70 3b 67 74 amp;lt;CR&gt
f9b0: 3b 26 61 6d 70 3b 6c 74 3b 4c 46 26 61 6d 70 3b ;&lt;LF&
f9c0: 67 74 3b 2e 26 61 6d 70 3b 6c 74 3b 43 52 26 61 gt;.&lt;CR&a
f9d0: 6d 70 3b 67 74 3b 26 61 6d 70 3b 6c 74 3b 4c 46 mp;gt;&lt;LF
f9e0: 26 61 6d 70 3b 67 74 3b 0a 26 61 6d 70 3b 67 74 &gt;.&gt
f9f0: 3b 26 61 6d 70 3b 67 74 3b 26 61 6d 70 3b 67 74 ;&gt;&gt
fa00: 3b 20 54 6f 3a 20 73 74 65 76 65 62 40 77 6f 72 ; To: steveb@wor
fa10: 6b 77 61 72 65 2e 6e 65 74 2e 61 75 0a 26 61 6d kware.net.au.&am
fa20: 70 3b 67 74 3b 26 61 6d 70 3b 67 74 3b 26 61 6d p;gt;&gt;&am
fa30: 70 3b 67 74 3b 20 46 72 6f 6d 3a 20 22 4a 69 6d p;gt; From: "Jim
fa40: 20 54 63 6c 22 20 26 61 6d 70 3b 6c 74 3b 6a 69 Tcl" &lt;ji
fa50: 6d 40 77 6f 72 6b 77 61 72 65 2e 6e 65 74 2e 61 m@workware.net.a
fa60: 75 26 61 6d 70 3b 67 74 3b 0a 26 61 6d 70 3b 67 u&gt;.&g
fa70: 74 3b 26 61 6d 70 3b 67 74 3b 26 61 6d 70 3b 67 t;&gt;&g
fa80: 74 3b 20 44 61 74 65 3a 20 46 72 69 2c 20 31 30 t; Date: Fri, 10
fa90: 20 53 65 70 20 30 39 20 32 30 31 30 20 31 34 3a Sep 09 2010 14:
faa0: 30 37 3a 34 39 20 2b 31 30 30 30 0a 26 61 6d 70 07:49 +1000.&
fab0: 3b 67 74 3b 26 61 6d 70 3b 67 74 3b 26 61 6d 70 ;gt;&gt;&
fac0: 3b 67 74 3b 20 53 75 62 6a 65 63 74 3a 20 54 68 ;gt; Subject: Th
fad0: 69 73 20 69 73 20 61 20 74 65 73 74 20 65 6d 61 is is a test ema
fae0: 69 6c 0a 26 61 6d 70 3b 67 74 3b 26 61 6d 70 3b il.&gt;&
faf0: 67 74 3b 26 61 6d 70 3b 67 74 3b 20 0a 3d 3d 3d gt;&gt; .===
fb00: 20 73 65 6e 64 69 6e 67 20 62 6f 64 79 0a 26 61 sending body.&a
fb10: 6d 70 3b 67 74 3b 26 61 6d 70 3b 67 74 3b 26 61 mp;gt;&gt;&a
fb20: 6d 70 3b 67 74 3b 20 2e 0a 26 61 6d 70 3b 6c 74 mp;gt; ..&lt
fb30: 3b 26 61 6d 70 3b 6c 74 3b 26 61 6d 70 3b 6c 74 ;&lt;&lt
fb40: 3b 20 32 35 30 20 32 2e 30 2e 30 20 4f 6b 3a 20 ; 250 2.0.0 Ok:
fb50: 71 75 65 75 65 64 20 61 73 20 31 44 42 34 39 31 queued as 1DB491
fb60: 45 36 39 35 33 38 41 0a 26 61 6d 70 3b 67 74 3b E69538A.&gt;
fb70: 26 61 6d 70 3b 67 74 3b 26 61 6d 70 3b 67 74 3b &gt;&gt;
fb80: 20 51 55 49 54 0a 26 61 6d 70 3b 6c 74 3b 26 61 QUIT.&lt;&a
fb90: 6d 70 3b 6c 74 3b 26 61 6d 70 3b 6c 74 3b 20 32 mp;lt;&lt; 2
fba0: 32 31 20 32 2e 30 2e 30 20 42 79 65 0a 3a 3a 3a 21 2.0.0 Bye.:::
fbb0: 20 6f 6b 0a 26 6c 74 3b 2f 63 6f 64 65 26 67 74 ok.</code>
fbc0: 3b 26 6c 74 3b 2f 70 72 65 26 67 74 3b 0a 0a 26 ;</pre>..&
fbd0: 6c 74 3b 70 26 67 74 3b 41 6e 64 20 68 65 72 65 lt;p>And here
fbe0: 20 69 73 20 74 68 65 20 73 6d 74 70 20 70 61 63 is the smtp pac
fbf0: 6b 61 67 65 20 28 26 6c 74 3b 63 6f 64 65 26 67 kage (<code&g
fc00: 74 3b 73 6d 74 70 2e 74 63 6c 26 6c 74 3b 2f 63 t;smtp.tcl</c
fc10: 6f 64 65 26 67 74 3b 29 2e 20 4e 6f 74 65 20 74 ode>). Note t
fc20: 68 65 20 75 73 65 20 6f 66 0a 26 6c 74 3b 63 6f he use of.<co
fc30: 64 65 26 67 74 3b 61 6c 61 72 6d 2f 73 69 67 6e de>alarm/sign
fc40: 61 6c 2f 63 61 74 63 68 20 2d 73 69 67 6e 61 6c al/catch -signal
fc50: 26 6c 74 3b 2f 63 6f 64 65 26 67 74 3b 20 74 6f </code> to
fc60: 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 74 implement the t
fc70: 69 6d 65 6f 75 74 2e 26 6c 74 3b 2f 70 26 67 74 imeout.</p>
fc80: 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 54 68 69 73 ;..<p>This
fc90: 20 70 61 63 6b 61 67 65 20 69 73 20 62 75 69 6c package is buil
fca0: 74 20 61 73 20 61 6e 20 4f 4f 20 63 6c 61 73 73 t as an OO class
fcb0: 2e 26 6c 74 3b 2f 70 26 67 74 3b 0a 0a 26 6c 74 .</p>..<
fcc0: 3b 70 72 65 20 63 6c 61 73 73 3d 22 73 68 5f 74 ;pre class="sh_t
fcd0: 63 6c 22 26 67 74 3b 0a 23 20 50 61 63 6b 61 67 cl">.# Packag
fce0: 65 20 73 75 70 70 6f 72 74 69 6e 67 20 73 65 6e e supporting sen
fcf0: 64 69 6e 67 20 65 6d 61 69 6c 20 76 69 61 20 64 ding email via d
fd00: 69 72 65 63 74 20 53 4d 54 50 0a 0a 70 61 63 6b irect SMTP..pack
fd10: 61 67 65 20 72 65 71 75 69 72 65 20 6f 6f 0a 0a age require oo..
fd20: 23 20 63 6c 61 73 73 20 74 6f 20 73 65 6e 64 20 # class to send
fd30: 65 6d 61 69 6c 73 20 76 69 61 20 53 4d 54 50 0a emails via SMTP.
fd40: 23 0a 23 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e #.# The followin
fd50: 67 20 63 6c 61 73 73 20 76 61 72 69 61 62 6c 65 g class variable
fd60: 73 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 0a s are supported.
fd70: 23 0a 23 20 73 65 72 76 65 72 20 20 20 2d 20 54 #.# server - T
fd80: 68 65 20 68 6f 73 74 6e 61 6d 65 20 6f 72 20 49 he hostname or I
fd90: 50 20 61 64 64 72 65 73 73 20 6f 66 20 74 68 65 P address of the
fda0: 20 74 61 72 67 65 74 20 53 4d 54 50 20 73 65 72 target SMTP ser
fdb0: 76 65 72 0a 23 0a 23 20 41 6e 64 20 6f 70 74 69 ver.#.# And opti
fdc0: 6f 6e 61 6c 6c 79 3a 0a 23 20 70 6f 72 74 20 20 onally:.# port
fdd0: 20 20 20 2d 20 54 68 65 20 70 6f 72 74 20 74 6f - The port to
fde0: 20 73 65 6e 74 20 74 6f 20 28 64 65 66 61 75 6c sent to (defaul
fdf0: 74 73 20 74 6f 20 32 35 29 0a 23 20 74 69 6d 65 ts to 25).# time
fe00: 6f 75 74 20 20 2d 20 50 72 6f 74 6f 63 6f 6c 20 out - Protocol
fe10: 74 69 6d 65 6f 75 74 20 69 6e 20 73 65 63 6f 6e timeout in secon
fe20: 64 73 20 28 64 65 66 61 75 6c 74 73 20 74 6f 20 ds (defaults to
fe30: 31 30 29 0a 0a 63 6c 61 73 73 20 73 6d 74 70 20 10)..class smtp
fe40: 7b 73 65 72 76 65 72 20 7b 7d 20 70 6f 72 74 20 {server {} port
fe50: 32 35 20 74 69 6d 65 6f 75 74 20 31 30 20 73 6f 25 timeout 10 so
fe60: 63 6b 20 7b 7d 7d 0a 0a 23 20 54 68 69 73 20 6c ck {}}..# This l
fe70: 6f 67 20 6d 65 74 68 6f 64 20 63 61 6e 20 62 65 og method can be
fe80: 20 6f 76 65 72 72 69 64 64 65 6e 20 65 69 74 68 overridden eith
fe90: 65 72 20 62 79 0a 23 20 63 72 65 61 74 69 6e 67 er by.# creating
fea0: 20 61 20 73 75 62 63 6c 61 73 73 2c 20 6f 72 20 a subclass, or
feb0: 6a 75 73 74 20 6f 76 65 72 77 72 69 74 69 6e 67 just overwriting
fec0: 20 74 68 69 73 20 6d 65 74 68 6f 64 0a 73 6d 74 this method.smt
fed0: 70 20 6d 65 74 68 6f 64 20 6c 6f 67 20 7b 6d 73 p method log {ms
fee0: 67 7d 20 7b 7d 0a 0a 23 20 53 65 6e 64 20 61 6e g} {}..# Send an
fef0: 20 65 6d 61 69 6c 0a 23 0a 23 20 24 69 6e 66 6f email.#.# $info
ff00: 20 69 73 20 61 20 64 69 63 74 69 6f 6e 61 72 79 is a dictionary
ff10: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 containing the
ff20: 66 6f 6c 6c 6f 77 69 6e 67 20 28 72 65 71 75 69 following (requi
ff30: 72 65 64 29 20 65 6c 65 6d 65 6e 74 73 0a 23 0a red) elements.#.
ff40: 23 20 73 75 62 6a 65 63 74 20 20 2d 20 54 68 65 # subject - The
ff50: 20 65 6d 61 69 6c 20 73 75 62 6a 65 63 74 0a 23 email subject.#
ff60: 20 74 6f 20 20 20 20 20 20 20 2d 20 45 69 74 68 to - Eith
ff70: 65 72 20 61 20 73 69 6d 70 6c 65 20 65 6d 61 69 er a simple emai
ff80: 6c 20 61 64 64 72 65 73 73 2c 20 6f 72 20 61 20 l address, or a
ff90: 6c 69 73 74 20 6f 66 20 7b 65 6d 61 69 6c 61 64 list of {emailad
ffa0: 64 72 20 6e 61 6d 65 7d 0a 23 20 66 72 6f 6d 20 dr name}.# from
ffb0: 20 20 20 20 2d 20 45 69 74 68 65 72 20 61 20 73 - Either a s
ffc0: 69 6d 70 6c 65 20 65 6d 61 69 6c 20 61 64 64 72 imple email addr
ffd0: 65 73 73 2c 20 6f 72 20 61 20 6c 69 73 74 20 6f ess, or a list o
ffe0: 66 20 7b 65 6d 61 69 6c 61 64 64 72 20 6e 61 6d f {emailaddr nam
fff0: 65 7d 0a 23 20 62 6f 64 79 20 20 20 20 20 2d 20 e}.# body -
10000 54 68 65 20 6e 65 77 6c 69 6e 65 2d 73 65 70 61 The newline-sepa
10010 72 61 74 65 64 20 65 6d 61 69 6c 20 62 6f 64 79 rated email body
10020 0a 23 0a 73 6d 74 70 20 6d 65 74 68 6f 64 20 73 .#.smtp method s
10030 65 6e 64 20 7b 69 6e 66 6f 7d 20 7b 0a 20 20 20 end {info} {.
10040 20 69 66 20 7b 24 73 65 72 76 65 72 20 65 71 20 if {$server eq
10050 22 22 7d 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ""} {. re
10060 74 75 72 6e 20 22 73 6d 74 70 20 73 65 6e 64 3a turn "smtp send:
10070 20 6e 6f 20 73 65 72 76 65 72 20 73 70 65 63 69 no server speci
10080 66 69 65 64 22 0a 20 20 20 20 7d 0a 0a 20 20 20 fied". }..
10090 20 66 6f 72 65 61 63 68 20 72 65 71 20 7b 73 75 foreach req {su
100a0 62 6a 65 63 74 20 74 6f 20 66 72 6f 6d 20 62 6f bject to from bo
100b0 64 79 7d 20 7b 0a 20 20 20 20 20 20 20 20 69 66 dy} {. if
100c0 20 7b 21 5b 65 78 69 73 74 73 20 69 6e 66 6f 28 {![exists info(
100d0 24 72 65 71 29 5d 7d 20 7b 0a 20 20 20 20 20 20 $req)]} {.
100e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 73 6d return "sm
100f0 74 70 20 73 65 6e 64 3a 20 6d 69 73 73 69 6e 67 tp send: missing
10100 20 24 72 65 71 22 0a 20 20 20 20 20 20 20 20 7d $req". }
10110 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6c 6f 63 61 . }.. loca
10120 6c 20 70 72 6f 63 20 73 6d 74 70 2e 66 6f 72 6d l proc smtp.form
10130 61 74 5f 61 64 64 72 20 7b 61 64 64 72 20 7b 6e at_addr {addr {n
10140 61 6d 65 20 7b 7d 7d 7d 20 7b 0a 20 20 20 20 20 ame {}}} {.
10150 20 20 20 69 66 20 7b 24 6e 61 6d 65 20 65 71 20 if {$name eq
10160 22 22 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 ""} {.
10170 20 20 72 65 74 75 72 6e 20 24 61 64 64 72 0a 20 return $addr.
10180 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }.
10190 20 72 65 74 75 72 6e 20 22 5c 22 24 6e 61 6d 65 return "\"$name
101a0 5c 22 20 26 61 6d 70 3b 6c 74 3b 24 61 64 64 72 \" &lt;$addr
101b0 26 61 6d 70 3b 67 74 3b 22 0a 20 20 20 20 7d 0a &gt;". }.
101c0 0a 20 20 20 20 73 69 67 6e 61 6c 20 68 61 6e 64 . signal hand
101d0 6c 65 20 53 49 47 41 4c 52 4d 0a 0a 20 20 20 20 le SIGALRM..
101e0 23 20 52 75 6e 20 74 68 65 20 70 72 6f 74 6f 63 # Run the protoc
101f0 6f 6c 0a 20 20 20 20 73 65 74 20 72 63 20 5b 63 ol. set rc [c
10200 61 74 63 68 20 2d 73 69 67 6e 61 6c 20 7b 0a 20 atch -signal {.
10210 20 20 20 20 20 20 20 61 6c 61 72 6d 20 24 74 69 alarm $ti
10220 6d 65 6f 75 74 0a 20 20 20 20 20 20 20 20 73 65 meout. se
10230 74 20 73 6f 63 6b 20 5b 73 6f 63 6b 65 74 20 73 t sock [socket s
10240 74 72 65 61 6d 20 24 73 65 72 76 65 72 3a 24 70 tream $server:$p
10250 6f 72 74 5d 0a 0a 20 20 20 20 20 20 20 20 24 73 ort].. $s
10260 65 6c 66 20 77 68 65 6e 6f 6b 20 32 32 30 20 7b elf whenok 220 {
10270 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 73 65 . $se
10280 6c 66 20 70 75 74 73 20 22 48 45 4c 4f 20 5b 69 lf puts "HELO [i
10290 6e 66 6f 20 68 6f 73 74 6e 61 6d 65 5d 22 0a 20 nfo hostname]".
102a0 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }.
102b0 20 24 73 65 6c 66 20 77 68 65 6e 6f 6b 20 32 35 $self whenok 25
102c0 30 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 0 {.
102d0 24 73 65 6c 66 20 70 75 74 73 20 22 4d 41 49 4c $self puts "MAIL
102e0 20 46 52 4f 4d 3a 20 5b 6c 69 6e 64 65 78 20 24 FROM: [lindex $
102f0 69 6e 66 6f 28 66 72 6f 6d 29 20 30 5d 22 0a 20 info(from) 0]".
10300 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }.
10310 20 24 73 65 6c 66 20 77 68 65 6e 6f 6b 20 32 35 $self whenok 25
10320 30 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 0 {.
10330 24 73 65 6c 66 20 70 75 74 73 20 22 52 43 50 54 $self puts "RCPT
10340 20 54 4f 3a 20 5b 6c 69 6e 64 65 78 20 24 69 6e TO: [lindex $in
10350 66 6f 28 74 6f 29 20 30 5d 22 0a 20 20 20 20 20 fo(to) 0]".
10360 20 20 20 7d 0a 20 20 20 20 20 20 20 20 24 73 65 }. $se
10370 6c 66 20 77 68 65 6e 6f 6b 20 32 35 30 20 7b 0a lf whenok 250 {.
10380 20 20 20 20 20 20 20 20 20 20 20 20 24 73 65 6c $sel
10390 66 20 70 75 74 73 20 22 44 41 54 41 22 0a 20 20 f puts "DATA".
103a0 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }.
103b0 24 73 65 6c 66 20 77 68 65 6e 6f 6b 20 33 35 34 $self whenok 354
103c0 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 {. $
103d0 73 65 6c 66 20 70 75 74 73 20 22 54 6f 3a 20 5b self puts "To: [
103e0 73 6d 74 70 2e 66 6f 72 6d 61 74 5f 61 64 64 72 smtp.format_addr
103f0 20 7b 2a 7d 24 69 6e 66 6f 28 74 6f 29 5d 22 0a {*}$info(to)]".
10400 20 20 20 20 20 20 20 20 20 20 20 20 24 73 65 6c $sel
10410 66 20 70 75 74 73 20 22 46 72 6f 6d 3a 20 5b 73 f puts "From: [s
10420 6d 74 70 2e 66 6f 72 6d 61 74 5f 61 64 64 72 20 mtp.format_addr
10430 7b 2a 7d 24 69 6e 66 6f 28 66 72 6f 6d 29 5d 22 {*}$info(from)]"
10440 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 . set
10450 20 52 46 43 38 32 32 20 7b 25 61 2c 20 25 64 20 RFC822 {%a, %d
10460 25 62 20 25 6d 20 25 59 20 25 48 3a 25 4d 3a 25 %b %m %Y %H:%M:%
10470 53 20 25 7a 7d 0a 20 20 20 20 20 20 20 20 20 20 S %z}.
10480 20 20 24 73 65 6c 66 20 70 75 74 73 20 22 44 61 $self puts "Da
10490 74 65 3a 20 5b 63 6c 6f 63 6b 20 66 6f 72 6d 61 te: [clock forma
104a0 74 20 5b 63 6c 6f 63 6b 20 73 65 63 6f 6e 64 73 t [clock seconds
104b0 5d 20 2d 66 6f 72 6d 61 74 20 24 52 46 43 38 32 ] -format $RFC82
104c0 32 5d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 2]".
104d0 24 73 65 6c 66 20 70 75 74 73 20 22 53 75 62 6a $self puts "Subj
104e0 65 63 74 3a 20 24 69 6e 66 6f 28 73 75 62 6a 65 ect: $info(subje
104f0 63 74 29 22 0a 20 20 20 20 20 20 20 20 20 20 20 ct)".
10500 20 24 73 65 6c 66 20 70 75 74 73 20 22 22 0a 20 $self puts "".
10510 20 20 20 20 20 20 20 20 20 20 20 24 73 65 6c 66 $self
10520 20 6c 6f 67 20 22 3d 3d 3d 20 73 65 6e 64 69 6e log "=== sendin
10530 67 20 62 6f 64 79 22 0a 20 20 20 20 20 20 20 20 g body".
10540 20 20 20 20 66 6f 72 65 61 63 68 20 6c 69 6e 65 foreach line
10550 20 5b 73 70 6c 69 74 20 24 69 6e 66 6f 28 62 6f [split $info(bo
10560 64 79 29 20 5c 6e 5d 20 7b 0a 20 20 20 20 20 20 dy) \n] {.
10570 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 5b 73 if {[s
10580 74 72 69 6e 67 20 69 6e 64 65 78 20 24 6c 69 6e tring index $lin
10590 65 20 30 5d 20 65 71 20 22 2e 22 7d 20 7b 0a 20 e 0] eq "."} {.
105a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
105b0 20 20 20 24 73 6f 63 6b 20 70 75 74 73 20 2d 6e $sock puts -n
105c0 6f 6e 65 77 6c 69 6e 65 20 22 2e 22 0a 20 20 20 onewline ".".
105d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 }.
105e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 $
105f0 73 6f 63 6b 20 70 75 74 73 20 24 6c 69 6e 65 5c sock puts $line\
10600 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a r. }.
10610 20 20 20 20 20 20 20 20 20 20 20 20 24 73 65 6c $sel
10620 66 20 70 75 74 73 20 22 2e 22 0a 20 20 20 20 20 f puts ".".
10630 20 20 20 7d 0a 20 20 20 20 20 20 20 20 24 73 65 }. $se
10640 6c 66 20 77 68 65 6e 6f 6b 20 32 35 30 20 7b 0a lf whenok 250 {.
10650 20 20 20 20 20 20 20 20 20 20 20 20 24 73 65 6c $sel
10660 66 20 70 75 74 73 20 22 51 55 49 54 22 0a 20 20 f puts "QUIT".
10670 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }.
10680 24 73 65 6c 66 20 77 68 65 6e 6f 6b 20 32 32 31 $self whenok 221
10690 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 {. $
106a0 73 65 6c 66 20 6c 6f 67 20 22 3a 3a 3a 20 6f 6b self log "::: ok
106b0 22 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ". }.
106c0 7d 20 65 72 72 6f 72 20 6f 70 74 73 5d 0a 20 20 } error opts].
106d0 20 20 61 6c 61 72 6d 20 30 0a 0a 20 20 20 20 63 alarm 0.. c
106e0 61 74 63 68 20 7b 20 24 73 6f 63 6b 20 63 6c 6f atch { $sock clo
106f0 73 65 20 7d 0a 0a 20 20 20 20 69 66 20 7b 24 72 se }.. if {$r
10700 63 7d 20 7b 0a 20 20 20 20 20 20 20 20 24 73 65 c} {. $se
10710 6c 66 20 6c 6f 67 20 22 21 21 21 20 24 65 72 72 lf log "!!! $err
10720 6f 72 22 0a 20 20 20 20 20 20 20 20 72 65 74 75 or". retu
10730 72 6e 20 24 65 72 72 6f 72 0a 20 20 20 20 7d 0a rn $error. }.
10740 7d 0a 0a 23 20 57 72 69 74 65 20 74 6f 20 74 68 }..# Write to th
10750 65 20 73 6f 63 6b 65 74 20 61 6e 64 20 61 6c 73 e socket and als
10760 6f 20 6c 6f 67 0a 73 6d 74 70 20 6d 65 74 68 6f o log.smtp metho
10770 64 20 70 75 74 73 20 7b 6d 73 67 7d 20 7b 0a 20 d puts {msg} {.
10780 20 20 20 24 73 65 6c 66 20 6c 6f 67 20 22 26 61 $self log "&a
10790 6d 70 3b 67 74 3b 26 61 6d 70 3b 67 74 3b 26 61 mp;gt;&gt;&a
107a0 6d 70 3b 67 74 3b 20 24 6d 73 67 22 0a 20 20 20 mp;gt; $msg".
107b0 20 24 73 6f 63 6b 20 70 75 74 73 20 24 6d 73 67 $sock puts $msg
107c0 5c 72 0a 20 20 20 20 24 73 6f 63 6b 20 66 6c 75 \r. $sock flu
107d0 73 68 0a 7d 0a 0a 23 20 49 6e 74 65 72 6e 61 6c sh.}..# Internal
107e0 20 6d 65 74 68 6f 64 0a 23 0a 23 20 57 68 65 6e method.#.# When
107f0 20 74 68 65 20 73 6f 63 6b 65 74 20 69 73 20 72 the socket is r
10800 65 61 64 61 62 6c 65 2c 20 0a 23 20 72 65 61 64 eadable, .# read
10810 73 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 61 s the response a
10820 6e 64 20 63 68 65 63 6b 73 20 74 68 65 20 63 6f nd checks the co
10830 64 65 2c 20 61 6e 64 20 69 66 20 4f 4b 2c 20 65 de, and if OK, e
10840 78 65 63 75 74 65 20 74 68 65 20 24 73 63 72 69 xecute the $scri
10850 70 74 0a 23 20 49 66 20 6e 6f 74 20 4f 4b 2c 20 pt.# If not OK,
10860 72 65 74 75 72 6e 73 20 77 69 74 68 20 61 20 27 returns with a '
10870 62 72 65 61 6b 27 20 72 65 74 75 72 6e 20 63 6f break' return co
10880 64 65 20 61 6e 64 20 61 20 6d 65 73 73 61 67 65 de and a message
10890 0a 73 6d 74 70 20 6d 65 74 68 6f 64 20 77 68 65 .smtp method whe
108a0 6e 6f 6b 20 7b 63 6f 64 65 20 73 63 72 69 70 74 nok {code script
108b0 7d 20 7b 0a 20 20 20 20 61 6c 61 72 6d 20 24 74 } {. alarm $t
108c0 69 6d 65 6f 75 74 0a 0a 20 20 20 20 69 66 20 7b imeout.. if {
108d0 5b 24 73 6f 63 6b 20 67 65 74 73 20 62 75 66 5d [$sock gets buf]
108e0 20 26 61 6d 70 3b 6c 74 3b 20 30 7d 20 7b 0a 20 &lt; 0} {.
108f0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 63 return -c
10900 6f 64 65 20 62 72 65 61 6b 20 22 45 78 70 65 63 ode break "Expec
10910 74 65 64 20 24 63 6f 64 65 20 62 75 74 20 67 6f ted $code but go
10920 74 20 45 4f 46 22 0a 20 20 20 20 7d 0a 20 20 20 t EOF". }.
10930 20 24 73 65 6c 66 20 6c 6f 67 20 22 26 61 6d 70 $self log "&
10940 3b 6c 74 3b 26 61 6d 70 3b 6c 74 3b 26 61 6d 70 ;lt;&lt;&
10950 3b 6c 74 3b 20 24 62 75 66 22 0a 20 20 20 20 6c ;lt; $buf". l
10960 61 73 73 69 67 6e 20 24 62 75 66 20 72 65 63 76 assign $buf recv
10970 0a 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 . if {[string
10980 20 72 61 6e 67 65 20 24 72 65 63 76 20 30 20 32 range $recv 0 2
10990 5d 20 6e 65 20 24 63 6f 64 65 7d 20 7b 0a 20 20 ] ne $code} {.
109a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 63 6f return -co
109b0 64 65 20 62 72 65 61 6b 20 22 45 78 70 65 63 74 de break "Expect
109c0 65 64 20 24 63 6f 64 65 20 62 75 74 20 67 6f 74 ed $code but got
109d0 3a 20 24 62 75 66 22 0a 20 20 20 20 7d 0a 20 20 : $buf". }.
109e0 20 20 23 20 49 6e 76 6f 6b 65 20 74 68 65 20 73 # Invoke the s
109f0 63 72 69 70 74 20 69 6e 20 74 68 65 20 6f 72 69 cript in the ori
10a00 67 69 6e 61 6c 20 63 61 6c 6c 66 72 61 6d 65 0a ginal callframe.
10a10 20 20 20 20 75 70 6c 65 76 65 6c 20 32 20 24 73 uplevel 2 $s
10a20 63 72 69 70 74 0a 7d 0a 26 6c 74 3b 2f 70 72 65 cript.}.</pre
10a30 26 67 74 3b 0a 0a 26 6c 74 3b 70 26 67 74 3b 53 >..<p>S
10a40 74 65 76 65 20 42 65 6e 6e 65 74 74 20 28 26 6c teve Bennett (&l
10a50 74 3b 61 20 68 72 65 66 3d 22 26 61 6d 70 3b 23 t;a href="&#
10a60 31 30 39 3b 26 61 6d 70 3b 23 30 39 37 3b 26 61 109;&#097;&a
10a70 6d 70 3b 23 31 30 35 3b 26 61 6d 70 3b 23 31 30 mp;#105;&#10
10a80 38 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 8;&#116;&
10a90 3b 23 31 31 31 3b 3a 26 61 6d 70 3b 23 31 31 35 ;#111;:&#115
10aa0 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 3b ;&#116;&
10ab0 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 3b 26 #101;&#118;&
10ac0 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 30 amp;#101;&#0
10ad0 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 61 6d 98;&#064;&am
10ae0 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 31 31 p;#119;&#111
10af0 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 3b ;&#114;&
10b00 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 3b 26 #107;&#119;&
10b10 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 31 amp;#097;&#1
10b20 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 14;&#101;&am
10b30 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 31 30 p;#046;&#110
10b40 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b ;&#101;&
10b50 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 3b 26 #116;&#046;&
10b60 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 31 amp;#097;&#1
10b70 31 37 3b 22 26 67 74 3b 26 61 6d 70 3b 23 31 31 17;">&#11
10b80 35 3b 26 61 6d 70 3b 23 31 31 36 3b 26 61 6d 70 5;&#116;&
10b90 3b 23 31 30 31 3b 26 61 6d 70 3b 23 31 31 38 3b ;#101;&#118;
10ba0 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 3b 23 &#101;&#
10bb0 30 39 38 3b 26 61 6d 70 3b 23 30 36 34 3b 26 61 098;&#064;&a
10bc0 6d 70 3b 23 31 31 39 3b 26 61 6d 70 3b 23 31 31 mp;#119;&#11
10bd0 31 3b 26 61 6d 70 3b 23 31 31 34 3b 26 61 6d 70 1;&#114;&
10be0 3b 23 31 30 37 3b 26 61 6d 70 3b 23 31 31 39 3b ;#107;&#119;
10bf0 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 &#097;&#
10c00 31 31 34 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 114;&#101;&a
10c10 6d 70 3b 23 30 34 36 3b 26 61 6d 70 3b 23 31 31 mp;#046;&#11
10c20 30 3b 26 61 6d 70 3b 23 31 30 31 3b 26 61 6d 70 0;&#101;&
10c30 3b 23 31 31 36 3b 26 61 6d 70 3b 23 30 34 36 3b ;#116;&#046;
10c40 26 61 6d 70 3b 23 30 39 37 3b 26 61 6d 70 3b 23 &#097;&#
10c50 31 31 37 3b 26 6c 74 3b 2f 61 26 67 74 3b 29 26 117;</a>)&
10c60 6c 74 3b 2f 70 26 67 74 3b 0a 3c 2f 63 6f 6e 74 lt;/p>.</cont
10c70 65 6e 74 3e 0a 20 20 3c 2f 65 6e 74 72 79 3e 0a ent>. </entry>.
10c80 3c 2f 66 65 65 64 3e 0a </feed>.