Tcl Source Code

Hex Artifact Content
Login

Artifact ffc42576b37b827f0c4f6e6eccf3b4e648e0b953:

Attachment "tip137.patch" to ticket [742683ffff] added by dgp 2003-09-06 04:29:30.
0000: 49 6e 64 65 78 3a 20 64 6f 63 2f 46 69 6c 65 53  Index: doc/FileS
0010: 79 73 74 65 6d 2e 33 0a 3d 3d 3d 3d 3d 3d 3d 3d  ystem.3.========
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20  ===========.RCS 
0060: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74  file: /cvsroot/t
0070: 63 6c 2f 74 63 6c 2f 64 6f 63 2f 46 69 6c 65 53  cl/tcl/doc/FileS
0080: 79 73 74 65 6d 2e 33 2c 76 0a 72 65 74 72 69 65  ystem.3,v.retrie
0090: 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e  ving revision 1.
00a0: 33 34 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 33  34.diff -u -r1.3
00b0: 34 20 46 69 6c 65 53 79 73 74 65 6d 2e 33 0a 2d  4 FileSystem.3.-
00c0: 2d 2d 20 64 6f 63 2f 46 69 6c 65 53 79 73 74 65  -- doc/FileSyste
00d0: 6d 2e 33 09 32 38 20 4a 75 6c 20 32 30 30 33 20  m.3.28 Jul 2003 
00e0: 31 32 3a 31 36 3a 30 32 20 2d 30 30 30 30 09 31  12:16:02 -0000.1
00f0: 2e 33 34 0a 2b 2b 2b 20 64 6f 63 2f 46 69 6c 65  .34.+++ doc/File
0100: 53 79 73 74 65 6d 2e 33 09 35 20 53 65 70 20 32  System.3.5 Sep 2
0110: 30 30 33 20 32 31 3a 32 33 3a 31 37 20 2d 30 30  003 21:23:17 -00
0120: 30 30 0a 40 40 20 2d 32 38 2c 31 30 20 2b 32 38  00.@@ -28,10 +28
0130: 2c 31 30 20 40 40 0a 20 5c 66 42 54 63 6c 5f 46  ,10 @@. \fBTcl_F
0140: 53 4d 6f 75 6e 74 73 43 68 61 6e 67 65 64 5c 66  SMountsChanged\f
0150: 52 28 5c 66 49 66 73 50 74 72 5c 66 52 29 0a 20  R(\fIfsPtr\fR). 
0160: 2e 73 70 0a 20 54 63 6c 5f 46 69 6c 65 73 79 73  .sp. Tcl_Filesys
0170: 74 65 6d 2a 0a 2d 5c 66 42 54 63 6c 5f 46 53 47  tem*.-\fBTcl_FSG
0180: 65 74 46 69 6c 65 53 79 73 74 65 6d 46 6f 72 50  etFileSystemForP
0190: 61 74 68 5c 66 52 28 5c 66 49 70 61 74 68 4f 62  ath\fR(\fIpathOb
01a0: 6a 50 74 72 5c 66 52 29 0a 2b 5c 66 42 54 63 6c  jPtr\fR).+\fBTcl
01b0: 5f 46 53 47 65 74 46 69 6c 65 53 79 73 74 65 6d  _FSGetFileSystem
01c0: 46 6f 72 50 61 74 68 5c 66 52 28 5c 66 49 70 61  ForPath\fR(\fIpa
01d0: 74 68 50 74 72 5c 66 52 29 0a 20 2e 73 70 0a 20  thPtr\fR). .sp. 
01e0: 54 63 6c 5f 50 61 74 68 54 79 70 65 0a 2d 5c 66  Tcl_PathType.-\f
01f0: 42 54 63 6c 5f 46 53 47 65 74 50 61 74 68 54 79  BTcl_FSGetPathTy
0200: 70 65 5c 66 52 28 5c 66 49 70 61 74 68 4f 62 6a  pe\fR(\fIpathObj
0210: 50 74 72 5c 66 52 29 0a 2b 5c 66 42 54 63 6c 5f  Ptr\fR).+\fBTcl_
0220: 46 53 47 65 74 50 61 74 68 54 79 70 65 5c 66 52  FSGetPathType\fR
0230: 28 5c 66 49 70 61 74 68 50 74 72 5c 66 52 29 0a  (\fIpathPtr\fR).
0240: 20 2e 73 70 0a 20 69 6e 74 0a 20 5c 66 42 54 63   .sp. int. \fBTc
0250: 6c 5f 46 53 43 6f 70 79 46 69 6c 65 5c 66 52 28  l_FSCopyFile\fR(
0260: 5c 66 49 73 72 63 50 61 74 68 50 74 72 2c 20 64  \fIsrcPathPtr, d
0270: 65 73 74 50 61 74 68 50 74 72 5c 66 52 29 0a 40  estPathPtr\fR).@
0280: 40 20 2d 35 34 2c 36 20 2b 35 34 2c 31 31 20 40  @ -54,6 +54,11 @
0290: 40 0a 20 54 63 6c 5f 4f 62 6a 2a 0a 20 5c 66 42  @. Tcl_Obj*. \fB
02a0: 54 63 6c 5f 46 53 4c 69 73 74 56 6f 6c 75 6d 65  Tcl_FSListVolume
02b0: 73 5c 66 52 28 5c 66 49 76 6f 69 64 5c 66 52 29  s\fR(\fIvoid\fR)
02c0: 0a 20 2e 73 70 0a 2b 2e 56 53 20 38 2e 35 0a 2b  . .sp.+.VS 8.5.+
02d0: 69 6e 74 0a 2b 5c 66 42 54 63 6c 5f 46 53 45 76  int.+\fBTcl_FSEv
02e0: 61 6c 46 69 6c 65 45 78 5c 66 52 28 5c 66 49 69  alFileEx\fR(\fIi
02f0: 6e 74 65 72 70 2c 20 70 61 74 68 50 74 72 2c 20  nterp, pathPtr, 
0300: 65 6e 63 6f 64 69 6e 67 4e 61 6d 65 5c 66 52 29  encodingName\fR)
0310: 0a 2b 2e 56 45 20 38 2e 35 0a 2b 2e 73 70 0a 20  .+.VE 8.5.+.sp. 
0320: 69 6e 74 0a 20 5c 66 42 54 63 6c 5f 46 53 45 76  int. \fBTcl_FSEv
0330: 61 6c 46 69 6c 65 5c 66 52 28 5c 66 49 69 6e 74  alFile\fR(\fIint
0340: 65 72 70 2c 20 70 61 74 68 50 74 72 5c 66 52 29  erp, pathPtr\fR)
0350: 0a 20 2e 73 70 0a 40 40 20 2d 31 33 38 2c 37 20  . .sp.@@ -138,7 
0360: 2b 31 34 33 2c 37 20 40 40 0a 20 54 63 6c 5f 53  +143,7 @@. Tcl_S
0370: 74 61 74 42 75 66 2a 0a 20 5c 66 42 54 63 6c 5f  tatBuf*. \fBTcl_
0380: 41 6c 6c 6f 63 53 74 61 74 42 75 66 5c 66 52 28  AllocStatBuf\fR(
0390: 29 0a 20 2e 53 48 20 41 52 47 55 4d 45 4e 54 53  ). .SH ARGUMENTS
03a0: 0a 2d 2e 41 53 20 54 63 6c 5f 46 69 6c 65 73 79  .-.AS Tcl_Filesy
03b0: 73 74 65 6d 20 2a 66 73 50 74 72 20 69 6e 0a 2b  stem *fsPtr in.+
03c0: 2e 41 53 20 22 43 4f 4e 53 54 20 63 68 61 72 22  .AS "CONST char"
03d0: 20 2a 65 6e 63 6f 64 69 6e 67 4e 61 6d 65 20 69   *encodingName i
03e0: 6e 0a 20 2e 41 50 20 54 63 6c 5f 46 69 6c 65 73  n. .AP Tcl_Files
03f0: 79 73 74 65 6d 20 2a 66 73 50 74 72 20 69 6e 0a  ystem *fsPtr in.
0400: 20 50 6f 69 6e 74 73 20 74 6f 20 61 20 73 74 72   Points to a str
0410: 75 63 74 75 72 65 20 63 6f 6e 74 61 69 6e 69 6e  ucture containin
0420: 67 20 74 68 65 20 61 64 64 72 65 73 73 65 73 20  g the addresses 
0430: 6f 66 20 70 72 6f 63 65 64 75 72 65 73 20 74 68  of procedures th
0440: 61 74 0a 20 63 61 6e 20 62 65 20 63 61 6c 6c 65  at. can be calle
0450: 64 20 74 6f 20 70 65 72 66 6f 72 6d 20 74 68 65  d to perform the
0460: 20 76 61 72 69 6f 75 73 20 66 69 6c 65 73 79 73   various filesys
0470: 74 65 6d 20 6f 70 65 72 61 74 69 6f 6e 73 2e 0a  tem operations..
0480: 40 40 20 2d 31 35 32 2c 36 20 2b 31 35 37 2c 39  @@ -152,6 +157,9
0490: 20 40 40 0a 20 2e 41 50 20 54 63 6c 5f 4f 62 6a   @@. .AP Tcl_Obj
04a0: 20 2a 64 65 73 74 50 61 74 68 50 74 72 20 69 6e   *destPathPtr in
04b0: 0a 20 41 73 20 66 6f 72 20 5c 66 42 70 61 74 68  . As for \fBpath
04c0: 50 74 72 5c 66 52 2c 20 62 75 74 20 75 73 65 64  Ptr\fR, but used
04d0: 20 66 6f 72 20 74 68 65 20 64 65 73 74 69 6e 61   for the destina
04e0: 74 69 6f 6e 20 66 69 6c 65 6e 61 6d 65 20 66 6f  tion filename fo
04f0: 72 20 61 20 63 6f 70 79 20 6f 72 0a 20 72 65 6e  r a copy or. ren
0500: 61 6d 65 20 6f 70 65 72 61 74 69 6f 6e 2e 0a 2b  ame operation..+
0510: 2e 41 50 20 22 43 4f 4e 53 54 20 63 68 61 72 22  .AP "CONST char"
0520: 20 2a 65 6e 63 6f 64 69 6e 67 4e 61 6d 65 20 69   *encodingName i
0530: 6e 0a 2b 54 68 65 20 65 6e 63 6f 64 69 6e 67 20  n.+The encoding 
0540: 6f 66 20 74 68 65 20 64 61 74 61 20 73 74 6f 72  of the data stor
0550: 65 64 20 69 6e 20 74 68 65 0a 2b 66 69 6c 65 20  ed in the.+file 
0560: 69 64 65 6e 74 69 66 69 65 64 20 62 79 20 5c 66  identified by \f
0570: 42 70 61 74 68 50 74 72 5c 66 52 20 61 6e 64 20  BpathPtr\fR and 
0580: 74 6f 20 62 65 20 65 76 61 6c 75 74 65 64 2e 0a  to be evaluted..
0590: 20 2e 41 50 20 22 43 4f 4e 53 54 20 63 68 61 72   .AP "CONST char
05a0: 22 20 2a 70 61 74 74 65 72 6e 20 69 6e 0a 20 4f  " *pattern in. O
05b0: 6e 6c 79 20 66 69 6c 65 73 20 6f 72 20 64 69 72  nly files or dir
05c0: 65 63 74 6f 72 69 65 73 20 6d 61 74 63 68 69 6e  ectories matchin
05d0: 67 20 74 68 69 73 20 70 61 74 74 65 72 6e 20 77  g this pattern w
05e0: 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64 20  ill be returned 
05f0: 62 79 0a 20 5c 66 42 54 63 6c 5f 46 53 4d 61 74  by. \fBTcl_FSMat
0600: 63 68 49 6e 44 69 72 65 63 74 6f 72 79 5c 66 52  chInDirectory\fR
0610: 2e 0a 40 40 20 2d 33 31 34 2c 31 35 20 2b 33 32  ..@@ -314,15 +32
0620: 32 2c 32 33 20 40 40 0a 20 61 63 63 75 6d 75 6c  2,23 @@. accumul
0630: 61 74 65 73 20 74 68 65 20 72 65 74 75 72 6e 20  ates the return 
0640: 76 61 6c 75 65 73 20 69 6e 20 61 20 6c 69 73 74  values in a list
0650: 20 77 68 69 63 68 20 69 73 20 72 65 74 75 72 6e   which is return
0660: 65 64 20 74 6f 20 74 68 65 0a 20 63 61 6c 6c 65  ed to the. calle
0670: 72 20 28 77 69 74 68 20 61 20 72 65 66 43 6f 75  r (with a refCou
0680: 6e 74 20 6f 66 20 30 29 2e 0a 20 2e 50 50 0a 2d  nt of 0).. .PP.-
0690: 5c 66 42 54 63 6c 5f 46 53 45 76 61 6c 46 69 6c  \fBTcl_FSEvalFil
06a0: 65 5c 66 52 20 72 65 61 64 73 20 74 68 65 20 66  e\fR reads the f
06b0: 69 6c 65 20 67 69 76 65 6e 20 62 79 20 5c 66 49  ile given by \fI
06c0: 70 61 74 68 50 74 72 5c 66 52 20 61 6e 64 20 65  pathPtr\fR and e
06d0: 76 61 6c 75 61 74 65 73 0a 2b 2e 56 53 20 38 2e  valuates.+.VS 8.
06e0: 35 0a 2b 5c 66 42 54 63 6c 5f 46 53 45 76 61 6c  5.+\fBTcl_FSEval
06f0: 46 69 6c 65 45 78 5c 66 52 20 72 65 61 64 73 20  FileEx\fR reads 
0700: 74 68 65 20 66 69 6c 65 20 67 69 76 65 6e 20 62  the file given b
0710: 79 20 5c 66 49 70 61 74 68 50 74 72 5c 66 52 20  y \fIpathPtr\fR 
0720: 75 73 69 6e 67 0a 2b 74 68 65 20 65 6e 63 6f 64  using.+the encod
0730: 69 6e 67 20 69 64 65 6e 74 69 66 69 65 64 20 62  ing identified b
0740: 79 20 5c 66 42 65 6e 63 6f 64 69 6e 67 4e 61 6d  y \fBencodingNam
0750: 65 5c 66 52 20 61 6e 64 20 65 76 61 6c 75 61 74  e\fR and evaluat
0760: 65 73 0a 20 69 74 73 20 63 6f 6e 74 65 6e 74 73  es. its contents
0770: 20 61 73 20 61 20 54 63 6c 20 73 63 72 69 70 74   as a Tcl script
0780: 2e 20 20 49 74 20 72 65 74 75 72 6e 73 20 74 68  .  It returns th
0790: 65 20 73 61 6d 65 20 69 6e 66 6f 72 6d 61 74 69  e same informati
07a0: 6f 6e 20 61 73 0a 20 5c 66 42 54 63 6c 5f 45 76  on as. \fBTcl_Ev
07b0: 61 6c 4f 62 6a 45 78 5c 66 52 2e 0a 2b 49 66 20  alObjEx\fR..+If 
07c0: 5c 66 42 65 6e 63 6f 64 69 6e 67 4e 61 6d 65 5c  \fBencodingName\
07d0: 66 52 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65 20  fR is NULL, the 
07e0: 73 79 73 74 65 6d 20 65 6e 63 6f 64 69 6e 67 20  system encoding 
07f0: 69 73 20 75 73 65 64 20 66 6f 72 0a 2b 72 65 61  is used for.+rea
0800: 64 69 6e 67 20 74 68 65 20 66 69 6c 65 20 63 6f  ding the file co
0810: 6e 74 65 6e 74 73 2e 0a 20 49 66 20 74 68 65 20  ntents.. If the 
0820: 66 69 6c 65 20 63 6f 75 6c 64 6e 27 74 20 62 65  file couldn't be
0830: 20 72 65 61 64 20 74 68 65 6e 20 61 20 54 63 6c   read then a Tcl
0840: 20 65 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e   error is return
0850: 65 64 20 74 6f 20 64 65 73 63 72 69 62 65 0a 20  ed to describe. 
0860: 77 68 79 20 74 68 65 20 66 69 6c 65 20 63 6f 75  why the file cou
0870: 6c 64 6e 27 74 20 62 65 20 72 65 61 64 2e 0a 20  ldn't be read.. 
0880: 54 68 65 20 65 6f 66 63 68 61 72 20 66 6f 72 20  The eofchar for 
0890: 66 69 6c 65 73 20 69 73 20 27 5c 5c 33 32 27 20  files is '\\32' 
08a0: 28 5e 5a 29 20 66 6f 72 20 61 6c 6c 20 70 6c 61  (^Z) for all pla
08b0: 74 66 6f 72 6d 73 2e 0a 20 49 66 20 79 6f 75 20  tforms.. If you 
08c0: 72 65 71 75 69 72 65 20 61 20 60 60 5e 5a 27 27  require a ``^Z''
08d0: 20 69 6e 20 63 6f 64 65 20 66 6f 72 20 73 74 72   in code for str
08e0: 69 6e 67 20 63 6f 6d 70 61 72 69 73 6f 6e 2c 20  ing comparison, 
08f0: 79 6f 75 20 63 61 6e 20 75 73 65 0a 20 60 60 5c  you can use. ``\
0900: 5c 30 33 32 27 27 20 6f 72 20 60 60 5c 5c 75 30  \032'' or ``\\u0
0910: 30 31 61 27 27 2c 20 77 68 69 63 68 20 77 69 6c  01a'', which wil
0920: 6c 20 62 65 20 73 61 66 65 6c 79 20 73 75 62 73  l be safely subs
0930: 74 69 74 75 74 65 64 20 62 79 20 74 68 65 20 54  tituted by the T
0940: 63 6c 0a 20 69 6e 74 65 72 70 72 65 74 65 72 20  cl. interpreter 
0950: 69 6e 74 6f 20 60 60 5e 5a 27 27 2e 0a 2b 5c 66  into ``^Z''..+\f
0960: 42 54 63 6c 5f 46 53 45 76 61 6c 46 69 6c 65 5c  BTcl_FSEvalFile\
0970: 66 52 20 69 73 20 61 20 73 69 6d 70 6c 65 72 20  fR is a simpler 
0980: 76 65 72 73 69 6f 6e 20 6f 66 0a 2b 5c 66 42 54  version of.+\fBT
0990: 63 6c 5f 46 53 45 76 61 6c 46 69 6c 65 45 78 5c  cl_FSEvalFileEx\
09a0: 66 52 20 74 68 61 74 20 61 6c 77 61 79 73 20 75  fR that always u
09b0: 73 65 73 20 74 68 65 20 73 79 73 74 65 6d 20 65  ses the system e
09c0: 6e 63 6f 64 69 6e 67 0a 2b 77 68 65 6e 20 72 65  ncoding.+when re
09d0: 61 64 69 6e 67 20 74 68 65 20 66 69 6c 65 2e 0a  ading the file..
09e0: 2b 2e 56 45 20 38 2e 35 0a 20 2e 50 50 0a 20 5c  +.VE 8.5. .PP. \
09f0: 66 42 54 63 6c 5f 46 53 4c 6f 61 64 46 69 6c 65  fBTcl_FSLoadFile
0a00: 5c 66 52 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20  \fR dynamically 
0a10: 6c 6f 61 64 73 20 61 20 62 69 6e 61 72 79 20 63  loads a binary c
0a20: 6f 64 65 20 66 69 6c 65 20 69 6e 74 6f 20 6d 65  ode file into me
0a30: 6d 6f 72 79 20 61 6e 64 0a 20 72 65 74 75 72 6e  mory and. return
0a40: 73 20 74 68 65 20 61 64 64 72 65 73 73 65 73 20  s the addresses 
0a50: 6f 66 20 74 77 6f 20 70 72 6f 63 65 64 75 72 65  of two procedure
0a60: 73 20 77 69 74 68 69 6e 20 74 68 61 74 20 66 69  s within that fi
0a70: 6c 65 2c 20 69 66 20 74 68 65 79 20 61 72 65 0a  le, if they are.
0a80: 49 6e 64 65 78 3a 20 64 6f 63 2f 73 6f 75 72 63  Index: doc/sourc
0a90: 65 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  e.n.============
0aa0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0ab0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0ac0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0ad0: 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65  =======.RCS file
0ae0: 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74  : /cvsroot/tcl/t
0af0: 63 6c 2f 64 6f 63 2f 73 6f 75 72 63 65 2e 6e 2c  cl/doc/source.n,
0b00: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76  v.retrieving rev
0b10: 69 73 69 6f 6e 20 31 2e 35 0a 64 69 66 66 20 2d  ision 1.5.diff -
0b20: 75 20 2d 72 31 2e 35 20 73 6f 75 72 63 65 2e 6e  u -r1.5 source.n
0b30: 0a 2d 2d 2d 20 64 6f 63 2f 73 6f 75 72 63 65 2e  .--- doc/source.
0b40: 6e 09 37 20 53 65 70 20 32 30 30 30 20 31 34 3a  n.7 Sep 2000 14:
0b50: 32 37 3a 35 31 20 2d 30 30 30 30 09 31 2e 35 0a  27:51 -0000.1.5.
0b60: 2b 2b 2b 20 64 6f 63 2f 73 6f 75 72 63 65 2e 6e  +++ doc/source.n
0b70: 09 35 20 53 65 70 20 32 30 30 33 20 32 31 3a 32  .5 Sep 2003 21:2
0b80: 33 3a 31 37 20 2d 30 30 30 30 0a 40 40 20 2d 31  3:17 -0000.@@ -1
0b90: 37 2c 36 20 2b 31 37 2c 31 30 20 40 40 0a 20 2e  7,6 +17,10 @@. .
0ba0: 53 48 20 53 59 4e 4f 50 53 49 53 0a 20 5c 66 42  SH SYNOPSIS. \fB
0bb0: 73 6f 75 72 63 65 20 5c 66 49 66 69 6c 65 4e 61  source \fIfileNa
0bc0: 6d 65 5c 66 52 0a 20 2e 73 70 0a 2b 2e 56 53 20  me\fR. .sp.+.VS 
0bd0: 38 2e 35 0a 2b 5c 66 42 73 6f 75 72 63 65 5c 66  8.5.+\fBsource\f
0be0: 52 20 5c 66 42 5c 2d 65 6e 63 6f 64 69 6e 67 20  R \fB\-encoding 
0bf0: 5c 66 49 65 6e 63 6f 64 69 6e 67 4e 61 6d 65 20  \fIencodingName 
0c00: 66 69 6c 65 4e 61 6d 65 5c 66 52 0a 2b 2e 56 45  fileName\fR.+.VE
0c10: 20 38 2e 35 0a 2b 2e 73 70 0a 20 5c 66 42 73 6f   8.5.+.sp. \fBso
0c20: 75 72 63 65 5c 66 52 20 5c 66 42 5c 2d 72 73 72  urce\fR \fB\-rsr
0c30: 63 20 5c 66 49 72 65 73 6f 75 72 63 65 4e 61 6d  c \fIresourceNam
0c40: 65 20 5c 66 52 3f 5c 66 49 66 69 6c 65 4e 61 6d  e \fR?\fIfileNam
0c50: 65 5c 66 52 3f 0a 20 2e 73 70 0a 20 5c 66 42 73  e\fR?. .sp. \fBs
0c60: 6f 75 72 63 65 5c 66 52 20 5c 66 42 5c 2d 72 73  ource\fR \fB\-rs
0c70: 72 63 69 64 20 5c 66 49 72 65 73 6f 75 72 63 65  rcid \fIresource
0c80: 49 64 20 5c 66 52 3f 5c 66 49 66 69 6c 65 4e 61  Id \fR?\fIfileNa
0c90: 6d 65 5c 66 52 3f 0a 40 40 20 2d 33 33 2c 37 20  me\fR?.@@ -33,7 
0ca0: 2b 33 37 2c 36 20 40 40 0a 20 72 65 6d 61 69 6e  +37,6 @@. remain
0cb0: 64 65 72 20 6f 66 20 74 68 65 20 66 69 6c 65 20  der of the file 
0cc0: 77 69 6c 6c 20 62 65 20 73 6b 69 70 70 65 64 20  will be skipped 
0cd0: 61 6e 64 20 74 68 65 20 5c 66 42 73 6f 75 72 63  and the \fBsourc
0ce0: 65 5c 66 52 20 63 6f 6d 6d 61 6e 64 0a 20 77 69  e\fR command. wi
0cf0: 6c 6c 20 72 65 74 75 72 6e 20 6e 6f 72 6d 61 6c  ll return normal
0d00: 6c 79 20 77 69 74 68 20 74 68 65 20 72 65 73 75  ly with the resu
0d10: 6c 74 20 66 72 6f 6d 20 74 68 65 20 5c 66 42 72  lt from the \fBr
0d20: 65 74 75 72 6e 5c 66 52 20 63 6f 6d 6d 61 6e 64  eturn\fR command
0d30: 2e 0a 20 2e 50 50 0a 2d 2e 56 53 20 38 2e 34 0a  .. .PP.-.VS 8.4.
0d40: 20 54 68 65 20 65 6e 64 2d 6f 66 2d 66 69 6c 65   The end-of-file
0d50: 20 63 68 61 72 61 63 74 65 72 20 66 6f 72 20 66   character for f
0d60: 69 6c 65 73 20 69 73 20 27 5c 5c 33 32 27 20 28  iles is '\\32' (
0d70: 5e 5a 29 20 66 6f 72 20 61 6c 6c 20 70 6c 61 74  ^Z) for all plat
0d80: 66 6f 72 6d 73 2e 0a 20 54 68 65 20 73 6f 75 72  forms.. The sour
0d90: 63 65 20 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c 20  ce command will 
0da0: 72 65 61 64 20 66 69 6c 65 73 20 75 70 20 74 6f  read files up to
0db0: 20 74 68 69 73 20 63 68 61 72 61 63 74 65 72 2e   this character.
0dc0: 20 20 54 68 69 73 0a 20 72 65 73 74 72 69 63 74    This. restrict
0dd0: 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 65 78 69  ion does not exi
0de0: 73 74 20 66 6f 72 20 74 68 65 20 5c 66 42 72 65  st for the \fBre
0df0: 61 64 5c 66 52 20 6f 72 20 5c 66 42 67 65 74 73  ad\fR or \fBgets
0e00: 5c 66 52 20 63 6f 6d 6d 61 6e 64 73 2c 0a 40 40  \fR commands,.@@
0e10: 20 2d 34 31 2c 37 20 2b 34 34 2c 31 32 20 40 40   -41,7 +44,12 @@
0e20: 0a 20 49 66 20 79 6f 75 20 72 65 71 75 69 72 65  . If you require
0e30: 20 61 20 60 60 5e 5a 27 27 20 69 6e 20 63 6f 64   a ``^Z'' in cod
0e40: 65 20 66 6f 72 20 73 74 72 69 6e 67 20 63 6f 6d  e for string com
0e50: 70 61 72 69 73 6f 6e 2c 20 79 6f 75 20 63 61 6e  parison, you can
0e60: 20 75 73 65 0a 20 60 60 5c 5c 30 33 32 27 27 20   use. ``\\032'' 
0e70: 6f 72 20 60 60 5c 5c 75 30 30 31 61 27 27 2c 20  or ``\\u001a'', 
0e80: 77 68 69 63 68 20 77 69 6c 6c 20 62 65 20 73 61  which will be sa
0e90: 66 65 6c 79 20 73 75 62 73 74 69 74 75 74 65 64  fely substituted
0ea0: 20 62 79 20 74 68 65 20 54 63 6c 0a 20 69 6e 74   by the Tcl. int
0eb0: 65 72 70 72 65 74 65 72 20 69 6e 74 6f 20 60 60  erpreter into ``
0ec0: 5e 5a 27 27 2e 0a 2d 2e 56 45 20 38 2e 34 0a 2b  ^Z''..-.VE 8.4.+
0ed0: 2e 50 50 0a 2b 2e 56 53 20 38 2e 35 0a 2b 54 68  .PP.+.VS 8.5.+Th
0ee0: 65 20 5c 66 42 2d 65 6e 63 6f 64 69 6e 67 5c 66  e \fB-encoding\f
0ef0: 52 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  R option is used
0f00: 20 74 6f 20 73 70 65 63 69 66 79 20 74 68 65 20   to specify the 
0f10: 65 6e 63 6f 64 69 6e 67 20 6f 66 0a 2b 74 68 65  encoding of.+the
0f20: 20 64 61 74 61 20 73 74 6f 72 65 64 20 69 6e 20   data stored in 
0f30: 5c 66 49 66 69 6c 65 4e 61 6d 65 5c 66 52 2e 20  \fIfileName\fR. 
0f40: 20 57 68 65 6e 20 74 68 65 20 5c 66 42 2d 65 6e   When the \fB-en
0f50: 63 6f 64 69 6e 67 5c 66 52 20 6f 70 74 69 6f 6e  coding\fR option
0f60: 0a 2b 69 73 20 6f 6d 69 74 74 65 64 2c 20 74 68  .+is omitted, th
0f70: 65 20 73 79 73 74 65 6d 20 65 6e 63 6f 64 69 6e  e system encodin
0f80: 67 20 69 73 20 61 73 73 75 6d 65 64 2e 0a 2b 2e  g is assumed..+.
0f90: 56 45 20 38 2e 35 0a 20 2e 50 50 0a 20 54 68 65  VE 8.5. .PP. The
0fa0: 20 5c 66 49 5c 2d 72 73 72 63 5c 66 52 20 61 6e   \fI\-rsrc\fR an
0fb0: 64 20 5c 66 49 5c 2d 72 73 72 63 69 64 5c 66 52  d \fI\-rsrcid\fR
0fc0: 20 66 6f 72 6d 73 20 6f 66 20 74 68 69 73 20 63   forms of this c
0fd0: 6f 6d 6d 61 6e 64 20 61 72 65 20 6f 6e 6c 79 0a  ommand are only.
0fe0: 20 61 76 61 69 6c 61 62 6c 65 20 6f 6e 20 4d 61   available on Ma
0ff0: 63 69 6e 74 6f 73 68 20 63 6f 6d 70 75 74 65 72  cintosh computer
1000: 73 2e 20 20 54 68 65 73 65 20 76 65 72 73 69 6f  s.  These versio
1010: 6e 73 20 6f 66 20 74 68 65 20 63 6f 6d 6d 61 6e  ns of the comman
1020: 64 0a 40 40 20 2d 35 32 2c 37 20 2b 36 30 2c 37  d.@@ -52,7 +60,7
1030: 20 40 40 0a 20 73 70 65 63 69 66 79 20 74 68 65   @@. specify the
1040: 20 5c 66 49 66 69 6c 65 4e 61 6d 65 5c 66 52 20   \fIfileName\fR 
1050: 77 68 65 72 65 20 74 68 65 20 5c 66 42 54 45 58  where the \fBTEX
1060: 54 5c 66 52 20 72 65 73 6f 75 72 63 65 20 63 61  T\fR resource ca
1070: 6e 20 62 65 20 66 6f 75 6e 64 2e 0a 20 0a 20 2e  n be found.. . .
1080: 53 48 20 22 53 45 45 20 41 4c 53 4f 22 0a 2d 66  SH "SEE ALSO".-f
1090: 69 6c 65 28 6e 29 2c 20 63 64 28 6e 29 0a 2b 66  ile(n), cd(n).+f
10a0: 69 6c 65 28 6e 29 2c 20 63 64 28 6e 29 2c 20 65  ile(n), cd(n), e
10b0: 6e 63 6f 64 69 6e 67 28 6e 29 0a 20 0a 20 2e 53  ncoding(n). . .S
10c0: 48 20 4b 45 59 57 4f 52 44 53 0a 20 66 69 6c 65  H KEYWORDS. file
10d0: 2c 20 73 63 72 69 70 74 0a 49 6e 64 65 78 3a 20  , script.Index: 
10e0: 64 6f 63 2f 74 63 6c 73 68 2e 31 0a 3d 3d 3d 3d  doc/tclsh.1.====
10f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1100: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1110: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1120: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a  ===============.
1130: 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f  RCS file: /cvsro
1140: 6f 74 2f 74 63 6c 2f 74 63 6c 2f 64 6f 63 2f 74  ot/tcl/tcl/doc/t
1150: 63 6c 73 68 2e 31 2c 76 0a 72 65 74 72 69 65 76  clsh.1,v.retriev
1160: 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 38  ing revision 1.8
1170: 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 38 20 74  .diff -u -r1.8 t
1180: 63 6c 73 68 2e 31 0a 2d 2d 2d 20 64 6f 63 2f 74  clsh.1.--- doc/t
1190: 63 6c 73 68 2e 31 09 31 33 20 46 65 62 20 32 30  clsh.1.13 Feb 20
11a0: 30 33 20 32 32 3a 30 33 3a 33 34 20 2d 30 30 30  03 22:03:34 -000
11b0: 30 09 31 2e 38 0a 2b 2b 2b 20 64 6f 63 2f 74 63  0.1.8.+++ doc/tc
11c0: 6c 73 68 2e 31 09 35 20 53 65 70 20 32 30 30 33  lsh.1.5 Sep 2003
11d0: 20 32 31 3a 32 33 3a 31 37 20 2d 30 30 30 30 0a   21:23:17 -0000.
11e0: 40 40 20 2d 31 34 2c 37 20 2b 31 34 2c 37 20 40  @@ -14,7 +14,7 @
11f0: 40 0a 20 2e 53 48 20 4e 41 4d 45 0a 20 74 63 6c  @. .SH NAME. tcl
1200: 73 68 20 5c 2d 20 53 69 6d 70 6c 65 20 73 68 65  sh \- Simple she
1210: 6c 6c 20 63 6f 6e 74 61 69 6e 69 6e 67 20 54 63  ll containing Tc
1220: 6c 20 69 6e 74 65 72 70 72 65 74 65 72 0a 20 2e  l interpreter. .
1230: 53 48 20 53 59 4e 4f 50 53 49 53 0a 2d 5c 66 42  SH SYNOPSIS.-\fB
1240: 74 63 6c 73 68 5c 66 52 20 3f 5c 66 49 66 69 6c  tclsh\fR ?\fIfil
1250: 65 4e 61 6d 65 20 61 72 67 20 61 72 67 20 2e 2e  eName arg arg ..
1260: 2e 5c 66 52 3f 0a 2b 5c 66 42 74 63 6c 73 68 5c  .\fR?.+\fBtclsh\
1270: 66 52 20 3f 2d 65 6e 63 6f 64 69 6e 67 20 5c 66  fR ?-encoding \f
1280: 49 6e 61 6d 65 5c 66 52 3f 20 3f 5c 66 49 66 69  Iname\fR? ?\fIfi
1290: 6c 65 4e 61 6d 65 20 61 72 67 20 61 72 67 20 2e  leName arg arg .
12a0: 2e 2e 5c 66 52 3f 0a 20 2e 42 45 0a 20 0a 20 2e  ..\fR?. .BE. . .
12b0: 53 48 20 44 45 53 43 52 49 50 54 49 4f 4e 0a 40  SH DESCRIPTION.@
12c0: 40 20 2d 32 38 2c 31 38 20 2b 32 38 2c 32 31 20  @ -28,18 +28,21 
12d0: 40 40 0a 20 72 65 61 63 68 65 73 20 65 6e 64 2d  @@. reaches end-
12e0: 6f 66 2d 66 69 6c 65 20 6f 6e 20 69 74 73 20 73  of-file on its s
12f0: 74 61 6e 64 61 72 64 20 69 6e 70 75 74 2e 0a 20  tandard input.. 
1300: 49 66 20 74 68 65 72 65 20 65 78 69 73 74 73 20  If there exists 
1310: 61 20 66 69 6c 65 20 5c 66 42 2e 74 63 6c 73 68  a file \fB.tclsh
1320: 72 63 5c 66 52 20 28 6f 72 20 5c 66 42 74 63 6c  rc\fR (or \fBtcl
1330: 73 68 72 63 2e 74 63 6c 5c 66 52 20 6f 6e 0a 20  shrc.tcl\fR on. 
1340: 74 68 65 20 57 69 6e 64 6f 77 73 20 70 6c 61 74  the Windows plat
1350: 66 6f 72 6d 73 29 20 69 6e 20 74 68 65 20 68 6f  forms) in the ho
1360: 6d 65 20 64 69 72 65 63 74 6f 72 79 20 6f 66 0a  me directory of.
1370: 2d 74 68 65 20 75 73 65 72 2c 20 5c 66 42 74 63  -the user, \fBtc
1380: 6c 73 68 5c 66 52 20 65 76 61 6c 75 61 74 65 73  lsh\fR evaluates
1390: 20 74 68 65 20 66 69 6c 65 20 61 73 20 61 20 54   the file as a T
13a0: 63 6c 20 73 63 72 69 70 74 0a 2b 74 68 65 20 75  cl script.+the u
13b0: 73 65 72 2c 20 69 6e 74 65 72 61 63 74 69 76 65  ser, interactive
13c0: 20 5c 66 42 74 63 6c 73 68 5c 66 52 20 65 76 61   \fBtclsh\fR eva
13d0: 6c 75 61 74 65 73 20 74 68 65 20 66 69 6c 65 20  luates the file 
13e0: 61 73 20 61 20 54 63 6c 20 73 63 72 69 70 74 0a  as a Tcl script.
13f0: 20 6a 75 73 74 20 62 65 66 6f 72 65 20 72 65 61   just before rea
1400: 64 69 6e 67 20 74 68 65 20 66 69 72 73 74 20 63  ding the first c
1410: 6f 6d 6d 61 6e 64 20 66 72 6f 6d 20 73 74 61 6e  ommand from stan
1420: 64 61 72 64 20 69 6e 70 75 74 2e 0a 20 0a 20 2e  dard input.. . .
1430: 53 48 20 22 53 43 52 49 50 54 20 46 49 4c 45 53  SH "SCRIPT FILES
1440: 22 0a 20 2e 50 50 0a 2d 49 66 20 5c 66 42 74 63  ". .PP.-If \fBtc
1450: 6c 73 68 5c 66 52 20 69 73 20 69 6e 76 6f 6b 65  lsh\fR is invoke
1460: 64 20 77 69 74 68 20 61 72 67 75 6d 65 6e 74 73  d with arguments
1470: 20 74 68 65 6e 20 74 68 65 20 66 69 72 73 74 20   then the first 
1480: 61 72 67 75 6d 65 6e 74 0a 2d 69 73 20 74 68 65  argument.-is the
1490: 20 6e 61 6d 65 20 6f 66 20 61 20 73 63 72 69 70   name of a scrip
14a0: 74 20 66 69 6c 65 20 61 6e 64 20 61 6e 79 20 61  t file and any a
14b0: 64 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65  dditional argume
14c0: 6e 74 73 0a 2b 2e 56 53 20 38 2e 35 0a 2b 49 66  nts.+.VS 8.5.+If
14d0: 20 5c 66 42 74 63 6c 73 68 5c 66 52 20 69 73 20   \fBtclsh\fR is 
14e0: 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 61 72 67  invoked with arg
14f0: 75 6d 65 6e 74 73 20 74 68 65 6e 20 74 68 65 20  uments then the 
1500: 66 69 72 73 74 20 66 65 77 20 61 72 67 75 6d 65  first few argume
1510: 6e 74 73 0a 2b 73 70 65 63 69 66 79 20 74 68 65  nts.+specify the
1520: 20 6e 61 6d 65 20 6f 66 20 61 20 73 63 72 69 70   name of a scrip
1530: 74 20 66 69 6c 65 2c 20 61 6e 64 2c 20 6f 70 74  t file, and, opt
1540: 69 6f 6e 61 6c 6c 79 2c 20 74 68 65 20 65 6e 63  ionally, the enc
1550: 6f 64 69 6e 67 20 6f 66 0a 2b 74 68 65 20 74 65  oding of.+the te
1560: 78 74 20 64 61 74 61 20 73 74 6f 72 65 64 20 69  xt data stored i
1570: 6e 20 74 68 61 74 20 73 63 72 69 70 74 20 66 69  n that script fi
1580: 6c 65 2e 20 0a 2b 2e 56 45 20 38 2e 35 0a 2b 41  le. .+.VE 8.5.+A
1590: 6e 79 20 61 64 64 69 74 69 6f 6e 61 6c 20 61 72  ny additional ar
15a0: 67 75 6d 65 6e 74 73 0a 20 61 72 65 20 6d 61 64  guments. are mad
15b0: 65 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74  e available to t
15c0: 68 65 20 73 63 72 69 70 74 20 61 73 20 76 61 72  he script as var
15d0: 69 61 62 6c 65 73 20 28 73 65 65 20 62 65 6c 6f  iables (see belo
15e0: 77 29 2e 0a 20 49 6e 73 74 65 61 64 20 6f 66 20  w).. Instead of 
15f0: 72 65 61 64 69 6e 67 20 63 6f 6d 6d 61 6e 64 73  reading commands
1600: 20 66 72 6f 6d 20 73 74 61 6e 64 61 72 64 20 69   from standard i
1610: 6e 70 75 74 20 5c 66 42 74 63 6c 73 68 5c 66 52  nput \fBtclsh\fR
1620: 20 77 69 6c 6c 0a 20 72 65 61 64 20 54 63 6c 20   will. read Tcl 
1630: 63 6f 6d 6d 61 6e 64 73 20 66 72 6f 6d 20 74 68  commands from th
1640: 65 20 6e 61 6d 65 64 20 66 69 6c 65 3b 20 20 5c  e named file;  \
1650: 66 42 74 63 6c 73 68 5c 66 52 20 77 69 6c 6c 20  fBtclsh\fR will 
1660: 65 78 69 74 0a 20 77 68 65 6e 20 69 74 20 72 65  exit. when it re
1670: 61 63 68 65 73 20 74 68 65 20 65 6e 64 20 6f 66  aches the end of
1680: 20 74 68 65 20 66 69 6c 65 2e 0a 2d 2e 56 53 20   the file..-.VS 
1690: 38 2e 34 0a 20 54 68 65 20 65 6e 64 20 6f 66 20  8.4. The end of 
16a0: 74 68 65 20 66 69 6c 65 20 6d 61 79 20 62 65 20  the file may be 
16b0: 6d 61 72 6b 65 64 20 65 69 74 68 65 72 20 62 79  marked either by
16c0: 20 74 68 65 20 70 68 79 73 69 63 61 6c 20 65 6e   the physical en
16d0: 64 20 6f 66 0a 20 74 68 65 20 6d 65 64 69 75 6d  d of. the medium
16e0: 2c 20 6f 72 20 62 79 20 74 68 65 20 63 68 61 72  , or by the char
16f0: 61 63 74 65 72 2c 20 27 5c 5c 30 33 32 27 20 28  acter, '\\032' (
1700: 27 5c 5c 75 30 30 31 61 27 2c 20 63 6f 6e 74 72  '\\u001a', contr
1710: 6f 6c 2d 5a 29 2e 0a 20 49 66 20 74 68 69 73 20  ol-Z).. If this 
1720: 63 68 61 72 61 63 74 65 72 20 69 73 20 70 72 65  character is pre
1730: 73 65 6e 74 20 69 6e 20 74 68 65 20 66 69 6c 65  sent in the file
1740: 2c 20 74 68 65 20 5c 66 42 74 63 6c 73 68 5c 66  , the \fBtclsh\f
1750: 52 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a 40 40  R application.@@
1760: 20 2d 34 37 2c 37 20 2b 35 30 2c 36 20 40 40 0a   -47,7 +50,6 @@.
1770: 20 74 68 61 74 20 72 65 71 75 69 72 65 73 20 74   that requires t
1780: 68 69 73 20 63 68 61 72 61 63 74 65 72 20 69 6e  his character in
1790: 20 74 68 65 20 66 69 6c 65 20 6d 61 79 20 73 61   the file may sa
17a0: 66 65 6c 79 20 65 6e 63 6f 64 65 20 69 74 20 61  fely encode it a
17b0: 73 0a 20 60 60 5c 5c 30 33 32 27 27 2c 20 60 60  s. ``\\032'', ``
17c0: 5c 5c 78 31 61 27 27 2c 20 6f 72 20 60 60 5c 5c  \\x1a'', or ``\\
17d0: 75 30 30 31 61 27 27 3b 20 6f 72 20 6d 61 79 20  u001a''; or may 
17e0: 67 65 6e 65 72 61 74 65 20 69 74 20 62 79 20 75  generate it by u
17f0: 73 65 20 6f 66 20 63 6f 6d 6d 61 6e 64 73 20 0a  se of commands .
1800: 20 73 75 63 68 20 61 73 20 5c 66 42 66 6f 72 6d   such as \fBform
1810: 61 74 5c 66 52 20 6f 72 20 5c 66 42 62 69 6e 61  at\fR or \fBbina
1820: 72 79 5c 66 52 2e 0a 2d 2e 56 45 0a 20 54 68 65  ry\fR..-.VE. The
1830: 72 65 20 69 73 20 6e 6f 20 61 75 74 6f 6d 61 74  re is no automat
1840: 69 63 20 65 76 61 6c 75 61 74 69 6f 6e 20 6f 66  ic evaluation of
1850: 20 5c 66 42 2e 74 63 6c 73 68 72 63 5c 66 52 20   \fB.tclshrc\fR 
1860: 77 68 65 6e 20 74 68 65 20 6e 61 6d 65 0a 20 6f  when the name. o
1870: 66 20 61 20 73 63 72 69 70 74 20 66 69 6c 65 20  f a script file 
1880: 69 73 20 70 72 65 73 65 6e 74 65 64 20 6f 6e 20  is presented on 
1890: 74 68 65 20 5c 66 42 74 63 6c 73 68 5c 66 52 20  the \fBtclsh\fR 
18a0: 63 6f 6d 6d 61 6e 64 0a 20 6c 69 6e 65 2c 20 62  command. line, b
18b0: 75 74 20 74 68 65 20 73 63 72 69 70 74 20 66 69  ut the script fi
18c0: 6c 65 20 63 61 6e 20 61 6c 77 61 79 73 20 5c 66  le can always \f
18d0: 42 73 6f 75 72 63 65 5c 66 52 20 69 74 20 69 66  Bsource\fR it if
18e0: 20 64 65 73 69 72 65 64 2e 0a 40 40 20 2d 39 31   desired..@@ -91
18f0: 2c 31 33 20 2b 39 33 2c 31 31 20 40 40 0a 20 73  ,13 +93,11 @@. s
1900: 69 6e 63 65 20 74 68 65 20 62 61 63 6b 73 6c 61  ince the backsla
1910: 73 68 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66  sh at the end of
1920: 20 74 68 65 20 73 65 63 6f 6e 64 20 6c 69 6e 65   the second line
1930: 20 63 61 75 73 65 73 20 74 68 65 20 74 68 69 72   causes the thir
1940: 64 0a 20 6c 69 6e 65 20 74 6f 20 62 65 20 74 72  d. line to be tr
1950: 65 61 74 65 64 20 61 73 20 70 61 72 74 20 6f 66  eated as part of
1960: 20 74 68 65 20 63 6f 6d 6d 65 6e 74 20 6f 6e 20   the comment on 
1970: 74 68 65 20 73 65 63 6f 6e 64 20 6c 69 6e 65 2e  the second line.
1980: 0a 20 2e 50 50 0a 2d 2e 56 53 0a 20 59 6f 75 20  . .PP.-.VS. You 
1990: 73 68 6f 75 6c 64 20 6e 6f 74 65 20 74 68 61 74  should note that
19a0: 20 69 74 20 69 73 20 61 6c 73 6f 20 63 6f 6d 6d   it is also comm
19b0: 6f 6e 20 70 72 61 63 74 69 73 65 20 74 6f 20 69  on practise to i
19c0: 6e 73 74 61 6c 6c 20 74 63 6c 73 68 20 77 69 74  nstall tclsh wit
19d0: 68 0a 20 69 74 73 20 76 65 72 73 69 6f 6e 20 6e  h. its version n
19e0: 75 6d 62 65 72 20 61 73 20 70 61 72 74 20 6f 66  umber as part of
19f0: 20 74 68 65 20 6e 61 6d 65 2e 20 20 54 68 69 73   the name.  This
1a00: 20 68 61 73 20 74 68 65 20 61 64 76 61 6e 74 61   has the advanta
1a10: 67 65 20 6f 66 0a 20 61 6c 6c 6f 77 69 6e 67 20  ge of. allowing 
1a20: 6d 75 6c 74 69 70 6c 65 20 76 65 72 73 69 6f 6e  multiple version
1a30: 73 20 6f 66 20 54 63 6c 20 74 6f 20 65 78 69 73  s of Tcl to exis
1a40: 74 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 73 79  t on the same sy
1a50: 73 74 65 6d 20 61 74 20 6f 6e 63 65 2c 0a 20 62  stem at once,. b
1a60: 75 74 20 61 6c 73 6f 20 74 68 65 20 64 69 73 61  ut also the disa
1a70: 64 76 61 6e 74 61 67 65 20 6f 66 20 6d 61 6b 69  dvantage of maki
1a80: 6e 67 20 69 74 20 68 61 72 64 65 72 20 74 6f 20  ng it harder to 
1a90: 77 72 69 74 65 20 73 63 72 69 70 74 73 20 74 68  write scripts th
1aa0: 61 74 0a 20 73 74 61 72 74 20 75 70 20 75 6e 69  at. start up uni
1ab0: 66 6f 72 6d 6c 79 20 61 63 72 6f 73 73 20 64 69  formly across di
1ac0: 66 66 65 72 65 6e 74 20 76 65 72 73 69 6f 6e 73  fferent versions
1ad0: 20 6f 66 20 54 63 6c 2e 0a 2d 2e 56 45 0a 20 0a   of Tcl..-.VE. .
1ae0: 20 2e 53 48 20 22 56 41 52 49 41 42 4c 45 53 22   .SH "VARIABLES"
1af0: 0a 20 2e 50 50 0a 40 40 20 2d 31 33 38 2c 37 20  . .PP.@@ -138,7 
1b00: 2b 31 33 38 2c 37 20 40 40 0a 20 53 65 65 20 5c  +138,7 @@. See \
1b10: 66 42 54 63 6c 5f 53 74 61 6e 64 61 72 64 43 68  fBTcl_StandardCh
1b20: 61 6e 6e 65 6c 73 5c 66 52 20 66 6f 72 20 6d 6f  annels\fR for mo
1b30: 72 65 20 65 78 70 6c 61 6e 61 74 69 6f 6e 73 2e  re explanations.
1b40: 0a 20 0a 20 2e 53 48 20 22 53 45 45 20 41 4c 53  . . .SH "SEE ALS
1b50: 4f 22 0a 2d 66 63 6f 6e 66 69 67 75 72 65 28 6e  O".-fconfigure(n
1b60: 29 2c 20 74 63 6c 76 61 72 73 28 6e 29 0a 2b 65  ), tclvars(n).+e
1b70: 6e 63 6f 64 69 6e 67 28 6e 29 2c 20 66 63 6f 6e  ncoding(n), fcon
1b80: 66 69 67 75 72 65 28 6e 29 2c 20 74 63 6c 76 61  figure(n), tclva
1b90: 72 73 28 6e 29 0a 20 0a 20 2e 53 48 20 4b 45 59  rs(n). . .SH KEY
1ba0: 57 4f 52 44 53 0a 20 61 72 67 75 6d 65 6e 74 2c  WORDS. argument,
1bb0: 20 69 6e 74 65 72 70 72 65 74 65 72 2c 20 70 72   interpreter, pr
1bc0: 6f 6d 70 74 2c 20 73 63 72 69 70 74 20 66 69 6c  ompt, script fil
1bd0: 65 2c 20 73 68 65 6c 6c 0a 49 6e 64 65 78 3a 20  e, shell.Index: 
1be0: 67 65 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63 6c  generic/tcl.decl
1bf0: 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  s.==============
1c00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1c10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1c20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1c30: 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20  =====.RCS file: 
1c40: 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c  /cvsroot/tcl/tcl
1c50: 2f 67 65 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63  /generic/tcl.dec
1c60: 6c 73 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20  ls,v.retrieving 
1c70: 72 65 76 69 73 69 6f 6e 20 31 2e 39 39 0a 64 69  revision 1.99.di
1c80: 66 66 20 2d 75 20 2d 72 31 2e 39 39 20 74 63 6c  ff -u -r1.99 tcl
1c90: 2e 64 65 63 6c 73 0a 2d 2d 2d 20 67 65 6e 65 72  .decls.--- gener
1ca0: 69 63 2f 74 63 6c 2e 64 65 63 6c 73 09 32 35 20  ic/tcl.decls.25 
1cb0: 41 75 67 20 32 30 30 33 20 32 30 3a 30 36 3a 30  Aug 2003 20:06:0
1cc0: 34 20 2d 30 30 30 30 09 31 2e 39 39 0a 2b 2b 2b  4 -0000.1.99.+++
1cd0: 20 67 65 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63   generic/tcl.dec
1ce0: 6c 73 09 35 20 53 65 70 20 32 30 30 33 20 32 31  ls.5 Sep 2003 21
1cf0: 3a 32 33 3a 31 37 20 2d 30 30 30 30 0a 40 40 20  :23:17 -0000.@@ 
1d00: 2d 31 38 34 39 2c 36 20 2b 31 38 34 39 2c 31 31  -1849,6 +1849,11
1d10: 20 40 40 0a 20 09 20 20 20 20 54 63 6c 5f 4f 62   @@. .    Tcl_Ob
1d20: 6a 20 2a 6f 62 6a 50 74 72 29 0a 20 7d 0a 20 0a  j *objPtr). }. .
1d30: 2b 23 20 4e 65 77 20 65 78 70 6f 72 74 20 64 75  +# New export du
1d40: 65 20 74 6f 20 54 49 50 23 31 33 37 0a 2b 64 65  e to TIP#137.+de
1d50: 63 6c 61 72 65 20 35 31 38 20 67 65 6e 65 72 69  clare 518 generi
1d60: 63 20 7b 0a 2b 20 20 20 20 69 6e 74 20 54 63 6c  c {.+    int Tcl
1d70: 5f 46 53 45 76 61 6c 46 69 6c 65 45 78 28 54 63  _FSEvalFileEx(Tc
1d80: 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70  l_Interp *interp
1d90: 2c 20 54 63 6c 5f 4f 62 6a 20 2a 66 69 6c 65 4e  , Tcl_Obj *fileN
1da0: 61 6d 65 2c 0a 2b 20 20 20 20 20 20 20 20 20 20  ame,.+          
1db0: 20 20 43 4f 4e 53 54 20 63 68 61 72 20 2a 65 6e    CONST char *en
1dc0: 63 6f 64 69 6e 67 4e 61 6d 65 29 0a 2b 7d 0a 20  codingName).+}. 
1dd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1de0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1df0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1e00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1e10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20  ##############. 
1e20: 0a 20 23 20 44 65 66 69 6e 65 20 74 68 65 20 70  . # Define the p
1e30: 6c 61 74 66 6f 72 6d 20 73 70 65 63 69 66 69 63  latform specific
1e40: 20 70 75 62 6c 69 63 20 54 63 6c 20 69 6e 74 65   public Tcl inte
1e50: 72 66 61 63 65 2e 20 20 54 68 65 73 65 20 66 75  rface.  These fu
1e60: 6e 63 74 69 6f 6e 73 20 61 72 65 0a 49 6e 64 65  nctions are.Inde
1e70: 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d  x: generic/tclCm
1e80: 64 4d 5a 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  dMZ.c.==========
1e90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1ea0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1eb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1ec0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69  =========.RCS fi
1ed0: 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c  le: /cvsroot/tcl
1ee0: 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74 63 6c  /tcl/generic/tcl
1ef0: 43 6d 64 4d 5a 2e 63 2c 76 0a 72 65 74 72 69 65  CmdMZ.c,v.retrie
1f00: 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e  ving revision 1.
1f10: 39 33 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 39  93.diff -u -r1.9
1f20: 33 20 74 63 6c 43 6d 64 4d 5a 2e 63 0a 2d 2d 2d  3 tclCmdMZ.c.---
1f30: 20 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64 4d   generic/tclCmdM
1f40: 5a 2e 63 09 34 20 4a 75 6c 20 32 30 30 33 20 31  Z.c.4 Jul 2003 1
1f50: 30 3a 33 30 3a 32 37 20 2d 30 30 30 30 09 31 2e  0:30:27 -0000.1.
1f60: 39 33 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74  93.+++ generic/t
1f70: 63 6c 43 6d 64 4d 5a 2e 63 09 35 20 53 65 70 20  clCmdMZ.c.5 Sep 
1f80: 32 30 30 33 20 32 31 3a 32 33 3a 31 39 20 2d 30  2003 21:23:19 -0
1f90: 30 30 30 0a 40 40 20 2d 31 30 30 34 2c 31 32 20  000.@@ -1004,12 
1fa0: 2b 31 30 30 34 2c 32 36 20 40 40 0a 20 20 20 20  +1004,26 @@.    
1fb0: 20 69 6e 74 20 6f 62 6a 63 3b 09 09 09 2f 2a 20   int objc;.../* 
1fc0: 4e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65  Number of argume
1fd0: 6e 74 73 2e 20 2a 2f 0a 20 20 20 20 20 54 63 6c  nts. */.     Tcl
1fe0: 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 6f 62 6a 76  _Obj *CONST objv
1ff0: 5b 5d 3b 09 2f 2a 20 41 72 67 75 6d 65 6e 74 20  [];./* Argument 
2000: 6f 62 6a 65 63 74 73 2e 20 2a 2f 0a 20 7b 0a 2d  objects. */. {.-
2010: 20 20 20 20 69 66 20 28 6f 62 6a 63 20 21 3d 20      if (objc != 
2020: 32 29 20 7b 0a 2d 09 54 63 6c 5f 57 72 6f 6e 67  2) {.-.Tcl_Wrong
2030: 4e 75 6d 41 72 67 73 28 69 6e 74 65 72 70 2c 20  NumArgs(interp, 
2040: 31 2c 20 6f 62 6a 76 2c 20 22 66 69 6c 65 4e 61  1, objv, "fileNa
2050: 6d 65 22 29 3b 0a 2b 20 20 20 20 43 4f 4e 53 54  me");.+    CONST
2060: 20 63 68 61 72 20 2a 65 6e 63 6f 64 69 6e 67 4e   char *encodingN
2070: 61 6d 65 20 3d 20 4e 55 4c 4c 3b 0a 2b 20 20 20  ame = NULL;.+   
2080: 20 54 63 6c 5f 4f 62 6a 20 2a 66 69 6c 65 4e 61   Tcl_Obj *fileNa
2090: 6d 65 3b 0a 2b 0a 2b 20 20 20 20 69 66 20 28 6f  me;.+.+    if (o
20a0: 62 6a 63 20 21 3d 20 32 20 26 26 20 6f 62 6a 63  bjc != 2 && objc
20b0: 20 21 3d 34 29 20 7b 0a 2b 09 54 63 6c 5f 57 72   !=4) {.+.Tcl_Wr
20c0: 6f 6e 67 4e 75 6d 41 72 67 73 28 69 6e 74 65 72  ongNumArgs(inter
20d0: 70 2c 20 31 2c 20 6f 62 6a 76 2c 20 22 3f 2d 65  p, 1, objv, "?-e
20e0: 6e 63 6f 64 69 6e 67 20 6e 61 6d 65 3f 20 66 69  ncoding name? fi
20f0: 6c 65 4e 61 6d 65 22 29 3b 0a 20 09 72 65 74 75  leName");. .retu
2100: 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 20  rn TCL_ERROR;.  
2110: 20 20 20 7d 0a 2d 0a 2d 20 20 20 20 72 65 74 75     }.-.-    retu
2120: 72 6e 20 54 63 6c 5f 46 53 45 76 61 6c 46 69 6c  rn Tcl_FSEvalFil
2130: 65 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 31  e(interp, objv[1
2140: 5d 29 3b 0a 2b 20 20 20 20 66 69 6c 65 4e 61 6d  ]);.+    fileNam
2150: 65 20 3d 20 6f 62 6a 76 5b 6f 62 6a 63 2d 31 5d  e = objv[objc-1]
2160: 3b 0a 2b 20 20 20 20 69 66 20 28 6f 62 6a 63 20  ;.+    if (objc 
2170: 3d 3d 20 34 29 20 7b 0a 2b 09 73 74 61 74 69 63  == 4) {.+.static
2180: 20 43 4f 4e 53 54 20 63 68 61 72 20 2a 6f 70 74   CONST char *opt
2190: 69 6f 6e 73 5b 5d 20 3d 20 7b 0a 2b 09 20 20 20  ions[] = {.+.   
21a0: 20 22 2d 65 6e 63 6f 64 69 6e 67 22 2c 20 28 63   "-encoding", (c
21b0: 68 61 72 20 2a 29 20 4e 55 4c 4c 0a 2b 09 7d 3b  har *) NULL.+.};
21c0: 0a 2b 09 69 6e 74 20 69 6e 64 65 78 3b 0a 2b 09  .+.int index;.+.
21d0: 69 66 20 28 54 43 4c 5f 45 52 52 4f 52 20 3d 3d  if (TCL_ERROR ==
21e0: 20 54 63 6c 5f 47 65 74 49 6e 64 65 78 46 72 6f   Tcl_GetIndexFro
21f0: 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20 6f 62 6a  mObj(interp, obj
2200: 76 5b 31 5d 2c 0a 2b 09 09 6f 70 74 69 6f 6e 73  v[1],.+..options
2210: 2c 20 22 6f 70 74 69 6f 6e 22 2c 20 54 43 4c 5f  , "option", TCL_
2220: 45 58 41 43 54 2c 20 26 69 6e 64 65 78 29 29 20  EXACT, &index)) 
2230: 7b 0a 2b 09 20 20 20 20 72 65 74 75 72 6e 20 54  {.+.    return T
2240: 43 4c 5f 45 52 52 4f 52 3b 0a 2b 09 7d 0a 2b 09  CL_ERROR;.+.}.+.
2250: 65 6e 63 6f 64 69 6e 67 4e 61 6d 65 20 3d 20 54  encodingName = T
2260: 63 6c 5f 47 65 74 53 74 72 69 6e 67 28 6f 62 6a  cl_GetString(obj
2270: 76 5b 32 5d 29 3b 0a 2b 20 20 20 20 7d 0a 2b 20  v[2]);.+    }.+ 
2280: 20 20 20 72 65 74 75 72 6e 20 54 63 6c 5f 46 53     return Tcl_FS
2290: 45 76 61 6c 46 69 6c 65 45 78 28 69 6e 74 65 72  EvalFileEx(inter
22a0: 70 2c 20 66 69 6c 65 4e 61 6d 65 2c 20 65 6e 63  p, fileName, enc
22b0: 6f 64 69 6e 67 4e 61 6d 65 29 3b 0a 20 7d 0a 20  odingName);. }. 
22c0: 0c 0a 20 2f 2a 0a 49 6e 64 65 78 3a 20 67 65 6e  .. /*.Index: gen
22d0: 65 72 69 63 2f 74 63 6c 44 65 63 6c 73 2e 68 0a  eric/tclDecls.h.
22e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
22f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2300: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2310: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2320: 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63  ===.RCS file: /c
2330: 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67  vsroot/tcl/tcl/g
2340: 65 6e 65 72 69 63 2f 74 63 6c 44 65 63 6c 73 2e  eneric/tclDecls.
2350: 68 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72  h,v.retrieving r
2360: 65 76 69 73 69 6f 6e 20 31 2e 39 38 0a 64 69 66  evision 1.98.dif
2370: 66 20 2d 75 20 2d 72 31 2e 39 38 20 74 63 6c 44  f -u -r1.98 tclD
2380: 65 63 6c 73 2e 68 0a 2d 2d 2d 20 67 65 6e 65 72  ecls.h.--- gener
2390: 69 63 2f 74 63 6c 44 65 63 6c 73 2e 68 09 32 35  ic/tclDecls.h.25
23a0: 20 41 75 67 20 32 30 30 33 20 32 31 3a 30 35 3a   Aug 2003 21:05:
23b0: 31 35 20 2d 30 30 30 30 09 31 2e 39 38 0a 2b 2b  15 -0000.1.98.++
23c0: 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 44 65 63  + generic/tclDec
23d0: 6c 73 2e 68 09 35 20 53 65 70 20 32 30 30 33 20  ls.h.5 Sep 2003 
23e0: 32 31 3a 32 33 3a 32 32 20 2d 30 30 30 30 0a 40  21:23:22 -0000.@
23f0: 40 20 2d 33 32 31 31 2c 36 20 2b 33 32 31 31 2c  @ -3211,6 +3211,
2400: 31 33 20 40 40 0a 20 09 09 09 09 54 63 6c 5f 49  13 @@. ....Tcl_I
2410: 6e 74 65 72 70 20 2a 20 69 6e 74 65 72 70 2c 20  nterp * interp, 
2420: 54 63 6c 5f 43 6f 6d 6d 61 6e 64 20 63 6f 6d 6d  Tcl_Command comm
2430: 61 6e 64 2c 20 0a 20 09 09 09 09 54 63 6c 5f 4f  and, . ....Tcl_O
2440: 62 6a 20 2a 20 6f 62 6a 50 74 72 29 29 3b 0a 20  bj * objPtr));. 
2450: 23 65 6e 64 69 66 0a 2b 23 69 66 6e 64 65 66 20  #endif.+#ifndef 
2460: 54 63 6c 5f 46 53 45 76 61 6c 46 69 6c 65 45 78  Tcl_FSEvalFileEx
2470: 5f 54 43 4c 5f 44 45 43 4c 41 52 45 44 0a 2b 23  _TCL_DECLARED.+#
2480: 64 65 66 69 6e 65 20 54 63 6c 5f 46 53 45 76 61  define Tcl_FSEva
2490: 6c 46 69 6c 65 45 78 5f 54 43 4c 5f 44 45 43 4c  lFileEx_TCL_DECL
24a0: 41 52 45 44 0a 2b 2f 2a 20 35 31 38 20 2a 2f 0a  ARED.+/* 518 */.
24b0: 2b 45 58 54 45 52 4e 20 69 6e 74 09 09 54 63 6c  +EXTERN int..Tcl
24c0: 5f 46 53 45 76 61 6c 46 69 6c 65 45 78 20 5f 41  _FSEvalFileEx _A
24d0: 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 49  NSI_ARGS_((Tcl_I
24e0: 6e 74 65 72 70 20 2a 20 69 6e 74 65 72 70 2c 20  nterp * interp, 
24f0: 0a 2b 09 09 09 09 54 63 6c 5f 4f 62 6a 20 2a 20  .+....Tcl_Obj * 
2500: 66 69 6c 65 4e 61 6d 65 2c 20 0a 2b 09 09 09 09  fileName, .+....
2510: 43 4f 4e 53 54 20 63 68 61 72 20 2a 20 65 6e 63  CONST char * enc
2520: 6f 64 69 6e 67 4e 61 6d 65 29 29 3b 0a 2b 23 65  odingName));.+#e
2530: 6e 64 69 66 0a 20 0a 20 74 79 70 65 64 65 66 20  ndif. . typedef 
2540: 73 74 72 75 63 74 20 54 63 6c 53 74 75 62 48 6f  struct TclStubHo
2550: 6f 6b 73 20 7b 0a 20 20 20 20 20 73 74 72 75 63  oks {.     struc
2560: 74 20 54 63 6c 50 6c 61 74 53 74 75 62 73 20 2a  t TclPlatStubs *
2570: 74 63 6c 50 6c 61 74 53 74 75 62 73 3b 0a 40 40  tclPlatStubs;.@@
2580: 20 2d 33 37 38 38 2c 36 20 2b 33 37 39 35 2c 37   -3788,6 +3795,7
2590: 20 40 40 0a 20 20 20 20 20 54 63 6c 5f 43 6f 6d   @@.     Tcl_Com
25a0: 6d 61 6e 64 20 28 2a 74 63 6c 5f 46 69 6e 64 43  mand (*tcl_FindC
25b0: 6f 6d 6d 61 6e 64 29 20 5f 41 4e 53 49 5f 41 52  ommand) _ANSI_AR
25c0: 47 53 5f 28 28 54 63 6c 5f 49 6e 74 65 72 70 20  GS_((Tcl_Interp 
25d0: 2a 20 69 6e 74 65 72 70 2c 20 43 4f 4e 53 54 20  * interp, CONST 
25e0: 63 68 61 72 20 2a 20 6e 61 6d 65 2c 20 54 63 6c  char * name, Tcl
25f0: 5f 4e 61 6d 65 73 70 61 63 65 20 2a 20 63 6f 6e  _Namespace * con
2600: 74 65 78 74 4e 73 50 74 72 2c 20 69 6e 74 20 66  textNsPtr, int f
2610: 6c 61 67 73 29 29 3b 20 2f 2a 20 35 31 35 20 2a  lags)); /* 515 *
2620: 2f 0a 20 20 20 20 20 54 63 6c 5f 43 6f 6d 6d 61  /.     Tcl_Comma
2630: 6e 64 20 28 2a 74 63 6c 5f 47 65 74 43 6f 6d 6d  nd (*tcl_GetComm
2640: 61 6e 64 46 72 6f 6d 4f 62 6a 29 20 5f 41 4e 53  andFromObj) _ANS
2650: 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 49 6e 74  I_ARGS_((Tcl_Int
2660: 65 72 70 20 2a 20 69 6e 74 65 72 70 2c 20 54 63  erp * interp, Tc
2670: 6c 5f 4f 62 6a 20 2a 20 6f 62 6a 50 74 72 29 29  l_Obj * objPtr))
2680: 3b 20 2f 2a 20 35 31 36 20 2a 2f 0a 20 20 20 20  ; /* 516 */.    
2690: 20 76 6f 69 64 20 28 2a 74 63 6c 5f 47 65 74 43   void (*tcl_GetC
26a0: 6f 6d 6d 61 6e 64 46 75 6c 6c 4e 61 6d 65 29 20  ommandFullName) 
26b0: 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c  _ANSI_ARGS_((Tcl
26c0: 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 65 72 70  _Interp * interp
26d0: 2c 20 54 63 6c 5f 43 6f 6d 6d 61 6e 64 20 63 6f  , Tcl_Command co
26e0: 6d 6d 61 6e 64 2c 20 54 63 6c 5f 4f 62 6a 20 2a  mmand, Tcl_Obj *
26f0: 20 6f 62 6a 50 74 72 29 29 3b 20 2f 2a 20 35 31   objPtr)); /* 51
2700: 37 20 2a 2f 0a 2b 20 20 20 20 69 6e 74 20 28 2a  7 */.+    int (*
2710: 74 63 6c 5f 46 53 45 76 61 6c 46 69 6c 65 45 78  tcl_FSEvalFileEx
2720: 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 54  ) _ANSI_ARGS_((T
2730: 63 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 65  cl_Interp * inte
2740: 72 70 2c 20 54 63 6c 5f 4f 62 6a 20 2a 20 66 69  rp, Tcl_Obj * fi
2750: 6c 65 4e 61 6d 65 2c 20 43 4f 4e 53 54 20 63 68  leName, CONST ch
2760: 61 72 20 2a 20 65 6e 63 6f 64 69 6e 67 4e 61 6d  ar * encodingNam
2770: 65 29 29 3b 20 2f 2a 20 35 31 38 20 2a 2f 0a 20  e)); /* 518 */. 
2780: 7d 20 54 63 6c 53 74 75 62 73 3b 0a 20 0a 20 23  } TclStubs;. . #
2790: 69 66 64 65 66 20 5f 5f 63 70 6c 75 73 70 6c 75  ifdef __cplusplu
27a0: 73 0a 40 40 20 2d 35 38 39 39 2c 36 20 2b 35 39  s.@@ -5899,6 +59
27b0: 30 37 2c 31 30 20 40 40 0a 20 23 69 66 6e 64 65  07,10 @@. #ifnde
27c0: 66 20 54 63 6c 5f 47 65 74 43 6f 6d 6d 61 6e 64  f Tcl_GetCommand
27d0: 46 75 6c 6c 4e 61 6d 65 0a 20 23 64 65 66 69 6e  FullName. #defin
27e0: 65 20 54 63 6c 5f 47 65 74 43 6f 6d 6d 61 6e 64  e Tcl_GetCommand
27f0: 46 75 6c 6c 4e 61 6d 65 20 5c 0a 20 09 28 74 63  FullName \. .(tc
2800: 6c 53 74 75 62 73 50 74 72 2d 3e 74 63 6c 5f 47  lStubsPtr->tcl_G
2810: 65 74 43 6f 6d 6d 61 6e 64 46 75 6c 6c 4e 61 6d  etCommandFullNam
2820: 65 29 20 2f 2a 20 35 31 37 20 2a 2f 0a 2b 23 65  e) /* 517 */.+#e
2830: 6e 64 69 66 0a 2b 23 69 66 6e 64 65 66 20 54 63  ndif.+#ifndef Tc
2840: 6c 5f 46 53 45 76 61 6c 46 69 6c 65 45 78 0a 2b  l_FSEvalFileEx.+
2850: 23 64 65 66 69 6e 65 20 54 63 6c 5f 46 53 45 76  #define Tcl_FSEv
2860: 61 6c 46 69 6c 65 45 78 20 5c 0a 2b 09 28 74 63  alFileEx \.+.(tc
2870: 6c 53 74 75 62 73 50 74 72 2d 3e 74 63 6c 5f 46  lStubsPtr->tcl_F
2880: 53 45 76 61 6c 46 69 6c 65 45 78 29 20 2f 2a 20  SEvalFileEx) /* 
2890: 35 31 38 20 2a 2f 0a 20 23 65 6e 64 69 66 0a 20  518 */. #endif. 
28a0: 0a 20 23 65 6e 64 69 66 20 2f 2a 20 64 65 66 69  . #endif /* defi
28b0: 6e 65 64 28 55 53 45 5f 54 43 4c 5f 53 54 55 42  ned(USE_TCL_STUB
28c0: 53 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 55  S) && !defined(U
28d0: 53 45 5f 54 43 4c 5f 53 54 55 42 5f 50 52 4f 43  SE_TCL_STUB_PROC
28e0: 53 29 20 2a 2f 0a 49 6e 64 65 78 3a 20 67 65 6e  S) */.Index: gen
28f0: 65 72 69 63 2f 74 63 6c 49 4f 55 74 69 6c 2e 63  eric/tclIOUtil.c
2900: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  .===============
2910: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2920: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2930: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2940: 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f  ====.RCS file: /
2950: 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f  cvsroot/tcl/tcl/
2960: 67 65 6e 65 72 69 63 2f 74 63 6c 49 4f 55 74 69  generic/tclIOUti
2970: 6c 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67  l.c,v.retrieving
2980: 20 72 65 76 69 73 69 6f 6e 20 31 2e 38 32 0a 64   revision 1.82.d
2990: 69 66 66 20 2d 75 20 2d 72 31 2e 38 32 20 74 63  iff -u -r1.82 tc
29a0: 6c 49 4f 55 74 69 6c 2e 63 0a 2d 2d 2d 20 67 65  lIOUtil.c.--- ge
29b0: 6e 65 72 69 63 2f 74 63 6c 49 4f 55 74 69 6c 2e  neric/tclIOUtil.
29c0: 63 09 32 33 20 41 75 67 20 32 30 30 33 20 31 32  c.23 Aug 2003 12
29d0: 3a 31 36 3a 34 39 20 2d 30 30 30 30 09 31 2e 38  :16:49 -0000.1.8
29e0: 32 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63  2.+++ generic/tc
29f0: 6c 49 4f 55 74 69 6c 2e 63 09 35 20 53 65 70 20  lIOUtil.c.5 Sep 
2a00: 32 30 30 33 20 32 31 3a 32 33 3a 32 34 20 2d 30  2003 21:23:24 -0
2a10: 30 30 30 0a 40 40 20 2d 31 33 36 33 2c 31 30 20  000.@@ -1363,10 
2a20: 2b 31 33 36 33 2c 32 30 20 40 40 0a 20 20 20 20  +1363,20 @@.    
2a30: 20 72 65 74 75 72 6e 20 6d 6f 64 65 3b 0a 20 7d   return mode;. }
2a40: 0a 20 0c 0a 2b 2f 2a 20 54 63 6c 5f 46 53 45 76  . ..+/* Tcl_FSEv
2a50: 61 6c 46 69 6c 65 20 69 73 20 54 63 6c 5f 46 53  alFile is Tcl_FS
2a60: 45 76 61 6c 46 69 6c 65 45 78 20 77 69 74 68 6f  EvalFileEx witho
2a70: 75 74 20 65 6e 63 6f 64 69 6e 67 20 61 72 67 75  ut encoding argu
2a80: 6d 65 6e 74 20 2a 2f 0a 2b 69 6e 74 0a 2b 54 63  ment */.+int.+Tc
2a90: 6c 5f 46 53 45 76 61 6c 46 69 6c 65 28 69 6e 74  l_FSEvalFile(int
2aa0: 65 72 70 2c 20 70 61 74 68 50 74 72 29 0a 2b 20  erp, pathPtr).+ 
2ab0: 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69     Tcl_Interp *i
2ac0: 6e 74 65 72 70 3b 09 09 2f 2a 20 49 6e 74 65 72  nterp;../* Inter
2ad0: 70 72 65 74 65 72 20 69 6e 20 77 68 69 63 68 20  preter in which 
2ae0: 74 6f 20 70 72 6f 63 65 73 73 20 66 69 6c 65 2e  to process file.
2af0: 20 2a 2f 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a   */.+    Tcl_Obj
2b00: 20 2a 70 61 74 68 50 74 72 3b 09 09 2f 2a 20 50   *pathPtr;../* P
2b10: 61 74 68 20 6f 66 20 66 69 6c 65 20 74 6f 20 70  ath of file to p
2b20: 72 6f 63 65 73 73 2e 20 20 54 69 6c 64 65 2d 73  rocess.  Tilde-s
2b30: 75 62 73 74 69 74 75 74 69 6f 6e 0a 2b 09 09 09  ubstitution.+...
2b40: 09 20 2a 20 77 69 6c 6c 20 62 65 20 70 65 72 66  . * will be perf
2b50: 6f 72 6d 65 64 20 6f 6e 20 74 68 69 73 20 6e 61  ormed on this na
2b60: 6d 65 2e 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 72  me. */.+{.+    r
2b70: 65 74 75 72 6e 20 54 63 6c 5f 46 53 45 76 61 6c  eturn Tcl_FSEval
2b80: 46 69 6c 65 45 78 28 69 6e 74 65 72 70 2c 20 70  FileEx(interp, p
2b90: 61 74 68 50 74 72 2c 20 4e 55 4c 4c 29 3b 0a 2b  athPtr, NULL);.+
2ba0: 7d 0a 2b 0c 0a 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d  }.+.. /*.  *----
2bb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2bc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2bd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2be0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2bf0: 2d 2d 0a 20 20 2a 0a 2d 20 2a 20 54 63 6c 5f 46  --.  *.- * Tcl_F
2c00: 53 45 76 61 6c 46 69 6c 65 20 2d 2d 0a 2b 20 2a  SEvalFile --.+ *
2c10: 20 54 63 6c 5f 46 53 45 76 61 6c 46 69 6c 65 45   Tcl_FSEvalFileE
2c20: 78 20 2d 2d 0a 20 20 2a 0a 20 20 2a 09 52 65 61  x --.  *.  *.Rea
2c30: 64 20 69 6e 20 61 20 66 69 6c 65 20 61 6e 64 20  d in a file and 
2c40: 70 72 6f 63 65 73 73 20 74 68 65 20 65 6e 74 69  process the enti
2c50: 72 65 20 66 69 6c 65 20 61 73 20 6f 6e 65 20 67  re file as one g
2c60: 69 67 61 6e 74 69 63 0a 20 20 2a 09 54 63 6c 20  igantic.  *.Tcl 
2c70: 63 6f 6d 6d 61 6e 64 2e 0a 40 40 20 2d 31 33 38  command..@@ -138
2c80: 35 2c 31 30 20 2b 31 33 39 35 2c 31 31 20 40 40  5,10 +1395,11 @@
2c90: 0a 20 20 2a 2f 0a 20 0a 20 69 6e 74 0a 2d 54 63  .  */. . int.-Tc
2ca0: 6c 5f 46 53 45 76 61 6c 46 69 6c 65 28 69 6e 74  l_FSEvalFile(int
2cb0: 65 72 70 2c 20 70 61 74 68 50 74 72 29 0a 2b 54  erp, pathPtr).+T
2cc0: 63 6c 5f 46 53 45 76 61 6c 46 69 6c 65 45 78 28  cl_FSEvalFileEx(
2cd0: 69 6e 74 65 72 70 2c 20 70 61 74 68 50 74 72 2c  interp, pathPtr,
2ce0: 20 65 6e 63 6f 64 69 6e 67 4e 61 6d 65 29 0a 20   encodingName). 
2cf0: 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a      Tcl_Interp *
2d00: 69 6e 74 65 72 70 3b 09 09 2f 2a 20 49 6e 74 65  interp;../* Inte
2d10: 72 70 72 65 74 65 72 20 69 6e 20 77 68 69 63 68  rpreter in which
2d20: 20 74 6f 20 70 72 6f 63 65 73 73 20 66 69 6c 65   to process file
2d30: 2e 20 2a 2f 0a 20 20 20 20 20 54 63 6c 5f 4f 62  . */.     Tcl_Ob
2d40: 6a 20 2a 70 61 74 68 50 74 72 3b 09 09 2f 2a 20  j *pathPtr;../* 
2d50: 50 61 74 68 20 6f 66 20 66 69 6c 65 20 74 6f 20  Path of file to 
2d60: 70 72 6f 63 65 73 73 2e 20 20 54 69 6c 64 65 2d  process.  Tilde-
2d70: 73 75 62 73 74 69 74 75 74 69 6f 6e 0a 20 09 09  substitution. ..
2d80: 09 09 20 2a 20 77 69 6c 6c 20 62 65 20 70 65 72  .. * will be per
2d90: 66 6f 72 6d 65 64 20 6f 6e 20 74 68 69 73 20 6e  formed on this n
2da0: 61 6d 65 2e 20 2a 2f 0a 2b 20 20 20 20 43 4f 4e  ame. */.+    CON
2db0: 53 54 20 63 68 61 72 20 2a 65 6e 63 6f 64 69 6e  ST char *encodin
2dc0: 67 4e 61 6d 65 3b 0a 20 7b 0a 20 20 20 20 20 69  gName;. {.     i
2dd0: 6e 74 20 72 65 73 75 6c 74 2c 20 6c 65 6e 67 74  nt result, lengt
2de0: 68 3b 0a 20 20 20 20 20 54 63 6c 5f 53 74 61 74  h;.     Tcl_Stat
2df0: 42 75 66 20 73 74 61 74 42 75 66 3b 0a 40 40 20  Buf statBuf;.@@ 
2e00: 2d 31 34 32 36 2c 36 20 2b 31 34 33 37 2c 31 38  -1426,6 +1437,18
2e10: 20 40 40 0a 20 20 20 20 20 20 2a 20 5b 42 75 67   @@.      * [Bug
2e20: 3a 20 32 30 34 30 5d 0a 20 20 20 20 20 20 2a 2f  : 2040].      */
2e30: 0a 20 20 20 20 20 54 63 6c 5f 53 65 74 43 68 61  .     Tcl_SetCha
2e40: 6e 6e 65 6c 4f 70 74 69 6f 6e 28 69 6e 74 65 72  nnelOption(inter
2e50: 70 2c 20 63 68 61 6e 2c 20 22 2d 65 6f 66 63 68  p, chan, "-eofch
2e60: 61 72 22 2c 20 22 5c 33 32 22 29 3b 0a 2b 20 20  ar", "\32");.+  
2e70: 20 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 49 66 20    /*.+     * If 
2e80: 74 68 65 20 65 6e 63 6f 64 69 6e 67 20 69 73 20  the encoding is 
2e90: 73 70 65 63 69 66 69 65 64 2c 20 73 65 74 20 69  specified, set i
2ea0: 74 20 66 6f 72 20 74 68 65 20 63 68 61 6e 6e 65  t for the channe
2eb0: 6c 2e 0a 2b 20 20 20 20 20 2a 20 45 6c 73 65 20  l..+     * Else 
2ec0: 64 6f 6e 27 74 20 74 6f 75 63 68 20 69 74 20 28  don't touch it (
2ed0: 61 6e 64 20 75 73 65 20 74 68 65 20 73 79 73 74  and use the syst
2ee0: 65 6d 20 65 6e 63 6f 64 69 6e 67 29 0a 2b 20 20  em encoding).+  
2ef0: 20 20 20 2a 20 52 65 70 6f 72 74 20 65 72 72 6f     * Report erro
2f00: 72 20 6f 6e 20 75 6e 6b 6e 6f 77 6e 20 65 6e 63  r on unknown enc
2f10: 6f 64 69 6e 67 2e 0a 2b 20 20 20 20 20 2a 2f 0a  oding..+     */.
2f20: 2b 20 20 20 20 69 66 20 28 65 6e 63 6f 64 69 6e  +    if (encodin
2f30: 67 4e 61 6d 65 29 20 7b 0a 2b 09 69 66 20 28 54  gName) {.+.if (T
2f40: 63 6c 5f 53 65 74 43 68 61 6e 6e 65 6c 4f 70 74  cl_SetChannelOpt
2f50: 69 6f 6e 28 69 6e 74 65 72 70 2c 20 63 68 61 6e  ion(interp, chan
2f60: 2c 20 22 2d 65 6e 63 6f 64 69 6e 67 22 2c 20 65  , "-encoding", e
2f70: 6e 63 6f 64 69 6e 67 4e 61 6d 65 29 0a 2b 09 09  ncodingName).+..
2f80: 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2b 09 20  != TCL_OK) {.+. 
2f90: 20 20 20 54 63 6c 5f 43 6c 6f 73 65 28 69 6e 74     Tcl_Close(int
2fa0: 65 72 70 2c 63 68 61 6e 29 3b 0a 2b 09 20 20 20  erp,chan);.+.   
2fb0: 20 67 6f 74 6f 20 65 6e 64 3b 0a 2b 09 7d 0a 2b   goto end;.+.}.+
2fc0: 20 20 20 20 7d 0a 20 20 20 20 20 69 66 20 28 54      }.     if (T
2fd0: 63 6c 5f 52 65 61 64 43 68 61 72 73 28 63 68 61  cl_ReadChars(cha
2fe0: 6e 2c 20 6f 62 6a 50 74 72 2c 20 2d 31 2c 20 30  n, objPtr, -1, 0
2ff0: 29 20 3c 20 30 29 20 7b 0a 20 20 20 20 20 20 20  ) < 0) {.       
3000: 20 20 54 63 6c 5f 43 6c 6f 73 65 28 69 6e 74 65    Tcl_Close(inte
3010: 72 70 2c 20 63 68 61 6e 29 3b 0a 20 09 54 63 6c  rp, chan);. .Tcl
3020: 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69 6e  _AppendResult(in
3030: 74 65 72 70 2c 20 22 63 6f 75 6c 64 6e 27 74 20  terp, "couldn't 
3040: 72 65 61 64 20 66 69 6c 65 20 5c 22 22 2c 20 0a  read file \"", .
3050: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74  Index: generic/t
3060: 63 6c 49 6e 74 2e 64 65 63 6c 73 0a 3d 3d 3d 3d  clInt.decls.====
3070: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3080: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3090: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
30a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a  ===============.
30b0: 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f  RCS file: /cvsro
30c0: 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72  ot/tcl/tcl/gener
30d0: 69 63 2f 74 63 6c 49 6e 74 2e 64 65 63 6c 73 2c  ic/tclInt.decls,
30e0: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76  v.retrieving rev
30f0: 69 73 69 6f 6e 20 31 2e 36 32 0a 64 69 66 66 20  ision 1.62.diff 
3100: 2d 75 20 2d 72 31 2e 36 32 20 74 63 6c 49 6e 74  -u -r1.62 tclInt
3110: 2e 64 65 63 6c 73 0a 2d 2d 2d 20 67 65 6e 65 72  .decls.--- gener
3120: 69 63 2f 74 63 6c 49 6e 74 2e 64 65 63 6c 73 09  ic/tclInt.decls.
3130: 32 36 20 4a 75 6e 20 32 30 30 33 20 30 38 3a 34  26 Jun 2003 08:4
3140: 33 3a 31 35 20 2d 30 30 30 30 09 31 2e 36 32 0a  3:15 -0000.1.62.
3150: 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 49  +++ generic/tclI
3160: 6e 74 2e 64 65 63 6c 73 09 35 20 53 65 70 20 32  nt.decls.5 Sep 2
3170: 30 30 33 20 32 31 3a 32 33 3a 32 35 20 2d 30 30  003 21:23:25 -00
3180: 30 30 0a 40 40 20 2d 37 31 39 2c 36 20 2b 37 31  00.@@ -719,6 +71
3190: 39 2c 31 32 20 40 40 0a 20 09 20 20 20 20 43 4f  9,12 @@. .    CO
31a0: 4e 53 54 20 63 68 61 72 20 2a 6f 70 65 72 61 74  NST char *operat
31b0: 69 6f 6e 2c 20 43 4f 4e 53 54 20 63 68 61 72 20  ion, CONST char 
31c0: 2a 72 65 61 73 6f 6e 29 0a 20 7d 0a 20 0a 2b 64  *reason). }. .+d
31d0: 65 63 6c 61 72 65 20 31 37 38 20 67 65 6e 65 72  eclare 178 gener
31e0: 69 63 20 7b 0a 2b 20 20 20 20 76 6f 69 64 20 54  ic {.+    void T
31f0: 63 6c 5f 53 65 74 53 74 61 72 74 75 70 53 63 72  cl_SetStartupScr
3200: 69 70 74 28 54 63 6c 5f 4f 62 6a 20 2a 70 61 74  ipt(Tcl_Obj *pat
3210: 68 50 74 72 2c 20 43 4f 4e 53 54 20 63 68 61 72  hPtr, CONST char
3220: 2a 20 65 6e 63 6f 64 69 6e 67 4e 61 6d 65 29 0a  * encodingName).
3230: 2b 7d 0a 2b 64 65 63 6c 61 72 65 20 31 37 39 20  +}.+declare 179 
3240: 67 65 6e 65 72 69 63 20 7b 0a 2b 20 20 20 20 54  generic {.+    T
3250: 63 6c 5f 4f 62 6a 20 2a 54 63 6c 5f 47 65 74 53  cl_Obj *Tcl_GetS
3260: 74 61 72 74 75 70 53 63 72 69 70 74 28 43 4f 4e  tartupScript(CON
3270: 53 54 20 63 68 61 72 20 2a 2a 65 6e 63 6f 64 69  ST char **encodi
3280: 6e 67 4e 61 6d 65 50 74 72 29 0a 2b 7d 0a 20 23  ngNamePtr).+}. #
3290: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
32a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
32b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
32c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
32d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 0a  #############. .
32e0: 20 23 20 44 65 66 69 6e 65 20 74 68 65 20 70 6c   # Define the pl
32f0: 61 74 66 6f 72 6d 20 73 70 65 63 69 66 69 63 20  atform specific 
3300: 69 6e 74 65 72 6e 61 6c 20 54 63 6c 20 69 6e 74  internal Tcl int
3310: 65 72 66 61 63 65 2e 20 54 68 65 73 65 20 66 75  erface. These fu
3320: 6e 63 74 69 6f 6e 73 20 61 72 65 0a 49 6e 64 65  nctions are.Inde
3330: 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e  x: generic/tclIn
3340: 74 44 65 63 6c 73 2e 68 0a 3d 3d 3d 3d 3d 3d 3d  tDecls.h.=======
3350: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3360: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3370: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3380: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53  ============.RCS
3390: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f   file: /cvsroot/
33a0: 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f  tcl/tcl/generic/
33b0: 74 63 6c 49 6e 74 44 65 63 6c 73 2e 68 2c 76 0a  tclIntDecls.h,v.
33c0: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73  retrieving revis
33d0: 69 6f 6e 20 31 2e 35 32 0a 64 69 66 66 20 2d 75  ion 1.52.diff -u
33e0: 20 2d 72 31 2e 35 32 20 74 63 6c 49 6e 74 44 65   -r1.52 tclIntDe
33f0: 63 6c 73 2e 68 0a 2d 2d 2d 20 67 65 6e 65 72 69  cls.h.--- generi
3400: 63 2f 74 63 6c 49 6e 74 44 65 63 6c 73 2e 68 09  c/tclIntDecls.h.
3410: 32 35 20 41 75 67 20 32 30 30 33 20 32 31 3a 30  25 Aug 2003 21:0
3420: 35 3a 31 35 20 2d 30 30 30 30 09 31 2e 35 32 0a  5:15 -0000.1.52.
3430: 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 49  +++ generic/tclI
3440: 6e 74 44 65 63 6c 73 2e 68 09 35 20 53 65 70 20  ntDecls.h.5 Sep 
3450: 32 30 30 33 20 32 31 3a 32 33 3a 32 35 20 2d 30  2003 21:23:25 -0
3460: 30 30 30 0a 40 40 20 2d 39 33 37 2c 36 20 2b 39  000.@@ -937,6 +9
3470: 33 37 2c 31 38 20 40 40 0a 20 09 09 09 09 43 4f  37,18 @@. ....CO
3480: 4e 53 54 20 63 68 61 72 20 2a 20 70 61 72 74 31  NST char * part1
3490: 2c 20 43 4f 4e 53 54 20 63 68 61 72 20 2a 20 70  , CONST char * p
34a0: 61 72 74 32 2c 20 0a 20 09 09 09 09 43 4f 4e 53  art2, . ....CONS
34b0: 54 20 63 68 61 72 20 2a 20 6f 70 65 72 61 74 69  T char * operati
34c0: 6f 6e 2c 20 43 4f 4e 53 54 20 63 68 61 72 20 2a  on, CONST char *
34d0: 20 72 65 61 73 6f 6e 29 29 3b 0a 20 23 65 6e 64   reason));. #end
34e0: 69 66 0a 2b 23 69 66 6e 64 65 66 20 54 63 6c 5f  if.+#ifndef Tcl_
34f0: 53 65 74 53 74 61 72 74 75 70 53 63 72 69 70 74  SetStartupScript
3500: 5f 54 43 4c 5f 44 45 43 4c 41 52 45 44 0a 2b 23  _TCL_DECLARED.+#
3510: 64 65 66 69 6e 65 20 54 63 6c 5f 53 65 74 53 74  define Tcl_SetSt
3520: 61 72 74 75 70 53 63 72 69 70 74 5f 54 43 4c 5f  artupScript_TCL_
3530: 44 45 43 4c 41 52 45 44 0a 2b 2f 2a 20 31 37 38  DECLARED.+/* 178
3540: 20 2a 2f 0a 2b 45 58 54 45 52 4e 20 76 6f 69 64   */.+EXTERN void
3550: 09 09 54 63 6c 5f 53 65 74 53 74 61 72 74 75 70  ..Tcl_SetStartup
3560: 53 63 72 69 70 74 20 5f 41 4e 53 49 5f 41 52 47  Script _ANSI_ARG
3570: 53 5f 28 28 54 63 6c 5f 4f 62 6a 20 2a 20 70 61  S_((Tcl_Obj * pa
3580: 74 68 50 74 72 2c 20 0a 2b 09 09 09 09 43 4f 4e  thPtr, .+....CON
3590: 53 54 20 63 68 61 72 2a 20 65 6e 63 6f 64 69 6e  ST char* encodin
35a0: 67 4e 61 6d 65 29 29 3b 0a 2b 23 65 6e 64 69 66  gName));.+#endif
35b0: 0a 2b 23 69 66 6e 64 65 66 20 54 63 6c 5f 47 65  .+#ifndef Tcl_Ge
35c0: 74 53 74 61 72 74 75 70 53 63 72 69 70 74 5f 54  tStartupScript_T
35d0: 43 4c 5f 44 45 43 4c 41 52 45 44 0a 2b 23 64 65  CL_DECLARED.+#de
35e0: 66 69 6e 65 20 54 63 6c 5f 47 65 74 53 74 61 72  fine Tcl_GetStar
35f0: 74 75 70 53 63 72 69 70 74 5f 54 43 4c 5f 44 45  tupScript_TCL_DE
3600: 43 4c 41 52 45 44 0a 2b 2f 2a 20 31 37 39 20 2a  CLARED.+/* 179 *
3610: 2f 0a 2b 45 58 54 45 52 4e 20 54 63 6c 5f 4f 62  /.+EXTERN Tcl_Ob
3620: 6a 20 2a 09 54 63 6c 5f 47 65 74 53 74 61 72 74  j *.Tcl_GetStart
3630: 75 70 53 63 72 69 70 74 20 5f 41 4e 53 49 5f 41  upScript _ANSI_A
3640: 52 47 53 5f 28 28 0a 2b 09 09 09 09 43 4f 4e 53  RGS_((.+....CONS
3650: 54 20 63 68 61 72 20 2a 2a 20 65 6e 63 6f 64 69  T char ** encodi
3660: 6e 67 4e 61 6d 65 50 74 72 29 29 3b 0a 2b 23 65  ngNamePtr));.+#e
3670: 6e 64 69 66 0a 20 0a 20 74 79 70 65 64 65 66 20  ndif. . typedef 
3680: 73 74 72 75 63 74 20 54 63 6c 49 6e 74 53 74 75  struct TclIntStu
3690: 62 73 20 7b 0a 20 20 20 20 20 69 6e 74 20 6d 61  bs {.     int ma
36a0: 67 69 63 3b 0a 40 40 20 2d 31 31 34 34 2c 36 20  gic;.@@ -1144,6 
36b0: 2b 31 31 35 36 2c 38 20 40 40 0a 20 20 20 20 20  +1156,8 @@.     
36c0: 69 6e 74 20 28 2a 74 63 6c 43 61 6c 6c 56 61 72  int (*tclCallVar
36d0: 54 72 61 63 65 73 29 20 5f 41 4e 53 49 5f 41 52  Traces) _ANSI_AR
36e0: 47 53 5f 28 28 49 6e 74 65 72 70 20 2a 20 69 50  GS_((Interp * iP
36f0: 74 72 2c 20 56 61 72 20 2a 20 61 72 72 61 79 50  tr, Var * arrayP
3700: 74 72 2c 20 56 61 72 20 2a 20 76 61 72 50 74 72  tr, Var * varPtr
3710: 2c 20 43 4f 4e 53 54 20 63 68 61 72 20 2a 20 70  , CONST char * p
3720: 61 72 74 31 2c 20 43 4f 4e 53 54 20 63 68 61 72  art1, CONST char
3730: 20 2a 20 70 61 72 74 32 2c 20 69 6e 74 20 66 6c   * part2, int fl
3740: 61 67 73 2c 20 69 6e 74 20 6c 65 61 76 65 45 72  ags, int leaveEr
3750: 72 4d 73 67 29 29 3b 20 2f 2a 20 31 37 35 20 2a  rMsg)); /* 175 *
3760: 2f 0a 20 20 20 20 20 76 6f 69 64 20 28 2a 74 63  /.     void (*tc
3770: 6c 43 6c 65 61 6e 75 70 56 61 72 29 20 5f 41 4e  lCleanupVar) _AN
3780: 53 49 5f 41 52 47 53 5f 28 28 56 61 72 20 2a 20  SI_ARGS_((Var * 
3790: 76 61 72 50 74 72 2c 20 56 61 72 20 2a 20 61 72  varPtr, Var * ar
37a0: 72 61 79 50 74 72 29 29 3b 20 2f 2a 20 31 37 36  rayPtr)); /* 176
37b0: 20 2a 2f 0a 20 20 20 20 20 76 6f 69 64 20 28 2a   */.     void (*
37c0: 74 63 6c 56 61 72 45 72 72 4d 73 67 29 20 5f 41  tclVarErrMsg) _A
37d0: 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 49  NSI_ARGS_((Tcl_I
37e0: 6e 74 65 72 70 20 2a 20 69 6e 74 65 72 70 2c 20  nterp * interp, 
37f0: 43 4f 4e 53 54 20 63 68 61 72 20 2a 20 70 61 72  CONST char * par
3800: 74 31 2c 20 43 4f 4e 53 54 20 63 68 61 72 20 2a  t1, CONST char *
3810: 20 70 61 72 74 32 2c 20 43 4f 4e 53 54 20 63 68   part2, CONST ch
3820: 61 72 20 2a 20 6f 70 65 72 61 74 69 6f 6e 2c 20  ar * operation, 
3830: 43 4f 4e 53 54 20 63 68 61 72 20 2a 20 72 65 61  CONST char * rea
3840: 73 6f 6e 29 29 3b 20 2f 2a 20 31 37 37 20 2a 2f  son)); /* 177 */
3850: 0a 2b 20 20 20 20 76 6f 69 64 20 28 2a 74 63 6c  .+    void (*tcl
3860: 5f 53 65 74 53 74 61 72 74 75 70 53 63 72 69 70  _SetStartupScrip
3870: 74 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28  t) _ANSI_ARGS_((
3880: 54 63 6c 5f 4f 62 6a 20 2a 20 70 61 74 68 50 74  Tcl_Obj * pathPt
3890: 72 2c 20 43 4f 4e 53 54 20 63 68 61 72 2a 20 65  r, CONST char* e
38a0: 6e 63 6f 64 69 6e 67 4e 61 6d 65 29 29 3b 20 2f  ncodingName)); /
38b0: 2a 20 31 37 38 20 2a 2f 0a 2b 20 20 20 20 54 63  * 178 */.+    Tc
38c0: 6c 5f 4f 62 6a 20 2a 20 28 2a 74 63 6c 5f 47 65  l_Obj * (*tcl_Ge
38d0: 74 53 74 61 72 74 75 70 53 63 72 69 70 74 29 20  tStartupScript) 
38e0: 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 43 4f 4e  _ANSI_ARGS_((CON
38f0: 53 54 20 63 68 61 72 20 2a 2a 20 65 6e 63 6f 64  ST char ** encod
3900: 69 6e 67 4e 61 6d 65 50 74 72 29 29 3b 20 2f 2a  ingNamePtr)); /*
3910: 20 31 37 39 20 2a 2f 0a 20 7d 20 54 63 6c 49 6e   179 */. } TclIn
3920: 74 53 74 75 62 73 3b 0a 20 0a 20 23 69 66 64 65  tStubs;. . #ifde
3930: 66 20 5f 5f 63 70 6c 75 73 70 6c 75 73 0a 40 40  f __cplusplus.@@
3940: 20 2d 31 37 36 39 2c 36 20 2b 31 37 38 33 2c 31   -1769,6 +1783,1
3950: 34 20 40 40 0a 20 23 69 66 6e 64 65 66 20 54 63  4 @@. #ifndef Tc
3960: 6c 56 61 72 45 72 72 4d 73 67 0a 20 23 64 65 66  lVarErrMsg. #def
3970: 69 6e 65 20 54 63 6c 56 61 72 45 72 72 4d 73 67  ine TclVarErrMsg
3980: 20 5c 0a 20 09 28 74 63 6c 49 6e 74 53 74 75 62   \. .(tclIntStub
3990: 73 50 74 72 2d 3e 74 63 6c 56 61 72 45 72 72 4d  sPtr->tclVarErrM
39a0: 73 67 29 20 2f 2a 20 31 37 37 20 2a 2f 0a 2b 23  sg) /* 177 */.+#
39b0: 65 6e 64 69 66 0a 2b 23 69 66 6e 64 65 66 20 54  endif.+#ifndef T
39c0: 63 6c 5f 53 65 74 53 74 61 72 74 75 70 53 63 72  cl_SetStartupScr
39d0: 69 70 74 0a 2b 23 64 65 66 69 6e 65 20 54 63 6c  ipt.+#define Tcl
39e0: 5f 53 65 74 53 74 61 72 74 75 70 53 63 72 69 70  _SetStartupScrip
39f0: 74 20 5c 0a 2b 09 28 74 63 6c 49 6e 74 53 74 75  t \.+.(tclIntStu
3a00: 62 73 50 74 72 2d 3e 74 63 6c 5f 53 65 74 53 74  bsPtr->tcl_SetSt
3a10: 61 72 74 75 70 53 63 72 69 70 74 29 20 2f 2a 20  artupScript) /* 
3a20: 31 37 38 20 2a 2f 0a 2b 23 65 6e 64 69 66 0a 2b  178 */.+#endif.+
3a30: 23 69 66 6e 64 65 66 20 54 63 6c 5f 47 65 74 53  #ifndef Tcl_GetS
3a40: 74 61 72 74 75 70 53 63 72 69 70 74 0a 2b 23 64  tartupScript.+#d
3a50: 65 66 69 6e 65 20 54 63 6c 5f 47 65 74 53 74 61  efine Tcl_GetSta
3a60: 72 74 75 70 53 63 72 69 70 74 20 5c 0a 2b 09 28  rtupScript \.+.(
3a70: 74 63 6c 49 6e 74 53 74 75 62 73 50 74 72 2d 3e  tclIntStubsPtr->
3a80: 74 63 6c 5f 47 65 74 53 74 61 72 74 75 70 53 63  tcl_GetStartupSc
3a90: 72 69 70 74 29 20 2f 2a 20 31 37 39 20 2a 2f 0a  ript) /* 179 */.
3aa0: 20 23 65 6e 64 69 66 0a 20 0a 20 23 65 6e 64 69   #endif. . #endi
3ab0: 66 20 2f 2a 20 64 65 66 69 6e 65 64 28 55 53 45  f /* defined(USE
3ac0: 5f 54 43 4c 5f 53 54 55 42 53 29 20 26 26 20 21  _TCL_STUBS) && !
3ad0: 64 65 66 69 6e 65 64 28 55 53 45 5f 54 43 4c 5f  defined(USE_TCL_
3ae0: 53 54 55 42 5f 50 52 4f 43 53 29 20 2a 2f 0a 49  STUB_PROCS) */.I
3af0: 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63  ndex: generic/tc
3b00: 6c 4d 61 69 6e 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d  lMain.c.========
3b10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3b20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3b30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3b40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20  ===========.RCS 
3b50: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74  file: /cvsroot/t
3b60: 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74  cl/tcl/generic/t
3b70: 63 6c 4d 61 69 6e 2e 63 2c 76 0a 72 65 74 72 69  clMain.c,v.retri
3b80: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31  eving revision 1
3b90: 2e 32 30 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e  .20.diff -u -r1.
3ba0: 32 30 20 74 63 6c 4d 61 69 6e 2e 63 0a 2d 2d 2d  20 tclMain.c.---
3bb0: 20 67 65 6e 65 72 69 63 2f 74 63 6c 4d 61 69 6e   generic/tclMain
3bc0: 2e 63 09 32 39 20 4d 61 79 20 32 30 30 32 20 32  .c.29 May 2002 2
3bd0: 32 3a 35 39 3a 33 33 20 2d 30 30 30 30 09 31 2e  2:59:33 -0000.1.
3be0: 32 30 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74  20.+++ generic/t
3bf0: 63 6c 4d 61 69 6e 2e 63 09 35 20 53 65 70 20 32  clMain.c.5 Sep 2
3c00: 30 30 33 20 32 31 3a 32 33 3a 32 36 20 2d 30 30  003 21:23:26 -00
3c10: 30 30 0a 40 40 20 2d 33 32 2c 36 20 2b 33 32 2c  00.@@ -32,6 +32,
3c20: 37 20 40 40 0a 20 23 65 6e 64 69 66 0a 20 0a 20  7 @@. #endif. . 
3c30: 73 74 61 74 69 63 20 54 63 6c 5f 4f 62 6a 20 2a  static Tcl_Obj *
3c40: 74 63 6c 53 74 61 72 74 75 70 53 63 72 69 70 74  tclStartupScript
3c50: 50 61 74 68 20 3d 20 4e 55 4c 4c 3b 0a 2b 73 74  Path = NULL;.+st
3c60: 61 74 69 63 20 54 63 6c 5f 4f 62 6a 20 2a 74 63  atic Tcl_Obj *tc
3c70: 6c 53 74 61 72 74 75 70 53 63 72 69 70 74 45 6e  lStartupScriptEn
3c80: 63 6f 64 69 6e 67 20 3d 20 4e 55 4c 4c 3b 0a 20  coding = NULL;. 
3c90: 0a 20 73 74 61 74 69 63 20 54 63 6c 5f 4d 61 69  . static Tcl_Mai
3ca0: 6e 4c 6f 6f 70 50 72 6f 63 20 2a 6d 61 69 6e 4c  nLoopProc *mainL
3cb0: 6f 6f 70 50 72 6f 63 20 3d 20 4e 55 4c 4c 3b 0a  oopProc = NULL;.
3cc0: 20 0a 40 40 20 2d 37 33 2c 33 32 20 2b 37 34 2c   .@@ -73,32 +74,
3cd0: 31 30 32 20 40 40 0a 20 2f 2a 0a 20 20 2a 2d 2d  102 @@. /*.  *--
3ce0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3cf0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3d00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3d10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3d20: 2d 2d 2d 2d 0a 20 20 2a 0a 2d 20 2a 20 54 63 6c  ----.  *.- * Tcl
3d30: 53 65 74 53 74 61 72 74 75 70 53 63 72 69 70 74  SetStartupScript
3d40: 50 61 74 68 20 2d 2d 0a 2b 20 2a 20 54 63 6c 5f  Path --.+ * Tcl_
3d50: 53 65 74 53 74 61 72 74 75 70 53 63 72 69 70 74  SetStartupScript
3d60: 20 2d 2d 0a 20 20 2a 0a 2d 20 2a 09 50 72 69 6d   --.  *.- *.Prim
3d70: 65 73 20 74 68 65 20 73 74 61 72 74 75 70 20 73  es the startup s
3d80: 63 72 69 70 74 20 56 46 53 20 70 61 74 68 2c 20  cript VFS path, 
3d90: 75 73 65 64 20 74 6f 20 6f 76 65 72 72 69 64 65  used to override
3da0: 20 74 68 65 0a 2d 20 2a 20 20 20 20 20 20 63 6f   the.- *      co
3db0: 6d 6d 61 6e 64 20 6c 69 6e 65 20 70 72 6f 63 65  mmand line proce
3dc0: 73 73 69 6e 67 2e 0a 2b 20 2a 09 53 65 74 73 20  ssing..+ *.Sets 
3dd0: 74 68 65 20 70 61 74 68 20 61 6e 64 20 65 6e 63  the path and enc
3de0: 6f 64 69 6e 67 20 6f 66 20 74 68 65 20 73 74 61  oding of the sta
3df0: 72 74 75 70 20 73 63 72 69 70 74 20 74 6f 20 62  rtup script to b
3e00: 65 20 65 76 61 6c 75 61 74 65 64 0a 2b 20 2a 09  e evaluated.+ *.
3e10: 62 79 20 54 63 6c 5f 4d 61 69 6e 2c 20 75 73 65  by Tcl_Main, use
3e20: 64 20 74 6f 20 6f 76 65 72 72 69 64 65 20 74 68  d to override th
3e30: 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 70  e command line p
3e40: 72 6f 63 65 73 73 69 6e 67 2e 0a 20 20 2a 0a 20  rocessing..  *. 
3e50: 20 2a 20 52 65 73 75 6c 74 73 3a 0a 20 20 2a 09   * Results:.  *.
3e60: 4e 6f 6e 65 2e 20 0a 20 20 2a 0a 20 20 2a 20 53  None. .  *.  * S
3e70: 69 64 65 20 65 66 66 65 63 74 73 3a 0a 2d 20 2a  ide effects:.- *
3e80: 09 54 68 69 73 20 70 72 6f 63 65 64 75 72 65 20  .This procedure 
3e90: 69 6e 69 74 69 61 6c 69 7a 65 73 20 74 68 65 20  initializes the 
3ea0: 56 46 53 20 70 61 74 68 20 6f 66 20 74 68 65 20  VFS path of the 
3eb0: 54 63 6c 20 73 63 72 69 70 74 20 74 6f 0a 2d 20  Tcl script to.- 
3ec0: 2a 20 20 20 20 20 20 72 75 6e 20 61 74 20 73 74  *      run at st
3ed0: 61 72 74 75 70 2e 0a 20 20 2a 0a 20 20 2a 2d 2d  artup..  *.  *--
3ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3ef0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3f10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3f20: 2d 2d 2d 2d 0a 20 20 2a 2f 0a 2d 76 6f 69 64 20  ----.  */.-void 
3f30: 54 63 6c 53 65 74 53 74 61 72 74 75 70 53 63 72  TclSetStartupScr
3f40: 69 70 74 50 61 74 68 28 70 61 74 68 50 74 72 29  iptPath(pathPtr)
3f50: 0a 2d 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 70  .-    Tcl_Obj *p
3f60: 61 74 68 50 74 72 3b 0a 2b 76 6f 69 64 20 54 63  athPtr;.+void Tc
3f70: 6c 5f 53 65 74 53 74 61 72 74 75 70 53 63 72 69  l_SetStartupScri
3f80: 70 74 28 70 61 74 68 2c 20 65 6e 63 6f 64 69 6e  pt(path, encodin
3f90: 67 29 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20  g).+    Tcl_Obj 
3fa0: 2a 70 61 74 68 3b 09 09 2f 2a 20 46 69 6c 65 73  *path;../* Files
3fb0: 79 73 74 65 6d 20 70 61 74 68 20 6f 66 20 73 74  ystem path of st
3fc0: 61 72 74 75 70 20 73 63 72 69 70 74 20 66 69 6c  artup script fil
3fd0: 65 20 2a 2f 0a 2b 20 20 20 20 43 4f 4e 53 54 20  e */.+    CONST 
3fe0: 63 68 61 72 20 2a 65 6e 63 6f 64 69 6e 67 3b 09  char *encoding;.
3ff0: 2f 2a 20 45 6e 63 6f 64 69 6e 67 20 6f 66 20 74  /* Encoding of t
4000: 68 65 20 64 61 74 61 20 69 6e 20 74 68 61 74 20  he data in that 
4010: 66 69 6c 65 20 2a 2f 0a 20 7b 0a 2b 20 20 20 20  file */. {.+    
4020: 54 63 6c 5f 4f 62 6a 20 2a 6e 65 77 45 6e 63 6f  Tcl_Obj *newEnco
4030: 64 69 6e 67 20 3d 20 4e 55 4c 4c 3b 0a 2b 20 20  ding = NULL;.+  
4040: 20 20 69 66 20 28 65 6e 63 6f 64 69 6e 67 20 21    if (encoding !
4050: 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 6e 65 77 45  = NULL) {.+.newE
4060: 6e 63 6f 64 69 6e 67 20 3d 20 54 63 6c 5f 4e 65  ncoding = Tcl_Ne
4070: 77 53 74 72 69 6e 67 4f 62 6a 28 65 6e 63 6f 64  wStringObj(encod
4080: 69 6e 67 2c 20 2d 31 29 3b 0a 2b 20 20 20 20 7d  ing, -1);.+    }
4090: 0a 2b 0a 20 20 20 20 20 69 66 20 28 74 63 6c 53  .+.     if (tclS
40a0: 74 61 72 74 75 70 53 63 72 69 70 74 50 61 74 68  tartupScriptPath
40b0: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 54 63   != NULL) {. .Tc
40c0: 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 74  l_DecrRefCount(t
40d0: 63 6c 53 74 61 72 74 75 70 53 63 72 69 70 74 50  clStartupScriptP
40e0: 61 74 68 29 3b 0a 20 20 20 20 20 7d 0a 2d 20 20  ath);.     }.-  
40f0: 20 20 74 63 6c 53 74 61 72 74 75 70 53 63 72 69    tclStartupScri
4100: 70 74 50 61 74 68 20 3d 20 70 61 74 68 50 74 72  ptPath = pathPtr
4110: 3b 0a 2b 20 20 20 20 74 63 6c 53 74 61 72 74 75  ;.+    tclStartu
4120: 70 53 63 72 69 70 74 50 61 74 68 20 3d 20 70 61  pScriptPath = pa
4130: 74 68 3b 0a 20 20 20 20 20 69 66 20 28 74 63 6c  th;.     if (tcl
4140: 53 74 61 72 74 75 70 53 63 72 69 70 74 50 61 74  StartupScriptPat
4150: 68 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 54  h != NULL) {. .T
4160: 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28  cl_IncrRefCount(
4170: 74 63 6c 53 74 61 72 74 75 70 53 63 72 69 70 74  tclStartupScript
4180: 50 61 74 68 29 3b 0a 20 20 20 20 20 7d 0a 2b 0a  Path);.     }.+.
4190: 2b 20 20 20 20 69 66 20 28 74 63 6c 53 74 61 72  +    if (tclStar
41a0: 74 75 70 53 63 72 69 70 74 45 6e 63 6f 64 69 6e  tupScriptEncodin
41b0: 67 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 54  g != NULL) {.+.T
41c0: 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28  cl_DecrRefCount(
41d0: 74 63 6c 53 74 61 72 74 75 70 53 63 72 69 70 74  tclStartupScript
41e0: 45 6e 63 6f 64 69 6e 67 29 3b 0a 2b 20 20 20 20  Encoding);.+    
41f0: 7d 0a 2b 20 20 20 20 74 63 6c 53 74 61 72 74 75  }.+    tclStartu
4200: 70 53 63 72 69 70 74 45 6e 63 6f 64 69 6e 67 20  pScriptEncoding 
4210: 3d 20 6e 65 77 45 6e 63 6f 64 69 6e 67 3b 0a 2b  = newEncoding;.+
4220: 20 20 20 20 69 66 20 28 74 63 6c 53 74 61 72 74      if (tclStart
4230: 75 70 53 63 72 69 70 74 45 6e 63 6f 64 69 6e 67  upScriptEncoding
4240: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 54 63   != NULL) {.+.Tc
4250: 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 74  l_IncrRefCount(t
4260: 63 6c 53 74 61 72 74 75 70 53 63 72 69 70 74 45  clStartupScriptE
4270: 6e 63 6f 64 69 6e 67 29 3b 0a 2b 20 20 20 20 7d  ncoding);.+    }
4280: 0a 20 7d 0a 20 0a 2b 0c 0a 2b 2f 2a 0a 2b 20 2a  . }. .+..+/*.+ *
4290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
42a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
42b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
42c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
42d0: 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20 54  ------.+ *.+ * T
42e0: 63 6c 5f 47 65 74 53 74 61 72 74 75 70 53 63 72  cl_GetStartupScr
42f0: 69 70 74 20 2d 2d 0a 2b 20 2a 0a 2b 20 2a 09 47  ipt --.+ *.+ *.G
4300: 65 74 73 20 74 68 65 20 70 61 74 68 20 61 6e 64  ets the path and
4310: 20 65 6e 63 6f 64 69 6e 67 20 6f 66 20 74 68 65   encoding of the
4320: 20 73 74 61 72 74 75 70 20 73 63 72 69 70 74 20   startup script 
4330: 74 6f 20 62 65 20 65 76 61 6c 75 61 74 65 64 0a  to be evaluated.
4340: 2b 20 2a 09 62 79 20 54 63 6c 5f 4d 61 69 6e 2e  + *.by Tcl_Main.
4350: 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73  .+ *.+ * Results
4360: 3a 0a 2b 20 2a 09 54 68 65 20 70 61 74 68 20 6f  :.+ *.The path o
4370: 66 20 74 68 65 20 73 74 61 72 74 75 70 20 73 63  f the startup sc
4380: 72 69 70 74 3b 20 4e 55 4c 4c 20 69 66 20 6e 6f  ript; NULL if no
4390: 6e 65 20 68 61 73 20 62 65 65 6e 20 73 65 74 2e  ne has been set.
43a0: 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64 65 20 65 66  .+ *.+ * Side ef
43b0: 66 65 63 74 73 3a 0a 2b 20 2a 20 09 49 66 20 65  fects:.+ * .If e
43c0: 6e 63 6f 64 69 6e 67 50 74 72 20 69 73 20 6e 6f  ncodingPtr is no
43d0: 74 20 4e 55 4c 4c 2c 20 73 74 6f 72 65 73 20 61  t NULL, stores a
43e0: 20 28 43 4f 4e 53 54 20 63 68 61 72 20 2a 29 20   (CONST char *) 
43f0: 69 6e 20 69 74 0a 2b 20 2a 20 09 70 6f 69 6e 74  in it.+ * .point
4400: 69 6e 67 20 74 6f 20 74 68 65 20 65 6e 63 6f 64  ing to the encod
4410: 69 6e 67 20 6e 61 6d 65 20 72 65 67 69 73 74 65  ing name registe
4420: 72 65 64 20 66 6f 72 20 74 68 65 20 73 74 61 72  red for the star
4430: 74 75 70 0a 2b 20 2a 20 09 73 63 72 69 70 74 2e  tup.+ * .script.
4440: 20 20 54 63 6c 20 72 65 74 61 69 6e 73 20 6f 77    Tcl retains ow
4450: 6e 65 72 73 68 69 70 20 6f 66 20 74 68 65 20 73  nership of the s
4460: 74 72 69 6e 67 2c 20 61 6e 64 20 6d 61 79 20 66  tring, and may f
4470: 72 65 65 0a 2b 20 2a 20 09 69 74 2e 20 20 43 61  ree.+ * .it.  Ca
4480: 6c 6c 65 72 20 73 68 6f 75 6c 64 20 6d 61 6b 65  ller should make
4490: 20 61 20 63 6f 70 79 20 66 6f 72 20 6c 6f 6e 67   a copy for long
44a0: 2d 74 65 72 6d 20 75 73 65 2e 0a 2b 20 2a 0a 2b  -term use..+ *.+
44b0: 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   *--------------
44c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
44d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
44e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
44f0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 54  --------.+ */.+T
4500: 63 6c 5f 4f 62 6a 20 2a 54 63 6c 5f 47 65 74 53  cl_Obj *Tcl_GetS
4510: 74 61 72 74 75 70 53 63 72 69 70 74 28 65 6e 63  tartupScript(enc
4520: 6f 64 69 6e 67 50 74 72 29 0a 2b 20 20 20 20 43  odingPtr).+    C
4530: 4f 4e 53 54 20 63 68 61 72 2a 2a 20 65 6e 63 6f  ONST char** enco
4540: 64 69 6e 67 50 74 72 3b 09 2f 2a 20 57 68 65 6e  dingPtr;./* When
4550: 20 6e 6f 74 20 4e 55 4c 4c 2c 20 70 6f 69 6e 74   not NULL, point
4560: 73 20 74 6f 20 73 74 6f 72 61 67 65 20 66 6f 72  s to storage for
4570: 0a 2b 09 09 09 09 20 2a 20 74 68 65 20 28 43 4f  .+.... * the (CO
4580: 4e 53 54 20 63 68 61 72 20 2a 29 20 74 68 61 74  NST char *) that
4590: 20 70 6f 69 6e 74 73 20 74 6f 20 74 68 65 0a 2b   points to the.+
45a0: 09 09 09 09 20 2a 20 72 65 67 69 73 74 65 72 65  .... * registere
45b0: 64 20 65 6e 63 6f 64 69 6e 67 20 6e 61 6d 65 20  d encoding name 
45c0: 66 6f 72 20 74 68 65 20 73 74 61 72 74 75 70 0a  for the startup.
45d0: 2b 09 09 09 09 20 2a 20 73 63 72 69 70 74 20 2a  +.... * script *
45e0: 2f 0a 2b 7b 0a 2b 20 20 20 20 69 66 20 28 65 6e  /.+{.+    if (en
45f0: 63 6f 64 69 6e 67 50 74 72 20 21 3d 20 4e 55 4c  codingPtr != NUL
4600: 4c 29 20 7b 0a 2b 09 69 66 20 28 74 63 6c 53 74  L) {.+.if (tclSt
4610: 61 72 74 75 70 53 63 72 69 70 74 45 6e 63 6f 64  artupScriptEncod
4620: 69 6e 67 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b  ing == NULL) {.+
4630: 09 20 20 20 20 2a 65 6e 63 6f 64 69 6e 67 50 74  .    *encodingPt
4640: 72 20 3d 20 4e 55 4c 4c 3b 0a 2b 09 7d 20 65 6c  r = NULL;.+.} el
4650: 73 65 20 7b 0a 2b 09 20 20 20 20 2a 65 6e 63 6f  se {.+.    *enco
4660: 64 69 6e 67 50 74 72 20 3d 20 54 63 6c 5f 47 65  dingPtr = Tcl_Ge
4670: 74 53 74 72 69 6e 67 28 74 63 6c 53 74 61 72 74  tString(tclStart
4680: 75 70 53 63 72 69 70 74 45 6e 63 6f 64 69 6e 67  upScriptEncoding
4690: 29 3b 0a 2b 09 7d 0a 2b 20 20 20 20 7d 0a 2b 20  );.+.}.+    }.+ 
46a0: 20 20 20 72 65 74 75 72 6e 20 74 63 6c 53 74 61     return tclSta
46b0: 72 74 75 70 53 63 72 69 70 74 50 61 74 68 3b 0a  rtupScriptPath;.
46c0: 2b 7d 0a 2b 0a 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d  +}.+.+/*.+ *----
46d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
46e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
46f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4700: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4710: 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20 54 63 6c 53 65  --.+ *.+ * TclSe
4720: 74 53 74 61 72 74 75 70 53 63 72 69 70 74 50 61  tStartupScriptPa
4730: 74 68 20 2d 2d 0a 2b 20 2a 0a 2b 20 2a 09 50 72  th --.+ *.+ *.Pr
4740: 69 6d 65 73 20 74 68 65 20 73 74 61 72 74 75 70  imes the startup
4750: 20 73 63 72 69 70 74 20 56 46 53 20 70 61 74 68   script VFS path
4760: 2c 20 75 73 65 64 20 74 6f 20 6f 76 65 72 72 69  , used to overri
4770: 64 65 20 74 68 65 0a 2b 20 2a 20 20 20 20 20 20  de the.+ *      
4780: 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 70 72 6f  command line pro
4790: 63 65 73 73 69 6e 67 2e 0a 2b 20 2a 0a 2b 20 2a  cessing..+ *.+ *
47a0: 20 52 65 73 75 6c 74 73 3a 0a 2b 20 2a 09 4e 6f   Results:.+ *.No
47b0: 6e 65 2e 20 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64  ne. .+ *.+ * Sid
47c0: 65 20 65 66 66 65 63 74 73 3a 0a 2b 20 2a 09 54  e effects:.+ *.T
47d0: 68 69 73 20 70 72 6f 63 65 64 75 72 65 20 69 6e  his procedure in
47e0: 69 74 69 61 6c 69 7a 65 73 20 74 68 65 20 56 46  itializes the VF
47f0: 53 20 70 61 74 68 20 6f 66 20 74 68 65 20 54 63  S path of the Tc
4800: 6c 20 73 63 72 69 70 74 20 74 6f 0a 2b 20 2a 20  l script to.+ * 
4810: 20 20 20 20 20 72 75 6e 20 61 74 20 73 74 61 72       run at star
4820: 74 75 70 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d  tup..+ *.+ *----
4830: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4840: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4850: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4860: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4870: 2d 2d 0a 2b 20 2a 2f 0a 2b 76 6f 69 64 20 54 63  --.+ */.+void Tc
4880: 6c 53 65 74 53 74 61 72 74 75 70 53 63 72 69 70  lSetStartupScrip
4890: 74 50 61 74 68 28 70 61 74 68 29 0a 2b 20 20 20  tPath(path).+   
48a0: 20 54 63 6c 5f 4f 62 6a 20 2a 70 61 74 68 3b 0a   Tcl_Obj *path;.
48b0: 2b 7b 0a 2b 20 20 20 20 54 63 6c 5f 53 65 74 53  +{.+    Tcl_SetS
48c0: 74 61 72 74 75 70 53 63 72 69 70 74 28 70 61 74  tartupScript(pat
48d0: 68 2c 20 4e 55 4c 4c 29 3b 0a 2b 7d 0a 20 0a 20  h, NULL);.+}. . 
48e0: 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /*.  *----------
48f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4900: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4910: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4920: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 40 40 20  ------------.@@ 
4930: 2d 31 31 38 2c 31 30 20 2b 31 38 39 2c 39 20 40  -118,10 +189,9 @
4940: 40 0a 20 20 2a 2f 0a 20 54 63 6c 5f 4f 62 6a 20  @.  */. Tcl_Obj 
4950: 2a 54 63 6c 47 65 74 53 74 61 72 74 75 70 53 63  *TclGetStartupSc
4960: 72 69 70 74 50 61 74 68 28 29 0a 20 7b 0a 2d 20  riptPath(). {.- 
4970: 20 20 20 72 65 74 75 72 6e 20 74 63 6c 53 74 61     return tclSta
4980: 72 74 75 70 53 63 72 69 70 74 50 61 74 68 3b 0a  rtupScriptPath;.
4990: 2b 20 20 20 20 72 65 74 75 72 6e 20 54 63 6c 5f  +    return Tcl_
49a0: 47 65 74 53 74 61 72 74 75 70 53 63 72 69 70 74  GetStartupScript
49b0: 28 4e 55 4c 4c 29 3b 0a 20 7d 0a 20 0a 2d 0a 20  (NULL);. }. .-. 
49c0: 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /*.  *----------
49d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
49e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
49f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4a00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a  ------------.  *
4a10: 0a 40 40 20 2d 31 34 32 2c 38 20 2b 32 31 32 2c  .@@ -142,8 +212,
4a20: 38 20 40 40 0a 20 76 6f 69 64 20 54 63 6c 53 65  8 @@. void TclSe
4a30: 74 53 74 61 72 74 75 70 53 63 72 69 70 74 46 69  tStartupScriptFi
4a40: 6c 65 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29  leName(fileName)
4a50: 0a 20 20 20 20 20 43 4f 4e 53 54 20 63 68 61 72  .     CONST char
4a60: 20 2a 66 69 6c 65 4e 61 6d 65 3b 0a 20 7b 0a 2d   *fileName;. {.-
4a70: 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 70 61 74      Tcl_Obj *pat
4a80: 68 50 74 72 20 3d 20 54 63 6c 5f 4e 65 77 53 74  hPtr = Tcl_NewSt
4a90: 72 69 6e 67 4f 62 6a 28 66 69 6c 65 4e 61 6d 65  ringObj(fileName
4aa0: 2c 2d 31 29 3b 0a 2d 20 20 20 20 54 63 6c 53 65  ,-1);.-    TclSe
4ab0: 74 53 74 61 72 74 75 70 53 63 72 69 70 74 50 61  tStartupScriptPa
4ac0: 74 68 28 70 61 74 68 50 74 72 29 3b 0a 2b 20 20  th(pathPtr);.+  
4ad0: 20 20 54 63 6c 5f 4f 62 6a 20 2a 70 61 74 68 20    Tcl_Obj *path 
4ae0: 3d 20 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67 4f  = Tcl_NewStringO
4af0: 62 6a 28 66 69 6c 65 4e 61 6d 65 2c 2d 31 29 3b  bj(fileName,-1);
4b00: 0a 2b 20 20 20 20 54 63 6c 5f 53 65 74 53 74 61  .+    Tcl_SetSta
4b10: 72 74 75 70 53 63 72 69 70 74 28 70 61 74 68 2c  rtupScript(path,
4b20: 20 4e 55 4c 4c 29 3b 0a 20 7d 0a 20 0a 20 0c 0a   NULL);. }. . ..
4b30: 40 40 20 2d 31 36 35 2c 31 35 20 2b 32 33 35 2c  @@ -165,15 +235,
4b40: 31 34 20 40 40 0a 20 20 2a 2f 0a 20 43 4f 4e 53  14 @@.  */. CONS
4b50: 54 20 63 68 61 72 20 2a 54 63 6c 47 65 74 53 74  T char *TclGetSt
4b60: 61 72 74 75 70 53 63 72 69 70 74 46 69 6c 65 4e  artupScriptFileN
4b70: 61 6d 65 28 29 0a 20 7b 0a 2d 20 20 20 20 54 63  ame(). {.-    Tc
4b80: 6c 5f 4f 62 6a 20 2a 70 61 74 68 50 74 72 20 3d  l_Obj *pathPtr =
4b90: 20 54 63 6c 47 65 74 53 74 61 72 74 75 70 53 63   TclGetStartupSc
4ba0: 72 69 70 74 50 61 74 68 28 29 3b 0a 2b 20 20 20  riptPath();.+   
4bb0: 20 54 63 6c 5f 4f 62 6a 20 2a 70 61 74 68 20 3d   Tcl_Obj *path =
4bc0: 20 54 63 6c 5f 47 65 74 53 74 61 72 74 75 70 53   Tcl_GetStartupS
4bd0: 63 72 69 70 74 28 4e 55 4c 4c 29 3b 0a 20 0a 2d  cript(NULL);. .-
4be0: 20 20 20 20 69 66 20 28 70 61 74 68 50 74 72 20      if (pathPtr 
4bf0: 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 20 20 20 20  == NULL) {.+    
4c00: 69 66 20 28 70 61 74 68 20 3d 3d 20 4e 55 4c 4c  if (path == NULL
4c10: 29 20 7b 0a 20 09 72 65 74 75 72 6e 20 4e 55 4c  ) {. .return NUL
4c20: 4c 3b 0a 20 20 20 20 20 7d 0a 2d 20 20 20 20 72  L;.     }.-    r
4c30: 65 74 75 72 6e 20 54 63 6c 5f 47 65 74 53 74 72  eturn Tcl_GetStr
4c40: 69 6e 67 28 70 61 74 68 50 74 72 29 3b 0a 2b 20  ing(pathPtr);.+ 
4c50: 20 20 20 72 65 74 75 72 6e 20 54 63 6c 5f 47 65     return Tcl_Ge
4c60: 74 53 74 72 69 6e 67 28 70 61 74 68 29 3b 0a 20  tString(path);. 
4c70: 7d 0a 20 0a 2d 0a 20 0c 0a 20 2f 2a 0a 20 20 2a  }. .-. .. /*.  *
4c80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4c90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4ca0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4cb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4cc0: 2d 2d 2d 2d 2d 2d 0a 40 40 20 2d 32 30 34 2c 38  ------.@@ -204,8
4cd0: 20 2b 32 37 33 2c 31 30 20 40 40 0a 20 09 09 09   +273,10 @@. ...
4ce0: 09 20 2a 20 69 6e 69 74 69 61 6c 69 7a 61 74 69  . * initializati
4cf0: 6f 6e 20 62 75 74 20 62 65 66 6f 72 65 20 73 74  on but before st
4d00: 61 72 74 69 6e 67 20 74 6f 0a 20 09 09 09 09 20  arting to. .... 
4d10: 2a 20 65 78 65 63 75 74 65 20 63 6f 6d 6d 61 6e  * execute comman
4d20: 64 73 2e 20 2a 2f 0a 20 7b 0a 2b 20 20 20 20 54  ds. */. {.+    T
4d30: 63 6c 5f 4f 62 6a 20 2a 70 61 74 68 3b 0a 20 20  cl_Obj *path;.  
4d40: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 72 65 73 75     Tcl_Obj *resu
4d50: 6c 74 50 74 72 3b 0a 20 20 20 20 20 54 63 6c 5f  ltPtr;.     Tcl_
4d60: 4f 62 6a 20 2a 63 6f 6d 6d 61 6e 64 50 74 72 20  Obj *commandPtr 
4d70: 3d 20 4e 55 4c 4c 3b 0a 2b 20 20 20 20 43 4f 4e  = NULL;.+    CON
4d80: 53 54 20 63 68 61 72 20 2a 65 6e 63 6f 64 69 6e  ST char *encodin
4d90: 67 4e 61 6d 65 20 3d 20 4e 55 4c 4c 3b 0a 20 20  gName = NULL;.  
4da0: 20 20 20 63 68 61 72 20 62 75 66 66 65 72 5b 54     char buffer[T
4db0: 43 4c 5f 49 4e 54 45 47 45 52 5f 53 50 41 43 45  CL_INTEGER_SPACE
4dc0: 20 2b 20 35 5d 2c 20 2a 61 72 67 73 3b 0a 20 20   + 5], *args;.  
4dd0: 20 20 20 50 72 6f 6d 70 74 54 79 70 65 20 70 72     PromptType pr
4de0: 6f 6d 70 74 20 3d 20 50 52 4f 4d 50 54 5f 53 54  ompt = PROMPT_ST
4df0: 41 52 54 3b 0a 20 20 20 20 20 69 6e 74 20 63 6f  ART;.     int co
4e00: 64 65 2c 20 6c 65 6e 67 74 68 2c 20 74 74 79 3b  de, length, tty;
4e10: 0a 40 40 20 2d 32 32 30 2c 31 34 20 2b 32 39 31  .@@ -220,14 +291
4e20: 2c 32 37 20 40 40 0a 20 20 20 20 20 54 63 6c 5f  ,27 @@.     Tcl_
4e30: 49 6e 69 74 4d 65 6d 6f 72 79 28 69 6e 74 65 72  InitMemory(inter
4e40: 70 29 3b 0a 20 0a 20 20 20 20 20 2f 2a 0a 2d 20  p);. .     /*.- 
4e50: 20 20 20 20 2a 20 4d 61 6b 65 20 63 6f 6d 6d 61      * Make comma
4e60: 6e 64 2d 6c 69 6e 65 20 61 72 67 75 6d 65 6e 74  nd-line argument
4e70: 73 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74  s available in t
4e80: 68 65 20 54 63 6c 20 76 61 72 69 61 62 6c 65 73  he Tcl variables
4e90: 20 22 61 72 67 63 22 0a 2d 20 20 20 20 20 2a 20   "argc".-     * 
4ea0: 61 6e 64 20 22 61 72 67 76 22 2e 20 20 49 66 20  and "argv".  If 
4eb0: 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65  the first argume
4ec0: 6e 74 20 64 6f 65 73 6e 27 74 20 73 74 61 72 74  nt doesn't start
4ed0: 20 77 69 74 68 20 61 20 22 2d 22 20 74 68 65 6e   with a "-" then
4ee0: 0a 2d 20 20 20 20 20 2a 20 73 74 72 69 70 20 69  .-     * strip i
4ef0: 74 20 6f 66 66 20 61 6e 64 20 75 73 65 20 69 74  t off and use it
4f00: 20 61 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   as the name of 
4f10: 61 20 73 63 72 69 70 74 20 66 69 6c 65 20 74 6f  a script file to
4f20: 20 70 72 6f 63 65 73 73 2e 0a 2b 20 20 20 20 20   process..+     
4f30: 2a 20 49 66 20 74 68 65 20 61 70 70 6c 69 63 61  * If the applica
4f40: 74 69 6f 6e 20 68 61 73 20 6e 6f 74 20 61 6c 72  tion has not alr
4f50: 65 61 64 79 20 73 65 74 20 61 20 73 74 61 72 74  eady set a start
4f60: 75 70 20 73 63 72 69 70 74 2c 20 70 61 72 73 65  up script, parse
4f70: 0a 2b 20 20 20 20 20 2a 20 74 68 65 20 66 69 72  .+     * the fir
4f80: 73 74 20 66 65 77 20 63 6f 6d 6d 61 6e 64 20 6c  st few command l
4f90: 69 6e 65 20 61 72 67 75 6d 65 6e 74 73 20 74 6f  ine arguments to
4fa0: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73   determine the s
4fb0: 63 72 69 70 74 0a 2b 20 20 20 20 20 2a 20 70 61  cript.+     * pa
4fc0: 74 68 20 61 6e 64 20 65 6e 63 6f 64 69 6e 67 2e  th and encoding.
4fd0: 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 2d 20 20 20  .      */. .-   
4fe0: 20 69 66 20 28 54 63 6c 47 65 74 53 74 61 72 74   if (TclGetStart
4ff0: 75 70 53 63 72 69 70 74 50 61 74 68 28 29 20 3d  upScriptPath() =
5000: 3d 20 4e 55 4c 4c 29 20 7b 0a 2d 09 69 66 20 28  = NULL) {.-.if (
5010: 28 61 72 67 63 20 3e 20 31 29 20 26 26 20 28 61  (argc > 1) && (a
5020: 72 67 76 5b 31 5d 5b 30 5d 20 21 3d 20 27 2d 27  rgv[1][0] != '-'
5030: 29 29 20 7b 0a 2d 09 20 20 20 20 54 63 6c 53 65  )) {.-.    TclSe
5040: 74 53 74 61 72 74 75 70 53 63 72 69 70 74 46 69  tStartupScriptFi
5050: 6c 65 4e 61 6d 65 28 61 72 67 76 5b 31 5d 29 3b  leName(argv[1]);
5060: 0a 2b 20 20 20 20 69 66 20 28 4e 55 4c 4c 20 3d  .+    if (NULL =
5070: 3d 20 54 63 6c 5f 47 65 74 53 74 61 72 74 75 70  = Tcl_GetStartup
5080: 53 63 72 69 70 74 28 4e 55 4c 4c 29 29 20 7b 0a  Script(NULL)) {.
5090: 2b 0a 2b 09 2f 2a 20 0a 2b 09 20 2a 20 43 68 65  +.+./* .+. * Che
50a0: 63 6b 20 77 68 65 74 68 65 72 20 66 69 72 73 74  ck whether first
50b0: 20 33 20 61 72 67 73 20 28 61 72 67 76 5b 31 5d   3 args (argv[1]
50c0: 20 2d 20 61 72 67 76 5b 33 5d 29 20 6c 6f 6f 6b   - argv[3]) look
50d0: 20 6c 69 6b 65 0a 2b 09 20 2a 20 09 2d 65 6e 63   like.+. * .-enc
50e0: 6f 64 69 6e 67 20 45 4e 43 4f 44 49 4e 47 20 46  oding ENCODING F
50f0: 49 4c 45 4e 41 4d 45 0a 2b 09 20 2a 20 6f 72 20  ILENAME.+. * or 
5100: 6c 69 6b 65 0a 2b 09 20 2a 20 09 46 49 4c 45 4e  like.+. * .FILEN
5110: 41 4d 45 0a 2b 09 20 2a 2f 0a 2b 0a 2b 09 69 66  AME.+. */.+.+.if
5120: 20 28 28 61 72 67 63 20 3e 20 33 29 20 26 26 20   ((argc > 3) && 
5130: 28 30 20 3d 3d 20 73 74 72 63 6d 70 28 22 2d 65  (0 == strcmp("-e
5140: 6e 63 6f 64 69 6e 67 22 2c 20 61 72 67 76 5b 31  ncoding", argv[1
5150: 5d 29 29 0a 2b 09 09 26 26 20 28 27 2d 27 20 21  ])).+..&& ('-' !
5160: 3d 20 61 72 67 76 5b 33 5d 5b 30 5d 29 29 20 7b  = argv[3][0])) {
5170: 0a 2b 09 20 20 20 20 54 63 6c 5f 53 65 74 53 74  .+.    Tcl_SetSt
5180: 61 72 74 75 70 53 63 72 69 70 74 28 54 63 6c 5f  artupScript(Tcl_
5190: 4e 65 77 53 74 72 69 6e 67 4f 62 6a 28 61 72 67  NewStringObj(arg
51a0: 76 5b 33 5d 2c 20 2d 31 29 2c 20 61 72 67 76 5b  v[3], -1), argv[
51b0: 32 5d 29 3b 0a 2b 09 20 20 20 20 61 72 67 63 20  2]);.+.    argc 
51c0: 2d 3d 20 33 3b 0a 2b 09 20 20 20 20 61 72 67 76  -= 3;.+.    argv
51d0: 20 2b 3d 20 33 3b 0a 2b 09 7d 20 65 6c 73 65 20   += 3;.+.} else 
51e0: 69 66 20 28 28 61 72 67 63 20 3e 20 31 29 20 26  if ((argc > 1) &
51f0: 26 20 28 27 2d 27 20 21 3d 20 61 72 67 76 5b 31  & ('-' != argv[1
5200: 5d 5b 30 5d 29 29 20 7b 0a 2b 09 20 20 20 20 54  ][0])) {.+.    T
5210: 63 6c 5f 53 65 74 53 74 61 72 74 75 70 53 63 72  cl_SetStartupScr
5220: 69 70 74 28 54 63 6c 5f 4e 65 77 53 74 72 69 6e  ipt(Tcl_NewStrin
5230: 67 4f 62 6a 28 61 72 67 76 5b 31 5d 2c 20 2d 31  gObj(argv[1], -1
5240: 29 2c 20 4e 55 4c 4c 29 3b 0a 20 09 20 20 20 20  ), NULL);. .    
5250: 61 72 67 63 2d 2d 3b 0a 20 09 20 20 20 20 61 72  argc--;. .    ar
5260: 67 76 2b 2b 3b 0a 20 09 7d 0a 40 40 20 2d 32 34  gv++;. .}.@@ -24
5270: 35 2c 31 31 20 2b 33 32 39 2c 31 34 20 40 40 0a  5,11 +329,14 @@.
5280: 20 20 20 20 20 54 63 6c 5f 44 53 74 72 69 6e 67       Tcl_DString
5290: 46 72 65 65 28 26 61 72 67 53 74 72 69 6e 67 29  Free(&argString)
52a0: 3b 0a 20 20 20 20 20 63 6b 66 72 65 65 28 61 72  ;.     ckfree(ar
52b0: 67 73 29 3b 0a 20 0a 2d 20 20 20 20 69 66 20 28  gs);. .-    if (
52c0: 54 63 6c 47 65 74 53 74 61 72 74 75 70 53 63 72  TclGetStartupScr
52d0: 69 70 74 50 61 74 68 28 29 20 3d 3d 20 4e 55 4c  iptPath() == NUL
52e0: 4c 29 20 7b 0a 2b 20 20 20 20 70 61 74 68 20 3d  L) {.+    path =
52f0: 20 54 63 6c 5f 47 65 74 53 74 61 72 74 75 70 53   Tcl_GetStartupS
5300: 63 72 69 70 74 28 26 65 6e 63 6f 64 69 6e 67 4e  cript(&encodingN
5310: 61 6d 65 29 3b 0a 2b 20 20 20 20 69 66 20 28 70  ame);.+    if (p
5320: 61 74 68 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 20  ath == NULL) {. 
5330: 09 54 63 6c 5f 45 78 74 65 72 6e 61 6c 54 6f 55  .Tcl_ExternalToU
5340: 74 66 44 53 74 72 69 6e 67 28 4e 55 4c 4c 2c 20  tfDString(NULL, 
5350: 61 72 67 76 5b 30 5d 2c 20 2d 31 2c 20 26 61 72  argv[0], -1, &ar
5360: 67 53 74 72 69 6e 67 29 3b 0a 20 20 20 20 20 7d  gString);.     }
5370: 20 65 6c 73 65 20 7b 0a 2d 09 54 63 6c 53 65 74   else {.-.TclSet
5380: 53 74 61 72 74 75 70 53 63 72 69 70 74 46 69 6c  StartupScriptFil
5390: 65 4e 61 6d 65 28 54 63 6c 5f 45 78 74 65 72 6e  eName(Tcl_Extern
53a0: 61 6c 54 6f 55 74 66 44 53 74 72 69 6e 67 28 4e  alToUtfDString(N
53b0: 55 4c 4c 2c 0a 2d 09 09 54 63 6c 47 65 74 53 74  ULL,.-..TclGetSt
53c0: 61 72 74 75 70 53 63 72 69 70 74 46 69 6c 65 4e  artupScriptFileN
53d0: 61 6d 65 28 29 2c 20 2d 31 2c 20 26 61 72 67 53  ame(), -1, &argS
53e0: 74 72 69 6e 67 29 29 3b 0a 2b 09 43 4f 4e 53 54  tring));.+.CONST
53f0: 20 63 68 61 72 20 2a 70 61 74 68 4e 61 6d 65 20   char *pathName 
5400: 3d 20 54 63 6c 5f 47 65 74 53 74 72 69 6e 67 46  = Tcl_GetStringF
5410: 72 6f 6d 4f 62 6a 28 70 61 74 68 2c 20 26 6c 65  romObj(path, &le
5420: 6e 67 74 68 29 3b 0a 2b 09 54 63 6c 5f 45 78 74  ngth);.+.Tcl_Ext
5430: 65 72 6e 61 6c 54 6f 55 74 66 44 53 74 72 69 6e  ernalToUtfDStrin
5440: 67 28 4e 55 4c 4c 2c 20 70 61 74 68 4e 61 6d 65  g(NULL, pathName
5450: 2c 20 6c 65 6e 67 74 68 2c 20 26 61 72 67 53 74  , length, &argSt
5460: 72 69 6e 67 29 3b 0a 2b 09 70 61 74 68 20 3d 20  ring);.+.path = 
5470: 54 63 6c 5f 4e 65 77 53 74 72 69 6e 67 4f 62 6a  Tcl_NewStringObj
5480: 28 54 63 6c 5f 44 53 74 72 69 6e 67 56 61 6c 75  (Tcl_DStringValu
5490: 65 28 26 61 72 67 53 74 72 69 6e 67 29 2c 20 2d  e(&argString), -
54a0: 31 29 3b 0a 2b 09 54 63 6c 5f 53 65 74 53 74 61  1);.+.Tcl_SetSta
54b0: 72 74 75 70 53 63 72 69 70 74 28 70 61 74 68 2c  rtupScript(path,
54c0: 20 65 6e 63 6f 64 69 6e 67 4e 61 6d 65 29 3b 0a   encodingName);.
54d0: 20 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 54 63       }. .     Tc
54e0: 6c 46 6f 72 6d 61 74 49 6e 74 28 62 75 66 66 65  lFormatInt(buffe
54f0: 72 2c 20 28 6c 6f 6e 67 29 20 61 72 67 63 2d 31  r, (long) argc-1
5500: 29 3b 0a 40 40 20 2d 32 36 31 2c 38 20 2b 33 34  );.@@ -261,8 +34
5510: 38 2c 37 20 40 40 0a 20 20 20 20 20 20 2a 2f 0a  8,7 @@.      */.
5520: 20 0a 20 20 20 20 20 74 74 79 20 3d 20 69 73 61   .     tty = isa
5530: 74 74 79 28 30 29 3b 0a 2d 20 20 20 20 54 63 6c  tty(0);.-    Tcl
5540: 5f 53 65 74 56 61 72 28 69 6e 74 65 72 70 2c 20  _SetVar(interp, 
5550: 22 74 63 6c 5f 69 6e 74 65 72 61 63 74 69 76 65  "tcl_interactive
5560: 22 2c 0a 2d 09 20 20 20 20 28 28 54 63 6c 47 65  ",.-.    ((TclGe
5570: 74 53 74 61 72 74 75 70 53 63 72 69 70 74 50 61  tStartupScriptPa
5580: 74 68 28 29 20 3d 3d 20 4e 55 4c 4c 29 20 26 26  th() == NULL) &&
5590: 20 74 74 79 29 20 3f 20 22 31 22 20 3a 20 22 30   tty) ? "1" : "0
55a0: 22 2c 0a 2b 20 20 20 20 54 63 6c 5f 53 65 74 56  ",.+    Tcl_SetV
55b0: 61 72 28 69 6e 74 65 72 70 2c 20 22 74 63 6c 5f  ar(interp, "tcl_
55c0: 69 6e 74 65 72 61 63 74 69 76 65 22 2c 20 28 28  interactive", ((
55d0: 70 61 74 68 20 3d 3d 20 4e 55 4c 4c 29 20 26 26  path == NULL) &&
55e0: 20 74 74 79 29 20 3f 20 22 31 22 20 3a 20 22 30   tty) ? "1" : "0
55f0: 22 2c 0a 20 09 20 20 20 20 54 43 4c 5f 47 4c 4f  ",. .    TCL_GLO
5600: 42 41 4c 5f 4f 4e 4c 59 29 3b 0a 20 20 20 20 20  BAL_ONLY);.     
5610: 0a 20 20 20 20 20 2f 2a 0a 40 40 20 2d 32 38 35  .     /*.@@ -285
5620: 2c 31 31 20 2b 33 37 31 2c 31 33 20 40 40 0a 20  ,11 +371,13 @@. 
5630: 0a 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a  .     /*.      *
5640: 20 49 66 20 61 20 73 63 72 69 70 74 20 66 69 6c   If a script fil
5650: 65 20 77 61 73 20 73 70 65 63 69 66 69 65 64 20  e was specified 
5660: 74 68 65 6e 20 6a 75 73 74 20 73 6f 75 72 63 65  then just source
5670: 20 74 68 61 74 20 66 69 6c 65 0a 2d 20 20 20 20   that file.-    
5680: 20 2a 20 61 6e 64 20 71 75 69 74 2e 0a 2b 20 20   * and quit..+  
5690: 20 20 20 2a 20 61 6e 64 20 71 75 69 74 2e 20 20     * and quit.  
56a0: 4d 75 73 74 20 66 65 74 63 68 20 69 74 20 61 67  Must fetch it ag
56b0: 61 69 6e 2c 20 61 73 20 74 68 65 20 61 70 70 49  ain, as the appI
56c0: 6e 69 74 50 72 6f 63 20 6d 69 67 68 74 0a 2b 20  nitProc might.+ 
56d0: 20 20 20 20 2a 20 68 61 76 65 20 72 65 73 65 74      * have reset
56e0: 20 69 74 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 0a   it..      */. .
56f0: 2d 20 20 20 20 69 66 20 28 54 63 6c 47 65 74 53  -    if (TclGetS
5700: 74 61 72 74 75 70 53 63 72 69 70 74 50 61 74 68  tartupScriptPath
5710: 28 29 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2d 09  () != NULL) {.-.
5720: 63 6f 64 65 20 3d 20 54 63 6c 5f 46 53 45 76 61  code = Tcl_FSEva
5730: 6c 46 69 6c 65 28 69 6e 74 65 72 70 2c 20 54 63  lFile(interp, Tc
5740: 6c 47 65 74 53 74 61 72 74 75 70 53 63 72 69 70  lGetStartupScrip
5750: 74 50 61 74 68 28 29 29 3b 0a 2b 20 20 20 20 70  tPath());.+    p
5760: 61 74 68 20 3d 20 54 63 6c 5f 47 65 74 53 74 61  ath = Tcl_GetSta
5770: 72 74 75 70 53 63 72 69 70 74 28 26 65 6e 63 6f  rtupScript(&enco
5780: 64 69 6e 67 4e 61 6d 65 29 3b 0a 2b 20 20 20 20  dingName);.+    
5790: 69 66 20 28 70 61 74 68 20 21 3d 20 4e 55 4c 4c  if (path != NULL
57a0: 29 20 7b 0a 2b 09 63 6f 64 65 20 3d 20 54 63 6c  ) {.+.code = Tcl
57b0: 5f 46 53 45 76 61 6c 46 69 6c 65 45 78 28 69 6e  _FSEvalFileEx(in
57c0: 74 65 72 70 2c 20 70 61 74 68 2c 20 65 6e 63 6f  terp, path, enco
57d0: 64 69 6e 67 4e 61 6d 65 29 3b 0a 20 09 69 66 20  dingName);. .if 
57e0: 28 63 6f 64 65 20 21 3d 20 54 43 4c 5f 4f 4b 29  (code != TCL_OK)
57f0: 20 7b 0a 20 09 20 20 20 20 65 72 72 43 68 61 6e   {. .    errChan
5800: 6e 65 6c 20 3d 20 54 63 6c 5f 47 65 74 53 74 64  nel = Tcl_GetStd
5810: 43 68 61 6e 6e 65 6c 28 54 43 4c 5f 53 54 44 45  Channel(TCL_STDE
5820: 52 52 29 3b 0a 20 09 20 20 20 20 69 66 20 28 65  RR);. .    if (e
5830: 72 72 43 68 61 6e 6e 65 6c 29 20 7b 0a 40 40 20  rrChannel) {.@@ 
5840: 2d 35 31 30 2c 37 20 2b 35 39 38 2c 37 20 40 40  -510,7 +598,7 @@
5850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 54 63  .             Tc
5860: 6c 5f 44 65 6c 65 74 65 49 6e 74 65 72 70 28 69  l_DeleteInterp(i
5870: 6e 74 65 72 70 29 3b 0a 20 20 20 20 20 20 20 20  nterp);.        
5880: 20 7d 0a 20 20 20 20 20 7d 0a 2d 20 20 20 20 54   }.     }.-    T
5890: 63 6c 53 65 74 53 74 61 72 74 75 70 53 63 72 69  clSetStartupScri
58a0: 70 74 50 61 74 68 28 4e 55 4c 4c 29 3b 0a 2b 20  ptPath(NULL);.+ 
58b0: 20 20 20 54 63 6c 5f 53 65 74 53 74 61 72 74 75     Tcl_SetStartu
58c0: 70 53 63 72 69 70 74 28 4e 55 4c 4c 2c 20 4e 55  pScript(NULL, NU
58d0: 4c 4c 29 3b 0a 20 0a 20 20 20 20 20 2f 2a 0a 20  LL);. .     /*. 
58e0: 20 20 20 20 20 2a 20 49 66 20 77 65 20 67 65 74       * If we get
58f0: 20 68 65 72 65 2c 20 74 68 65 20 6d 61 73 74 65   here, the maste
5900: 72 20 69 6e 74 65 72 70 20 68 61 73 20 62 65 65  r interp has bee
5910: 6e 20 64 65 6c 65 74 65 64 2e 20 20 41 6c 6c 6f  n deleted.  Allo
5920: 77 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63  w.Index: generic
5930: 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 0a 3d  /tclStubInit.c.=
5940: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5950: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5960: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5970: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5980: 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76  ==.RCS file: /cv
5990: 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65  sroot/tcl/tcl/ge
59a0: 6e 65 72 69 63 2f 74 63 6c 53 74 75 62 49 6e 69  neric/tclStubIni
59b0: 74 2e 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67  t.c,v.retrieving
59c0: 20 72 65 76 69 73 69 6f 6e 20 31 2e 38 37 0a 64   revision 1.87.d
59d0: 69 66 66 20 2d 75 20 2d 72 31 2e 38 37 20 74 63  iff -u -r1.87 tc
59e0: 6c 53 74 75 62 49 6e 69 74 2e 63 0a 2d 2d 2d 20  lStubInit.c.--- 
59f0: 67 65 6e 65 72 69 63 2f 74 63 6c 53 74 75 62 49  generic/tclStubI
5a00: 6e 69 74 2e 63 09 32 35 20 41 75 67 20 32 30 30  nit.c.25 Aug 200
5a10: 33 20 32 30 3a 30 36 3a 33 37 20 2d 30 30 30 30  3 20:06:37 -0000
5a20: 09 31 2e 38 37 0a 2b 2b 2b 20 67 65 6e 65 72 69  .1.87.+++ generi
5a30: 63 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 09  c/tclStubInit.c.
5a40: 35 20 53 65 70 20 32 30 30 33 20 32 31 3a 32 33  5 Sep 2003 21:23
5a50: 3a 32 36 20 2d 30 30 30 30 0a 40 40 20 2d 32 37  :26 -0000.@@ -27
5a60: 32 2c 36 20 2b 32 37 32 2c 38 20 40 40 0a 20 20  2,6 +272,8 @@.  
5a70: 20 20 20 54 63 6c 43 61 6c 6c 56 61 72 54 72 61     TclCallVarTra
5a80: 63 65 73 2c 20 2f 2a 20 31 37 35 20 2a 2f 0a 20  ces, /* 175 */. 
5a90: 20 20 20 20 54 63 6c 43 6c 65 61 6e 75 70 56 61      TclCleanupVa
5aa0: 72 2c 20 2f 2a 20 31 37 36 20 2a 2f 0a 20 20 20  r, /* 176 */.   
5ab0: 20 20 54 63 6c 56 61 72 45 72 72 4d 73 67 2c 20    TclVarErrMsg, 
5ac0: 2f 2a 20 31 37 37 20 2a 2f 0a 2b 20 20 20 20 54  /* 177 */.+    T
5ad0: 63 6c 5f 53 65 74 53 74 61 72 74 75 70 53 63 72  cl_SetStartupScr
5ae0: 69 70 74 2c 20 2f 2a 20 31 37 38 20 2a 2f 0a 2b  ipt, /* 178 */.+
5af0: 20 20 20 20 54 63 6c 5f 47 65 74 53 74 61 72 74      Tcl_GetStart
5b00: 75 70 53 63 72 69 70 74 2c 20 2f 2a 20 31 37 39  upScript, /* 179
5b10: 20 2a 2f 0a 20 7d 3b 0a 20 0a 20 54 63 6c 49 6e   */. };. . TclIn
5b20: 74 50 6c 61 74 53 74 75 62 73 20 74 63 6c 49 6e  tPlatStubs tclIn
5b30: 74 50 6c 61 74 53 74 75 62 73 20 3d 20 7b 0a 40  tPlatStubs = {.@
5b40: 40 20 2d 39 36 30 2c 36 20 2b 39 36 32 2c 37 20  @ -960,6 +962,7 
5b50: 40 40 0a 20 20 20 20 20 54 63 6c 5f 46 69 6e 64  @@.     Tcl_Find
5b60: 43 6f 6d 6d 61 6e 64 2c 20 2f 2a 20 35 31 35 20  Command, /* 515 
5b70: 2a 2f 0a 20 20 20 20 20 54 63 6c 5f 47 65 74 43  */.     Tcl_GetC
5b80: 6f 6d 6d 61 6e 64 46 72 6f 6d 4f 62 6a 2c 20 2f  ommandFromObj, /
5b90: 2a 20 35 31 36 20 2a 2f 0a 20 20 20 20 20 54 63  * 516 */.     Tc
5ba0: 6c 5f 47 65 74 43 6f 6d 6d 61 6e 64 46 75 6c 6c  l_GetCommandFull
5bb0: 4e 61 6d 65 2c 20 2f 2a 20 35 31 37 20 2a 2f 0a  Name, /* 517 */.
5bc0: 2b 20 20 20 20 54 63 6c 5f 46 53 45 76 61 6c 46  +    Tcl_FSEvalF
5bd0: 69 6c 65 45 78 2c 20 2f 2a 20 35 31 38 20 2a 2f  ileEx, /* 518 */
5be0: 0a 20 7d 3b 0a 20 0a 20 2f 2a 20 21 45 4e 44 21  . };. . /* !END!
5bf0: 3a 20 44 6f 20 6e 6f 74 20 65 64 69 74 20 61 62  : Do not edit ab
5c00: 6f 76 65 20 74 68 69 73 20 6c 69 6e 65 2e 20 2a  ove this line. *
5c10: 2f 0a 49 6e 64 65 78 3a 20 6d 61 63 2f 74 63 6c  /.Index: mac/tcl
5c20: 4d 61 63 52 65 73 6f 75 72 63 65 2e 63 0a 3d 3d  MacResource.c.==
5c30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5c40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5c50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5c60: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5c70: 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73  =.RCS file: /cvs
5c80: 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 6d 61 63  root/tcl/tcl/mac
5c90: 2f 74 63 6c 4d 61 63 52 65 73 6f 75 72 63 65 2e  /tclMacResource.
5ca0: 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72  c,v.retrieving r
5cb0: 65 76 69 73 69 6f 6e 20 31 2e 31 35 0a 64 69 66  evision 1.15.dif
5cc0: 66 20 2d 75 20 2d 72 31 2e 31 35 20 74 63 6c 4d  f -u -r1.15 tclM
5cd0: 61 63 52 65 73 6f 75 72 63 65 2e 63 0a 2d 2d 2d  acResource.c.---
5ce0: 20 6d 61 63 2f 74 63 6c 4d 61 63 52 65 73 6f 75   mac/tclMacResou
5cf0: 72 63 65 2e 63 09 31 34 20 4d 61 79 20 32 30 30  rce.c.14 May 200
5d00: 33 20 31 39 3a 32 31 3a 32 34 20 2d 30 30 30 30  3 19:21:24 -0000
5d10: 09 31 2e 31 35 0a 2b 2b 2b 20 6d 61 63 2f 74 63  .1.15.+++ mac/tc
5d20: 6c 4d 61 63 52 65 73 6f 75 72 63 65 2e 63 09 35  lMacResource.c.5
5d30: 20 53 65 70 20 32 30 30 33 20 32 31 3a 32 33 3a   Sep 2003 21:23:
5d40: 32 38 20 2d 30 30 30 30 0a 40 40 20 2d 39 34 36  28 -0000.@@ -946
5d50: 2c 36 20 2b 39 34 36 2c 37 20 40 40 0a 20 20 20  ,6 +946,7 @@.   
5d60: 20 20 63 68 61 72 20 2a 66 69 6c 65 4e 61 6d 65    char *fileName
5d70: 20 3d 20 4e 55 4c 4c 2c 20 2a 72 73 72 63 4e 61   = NULL, *rsrcNa
5d80: 6d 65 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20  me = NULL;.     
5d90: 6c 6f 6e 67 20 72 73 72 63 49 44 20 3d 20 2d 31  long rsrcID = -1
5da0: 3b 0a 20 20 20 20 20 63 68 61 72 20 2a 73 74 72  ;.     char *str
5db0: 69 6e 67 3b 0a 2b 20 20 20 20 63 68 61 72 20 2a  ing;.+    char *
5dc0: 65 6e 63 6f 64 69 6e 67 4e 61 6d 65 20 3d 20 4e  encodingName = N
5dd0: 55 4c 4c 3b 0a 20 20 20 20 20 69 6e 74 20 6c 65  ULL;.     int le
5de0: 6e 67 74 68 3b 0a 20 0a 20 20 20 20 20 69 66 20  ngth;. .     if 
5df0: 28 6f 62 6a 63 20 3c 20 32 20 7c 7c 20 6f 62 6a  (objc < 2 || obj
5e00: 63 20 3e 20 34 29 20 20 7b 0a 40 40 20 2d 39 36  c > 4)  {.@@ -96
5e10: 38 2c 36 20 2b 39 36 39 2c 31 30 20 40 40 0a 20  8,6 +969,10 @@. 
5e20: 09 69 66 20 28 54 63 6c 5f 47 65 74 4c 6f 6e 67  .if (Tcl_GetLong
5e30: 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c 20  FromObj(interp, 
5e40: 6f 62 6a 76 5b 32 5d 2c 20 26 72 73 72 63 49 44  objv[2], &rsrcID
5e50: 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20  ) != TCL_OK) {. 
5e60: 09 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f  .    return TCL_
5e70: 45 52 52 4f 52 3b 0a 20 09 7d 0a 2b 20 20 20 20  ERROR;. .}.+    
5e80: 7d 20 65 6c 73 65 20 69 66 20 28 21 73 74 72 63  } else if (!strc
5e90: 6d 70 28 73 74 72 69 6e 67 2c 20 22 2d 65 6e 63  mp(string, "-enc
5ea0: 6f 64 69 6e 67 22 29 29 20 7b 0a 2b 09 69 66 20  oding")) {.+.if 
5eb0: 28 6f 62 6a 63 20 21 3d 20 34 29 20 0a 2b 09 20  (objc != 4) .+. 
5ec0: 20 20 20 67 6f 74 6f 20 73 6f 75 72 63 65 46 6d     goto sourceFm
5ed0: 74 45 72 72 3b 0a 2b 09 65 6e 63 6f 64 69 6e 67  tErr;.+.encoding
5ee0: 4e 61 6d 65 20 3d 20 54 63 6c 5f 47 65 74 53 74  Name = Tcl_GetSt
5ef0: 72 69 6e 67 28 6f 62 6a 76 5b 32 5d 29 3b 0a 20  ring(objv[2]);. 
5f00: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20      } else {.   
5f10: 20 20 09 65 72 72 53 74 72 20 3d 20 65 72 72 42    .errStr = errB
5f20: 61 64 3b 0a 20 20 20 20 20 09 67 6f 74 6f 20 73  ad;.     .goto s
5f30: 6f 75 72 63 65 46 6d 74 45 72 72 3b 0a 40 40 20  ourceFmtErr;.@@ 
5f40: 2d 39 37 36 2c 31 33 20 2b 39 38 31 2c 31 39 20  -976,13 +981,19 
5f50: 40 40 0a 20 20 20 20 20 69 66 20 28 6f 62 6a 63  @@.     if (objc
5f60: 20 3d 3d 20 34 29 20 7b 0a 20 09 66 69 6c 65 4e   == 4) {. .fileN
5f70: 61 6d 65 20 3d 20 54 63 6c 5f 47 65 74 53 74 72  ame = Tcl_GetStr
5f80: 69 6e 67 46 72 6f 6d 4f 62 6a 28 6f 62 6a 76 5b  ingFromObj(objv[
5f90: 33 5d 2c 20 26 6c 65 6e 67 74 68 29 3b 0a 20 20  3], &length);.  
5fa0: 20 20 20 7d 0a 2b 0a 2b 20 20 20 20 69 66 20 28     }.+.+    if (
5fb0: 65 6e 63 6f 64 69 6e 67 4e 61 6d 65 29 20 7b 0a  encodingName) {.
5fc0: 2b 09 72 65 74 75 72 6e 20 54 63 6c 5f 46 53 45  +.return Tcl_FSE
5fd0: 76 61 6c 46 69 6c 65 45 78 28 69 6e 74 65 72 70  valFileEx(interp
5fe0: 2c 20 66 69 6c 65 4e 61 6d 65 2c 20 65 6e 63 6f  , fileName, enco
5ff0: 64 69 6e 67 4e 61 6d 65 29 3b 0a 2b 20 20 20 20  dingName);.+    
6000: 7d 0a 2b 0a 20 20 20 20 20 72 65 74 75 72 6e 20  }.+.     return 
6010: 54 63 6c 5f 4d 61 63 45 76 61 6c 52 65 73 6f 75  Tcl_MacEvalResou
6020: 72 63 65 28 69 6e 74 65 72 70 2c 20 72 73 72 63  rce(interp, rsrc
6030: 4e 61 6d 65 2c 20 72 73 72 63 49 44 2c 20 66 69  Name, rsrcID, fi
6040: 6c 65 4e 61 6d 65 29 3b 0a 20 09 0a 20 20 20 20  leName);. ..    
6050: 20 73 6f 75 72 63 65 46 6d 74 45 72 72 3a 0a 20   sourceFmtErr:. 
6060: 20 20 20 20 54 63 6c 5f 41 70 70 65 6e 64 53 74      Tcl_AppendSt
6070: 72 69 6e 67 73 54 6f 4f 62 6a 28 54 63 6c 5f 47  ringsToObj(Tcl_G
6080: 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74 65  etObjResult(inte
6090: 72 70 29 2c 20 65 72 72 53 74 72 2c 20 22 73 68  rp), errStr, "sh
60a0: 6f 75 6c 64 20 62 65 20 5c 22 22 2c 0a 20 09 09  ould be \"",. ..
60b0: 54 63 6c 5f 47 65 74 53 74 72 69 6e 67 28 6f 62  Tcl_GetString(ob
60c0: 6a 76 5b 30 5d 29 2c 20 22 20 66 69 6c 65 4e 61  jv[0]), " fileNa
60d0: 6d 65 5c 22 20 6f 72 20 5c 22 22 2c 0a 20 09 09  me\" or \"",. ..
60e0: 54 63 6c 5f 47 65 74 53 74 72 69 6e 67 28 6f 62  Tcl_GetString(ob
60f0: 6a 76 5b 30 5d 29 2c 09 22 20 2d 72 73 72 63 20  jv[0]),." -rsrc 
6100: 6e 61 6d 65 20 3f 66 69 6c 65 4e 61 6d 65 3f 5c  name ?fileName?\
6110: 22 20 6f 72 20 5c 22 22 2c 20 0a 2d 09 09 54 63  " or \"", .-..Tc
6120: 6c 5f 47 65 74 53 74 72 69 6e 67 28 6f 62 6a 76  l_GetString(objv
6130: 5b 30 5d 29 2c 20 22 20 2d 72 73 72 63 69 64 20  [0]), " -rsrcid 
6140: 69 64 20 3f 66 69 6c 65 4e 61 6d 65 3f 5c 22 22  id ?fileName?\""
6150: 2c 0a 2b 09 09 54 63 6c 5f 47 65 74 53 74 72 69  ,.+..Tcl_GetStri
6160: 6e 67 28 6f 62 6a 76 5b 30 5d 29 2c 20 22 20 2d  ng(objv[0]), " -
6170: 72 73 72 63 69 64 20 69 64 20 3f 66 69 6c 65 4e  rsrcid id ?fileN
6180: 61 6d 65 3f 5c 22 20 6f 72 20 5c 22 22 2c 0a 2b  ame?\" or \"",.+
6190: 09 09 54 63 6c 5f 47 65 74 53 74 72 69 6e 67 28  ..Tcl_GetString(
61a0: 6f 62 6a 76 5b 30 5d 29 2c 20 22 20 2d 65 6e 63  objv[0]), " -enc
61b0: 6f 64 69 6e 67 20 6e 61 6d 65 20 66 69 6c 65 4e  oding name fileN
61c0: 61 6d 65 5c 22 22 2c 0a 20 09 09 28 63 68 61 72  ame\"",. ..(char
61d0: 20 2a 29 20 4e 55 4c 4c 29 3b 0a 20 20 20 20 20   *) NULL);.     
61e0: 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52  return TCL_ERROR
61f0: 3b 0a 20 7d 0a 49 6e 64 65 78 3a 20 74 65 73 74  ;. }.Index: test
6200: 73 2f 63 6d 64 4d 5a 2e 74 65 73 74 0a 3d 3d 3d  s/cmdMZ.test.===
6210: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6220: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6230: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6240: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6250: 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72  .RCS file: /cvsr
6260: 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74  oot/tcl/tcl/test
6270: 73 2f 63 6d 64 4d 5a 2e 74 65 73 74 2c 76 0a 72  s/cmdMZ.test,v.r
6280: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69  etrieving revisi
6290: 6f 6e 20 31 2e 31 37 0a 64 69 66 66 20 2d 75 20  on 1.17.diff -u 
62a0: 2d 72 31 2e 31 37 20 63 6d 64 4d 5a 2e 74 65 73  -r1.17 cmdMZ.tes
62b0: 74 0a 2d 2d 2d 20 74 65 73 74 73 2f 63 6d 64 4d  t.--- tests/cmdM
62c0: 5a 2e 74 65 73 74 09 32 39 20 41 75 67 20 32 30  Z.test.29 Aug 20
62d0: 30 33 20 31 37 3a 34 33 3a 32 34 20 2d 30 30 30  03 17:43:24 -000
62e0: 30 09 31 2e 31 37 0a 2b 2b 2b 20 74 65 73 74 73  0.1.17.+++ tests
62f0: 2f 63 6d 64 4d 5a 2e 74 65 73 74 09 35 20 53 65  /cmdMZ.test.5 Se
6300: 70 20 32 30 30 33 20 32 31 3a 32 33 3a 32 38 20  p 2003 21:23:28 
6310: 2d 30 30 30 30 0a 40 40 20 2d 31 38 37 2c 36 20  -0000.@@ -187,6 
6320: 2b 31 38 37 2c 37 20 40 40 0a 20 23 20 54 68 65  +187,7 @@. # The
6330: 20 74 65 73 74 73 20 66 6f 72 20 54 63 6c 5f 53   tests for Tcl_S
6340: 63 61 6e 4f 62 6a 43 6d 64 20 61 72 65 20 69 6e  canObjCmd are in
6350: 20 73 63 61 6e 2e 74 65 73 74 0a 20 0a 20 23 20   scan.test. . # 
6360: 54 63 6c 5f 53 6f 75 72 63 65 4f 62 6a 43 6d 64  Tcl_SourceObjCmd
6370: 0a 2b 23 20 4d 6f 72 65 20 74 65 73 74 73 20 6f  .+# More tests o
6380: 66 20 54 63 6c 5f 53 6f 75 72 63 65 4f 62 6a 43  f Tcl_SourceObjC
6390: 6d 64 20 61 72 65 20 69 6e 20 73 6f 75 72 63 65  md are in source
63a0: 2e 74 65 73 74 0a 20 0a 20 74 65 73 74 20 63 6d  .test. . test cm
63b0: 64 4d 5a 2d 33 2e 31 20 7b 54 63 6c 5f 53 6f 75  dMZ-3.1 {Tcl_Sou
63c0: 72 63 65 4f 62 6a 43 6d 64 3a 20 65 72 72 6f 72  rceObjCmd: error
63d0: 20 63 6f 6e 64 69 74 69 6f 6e 73 7d 20 7b 6d 61   conditions} {ma
63e0: 63 4f 6e 6c 79 7d 20 7b 0a 20 20 20 20 20 6c 69  cOnly} {.     li
63f0: 73 74 20 5b 63 61 74 63 68 20 7b 73 6f 75 72 63  st [catch {sourc
6400: 65 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 40 40 20  e} msg] $msg.@@ 
6410: 2d 31 39 34 2c 31 32 20 2b 31 39 35 2c 31 36 20  -194,12 +195,16 
6420: 40 40 0a 20 74 65 73 74 20 63 6d 64 4d 5a 2d 33  @@. test cmdMZ-3
6430: 2e 32 20 7b 54 63 6c 5f 53 6f 75 72 63 65 4f 62  .2 {Tcl_SourceOb
6440: 6a 43 6d 64 3a 20 65 72 72 6f 72 20 63 6f 6e 64  jCmd: error cond
6450: 69 74 69 6f 6e 73 7d 20 7b 6d 61 63 4f 6e 6c 79  itions} {macOnly
6460: 7d 20 7b 0a 20 20 20 20 20 6c 69 73 74 20 5b 63  } {.     list [c
6470: 61 74 63 68 20 7b 73 6f 75 72 63 65 20 61 20 62  atch {source a b
6480: 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 20 7d 20 7b  } msg] $msg. } {
6490: 31 20 7b 62 61 64 20 61 72 67 75 6d 65 6e 74 3a  1 {bad argument:
64a0: 20 73 68 6f 75 6c 64 20 62 65 20 22 73 6f 75 72   should be "sour
64b0: 63 65 20 66 69 6c 65 4e 61 6d 65 22 20 6f 72 20  ce fileName" or 
64c0: 22 73 6f 75 72 63 65 20 2d 72 73 72 63 20 6e 61  "source -rsrc na
64d0: 6d 65 20 3f 66 69 6c 65 4e 61 6d 65 3f 22 20 6f  me ?fileName?" o
64e0: 72 20 22 73 6f 75 72 63 65 20 2d 72 73 72 63 69  r "source -rsrci
64f0: 64 20 69 64 20 3f 66 69 6c 65 4e 61 6d 65 3f 22  d id ?fileName?"
6500: 7d 7d 0a 2d 74 65 73 74 20 63 6d 64 4d 5a 2d 33  }}.-test cmdMZ-3
6510: 2e 33 20 7b 54 63 6c 5f 53 6f 75 72 63 65 4f 62  .3 {Tcl_SourceOb
6520: 6a 43 6d 64 3a 20 65 72 72 6f 72 20 63 6f 6e 64  jCmd: error cond
6530: 69 74 69 6f 6e 73 7d 20 7b 75 6e 69 78 4f 72 50  itions} {unixOrP
6540: 63 7d 20 7b 0a 2b 74 65 73 74 20 63 6d 64 4d 5a  c} {.+test cmdMZ
6550: 2d 33 2e 33 20 7b 54 63 6c 5f 53 6f 75 72 63 65  -3.3 {Tcl_Source
6560: 4f 62 6a 43 6d 64 3a 20 65 72 72 6f 72 20 63 6f  ObjCmd: error co
6570: 6e 64 69 74 69 6f 6e 73 7d 20 2d 63 6f 6e 73 74  nditions} -const
6580: 72 61 69 6e 74 73 20 7b 0a 2b 20 20 20 20 75 6e  raints {.+    un
6590: 69 78 4f 72 50 63 0a 2b 7d 20 2d 62 6f 64 79 20  ixOrPc.+} -body 
65a0: 7b 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74  {.     list [cat
65b0: 63 68 20 7b 73 6f 75 72 63 65 7d 20 6d 73 67 5d  ch {source} msg]
65c0: 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b 77 72 6f   $msg.-} {1 {wro
65d0: 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c  ng # args: shoul
65e0: 64 20 62 65 20 22 73 6f 75 72 63 65 20 66 69 6c  d be "source fil
65f0: 65 4e 61 6d 65 22 7d 7d 0a 2d 74 65 73 74 20 63  eName"}}.-test c
6600: 6d 64 4d 5a 2d 33 2e 34 20 7b 54 63 6c 5f 53 6f  mdMZ-3.4 {Tcl_So
6610: 75 72 63 65 4f 62 6a 43 6d 64 3a 20 65 72 72 6f  urceObjCmd: erro
6620: 72 20 63 6f 6e 64 69 74 69 6f 6e 73 7d 20 7b 75  r conditions} {u
6630: 6e 69 78 4f 72 50 63 7d 20 7b 0a 2b 7d 20 2d 6d  nixOrPc} {.+} -m
6640: 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c  atch glob -resul
6650: 74 20 7b 31 20 7b 77 72 6f 6e 67 20 23 20 61 72  t {1 {wrong # ar
6660: 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 73  gs: should be "s
6670: 6f 75 72 63 65 2a 66 69 6c 65 4e 61 6d 65 22 7d  ource*fileName"}
6680: 7d 0a 2b 74 65 73 74 20 63 6d 64 4d 5a 2d 33 2e  }.+test cmdMZ-3.
6690: 34 20 7b 54 63 6c 5f 53 6f 75 72 63 65 4f 62 6a  4 {Tcl_SourceObj
66a0: 43 6d 64 3a 20 65 72 72 6f 72 20 63 6f 6e 64 69  Cmd: error condi
66b0: 74 69 6f 6e 73 7d 20 2d 63 6f 6e 73 74 72 61 69  tions} -constrai
66c0: 6e 74 73 20 7b 0a 2b 20 20 20 20 75 6e 69 78 4f  nts {.+    unixO
66d0: 72 50 63 0a 2b 7d 20 2d 62 6f 64 79 20 7b 0a 20  rPc.+} -body {. 
66e0: 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20      list [catch 
66f0: 7b 73 6f 75 72 63 65 20 61 20 62 7d 20 6d 73 67  {source a b} msg
6700: 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b 77 72  ] $msg.-} {1 {wr
6710: 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75  ong # args: shou
6720: 6c 64 20 62 65 20 22 73 6f 75 72 63 65 20 66 69  ld be "source fi
6730: 6c 65 4e 61 6d 65 22 7d 7d 0a 2b 7d 20 2d 6d 61  leName"}}.+} -ma
6740: 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74  tch glob -result
6750: 20 7b 31 20 7b 77 72 6f 6e 67 20 23 20 61 72 67   {1 {wrong # arg
6760: 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 73 6f  s: should be "so
6770: 75 72 63 65 2a 66 69 6c 65 4e 61 6d 65 22 7d 7d  urce*fileName"}}
6780: 0a 20 74 65 73 74 20 63 6d 64 4d 5a 2d 33 2e 35  . test cmdMZ-3.5
6790: 20 7b 54 63 6c 5f 53 6f 75 72 63 65 4f 62 6a 43   {Tcl_SourceObjC
67a0: 6d 64 3a 20 65 72 72 6f 72 20 69 6e 20 73 63 72  md: error in scr
67b0: 69 70 74 7d 20 2d 62 6f 64 79 20 7b 0a 20 20 20  ipt} -body {.   
67c0: 20 20 73 65 74 20 66 69 6c 65 20 5b 6d 61 6b 65    set file [make
67d0: 46 69 6c 65 20 7b 0a 20 09 73 65 74 20 78 20 31  File {. .set x 1
67e0: 34 36 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 2f  46.Index: tests/
67f0: 6d 61 69 6e 2e 74 65 73 74 0a 3d 3d 3d 3d 3d 3d  main.test.======
6800: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6810: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6820: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
6830: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43  =============.RC
6840: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74  S file: /cvsroot
6850: 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73 2f 6d  /tcl/tcl/tests/m
6860: 61 69 6e 2e 74 65 73 74 2c 76 0a 72 65 74 72 69  ain.test,v.retri
6870: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31  eving revision 1
6880: 2e 31 33 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e  .13.diff -u -r1.
6890: 31 33 20 6d 61 69 6e 2e 74 65 73 74 0a 2d 2d 2d  13 main.test.---
68a0: 20 74 65 73 74 73 2f 6d 61 69 6e 2e 74 65 73 74   tests/main.test
68b0: 09 31 36 20 46 65 62 20 32 30 30 33 20 30 31 3a  .16 Feb 2003 01:
68c0: 33 36 3a 33 32 20 2d 30 30 30 30 09 31 2e 31 33  36:32 -0000.1.13
68d0: 0a 2b 2b 2b 20 74 65 73 74 73 2f 6d 61 69 6e 2e  .+++ tests/main.
68e0: 74 65 73 74 09 35 20 53 65 70 20 32 30 30 33 20  test.5 Sep 2003 
68f0: 32 31 3a 32 33 3a 32 38 20 2d 30 30 30 30 0a 40  21:23:28 -0000.@
6900: 40 20 2d 31 33 39 2c 36 20 2b 31 33 39 2c 37 32  @ -139,6 +139,72
6910: 20 40 40 0a 20 20 20 20 20 7d 20 2d 72 65 73 75   @@.     } -resu
6920: 6c 74 20 5b 6c 69 73 74 20 5b 6c 69 73 74 20 5b  lt [list [list [
6930: 65 6e 63 6f 64 69 6e 67 20 63 6f 6e 76 65 72 74  encoding convert
6940: 66 72 6f 6d 20 5b 65 6e 63 6f 64 69 6e 67 20 73  from [encoding s
6950: 79 73 74 65 6d 5d 20 5c 0a 20 09 5b 65 6e 63 6f  ystem] \. .[enco
6960: 64 69 6e 67 20 63 6f 6e 76 65 72 74 74 6f 20 5b  ding convertto [
6970: 65 6e 63 6f 64 69 6e 67 20 73 79 73 74 65 6d 5d  encoding system]
6980: 20 5c 75 32 30 61 63 5d 5d 5d 20 7b 7d 20 30 5d   \u20ac]]] {} 0]
6990: 5c 6e 0a 20 0a 2b 20 20 20 20 74 65 73 74 20 54  \n. .+    test T
69a0: 63 6c 5f 4d 61 69 6e 2d 31 2e 37 20 7b 0a 2b 09  cl_Main-1.7 {.+.
69b0: 54 63 6c 5f 4d 61 69 6e 3a 20 73 74 61 72 74 75  Tcl_Main: startu
69c0: 70 20 73 63 72 69 70 74 20 2d 20 2d 65 6e 63 6f  p script - -enco
69d0: 64 69 6e 67 20 6f 70 74 69 6f 6e 0a 2b 20 20 20  ding option.+   
69e0: 20 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20   } -constraints 
69f0: 7b 0a 2b 09 73 74 64 69 6f 0a 2b 20 20 20 20 7d  {.+.stdio.+    }
6a00: 20 2d 73 65 74 75 70 20 7b 0a 2b 09 73 65 74 20   -setup {.+.set 
6a10: 73 63 72 69 70 74 20 5b 6d 61 6b 65 46 69 6c 65  script [makeFile
6a20: 20 7b 7d 20 73 63 72 69 70 74 5d 0a 2b 09 72 65   {} script].+.re
6a30: 6d 6f 76 65 46 69 6c 65 20 73 63 72 69 70 74 0a  moveFile script.
6a40: 2b 09 73 65 74 20 66 20 5b 6f 70 65 6e 20 24 73  +.set f [open $s
6a50: 63 72 69 70 74 20 77 5d 0a 2b 09 66 63 6f 6e 66  cript w].+.fconf
6a60: 69 67 75 72 65 20 24 66 20 2d 65 6e 63 6f 64 69  igure $f -encodi
6a70: 6e 67 20 75 74 66 2d 38 0a 2b 09 70 75 74 73 20  ng utf-8.+.puts 
6a80: 24 66 20 7b 70 75 74 73 20 5b 6c 69 73 74 20 24  $f {puts [list $
6a90: 61 72 67 76 30 20 24 61 72 67 76 20 24 74 63 6c  argv0 $argv $tcl
6aa0: 5f 69 6e 74 65 72 61 63 74 69 76 65 5d 7d 0a 2b  _interactive]}.+
6ab0: 09 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65  .puts -nonewline
6ac0: 20 24 66 20 7b 70 75 74 73 20 5b 73 74 72 69 6e   $f {puts [strin
6ad0: 67 20 65 71 75 61 6c 20 5c 75 32 30 61 63 20 7d  g equal \u20ac }
6ae0: 0a 2b 09 70 75 74 73 20 24 66 20 22 5c 75 32 30  .+.puts $f "\u20
6af0: 61 63 5d 22 0a 2b 09 63 6c 6f 73 65 20 24 66 0a  ac]".+.close $f.
6b00: 2b 09 63 61 74 63 68 20 7b 73 65 74 20 66 20 5b  +.catch {set f [
6b10: 6f 70 65 6e 20 22 7c 5b 6c 69 73 74 20 5b 69 6e  open "|[list [in
6b20: 74 65 72 70 72 65 74 65 72 5d 20 2d 65 6e 63 6f  terpreter] -enco
6b30: 64 69 6e 67 20 75 74 66 2d 38 20 73 63 72 69 70  ding utf-8 scrip
6b40: 74 5d 22 20 72 5d 7d 0a 2b 20 20 20 20 7d 20 2d  t]" r]}.+    } -
6b50: 62 6f 64 79 20 7b 0a 2b 09 72 65 61 64 20 24 66  body {.+.read $f
6b60: 0a 2b 20 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70  .+    } -cleanup
6b70: 20 7b 0a 2b 09 63 6c 6f 73 65 20 24 66 0a 2b 09   {.+.close $f.+.
6b80: 72 65 6d 6f 76 65 46 69 6c 65 20 73 63 72 69 70  removeFile scrip
6b90: 74 0a 2b 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  t.+    } -result
6ba0: 20 5b 6c 69 73 74 20 73 63 72 69 70 74 20 7b 7d   [list script {}
6bb0: 20 30 5d 5c 6e 31 5c 6e 0a 2b 0a 2b 20 20 20 20   0]\n1\n.+.+    
6bc0: 74 65 73 74 20 54 63 6c 5f 4d 61 69 6e 2d 31 2e  test Tcl_Main-1.
6bd0: 38 20 7b 0a 2b 09 54 63 6c 5f 4d 61 69 6e 3a 20  8 {.+.Tcl_Main: 
6be0: 73 74 61 72 74 75 70 20 73 63 72 69 70 74 20 2d  startup script -
6bf0: 20 2d 65 6e 63 6f 64 69 6e 67 20 6f 70 74 69 6f   -encoding optio
6c00: 6e 20 2d 20 6d 69 73 6d 61 74 63 68 65 64 20 65  n - mismatched e
6c10: 6e 63 6f 64 69 6e 67 73 0a 2b 20 20 20 20 7d 20  ncodings.+    } 
6c20: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b 0a 2b  -constraints {.+
6c30: 09 73 74 64 69 6f 0a 2b 20 20 20 20 7d 20 2d 73  .stdio.+    } -s
6c40: 65 74 75 70 20 7b 0a 2b 09 73 65 74 20 73 63 72  etup {.+.set scr
6c50: 69 70 74 20 5b 6d 61 6b 65 46 69 6c 65 20 7b 7d  ipt [makeFile {}
6c60: 20 73 63 72 69 70 74 5d 0a 2b 09 72 65 6d 6f 76   script].+.remov
6c70: 65 46 69 6c 65 20 73 63 72 69 70 74 0a 2b 09 73  eFile script.+.s
6c80: 65 74 20 66 20 5b 6f 70 65 6e 20 24 73 63 72 69  et f [open $scri
6c90: 70 74 20 77 5d 0a 2b 09 66 63 6f 6e 66 69 67 75  pt w].+.fconfigu
6ca0: 72 65 20 24 66 20 2d 65 6e 63 6f 64 69 6e 67 20  re $f -encoding 
6cb0: 75 74 66 2d 38 0a 2b 09 70 75 74 73 20 24 66 20  utf-8.+.puts $f 
6cc0: 7b 70 75 74 73 20 5b 6c 69 73 74 20 24 61 72 67  {puts [list $arg
6cd0: 76 30 20 24 61 72 67 76 20 24 74 63 6c 5f 69 6e  v0 $argv $tcl_in
6ce0: 74 65 72 61 63 74 69 76 65 5d 7d 0a 2b 09 70 75  teractive]}.+.pu
6cf0: 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20 24 66  ts -nonewline $f
6d00: 20 7b 70 75 74 73 20 5b 73 74 72 69 6e 67 20 65   {puts [string e
6d10: 71 75 61 6c 20 5c 75 32 30 61 63 20 7d 0a 2b 09  qual \u20ac }.+.
6d20: 70 75 74 73 20 24 66 20 22 5c 75 32 30 61 63 5d  puts $f "\u20ac]
6d30: 22 0a 2b 09 63 6c 6f 73 65 20 24 66 0a 2b 09 63  ".+.close $f.+.c
6d40: 61 74 63 68 20 7b 73 65 74 20 66 20 5b 6f 70 65  atch {set f [ope
6d50: 6e 20 22 7c 5b 6c 69 73 74 20 5b 69 6e 74 65 72  n "|[list [inter
6d60: 70 72 65 74 65 72 5d 20 2d 65 6e 63 6f 64 69 6e  preter] -encodin
6d70: 67 20 61 73 63 69 69 20 73 63 72 69 70 74 5d 22  g ascii script]"
6d80: 20 72 5d 7d 0a 2b 20 20 20 20 7d 20 2d 62 6f 64   r]}.+    } -bod
6d90: 79 20 7b 0a 2b 09 72 65 61 64 20 24 66 0a 2b 20  y {.+.read $f.+ 
6da0: 20 20 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a     } -cleanup {.
6db0: 2b 09 63 6c 6f 73 65 20 24 66 0a 2b 09 72 65 6d  +.close $f.+.rem
6dc0: 6f 76 65 46 69 6c 65 20 73 63 72 69 70 74 0a 2b  oveFile script.+
6dd0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 5b 6c      } -result [l
6de0: 69 73 74 20 73 63 72 69 70 74 20 7b 7d 20 30 5d  ist script {} 0]
6df0: 5c 6e 30 5c 6e 0a 2b 0a 2b 20 20 20 20 74 65 73  \n0\n.+.+    tes
6e00: 74 20 54 63 6c 5f 4d 61 69 6e 2d 31 2e 39 20 7b  t Tcl_Main-1.9 {
6e10: 0a 2b 09 54 63 6c 5f 4d 61 69 6e 3a 20 73 74 61  .+.Tcl_Main: sta
6e20: 72 74 75 70 20 73 63 72 69 70 74 20 2d 20 2d 65  rtup script - -e
6e30: 6e 63 6f 64 69 6e 67 20 6f 70 74 69 6f 6e 20 2d  ncoding option -
6e40: 20 6e 6f 20 61 62 62 72 65 76 61 74 69 6f 6e 0a   no abbrevation.
6e50: 2b 20 20 20 20 7d 20 2d 63 6f 6e 73 74 72 61 69  +    } -constrai
6e60: 6e 74 73 20 7b 0a 2b 09 73 74 64 69 6f 0a 2b 20  nts {.+.stdio.+ 
6e70: 20 20 20 7d 20 2d 73 65 74 75 70 20 7b 0a 2b 09     } -setup {.+.
6e80: 73 65 74 20 73 63 72 69 70 74 20 5b 6d 61 6b 65  set script [make
6e90: 46 69 6c 65 20 7b 7d 20 73 63 72 69 70 74 5d 0a  File {} script].
6ea0: 2b 09 72 65 6d 6f 76 65 46 69 6c 65 20 73 63 72  +.removeFile scr
6eb0: 69 70 74 0a 2b 09 73 65 74 20 66 20 5b 6f 70 65  ipt.+.set f [ope
6ec0: 6e 20 24 73 63 72 69 70 74 20 77 5d 0a 2b 09 66  n $script w].+.f
6ed0: 63 6f 6e 66 69 67 75 72 65 20 24 66 20 2d 65 6e  configure $f -en
6ee0: 63 6f 64 69 6e 67 20 75 74 66 2d 38 0a 2b 09 70  coding utf-8.+.p
6ef0: 75 74 73 20 24 66 20 7b 70 75 74 73 20 5b 6c 69  uts $f {puts [li
6f00: 73 74 20 24 61 72 67 76 30 20 24 61 72 67 76 20  st $argv0 $argv 
6f10: 24 74 63 6c 5f 69 6e 74 65 72 61 63 74 69 76 65  $tcl_interactive
6f20: 5d 7d 0a 2b 09 70 75 74 73 20 2d 6e 6f 6e 65 77  ]}.+.puts -nonew
6f30: 6c 69 6e 65 20 24 66 20 7b 70 75 74 73 20 5b 73  line $f {puts [s
6f40: 74 72 69 6e 67 20 65 71 75 61 6c 20 5c 75 32 30  tring equal \u20
6f50: 61 63 20 7d 0a 2b 09 70 75 74 73 20 24 66 20 22  ac }.+.puts $f "
6f60: 5c 75 32 30 61 63 5d 22 0a 2b 09 63 6c 6f 73 65  \u20ac]".+.close
6f70: 20 24 66 0a 2b 09 63 61 74 63 68 20 7b 73 65 74   $f.+.catch {set
6f80: 20 66 20 5b 6f 70 65 6e 20 22 7c 5b 6c 69 73 74   f [open "|[list
6f90: 20 5b 69 6e 74 65 72 70 72 65 74 65 72 5d 20 2d   [interpreter] -
6fa0: 65 6e 63 20 75 74 66 2d 38 20 73 63 72 69 70 74  enc utf-8 script
6fb0: 5d 22 20 72 2b 5d 7d 0a 2b 20 20 20 20 7d 20 2d  ]" r+]}.+    } -
6fc0: 62 6f 64 79 20 7b 0a 2b 09 74 79 70 65 20 24 66  body {.+.type $f
6fd0: 20 7b 0a 2b 09 20 20 20 20 70 75 74 73 20 24 61   {.+.    puts $a
6fe0: 72 67 76 0a 2b 09 7d 0a 2b 09 6c 69 73 74 20 5b  rgv.+.}.+.list [
6ff0: 63 61 74 63 68 20 7b 67 65 74 73 20 24 66 7d 20  catch {gets $f} 
7000: 6c 69 6e 65 5d 20 24 6c 69 6e 65 0a 2b 20 20 20  line] $line.+   
7010: 20 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 2b 09   } -cleanup {.+.
7020: 63 6c 6f 73 65 20 24 66 0a 2b 09 72 65 6d 6f 76  close $f.+.remov
7030: 65 46 69 6c 65 20 73 63 72 69 70 74 0a 2b 20 20  eFile script.+  
7040: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 30 20 7b    } -result {0 {
7050: 2d 65 6e 63 20 75 74 66 2d 38 20 73 63 72 69 70  -enc utf-8 scrip
7060: 74 7d 7d 0a 2b 0a 20 20 20 20 20 23 20 54 65 73  t}}.+.     # Tes
7070: 74 73 20 54 63 6c 5f 4d 61 69 6e 2d 32 2e 2a 3a  ts Tcl_Main-2.*:
7080: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 69 6e 69   application-ini
7090: 74 69 61 6c 69 7a 61 74 69 6f 6e 20 70 72 6f 63  tialization proc
70a0: 65 64 75 72 65 0a 20 0a 20 20 20 20 20 74 65 73  edure. .     tes
70b0: 74 20 54 63 6c 5f 4d 61 69 6e 2d 32 2e 31 20 7b  t Tcl_Main-2.1 {
70c0: 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 2f 73 6f  .Index: tests/so
70d0: 75 72 63 65 2e 74 65 73 74 0a 3d 3d 3d 3d 3d 3d  urce.test.======
70e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
70f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
7100: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
7110: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43  =============.RC
7120: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74  S file: /cvsroot
7130: 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73 2f 73  /tcl/tcl/tests/s
7140: 6f 75 72 63 65 2e 74 65 73 74 2c 76 0a 72 65 74  ource.test,v.ret
7150: 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e  rieving revision
7160: 20 31 2e 38 0a 64 69 66 66 20 2d 75 20 2d 72 31   1.8.diff -u -r1
7170: 2e 38 20 73 6f 75 72 63 65 2e 74 65 73 74 0a 2d  .8 source.test.-
7180: 2d 2d 20 74 65 73 74 73 2f 73 6f 75 72 63 65 2e  -- tests/source.
7190: 74 65 73 74 09 35 20 4a 75 6c 20 32 30 30 32 20  test.5 Jul 2002 
71a0: 31 30 3a 33 38 3a 34 33 20 2d 30 30 30 30 09 31  10:38:43 -0000.1
71b0: 2e 38 0a 2b 2b 2b 20 74 65 73 74 73 2f 73 6f 75  .8.+++ tests/sou
71c0: 72 63 65 2e 74 65 73 74 09 35 20 53 65 70 20 32  rce.test.5 Sep 2
71d0: 30 30 33 20 32 31 3a 32 33 3a 32 38 20 2d 30 30  003 21:23:28 -00
71e0: 30 30 0a 40 40 20 2d 37 2c 31 38 37 20 2b 37 2c  00.@@ -7,187 +7,
71f0: 33 38 31 20 40 40 0a 20 23 20 43 6f 70 79 72 69  381 @@. # Copyri
7200: 67 68 74 20 28 63 29 20 31 39 39 31 2d 31 39 39  ght (c) 1991-199
7210: 33 20 54 68 65 20 52 65 67 65 6e 74 73 20 6f 66  3 The Regents of
7220: 20 74 68 65 20 55 6e 69 76 65 72 73 69 74 79 20   the University 
7230: 6f 66 20 43 61 6c 69 66 6f 72 6e 69 61 2e 0a 20  of California.. 
7240: 23 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20  # Copyright (c) 
7250: 31 39 39 34 2d 31 39 39 36 20 53 75 6e 20 4d 69  1994-1996 Sun Mi
7260: 63 72 6f 73 79 73 74 65 6d 73 2c 20 49 6e 63 2e  crosystems, Inc.
7270: 0a 20 23 20 43 6f 70 79 72 69 67 68 74 20 28 63  . # Copyright (c
7280: 29 20 31 39 39 38 2d 32 30 30 30 20 62 79 20 53  ) 1998-2000 by S
7290: 63 72 69 70 74 69 63 73 20 43 6f 72 70 6f 72 61  criptics Corpora
72a0: 74 69 6f 6e 2e 0a 2b 23 20 43 6f 6e 74 72 69 62  tion..+# Contrib
72b0: 75 74 69 6f 6e 73 20 66 72 6f 6d 20 44 6f 6e 20  utions from Don 
72c0: 50 6f 72 74 65 72 2c 20 4e 49 53 54 2c 20 32 30  Porter, NIST, 20
72d0: 30 33 2e 20 20 28 6e 6f 74 20 73 75 62 6a 65 63  03.  (not subjec
72e0: 74 20 74 6f 20 55 53 20 63 6f 70 79 72 69 67 68  t to US copyrigh
72f0: 74 29 0a 20 23 0a 20 23 20 53 65 65 20 74 68 65  t). #. # See the
7300: 20 66 69 6c 65 20 22 6c 69 63 65 6e 73 65 2e 74   file "license.t
7310: 65 72 6d 73 22 20 66 6f 72 20 69 6e 66 6f 72 6d  erms" for inform
7320: 61 74 69 6f 6e 20 6f 6e 20 75 73 61 67 65 20 61  ation on usage a
7330: 6e 64 20 72 65 64 69 73 74 72 69 62 75 74 69 6f  nd redistributio
7340: 6e 0a 20 23 20 6f 66 20 74 68 69 73 20 66 69 6c  n. # of this fil
7350: 65 2c 20 61 6e 64 20 66 6f 72 20 61 20 44 49 53  e, and for a DIS
7360: 43 4c 41 49 4d 45 52 20 4f 46 20 41 4c 4c 20 57  CLAIMER OF ALL W
7370: 41 52 52 41 4e 54 49 45 53 2e 0a 20 23 0a 20 23  ARRANTIES.. #. #
7380: 20 52 43 53 3a 20 40 28 23 29 20 24 49 64 3a 20   RCS: @(#) $Id: 
7390: 73 6f 75 72 63 65 2e 74 65 73 74 2c 76 20 31 2e  source.test,v 1.
73a0: 38 20 32 30 30 32 2f 30 37 2f 30 35 20 31 30 3a  8 2002/07/05 10:
73b0: 33 38 3a 34 33 20 64 6b 66 20 45 78 70 20 24 0a  38:43 dkf Exp $.
73c0: 20 0a 2d 69 66 20 7b 5b 6c 73 65 61 72 63 68 20   .-if {[lsearch 
73d0: 5b 6e 61 6d 65 73 70 61 63 65 20 63 68 69 6c 64  [namespace child
73e0: 72 65 6e 5d 20 3a 3a 74 63 6c 74 65 73 74 5d 20  ren] ::tcltest] 
73f0: 3d 3d 20 2d 31 7d 20 7b 0a 2d 20 20 20 20 70 61  == -1} {.-    pa
7400: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 74 63  ckage require tc
7410: 6c 74 65 73 74 0a 2d 20 20 20 20 6e 61 6d 65 73  ltest.-    names
7420: 70 61 63 65 20 69 6d 70 6f 72 74 20 2d 66 6f 72  pace import -for
7430: 63 65 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 2a 0a  ce ::tcltest::*.
7440: 2b 69 66 20 7b 5b 63 61 74 63 68 20 7b 70 61 63  +if {[catch {pac
7450: 6b 61 67 65 20 72 65 71 75 69 72 65 20 74 63 6c  kage require tcl
7460: 74 65 73 74 20 32 2e 30 2e 32 7d 5d 7d 20 7b 0a  test 2.0.2}]} {.
7470: 2b 20 20 20 20 70 75 74 73 20 73 74 64 65 72 72  +    puts stderr
7480: 20 22 53 6b 69 70 70 69 6e 67 20 74 65 73 74 73   "Skipping tests
7490: 20 69 6e 20 5b 69 6e 66 6f 20 73 63 72 69 70 74   in [info script
74a0: 5d 2e 20 74 63 6c 74 65 73 74 20 32 2e 30 2e 32  ]. tcltest 2.0.2
74b0: 20 72 65 71 75 69 72 65 64 2e 22 0a 2b 20 20 20   required.".+   
74c0: 20 72 65 74 75 72 6e 0a 20 7d 0a 20 0a 2d 73 65   return. }. .-se
74d0: 74 20 73 6f 75 72 63 65 66 69 6c 65 20 5b 6d 61  t sourcefile [ma
74e0: 6b 65 46 69 6c 65 20 22 22 20 73 6f 75 72 63 65  keFile "" source
74f0: 2e 66 69 6c 65 5d 0a 2d 74 65 73 74 20 73 6f 75  .file].-test sou
7500: 72 63 65 2d 31 2e 31 20 7b 73 6f 75 72 63 65 20  rce-1.1 {source 
7510: 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 2b 6e 61 6d 65  command} {.+name
7520: 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 74 63 6c  space eval ::tcl
7530: 3a 3a 74 65 73 74 3a 3a 73 6f 75 72 63 65 20 7b  ::test::source {
7540: 0a 2b 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20  .+    namespace 
7550: 69 6d 70 6f 72 74 20 3a 3a 74 63 6c 74 65 73 74  import ::tcltest
7560: 3a 3a 74 65 73 74 0a 2b 20 20 20 20 6e 61 6d 65  ::test.+    name
7570: 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 74  space import ::t
7580: 63 6c 74 65 73 74 3a 3a 74 65 73 74 43 6f 6e 73  cltest::testCons
7590: 74 72 61 69 6e 74 0a 2b 20 20 20 20 6e 61 6d 65  traint.+    name
75a0: 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 74  space import ::t
75b0: 63 6c 74 65 73 74 3a 3a 63 6c 65 61 6e 75 70 54  cltest::cleanupT
75c0: 65 73 74 73 0a 2b 20 20 20 20 6e 61 6d 65 73 70  ests.+    namesp
75d0: 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 74 63 6c  ace import ::tcl
75e0: 74 65 73 74 3a 3a 6d 61 6b 65 46 69 6c 65 0a 2b  test::makeFile.+
75f0: 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 69 6d      namespace im
7600: 70 6f 72 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a  port ::tcltest::
7610: 72 65 6d 6f 76 65 46 69 6c 65 0a 2b 0a 2b 74 65  removeFile.+.+te
7620: 73 74 20 73 6f 75 72 63 65 2d 31 2e 31 20 7b 73  st source-1.1 {s
7630: 6f 75 72 63 65 20 63 6f 6d 6d 61 6e 64 7d 20 2d  ource command} -
7640: 73 65 74 75 70 20 7b 0a 20 20 20 20 20 73 65 74  setup {.     set
7650: 20 78 20 22 6f 6c 64 20 78 20 76 61 6c 75 65 22   x "old x value"
7660: 0a 20 20 20 20 20 73 65 74 20 79 20 22 6f 6c 64  .     set y "old
7670: 20 79 20 76 61 6c 75 65 22 0a 20 20 20 20 20 73   y value".     s
7680: 65 74 20 7a 20 22 6f 6c 64 20 7a 20 76 61 6c 75  et z "old z valu
7690: 65 22 0a 2d 20 20 20 20 6d 61 6b 65 46 69 6c 65  e".-    makeFile
76a0: 20 7b 0a 2b 20 20 20 20 73 65 74 20 73 6f 75 72   {.+    set sour
76b0: 63 65 66 69 6c 65 20 5b 6d 61 6b 65 46 69 6c 65  cefile [makeFile
76c0: 20 7b 0a 20 09 73 65 74 20 78 20 32 32 0a 20 09   {. .set x 22. .
76d0: 73 65 74 20 79 20 33 33 0a 20 09 73 65 74 20 7a  set y 33. .set z
76e0: 20 34 34 0a 2d 20 20 20 20 7d 20 73 6f 75 72 63   44.-    } sourc
76f0: 65 2e 66 69 6c 65 0a 2b 20 20 20 20 7d 20 73 6f  e.file.+    } so
7700: 75 72 63 65 2e 66 69 6c 65 5d 0a 2b 7d 20 2d 62  urce.file].+} -b
7710: 6f 64 79 20 7b 0a 20 20 20 20 20 73 6f 75 72 63  ody {.     sourc
7720: 65 20 24 73 6f 75 72 63 65 66 69 6c 65 0a 20 20  e $sourcefile.  
7730: 20 20 20 6c 69 73 74 20 24 78 20 24 79 20 24 7a     list $x $y $z
7740: 0a 2d 7d 20 7b 32 32 20 33 33 20 34 34 7d 0a 2d  .-} {22 33 44}.-
7750: 74 65 73 74 20 73 6f 75 72 63 65 2d 31 2e 32 20  test source-1.2 
7760: 7b 73 6f 75 72 63 65 20 63 6f 6d 6d 61 6e 64 7d  {source command}
7770: 20 7b 0a 2d 20 20 20 20 6d 61 6b 65 46 69 6c 65   {.-    makeFile
7780: 20 7b 6c 69 73 74 20 72 65 73 75 6c 74 7d 20 73   {list result} s
7790: 6f 75 72 63 65 2e 66 69 6c 65 0a 2d 20 20 20 20  ource.file.-    
77a0: 73 6f 75 72 63 65 20 24 73 6f 75 72 63 65 66 69  source $sourcefi
77b0: 6c 65 0a 2d 7d 20 72 65 73 75 6c 74 0a 2d 74 65  le.-} result.-te
77c0: 73 74 20 73 6f 75 72 63 65 2d 31 2e 33 20 7b 73  st source-1.3 {s
77d0: 6f 75 72 63 65 20 63 6f 6d 6d 61 6e 64 7d 20 7b  ource command} {
77e0: 0a 2d 20 20 20 20 73 65 74 20 79 20 7b 5c 20 7d  .-    set y {\ }
77f0: 0a 2b 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 2b  .+} -cleanup {.+
7800: 20 20 20 20 72 65 6d 6f 76 65 46 69 6c 65 20 73      removeFile s
7810: 6f 75 72 63 65 2e 66 69 6c 65 0a 2b 7d 20 2d 72  ource.file.+} -r
7820: 65 73 75 6c 74 20 7b 32 32 20 33 33 20 34 34 7d  esult {22 33 44}
7830: 0a 2b 0a 2b 74 65 73 74 20 73 6f 75 72 63 65 2d  .+.+test source-
7840: 31 2e 32 20 7b 73 6f 75 72 63 65 20 63 6f 6d 6d  1.2 {source comm
7850: 61 6e 64 7d 20 2d 73 65 74 75 70 20 7b 0a 2b 20  and} -setup {.+ 
7860: 20 20 20 73 65 74 20 73 6f 75 72 63 65 66 69 6c     set sourcefil
7870: 65 20 5b 6d 61 6b 65 46 69 6c 65 20 7b 6c 69 73  e [makeFile {lis
7880: 74 20 72 65 73 75 6c 74 7d 20 73 6f 75 72 63 65  t result} source
7890: 2e 66 69 6c 65 5d 0a 2b 7d 20 2d 62 6f 64 79 20  .file].+} -body 
78a0: 7b 0a 2b 20 20 20 20 73 6f 75 72 63 65 20 24 73  {.+    source $s
78b0: 6f 75 72 63 65 66 69 6c 65 0a 2b 7d 20 2d 63 6c  ourcefile.+} -cl
78c0: 65 61 6e 75 70 20 7b 0a 2b 20 20 20 20 72 65 6d  eanup {.+    rem
78d0: 6f 76 65 46 69 6c 65 20 73 6f 75 72 63 65 2e 66  oveFile source.f
78e0: 69 6c 65 0a 2b 7d 20 2d 72 65 73 75 6c 74 20 72  ile.+} -result r
78f0: 65 73 75 6c 74 0a 20 0a 2b 74 65 73 74 20 73 6f  esult. .+test so
7900: 75 72 63 65 2d 31 2e 33 20 7b 73 6f 75 72 63 65  urce-1.3 {source
7910: 20 63 6f 6d 6d 61 6e 64 7d 20 2d 73 65 74 75 70   command} -setup
7920: 20 7b 0a 2b 20 20 20 20 73 65 74 20 73 6f 75 72   {.+    set sour
7930: 63 65 66 69 6c 65 20 5b 6d 61 6b 65 46 69 6c 65  cefile [makeFile
7940: 20 7b 7d 20 73 6f 75 72 63 65 2e 66 69 6c 65 5d   {} source.file]
7950: 0a 20 20 20 20 20 73 65 74 20 66 64 20 5b 6f 70  .     set fd [op
7960: 65 6e 20 24 73 6f 75 72 63 65 66 69 6c 65 20 77  en $sourcefile w
7970: 5d 0a 20 20 20 20 20 66 63 6f 6e 66 69 67 75 72  ].     fconfigur
7980: 65 20 24 66 64 20 2d 74 72 61 6e 73 6c 61 74 69  e $fd -translati
7990: 6f 6e 20 6c 66 0a 2d 20 20 20 20 70 75 74 73 20  on lf.-    puts 
79a0: 2d 6e 6f 6e 65 77 6c 69 6e 65 20 24 66 64 20 22  -nonewline $fd "
79b0: 6c 69 73 74 20 61 20 62 20 63 20 22 0a 2d 20 20  list a b c ".-  
79c0: 20 20 70 75 74 73 20 24 66 64 20 5b 73 74 72 69    puts $fd [stri
79d0: 6e 67 20 69 6e 64 65 78 20 24 79 20 30 5d 0a 2b  ng index $y 0].+
79e0: 20 20 20 20 70 75 74 73 20 24 66 64 20 22 6c 69      puts $fd "li
79f0: 73 74 20 61 20 62 20 63 20 5c 5c 22 0a 20 20 20  st a b c \\".   
7a00: 20 20 70 75 74 73 20 24 66 64 20 22 64 20 65 20    puts $fd "d e 
7a10: 66 22 0a 20 20 20 20 20 63 6c 6f 73 65 20 24 66  f".     close $f
7a20: 64 0a 2d 0a 2b 7d 20 2d 62 6f 64 79 20 7b 0a 20  d.-.+} -body {. 
7a30: 20 20 20 20 73 6f 75 72 63 65 20 24 73 6f 75 72      source $sour
7a40: 63 65 66 69 6c 65 0a 2d 7d 20 7b 61 20 62 20 63  cefile.-} {a b c
7a50: 20 64 20 65 20 66 7d 0a 2b 7d 20 2d 63 6c 65 61   d e f}.+} -clea
7a60: 6e 75 70 20 7b 0a 2b 20 20 20 20 72 65 6d 6f 76  nup {.+    remov
7a70: 65 46 69 6c 65 20 73 6f 75 72 63 65 2e 66 69 6c  eFile source.fil
7a80: 65 0a 2b 7d 20 2d 72 65 73 75 6c 74 20 7b 61 20  e.+} -result {a 
7a90: 62 20 63 20 64 20 65 20 66 7d 0a 2b 0a 20 0a 2d  b c d e f}.+. .-
7aa0: 74 65 73 74 20 73 6f 75 72 63 65 2d 32 2e 33 20  test source-2.3 
7ab0: 7b 73 6f 75 72 63 65 20 65 72 72 6f 72 20 63 6f  {source error co
7ac0: 6e 64 69 74 69 6f 6e 73 7d 20 7b 0a 2d 20 20 20  nditions} {.-   
7ad0: 20 6d 61 6b 65 46 69 6c 65 20 7b 0a 2b 74 65 73   makeFile {.+tes
7ae0: 74 20 73 6f 75 72 63 65 2d 32 2e 33 20 7b 73 6f  t source-2.3 {so
7af0: 75 72 63 65 20 65 72 72 6f 72 20 63 6f 6e 64 69  urce error condi
7b00: 74 69 6f 6e 73 7d 20 2d 73 65 74 75 70 20 7b 0a  tions} -setup {.
7b10: 2b 20 20 20 20 73 65 74 20 73 6f 75 72 63 65 66  +    set sourcef
7b20: 69 6c 65 20 5b 6d 61 6b 65 46 69 6c 65 20 7b 0a  ile [makeFile {.
7b30: 20 09 73 65 74 20 78 20 31 34 36 0a 20 09 65 72   .set x 146. .er
7b40: 72 6f 72 20 22 65 72 72 6f 72 20 69 6e 20 73 6f  ror "error in so
7b50: 75 72 63 65 64 20 66 69 6c 65 22 0a 20 09 73 65  urced file". .se
7b60: 74 20 79 20 24 78 0a 2d 20 20 20 20 7d 20 73 6f  t y $x.-    } so
7b70: 75 72 63 65 2e 66 69 6c 65 0a 2d 20 20 20 20 6c  urce.file.-    l
7b80: 69 73 74 20 5b 63 61 74 63 68 20 7b 73 6f 75 72  ist [catch {sour
7b90: 63 65 20 24 73 6f 75 72 63 65 66 69 6c 65 7d 20  ce $sourcefile} 
7ba0: 6d 73 67 5d 20 24 6d 73 67 20 24 65 72 72 6f 72  msg] $msg $error
7bb0: 49 6e 66 6f 0a 2d 7d 20 5b 6c 69 73 74 20 31 20  Info.-} [list 1 
7bc0: 7b 65 72 72 6f 72 20 69 6e 20 73 6f 75 72 63 65  {error in source
7bd0: 64 20 66 69 6c 65 7d 20 22 65 72 72 6f 72 20 69  d file} "error i
7be0: 6e 20 73 6f 75 72 63 65 64 20 66 69 6c 65 0a 2b  n sourced file.+
7bf0: 20 20 20 20 7d 20 73 6f 75 72 63 65 2e 66 69 6c      } source.fil
7c00: 65 5d 0a 2b 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20  e].+} -body {.+ 
7c10: 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b     list [catch {
7c20: 73 6f 75 72 63 65 20 24 73 6f 75 72 63 65 66 69  source $sourcefi
7c30: 6c 65 7d 20 6d 73 67 5d 20 24 6d 73 67 20 24 3a  le} msg] $msg $:
7c40: 3a 65 72 72 6f 72 49 6e 66 6f 0a 2b 7d 20 2d 63  :errorInfo.+} -c
7c50: 6c 65 61 6e 75 70 20 7b 0a 2b 20 20 20 20 72 65  leanup {.+    re
7c60: 6d 6f 76 65 46 69 6c 65 20 73 6f 75 72 63 65 2e  moveFile source.
7c70: 66 69 6c 65 0a 2b 7d 20 2d 6d 61 74 63 68 20 67  file.+} -match g
7c80: 6c 6f 62 20 2d 72 65 73 75 6c 74 20 5b 6c 69 73  lob -result [lis
7c90: 74 20 31 20 7b 65 72 72 6f 72 20 69 6e 20 73 6f  t 1 {error in so
7ca0: 75 72 63 65 64 20 66 69 6c 65 7d 20 5c 0a 2b 09  urced file} \.+.
7cb0: 7b 65 72 72 6f 72 20 69 6e 20 73 6f 75 72 63 65  {error in source
7cc0: 64 20 66 69 6c 65 0a 20 20 20 20 20 77 68 69 6c  d file.     whil
7cd0: 65 20 65 78 65 63 75 74 69 6e 67 0a 2d 5c 22 65  e executing.-\"e
7ce0: 72 72 6f 72 20 5c 22 65 72 72 6f 72 20 69 6e 20  rror \"error in 
7cf0: 73 6f 75 72 63 65 64 20 66 69 6c 65 5c 22 5c 22  sourced file\"\"
7d00: 0a 2d 20 20 20 20 28 66 69 6c 65 20 5c 22 24 73  .-    (file \"$s
7d10: 6f 75 72 63 65 66 69 6c 65 5c 22 20 6c 69 6e 65  ourcefile\" line
7d20: 20 33 29 0a 2b 22 65 72 72 6f 72 20 22 65 72 72   3).+"error "err
7d30: 6f 72 20 69 6e 20 73 6f 75 72 63 65 64 20 66 69  or in sourced fi
7d40: 6c 65 22 22 0a 2b 20 20 20 20 28 66 69 6c 65 20  le"".+    (file 
7d50: 22 2a 73 6f 75 72 63 65 2e 66 69 6c 65 22 20 6c  "*source.file" l
7d60: 69 6e 65 20 33 29 0a 20 20 20 20 20 69 6e 76 6f  ine 3).     invo
7d70: 6b 65 64 20 66 72 6f 6d 20 77 69 74 68 69 6e 0a  ked from within.
7d80: 2d 5c 22 73 6f 75 72 63 65 20 5c 24 73 6f 75 72  -\"source \$sour
7d90: 63 65 66 69 6c 65 5c 22 22 5d 0a 2d 74 65 73 74  cefile\""].-test
7da0: 20 73 6f 75 72 63 65 2d 32 2e 34 20 7b 73 6f 75   source-2.4 {sou
7db0: 72 63 65 20 65 72 72 6f 72 20 63 6f 6e 64 69 74  rce error condit
7dc0: 69 6f 6e 73 7d 20 7b 0a 2d 20 20 20 20 6d 61 6b  ions} {.-    mak
7dd0: 65 46 69 6c 65 20 7b 62 72 65 61 6b 7d 20 73 6f  eFile {break} so
7de0: 75 72 63 65 2e 66 69 6c 65 0a 2d 20 20 20 20 63  urce.file.-    c
7df0: 61 74 63 68 20 7b 73 6f 75 72 63 65 20 24 73 6f  atch {source $so
7e00: 75 72 63 65 66 69 6c 65 7d 0a 2d 7d 20 33 0a 2d  urcefile}.-} 3.-
7e10: 74 65 73 74 20 73 6f 75 72 63 65 2d 32 2e 35 20  test source-2.5 
7e20: 7b 73 6f 75 72 63 65 20 65 72 72 6f 72 20 63 6f  {source error co
7e30: 6e 64 69 74 69 6f 6e 73 7d 20 7b 0a 2d 20 20 20  nditions} {.-   
7e40: 20 6d 61 6b 65 46 69 6c 65 20 7b 63 6f 6e 74 69   makeFile {conti
7e50: 6e 75 65 7d 20 73 6f 75 72 63 65 2e 66 69 6c 65  nue} source.file
7e60: 0a 2d 20 20 20 20 63 61 74 63 68 20 7b 73 6f 75  .-    catch {sou
7e70: 72 63 65 20 24 73 6f 75 72 63 65 66 69 6c 65 7d  rce $sourcefile}
7e80: 0a 2d 7d 20 34 0a 2d 74 65 73 74 20 73 6f 75 72  .-} 4.-test sour
7e90: 63 65 2d 32 2e 36 20 7b 73 6f 75 72 63 65 20 65  ce-2.6 {source e
7ea0: 72 72 6f 72 20 63 6f 6e 64 69 74 69 6f 6e 73 7d  rror conditions}
7eb0: 20 7b 0a 2d 20 20 20 20 6e 6f 72 6d 61 6c 69 7a   {.-    normaliz
7ec0: 65 4d 73 67 20 5b 6c 69 73 74 20 5b 63 61 74 63  eMsg [list [catc
7ed0: 68 20 7b 73 6f 75 72 63 65 20 5f 6e 6f 6e 5f 65  h {source _non_e
7ee0: 78 69 73 74 65 6e 74 5f 7d 20 6d 73 67 5d 20 24  xistent_} msg] $
7ef0: 6d 73 67 20 24 65 72 72 6f 72 43 6f 64 65 5d 0a  msg $errorCode].
7f00: 2d 7d 20 7b 31 20 7b 63 6f 75 6c 64 6e 27 74 20  -} {1 {couldn't 
7f10: 72 65 61 64 20 66 69 6c 65 20 22 5f 6e 6f 6e 5f  read file "_non_
7f20: 65 78 69 73 74 65 6e 74 5f 22 3a 20 6e 6f 20 73  existent_": no s
7f30: 75 63 68 20 66 69 6c 65 20 6f 72 20 64 69 72 65  uch file or dire
7f40: 63 74 6f 72 79 7d 20 7b 70 6f 73 69 78 20 65 6e  ctory} {posix en
7f50: 6f 65 6e 74 20 7b 6e 6f 20 73 75 63 68 20 66 69  oent {no such fi
7f60: 6c 65 20 6f 72 20 64 69 72 65 63 74 6f 72 79 7d  le or directory}
7f70: 7d 7d 0a 2b 22 73 6f 75 72 63 65 20 24 73 6f 75  }}.+"source $sou
7f80: 72 63 65 66 69 6c 65 22 7d 5d 0a 2b 0a 2b 74 65  rcefile"}].+.+te
7f90: 73 74 20 73 6f 75 72 63 65 2d 32 2e 34 20 7b 73  st source-2.4 {s
7fa0: 6f 75 72 63 65 20 65 72 72 6f 72 20 63 6f 6e 64  ource error cond
7fb0: 69 74 69 6f 6e 73 7d 20 2d 73 65 74 75 70 20 7b  itions} -setup {
7fc0: 0a 2b 20 20 20 20 73 65 74 20 73 6f 75 72 63 65  .+    set source
7fd0: 66 69 6c 65 20 5b 6d 61 6b 65 46 69 6c 65 20 7b  file [makeFile {
7fe0: 62 72 65 61 6b 7d 20 73 6f 75 72 63 65 2e 66 69  break} source.fi
7ff0: 6c 65 5d 0a 2b 7d 20 2d 62 6f 64 79 20 7b 0a 2b  le].+} -body {.+
8000: 20 20 20 20 73 6f 75 72 63 65 20 24 73 6f 75 72      source $sour
8010: 63 65 66 69 6c 65 0a 2b 7d 20 2d 63 6c 65 61 6e  cefile.+} -clean
8020: 75 70 20 7b 0a 2b 20 20 20 20 72 65 6d 6f 76 65  up {.+    remove
8030: 46 69 6c 65 20 73 6f 75 72 63 65 2e 66 69 6c 65  File source.file
8040: 0a 2b 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  .+} -returnCodes
8050: 20 62 72 65 61 6b 0a 2b 0a 2b 74 65 73 74 20 73   break.+.+test s
8060: 6f 75 72 63 65 2d 32 2e 35 20 7b 73 6f 75 72 63  ource-2.5 {sourc
8070: 65 20 65 72 72 6f 72 20 63 6f 6e 64 69 74 69 6f  e error conditio
8080: 6e 73 7d 20 2d 73 65 74 75 70 20 7b 0a 2b 20 20  ns} -setup {.+  
8090: 20 20 73 65 74 20 73 6f 75 72 63 65 66 69 6c 65    set sourcefile
80a0: 20 5b 6d 61 6b 65 46 69 6c 65 20 7b 63 6f 6e 74   [makeFile {cont
80b0: 69 6e 75 65 7d 20 73 6f 75 72 63 65 2e 66 69 6c  inue} source.fil
80c0: 65 5d 0a 2b 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20  e].+} -body {.+ 
80d0: 20 20 20 73 6f 75 72 63 65 20 24 73 6f 75 72 63     source $sourc
80e0: 65 66 69 6c 65 0a 2b 7d 20 2d 63 6c 65 61 6e 75  efile.+} -cleanu
80f0: 70 20 7b 0a 2b 20 20 20 20 72 65 6d 6f 76 65 46  p {.+    removeF
8100: 69 6c 65 20 73 6f 75 72 63 65 2e 66 69 6c 65 0a  ile source.file.
8110: 2b 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20  +} -returnCodes 
8120: 63 6f 6e 74 69 6e 75 65 0a 20 0a 2d 74 65 73 74  continue. .-test
8130: 20 73 6f 75 72 63 65 2d 33 2e 31 20 7b 72 65 74   source-3.1 {ret
8140: 75 72 6e 20 69 6e 20 6d 69 64 64 6c 65 20 6f 66  urn in middle of
8150: 20 73 6f 75 72 63 65 20 66 69 6c 65 7d 20 7b 0a   source file} {.
8160: 2d 20 20 20 20 6d 61 6b 65 46 69 6c 65 20 7b 0a  -    makeFile {.
8170: 2b 74 65 73 74 20 73 6f 75 72 63 65 2d 32 2e 36  +test source-2.6
8180: 20 7b 73 6f 75 72 63 65 20 65 72 72 6f 72 20 63   {source error c
8190: 6f 6e 64 69 74 69 6f 6e 73 7d 20 2d 73 65 74 75  onditions} -setu
81a0: 70 20 7b 0a 2b 20 20 20 20 73 65 74 20 73 6f 75  p {.+    set sou
81b0: 72 63 65 66 69 6c 65 20 5b 6d 61 6b 65 46 69 6c  rcefile [makeFil
81c0: 65 20 7b 7d 20 5f 6e 6f 6e 5f 65 78 69 73 74 65  e {} _non_existe
81d0: 6e 74 5f 5d 0a 2b 20 20 20 20 72 65 6d 6f 76 65  nt_].+    remove
81e0: 46 69 6c 65 20 5f 6e 6f 6e 5f 65 78 69 73 74 65  File _non_existe
81f0: 6e 74 5f 0a 2b 7d 20 2d 62 6f 64 79 20 7b 0a 2b  nt_.+} -body {.+
8200: 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20      list [catch 
8210: 7b 73 6f 75 72 63 65 20 24 73 6f 75 72 63 65 66  {source $sourcef
8220: 69 6c 65 7d 20 6d 73 67 5d 20 24 6d 73 67 20 24  ile} msg] $msg $
8230: 3a 3a 65 72 72 6f 72 43 6f 64 65 0a 2b 7d 20 2d  ::errorCode.+} -
8240: 6d 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75  match glob -resu
8250: 6c 74 20 5b 6c 69 73 74 20 31 20 5c 0a 2b 09 7b  lt [list 1 \.+.{
8260: 63 6f 75 6c 64 6e 27 74 20 72 65 61 64 20 66 69  couldn't read fi
8270: 6c 65 20 22 2a 5f 6e 6f 6e 5f 65 78 69 73 74 65  le "*_non_existe
8280: 6e 74 5f 22 3a 20 6e 6f 20 73 75 63 68 20 66 69  nt_": no such fi
8290: 6c 65 20 6f 72 20 64 69 72 65 63 74 6f 72 79 7d  le or directory}
82a0: 20 5c 0a 2b 09 7b 50 4f 53 49 58 20 45 4e 4f 45   \.+.{POSIX ENOE
82b0: 4e 54 20 7b 6e 6f 20 73 75 63 68 20 66 69 6c 65  NT {no such file
82c0: 20 6f 72 20 64 69 72 65 63 74 6f 72 79 7d 7d 5d   or directory}}]
82d0: 0a 2b 0a 2b 0a 2b 74 65 73 74 20 73 6f 75 72 63  .+.+.+test sourc
82e0: 65 2d 33 2e 31 20 7b 72 65 74 75 72 6e 20 69 6e  e-3.1 {return in
82f0: 20 6d 69 64 64 6c 65 20 6f 66 20 73 6f 75 72 63   middle of sourc
8300: 65 20 66 69 6c 65 7d 20 2d 73 65 74 75 70 20 7b  e file} -setup {
8310: 0a 2b 20 20 20 20 73 65 74 20 73 6f 75 72 63 65  .+    set source
8320: 66 69 6c 65 20 5b 6d 61 6b 65 46 69 6c 65 20 7b  file [makeFile {
8330: 0a 20 09 73 65 74 20 78 20 6e 65 77 2d 78 0a 20  . .set x new-x. 
8340: 09 72 65 74 75 72 6e 20 61 6c 6c 44 6f 6e 65 0a  .return allDone.
8350: 20 09 73 65 74 20 79 20 6e 65 77 2d 79 0a 2d 20   .set y new-y.- 
8360: 20 20 20 7d 20 73 6f 75 72 63 65 2e 66 69 6c 65     } source.file
8370: 0a 2b 20 20 20 20 7d 20 73 6f 75 72 63 65 2e 66  .+    } source.f
8380: 69 6c 65 5d 0a 2b 7d 20 2d 62 6f 64 79 20 7b 0a  ile].+} -body {.
8390: 20 20 20 20 20 73 65 74 20 78 20 6f 6c 64 2d 78       set x old-x
83a0: 0a 20 20 20 20 20 73 65 74 20 79 20 6f 6c 64 2d  .     set y old-
83b0: 79 0a 20 20 20 20 20 73 65 74 20 7a 20 5b 73 6f  y.     set z [so
83c0: 75 72 63 65 20 24 73 6f 75 72 63 65 66 69 6c 65  urce $sourcefile
83d0: 5d 0a 20 20 20 20 20 6c 69 73 74 20 24 78 20 24  ].     list $x $
83e0: 79 20 24 7a 0a 2d 7d 20 7b 6e 65 77 2d 78 20 6f  y $z.-} {new-x o
83f0: 6c 64 2d 79 20 61 6c 6c 44 6f 6e 65 7d 0a 2d 74  ld-y allDone}.-t
8400: 65 73 74 20 73 6f 75 72 63 65 2d 33 2e 32 20 7b  est source-3.2 {
8410: 72 65 74 75 72 6e 20 77 69 74 68 20 73 70 65 63  return with spec
8420: 69 61 6c 20 63 6f 64 65 20 65 74 63 2e 7d 20 7b  ial code etc.} {
8430: 0a 2d 20 20 20 20 6d 61 6b 65 46 69 6c 65 20 7b  .-    makeFile {
8440: 0a 2b 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 2b  .+} -cleanup {.+
8450: 20 20 20 20 72 65 6d 6f 76 65 46 69 6c 65 20 73      removeFile s
8460: 6f 75 72 63 65 2e 66 69 6c 65 0a 2b 7d 20 2d 72  ource.file.+} -r
8470: 65 73 75 6c 74 20 7b 6e 65 77 2d 78 20 6f 6c 64  esult {new-x old
8480: 2d 79 20 61 6c 6c 44 6f 6e 65 7d 0a 2b 0a 2b 74  -y allDone}.+.+t
8490: 65 73 74 20 73 6f 75 72 63 65 2d 33 2e 32 20 7b  est source-3.2 {
84a0: 72 65 74 75 72 6e 20 77 69 74 68 20 73 70 65 63  return with spec
84b0: 69 61 6c 20 63 6f 64 65 20 65 74 63 2e 7d 20 2d  ial code etc.} -
84c0: 73 65 74 75 70 20 7b 0a 2b 20 20 20 20 73 65 74  setup {.+    set
84d0: 20 73 6f 75 72 63 65 66 69 6c 65 20 5b 6d 61 6b   sourcefile [mak
84e0: 65 46 69 6c 65 20 7b 0a 20 09 73 65 74 20 78 20  eFile {. .set x 
84f0: 6e 65 77 2d 78 0a 20 09 72 65 74 75 72 6e 20 2d  new-x. .return -
8500: 63 6f 64 65 20 62 72 65 61 6b 20 22 53 69 6c 6c  code break "Sill
8510: 79 20 72 65 73 75 6c 74 22 0a 20 09 73 65 74 20  y result". .set 
8520: 79 20 6e 65 77 2d 79 0a 2d 20 20 20 20 7d 20 73  y new-y.-    } s
8530: 6f 75 72 63 65 2e 66 69 6c 65 0a 2d 20 20 20 20  ource.file.-    
8540: 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 73 6f 75  list [catch {sou
8550: 72 63 65 20 24 73 6f 75 72 63 65 66 69 6c 65 7d  rce $sourcefile}
8560: 20 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 33   msg] $msg.-} {3
8570: 20 7b 53 69 6c 6c 79 20 72 65 73 75 6c 74 7d 7d   {Silly result}}
8580: 0a 2d 74 65 73 74 20 73 6f 75 72 63 65 2d 33 2e  .-test source-3.
8590: 33 20 7b 72 65 74 75 72 6e 20 77 69 74 68 20 73  3 {return with s
85a0: 70 65 63 69 61 6c 20 63 6f 64 65 20 65 74 63 2e  pecial code etc.
85b0: 7d 20 7b 0a 2d 20 20 20 20 6d 61 6b 65 46 69 6c  } {.-    makeFil
85c0: 65 20 7b 0a 2b 20 20 20 20 7d 20 73 6f 75 72 63  e {.+    } sourc
85d0: 65 2e 66 69 6c 65 5d 0a 2b 7d 20 2d 62 6f 64 79  e.file].+} -body
85e0: 20 7b 0a 2b 20 20 20 73 6f 75 72 63 65 20 24 73   {.+   source $s
85f0: 6f 75 72 63 65 66 69 6c 65 0a 2b 7d 20 2d 63 6c  ourcefile.+} -cl
8600: 65 61 6e 75 70 20 7b 0a 2b 20 20 20 20 72 65 6d  eanup {.+    rem
8610: 6f 76 65 46 69 6c 65 20 73 6f 75 72 63 65 2e 66  oveFile source.f
8620: 69 6c 65 0a 2b 7d 20 2d 72 65 74 75 72 6e 43 6f  ile.+} -returnCo
8630: 64 65 73 20 62 72 65 61 6b 20 2d 72 65 73 75 6c  des break -resul
8640: 74 20 7b 53 69 6c 6c 79 20 72 65 73 75 6c 74 7d  t {Silly result}
8650: 0a 2b 0a 2b 74 65 73 74 20 73 6f 75 72 63 65 2d  .+.+test source-
8660: 33 2e 33 20 7b 72 65 74 75 72 6e 20 77 69 74 68  3.3 {return with
8670: 20 73 70 65 63 69 61 6c 20 63 6f 64 65 20 65 74   special code et
8680: 63 2e 7d 20 2d 73 65 74 75 70 20 7b 0a 2b 20 20  c.} -setup {.+  
8690: 20 20 73 65 74 20 73 6f 75 72 63 65 66 69 6c 65    set sourcefile
86a0: 20 5b 6d 61 6b 65 46 69 6c 65 20 7b 0a 20 09 73   [makeFile {. .s
86b0: 65 74 20 78 20 6e 65 77 2d 78 0a 20 09 72 65 74  et x new-x. .ret
86c0: 75 72 6e 20 2d 63 6f 64 65 20 65 72 72 6f 72 20  urn -code error 
86d0: 22 53 69 6d 75 6c 61 74 65 64 20 65 72 72 6f 72  "Simulated error
86e0: 22 0a 20 09 73 65 74 20 79 20 6e 65 77 2d 79 0a  ". .set y new-y.
86f0: 2d 20 20 20 20 7d 20 73 6f 75 72 63 65 2e 66 69  -    } source.fi
8700: 6c 65 0a 2d 20 20 20 20 6c 69 73 74 20 5b 63 61  le.-    list [ca
8710: 74 63 68 20 7b 73 6f 75 72 63 65 20 24 73 6f 75  tch {source $sou
8720: 72 63 65 66 69 6c 65 7d 20 6d 73 67 5d 20 24 6d  rcefile} msg] $m
8730: 73 67 20 24 65 72 72 6f 72 49 6e 66 6f 20 24 65  sg $errorInfo $e
8740: 72 72 6f 72 43 6f 64 65 0a 2d 7d 20 7b 31 20 7b  rrorCode.-} {1 {
8750: 53 69 6d 75 6c 61 74 65 64 20 65 72 72 6f 72 7d  Simulated error}
8760: 20 7b 53 69 6d 75 6c 61 74 65 64 20 65 72 72 6f   {Simulated erro
8770: 72 0a 2b 20 20 20 20 7d 20 73 6f 75 72 63 65 2e  r.+    } source.
8780: 66 69 6c 65 5d 0a 2b 7d 20 2d 62 6f 64 79 20 7b  file].+} -body {
8790: 0a 2b 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63  .+    list [catc
87a0: 68 20 7b 73 6f 75 72 63 65 20 24 73 6f 75 72 63  h {source $sourc
87b0: 65 66 69 6c 65 7d 20 6d 73 67 5d 20 24 6d 73 67  efile} msg] $msg
87c0: 20 24 3a 3a 65 72 72 6f 72 49 6e 66 6f 20 24 3a   $::errorInfo $:
87d0: 3a 65 72 72 6f 72 43 6f 64 65 0a 2b 7d 20 2d 63  :errorCode.+} -c
87e0: 6c 65 61 6e 75 70 20 7b 0a 2b 20 20 20 20 72 65  leanup {.+    re
87f0: 6d 6f 76 65 46 69 6c 65 20 73 6f 75 72 63 65 2e  moveFile source.
8800: 66 69 6c 65 0a 2b 7d 20 2d 72 65 73 75 6c 74 20  file.+} -result 
8810: 7b 31 20 7b 53 69 6d 75 6c 61 74 65 64 20 65 72  {1 {Simulated er
8820: 72 6f 72 7d 20 7b 53 69 6d 75 6c 61 74 65 64 20  ror} {Simulated 
8830: 65 72 72 6f 72 0a 20 20 20 20 20 77 68 69 6c 65  error.     while
8840: 20 65 78 65 63 75 74 69 6e 67 0a 20 22 73 6f 75   executing. "sou
8850: 72 63 65 20 24 73 6f 75 72 63 65 66 69 6c 65 22  rce $sourcefile"
8860: 7d 20 4e 4f 4e 45 7d 0a 2d 74 65 73 74 20 73 6f  } NONE}.-test so
8870: 75 72 63 65 2d 33 2e 34 20 7b 72 65 74 75 72 6e  urce-3.4 {return
8880: 20 77 69 74 68 20 73 70 65 63 69 61 6c 20 63 6f   with special co
8890: 64 65 20 65 74 63 2e 7d 20 7b 0a 2d 20 20 20 20  de etc.} {.-    
88a0: 6d 61 6b 65 46 69 6c 65 20 7b 0a 2b 0a 2b 74 65  makeFile {.+.+te
88b0: 73 74 20 73 6f 75 72 63 65 2d 33 2e 34 20 7b 72  st source-3.4 {r
88c0: 65 74 75 72 6e 20 77 69 74 68 20 73 70 65 63 69  eturn with speci
88d0: 61 6c 20 63 6f 64 65 20 65 74 63 2e 7d 20 2d 73  al code etc.} -s
88e0: 65 74 75 70 20 7b 0a 2b 20 20 20 20 73 65 74 20  etup {.+    set 
88f0: 73 6f 75 72 63 65 66 69 6c 65 20 5b 6d 61 6b 65  sourcefile [make
8900: 46 69 6c 65 20 7b 0a 20 09 73 65 74 20 78 20 6e  File {. .set x n
8910: 65 77 2d 78 0a 20 09 72 65 74 75 72 6e 20 2d 63  ew-x. .return -c
8920: 6f 64 65 20 65 72 72 6f 72 20 2d 65 72 72 6f 72  ode error -error
8930: 69 6e 66 6f 20 22 53 69 6d 75 6c 61 74 65 64 20  info "Simulated 
8940: 65 72 72 6f 72 49 6e 66 6f 20 73 74 75 66 66 22  errorInfo stuff"
8950: 0a 20 09 73 65 74 20 79 20 6e 65 77 2d 79 0a 2d  . .set y new-y.-
8960: 20 20 20 20 7d 20 73 6f 75 72 63 65 2e 66 69 6c      } source.fil
8970: 65 0a 2d 20 20 20 20 6c 69 73 74 20 5b 63 61 74  e.-    list [cat
8980: 63 68 20 7b 73 6f 75 72 63 65 20 24 73 6f 75 72  ch {source $sour
8990: 63 65 66 69 6c 65 7d 20 6d 73 67 5d 20 24 6d 73  cefile} msg] $ms
89a0: 67 20 24 65 72 72 6f 72 49 6e 66 6f 20 24 65 72  g $errorInfo $er
89b0: 72 6f 72 43 6f 64 65 0a 2d 7d 20 7b 31 20 7b 7d  rorCode.-} {1 {}
89c0: 20 7b 53 69 6d 75 6c 61 74 65 64 20 65 72 72 6f   {Simulated erro
89d0: 72 49 6e 66 6f 20 73 74 75 66 66 0a 2b 20 20 20  rInfo stuff.+   
89e0: 20 7d 20 73 6f 75 72 63 65 2e 66 69 6c 65 5d 0a   } source.file].
89f0: 2b 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20  +} -body {.+    
8a00: 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 73 6f 75  list [catch {sou
8a10: 72 63 65 20 24 73 6f 75 72 63 65 66 69 6c 65 7d  rce $sourcefile}
8a20: 20 6d 73 67 5d 20 24 6d 73 67 20 24 3a 3a 65 72   msg] $msg $::er
8a30: 72 6f 72 49 6e 66 6f 20 24 3a 3a 65 72 72 6f 72  rorInfo $::error
8a40: 43 6f 64 65 0a 2b 7d 20 2d 63 6c 65 61 6e 75 70  Code.+} -cleanup
8a50: 20 7b 0a 2b 20 20 20 20 72 65 6d 6f 76 65 46 69   {.+    removeFi
8a60: 6c 65 20 73 6f 75 72 63 65 2e 66 69 6c 65 0a 2b  le source.file.+
8a70: 7d 20 2d 72 65 73 75 6c 74 20 7b 31 20 7b 7d 20  } -result {1 {} 
8a80: 7b 53 69 6d 75 6c 61 74 65 64 20 65 72 72 6f 72  {Simulated error
8a90: 49 6e 66 6f 20 73 74 75 66 66 0a 20 20 20 20 20  Info stuff.     
8aa0: 69 6e 76 6f 6b 65 64 20 66 72 6f 6d 20 77 69 74  invoked from wit
8ab0: 68 69 6e 0a 20 22 73 6f 75 72 63 65 20 24 73 6f  hin. "source $so
8ac0: 75 72 63 65 66 69 6c 65 22 7d 20 4e 4f 4e 45 7d  urcefile"} NONE}
8ad0: 0a 2d 74 65 73 74 20 73 6f 75 72 63 65 2d 33 2e  .-test source-3.
8ae0: 35 20 7b 72 65 74 75 72 6e 20 77 69 74 68 20 73  5 {return with s
8af0: 70 65 63 69 61 6c 20 63 6f 64 65 20 65 74 63 2e  pecial code etc.
8b00: 7d 20 7b 0a 2d 20 20 20 20 6d 61 6b 65 46 69 6c  } {.-    makeFil
8b10: 65 20 7b 0a 2b 0a 2b 74 65 73 74 20 73 6f 75 72  e {.+.+test sour
8b20: 63 65 2d 33 2e 35 20 7b 72 65 74 75 72 6e 20 77  ce-3.5 {return w
8b30: 69 74 68 20 73 70 65 63 69 61 6c 20 63 6f 64 65  ith special code
8b40: 20 65 74 63 2e 7d 20 2d 73 65 74 75 70 20 7b 0a   etc.} -setup {.
8b50: 2b 20 20 20 20 73 65 74 20 73 6f 75 72 63 65 66  +    set sourcef
8b60: 69 6c 65 20 5b 6d 61 6b 65 46 69 6c 65 20 7b 0a  ile [makeFile {.
8b70: 20 09 73 65 74 20 78 20 6e 65 77 2d 78 0a 20 09   .set x new-x. .
8b80: 72 65 74 75 72 6e 20 2d 63 6f 64 65 20 65 72 72  return -code err
8b90: 6f 72 20 2d 65 72 72 6f 72 69 6e 66 6f 20 22 53  or -errorinfo "S
8ba0: 69 6d 75 6c 61 74 65 64 20 65 72 72 6f 72 49 6e  imulated errorIn
8bb0: 66 6f 20 73 74 75 66 66 22 20 5c 0a 20 09 09 2d  fo stuff" \. ..-
8bc0: 65 72 72 6f 72 63 6f 64 65 20 7b 61 20 62 20 63  errorcode {a b c
8bd0: 7d 0a 20 09 73 65 74 20 79 20 6e 65 77 2d 79 0a  }. .set y new-y.
8be0: 2d 20 20 20 20 7d 20 73 6f 75 72 63 65 2e 66 69  -    } source.fi
8bf0: 6c 65 0a 2d 20 20 20 20 6c 69 73 74 20 5b 63 61  le.-    list [ca
8c00: 74 63 68 20 7b 73 6f 75 72 63 65 20 24 73 6f 75  tch {source $sou
8c10: 72 63 65 66 69 6c 65 7d 20 6d 73 67 5d 20 24 6d  rcefile} msg] $m
8c20: 73 67 20 24 65 72 72 6f 72 49 6e 66 6f 20 24 65  sg $errorInfo $e
8c30: 72 72 6f 72 43 6f 64 65 0a 2d 7d 20 7b 31 20 7b  rrorCode.-} {1 {
8c40: 7d 20 7b 53 69 6d 75 6c 61 74 65 64 20 65 72 72  } {Simulated err
8c50: 6f 72 49 6e 66 6f 20 73 74 75 66 66 0a 2b 20 20  orInfo stuff.+  
8c60: 20 20 7d 20 73 6f 75 72 63 65 2e 66 69 6c 65 5d    } source.file]
8c70: 0a 2b 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20  .+} -body {.+   
8c80: 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 73 6f   list [catch {so
8c90: 75 72 63 65 20 24 73 6f 75 72 63 65 66 69 6c 65  urce $sourcefile
8ca0: 7d 20 6d 73 67 5d 20 24 6d 73 67 20 24 3a 3a 65  } msg] $msg $::e
8cb0: 72 72 6f 72 49 6e 66 6f 20 24 3a 3a 65 72 72 6f  rrorInfo $::erro
8cc0: 72 43 6f 64 65 0a 2b 7d 20 2d 63 6c 65 61 6e 75  rCode.+} -cleanu
8cd0: 70 20 7b 0a 2b 20 20 20 20 72 65 6d 6f 76 65 46  p {.+    removeF
8ce0: 69 6c 65 20 73 6f 75 72 63 65 2e 66 69 6c 65 0a  ile source.file.
8cf0: 2b 7d 20 2d 72 65 73 75 6c 74 20 7b 31 20 7b 7d  +} -result {1 {}
8d00: 20 7b 53 69 6d 75 6c 61 74 65 64 20 65 72 72 6f   {Simulated erro
8d10: 72 49 6e 66 6f 20 73 74 75 66 66 0a 20 20 20 20  rInfo stuff.    
8d20: 20 69 6e 76 6f 6b 65 64 20 66 72 6f 6d 20 77 69   invoked from wi
8d30: 74 68 69 6e 0a 20 22 73 6f 75 72 63 65 20 24 73  thin. "source $s
8d40: 6f 75 72 63 65 66 69 6c 65 22 7d 20 7b 61 20 62  ourcefile"} {a b
8d50: 20 63 7d 7d 0a 20 0a 2b 0a 20 23 20 54 65 73 74   c}}. .+. # Test
8d60: 20 66 6f 72 20 74 68 65 20 4d 61 63 69 6e 74 6f   for the Macinto
8d70: 73 68 20 73 70 65 63 66 69 63 20 66 65 61 74 75  sh specfic featu
8d80: 72 65 73 20 6f 66 20 74 68 65 20 73 6f 75 72 63  res of the sourc
8d90: 65 20 63 6f 6d 6d 61 6e 64 0a 2d 74 65 73 74 20  e command.-test 
8da0: 73 6f 75 72 63 65 2d 34 2e 31 20 7b 73 6f 75 72  source-4.1 {sour
8db0: 63 65 20 65 72 72 6f 72 20 63 6f 6e 64 69 74 69  ce error conditi
8dc0: 6f 6e 73 7d 20 7b 6d 61 63 4f 6e 6c 79 7d 20 7b  ons} {macOnly} {
8dd0: 0a 2d 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63  .-    list [catc
8de0: 68 20 7b 73 6f 75 72 63 65 20 2d 72 73 72 63 20  h {source -rsrc 
8df0: 5f 6e 6f 5f 65 78 69 73 74 5f 7d 20 6d 73 67 5d  _no_exist_} msg]
8e00: 20 24 6d 73 67 0a 2d 7d 20 5b 6c 69 73 74 20 31   $msg.-} [list 1
8e10: 20 22 54 68 65 20 72 65 73 6f 75 72 63 65 20 5c   "The resource \
8e20: 22 5f 6e 6f 5f 65 78 69 73 74 5f 5c 22 20 63 6f  "_no_exist_\" co
8e30: 75 6c 64 20 6e 6f 74 20 62 65 20 6c 6f 61 64 65  uld not be loade
8e40: 64 20 66 72 6f 6d 20 61 70 70 6c 69 63 61 74 69  d from applicati
8e50: 6f 6e 2e 22 5d 0a 2d 74 65 73 74 20 73 6f 75 72  on."].-test sour
8e60: 63 65 2d 34 2e 32 20 7b 73 6f 75 72 63 65 20 65  ce-4.2 {source e
8e70: 72 72 6f 72 20 63 6f 6e 64 69 74 69 6f 6e 73 7d  rror conditions}
8e80: 20 7b 6d 61 63 4f 6e 6c 79 7d 20 7b 0a 2d 20 20   {macOnly} {.-  
8e90: 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 73    list [catch {s
8ea0: 6f 75 72 63 65 20 2d 72 73 72 63 69 64 20 62 61  ource -rsrcid ba
8eb0: 64 5f 69 64 7d 20 6d 73 67 5d 20 24 6d 73 67 0a  d_id} msg] $msg.
8ec0: 2d 7d 20 5b 6c 69 73 74 20 31 20 22 65 78 70 65  -} [list 1 "expe
8ed0: 63 74 65 64 20 69 6e 74 65 67 65 72 20 62 75 74  cted integer but
8ee0: 20 67 6f 74 20 5c 22 62 61 64 5f 69 64 5c 22 22   got \"bad_id\""
8ef0: 5d 0a 2d 74 65 73 74 20 73 6f 75 72 63 65 2d 34  ].-test source-4
8f00: 2e 33 20 7b 73 6f 75 72 63 65 20 65 72 72 6f 72  .3 {source error
8f10: 20 63 6f 6e 64 69 74 69 6f 6e 73 7d 20 7b 6d 61   conditions} {ma
8f20: 63 4f 6e 6c 79 7d 20 7b 0a 2d 20 20 20 20 6c 69  cOnly} {.-    li
8f30: 73 74 20 5b 63 61 74 63 68 20 7b 73 6f 75 72 63  st [catch {sourc
8f40: 65 20 2d 72 73 72 63 20 72 73 72 63 4e 61 6d 65  e -rsrc rsrcName
8f50: 20 66 69 6c 65 4e 61 6d 65 20 65 78 74 72 61 7d   fileName extra}
8f60: 20 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31   msg] $msg.-} {1
8f70: 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20   {wrong # args: 
8f80: 73 68 6f 75 6c 64 20 62 65 20 22 73 6f 75 72 63  should be "sourc
8f90: 65 20 66 69 6c 65 4e 61 6d 65 22 20 6f 72 20 22  e fileName" or "
8fa0: 73 6f 75 72 63 65 20 2d 72 73 72 63 20 6e 61 6d  source -rsrc nam
8fb0: 65 20 3f 66 69 6c 65 4e 61 6d 65 3f 22 20 6f 72  e ?fileName?" or
8fc0: 20 22 73 6f 75 72 63 65 20 2d 72 73 72 63 69 64   "source -rsrcid
8fd0: 20 69 64 20 3f 66 69 6c 65 4e 61 6d 65 3f 22 7d   id ?fileName?"}
8fe0: 7d 0a 2d 74 65 73 74 20 73 6f 75 72 63 65 2d 34  }.-test source-4
8ff0: 2e 34 20 7b 73 6f 75 72 63 65 20 65 72 72 6f 72  .4 {source error
9000: 20 63 6f 6e 64 69 74 69 6f 6e 73 7d 20 7b 6d 61   conditions} {ma
9010: 63 4f 6e 6c 79 7d 20 7b 0a 2d 20 20 20 20 6c 69  cOnly} {.-    li
9020: 73 74 20 5b 63 61 74 63 68 20 7b 73 6f 75 72 63  st [catch {sourc
9030: 65 20 6e 6f 6e 5f 73 77 69 74 63 68 20 72 73 72  e non_switch rsr
9040: 63 4e 61 6d 65 7d 20 6d 73 67 5d 20 24 6d 73 67  cName} msg] $msg
9050: 0a 2d 7d 20 7b 31 20 7b 62 61 64 20 61 72 67 75  .-} {1 {bad argu
9060: 6d 65 6e 74 3a 20 73 68 6f 75 6c 64 20 62 65 20  ment: should be 
9070: 22 73 6f 75 72 63 65 20 66 69 6c 65 4e 61 6d 65  "source fileName
9080: 22 20 6f 72 20 22 73 6f 75 72 63 65 20 2d 72 73  " or "source -rs
9090: 72 63 20 6e 61 6d 65 20 3f 66 69 6c 65 4e 61 6d  rc name ?fileNam
90a0: 65 3f 22 20 6f 72 20 22 73 6f 75 72 63 65 20 2d  e?" or "source -
90b0: 72 73 72 63 69 64 20 69 64 20 3f 66 69 6c 65 4e  rsrcid id ?fileN
90c0: 61 6d 65 3f 22 7d 7d 0a 2d 74 65 73 74 20 73 6f  ame?"}}.-test so
90d0: 75 72 63 65 2d 34 2e 35 20 7b 73 6f 75 72 63 65  urce-4.5 {source
90e0: 20 65 72 72 6f 72 20 63 6f 6e 64 69 74 69 6f 6e   error condition
90f0: 73 7d 20 7b 6d 61 63 4f 6e 6c 79 7d 20 7b 0a 2d  s} {macOnly} {.-
9100: 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20      list [catch 
9110: 7b 73 6f 75 72 63 65 20 2d 62 61 64 5f 73 77 69  {source -bad_swi
9120: 74 63 68 20 61 72 67 75 6d 65 6e 74 7d 20 6d 73  tch argument} ms
9130: 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b 62  g] $msg.-} {1 {b
9140: 61 64 20 61 72 67 75 6d 65 6e 74 3a 20 73 68 6f  ad argument: sho
9150: 75 6c 64 20 62 65 20 22 73 6f 75 72 63 65 20 66  uld be "source f
9160: 69 6c 65 4e 61 6d 65 22 20 6f 72 20 22 73 6f 75  ileName" or "sou
9170: 72 63 65 20 2d 72 73 72 63 20 6e 61 6d 65 20 3f  rce -rsrc name ?
9180: 66 69 6c 65 4e 61 6d 65 3f 22 20 6f 72 20 22 73  fileName?" or "s
9190: 6f 75 72 63 65 20 2d 72 73 72 63 69 64 20 69 64  ource -rsrcid id
91a0: 20 3f 66 69 6c 65 4e 61 6d 65 3f 22 7d 7d 0a 2d   ?fileName?"}}.-
91b0: 74 65 73 74 20 73 6f 75 72 63 65 2d 35 2e 31 20  test source-5.1 
91c0: 7b 73 6f 75 72 63 65 20 72 65 73 6f 75 72 63 65  {source resource
91d0: 20 66 69 6c 65 73 7d 20 7b 6d 61 63 4f 6e 6c 79   files} {macOnly
91e0: 7d 20 7b 0a 2d 20 20 20 20 6c 69 73 74 20 5b 63  } {.-    list [c
91f0: 61 74 63 68 20 7b 73 6f 75 72 63 65 20 2d 72 73  atch {source -rs
9200: 72 63 20 72 73 72 63 4e 61 6d 65 20 62 61 64 5f  rc rsrcName bad_
9210: 66 69 6c 65 7d 20 6d 73 67 5d 20 24 6d 73 67 0a  file} msg] $msg.
9220: 2d 7d 20 5b 6c 69 73 74 20 31 20 22 45 72 72 6f  -} [list 1 "Erro
9230: 72 20 66 69 6e 64 69 6e 67 20 74 68 65 20 66 69  r finding the fi
9240: 6c 65 3a 20 5c 22 62 61 64 5f 66 69 6c 65 5c 22  le: \"bad_file\"
9250: 2e 22 5d 0a 2d 74 65 73 74 20 73 6f 75 72 63 65  ."].-test source
9260: 2d 35 2e 32 20 7b 73 6f 75 72 63 65 20 72 65 73  -5.2 {source res
9270: 6f 75 72 63 65 20 66 69 6c 65 73 7d 20 7b 6d 61  ource files} {ma
9280: 63 4f 6e 6c 79 7d 20 7b 0a 2d 20 20 20 20 6d 61  cOnly} {.-    ma
9290: 6b 65 46 69 6c 65 20 7b 72 65 74 75 72 6e 7d 20  keFile {return} 
92a0: 73 6f 75 72 63 65 2e 66 69 6c 65 0a 2d 20 20 20  source.file.-   
92b0: 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 73 6f   list [catch {so
92c0: 75 72 63 65 20 2d 72 73 72 63 20 72 73 72 63 4e  urce -rsrc rsrcN
92d0: 61 6d 65 20 24 73 6f 75 72 63 65 66 69 6c 65 7d  ame $sourcefile}
92e0: 20 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 5b 6c   msg] $msg.-} [l
92f0: 69 73 74 20 31 20 22 45 72 72 6f 72 20 72 65 61  ist 1 "Error rea
9300: 64 69 6e 67 20 74 68 65 20 66 69 6c 65 3a 20 5c  ding the file: \
9310: 22 24 73 6f 75 72 63 65 66 69 6c 65 5c 22 2e 22  "$sourcefile\"."
9320: 5d 0a 2d 74 65 73 74 20 73 6f 75 72 63 65 2d 35  ].-test source-5
9330: 2e 33 20 7b 73 6f 75 72 63 65 20 72 65 73 6f 75  .3 {source resou
9340: 72 63 65 20 66 69 6c 65 73 7d 20 7b 6d 61 63 4f  rce files} {macO
9350: 6e 6c 79 7d 20 7b 0a 2d 20 20 20 20 74 65 73 74  nly} {.-    test
9360: 57 72 69 74 65 54 65 78 74 52 65 73 6f 75 72 63  WriteTextResourc
9370: 65 20 2d 72 73 72 63 20 72 73 72 63 4e 61 6d 65  e -rsrc rsrcName
9380: 20 2d 66 69 6c 65 20 72 73 72 63 2e 66 69 6c 65   -file rsrc.file
9390: 20 7b 73 65 74 20 6d 73 67 32 20 6f 6b 3b 20 72   {set msg2 ok; r
93a0: 65 74 75 72 6e 7d 0a 2d 20 20 20 20 73 65 74 20  eturn}.-    set 
93b0: 72 65 73 75 6c 74 20 5b 63 61 74 63 68 20 7b 73  result [catch {s
93c0: 6f 75 72 63 65 20 2d 72 73 72 63 20 72 73 72 63  ource -rsrc rsrc
93d0: 4e 61 6d 65 20 72 73 72 63 2e 66 69 6c 65 7d 20  Name rsrc.file} 
93e0: 6d 73 67 5d 0a 2b 74 65 73 74 20 73 6f 75 72 63  msg].+test sourc
93f0: 65 2d 34 2e 31 20 7b 73 6f 75 72 63 65 20 65 72  e-4.1 {source er
9400: 72 6f 72 20 63 6f 6e 64 69 74 69 6f 6e 73 7d 20  ror conditions} 
9410: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 6d 61 63  -constraints mac
9420: 4f 6e 6c 79 20 2d 62 6f 64 79 20 7b 0a 2b 20 20  Only -body {.+  
9430: 20 20 73 6f 75 72 63 65 20 2d 72 73 72 63 20 5f    source -rsrc _
9440: 6e 6f 5f 65 78 69 73 74 5f 0a 2b 7d 20 2d 72 65  no_exist_.+} -re
9450: 73 75 6c 74 20 7b 54 68 65 20 72 65 73 6f 75 72  sult {The resour
9460: 63 65 20 22 5f 6e 6f 5f 65 78 69 73 74 5f 22 20  ce "_no_exist_" 
9470: 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20 6c 6f 61  could not be loa
9480: 64 65 64 20 66 72 6f 6d 20 61 70 70 6c 69 63 61  ded from applica
9490: 74 69 6f 6e 2e 7d 20 5c 0a 2b 20 20 2d 72 65 74  tion.} \.+  -ret
94a0: 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 0a  urnCodes error .
94b0: 2b 0a 2b 74 65 73 74 20 73 6f 75 72 63 65 2d 34  +.+test source-4
94c0: 2e 32 20 7b 73 6f 75 72 63 65 20 65 72 72 6f 72  .2 {source error
94d0: 20 63 6f 6e 64 69 74 69 6f 6e 73 7d 20 2d 63 6f   conditions} -co
94e0: 6e 73 74 72 61 69 6e 74 73 20 6d 61 63 4f 6e 6c  nstraints macOnl
94f0: 79 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20 73  y -body {.+    s
9500: 6f 75 72 63 65 20 2d 72 73 72 63 69 64 20 62 61  ource -rsrcid ba
9510: 64 5f 69 64 0a 2b 7d 20 2d 72 65 74 75 72 6e 43  d_id.+} -returnC
9520: 6f 64 65 73 20 65 72 72 6f 72 20 2d 72 65 73 75  odes error -resu
9530: 6c 74 20 7b 65 78 70 65 63 74 65 64 20 69 6e 74  lt {expected int
9540: 65 67 65 72 20 62 75 74 20 67 6f 74 20 22 62 61  eger but got "ba
9550: 64 5f 69 64 22 7d 0a 2b 0a 2b 74 65 73 74 20 73  d_id"}.+.+test s
9560: 6f 75 72 63 65 2d 34 2e 33 20 7b 73 6f 75 72 63  ource-4.3 {sourc
9570: 65 20 65 72 72 6f 72 20 63 6f 6e 64 69 74 69 6f  e error conditio
9580: 6e 73 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73  ns} -constraints
9590: 20 6d 61 63 4f 6e 6c 79 20 2d 62 6f 64 79 20 7b   macOnly -body {
95a0: 0a 2b 20 20 20 20 73 6f 75 72 63 65 20 2d 72 73  .+    source -rs
95b0: 72 63 20 72 73 72 63 4e 61 6d 65 20 66 69 6c 65  rc rsrcName file
95c0: 4e 61 6d 65 20 65 78 74 72 61 0a 2b 7d 20 2d 72  Name extra.+} -r
95d0: 65 74 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72  eturnCodes error
95e0: 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20   -result {wrong 
95f0: 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62  # args: should b
9600: 65 20 22 73 6f 75 72 63 65 20 66 69 6c 65 4e 61  e "source fileNa
9610: 6d 65 22 20 6f 72 20 22 73 6f 75 72 63 65 20 2d  me" or "source -
9620: 72 73 72 63 20 6e 61 6d 65 20 3f 66 69 6c 65 4e  rsrc name ?fileN
9630: 61 6d 65 3f 22 20 6f 72 20 22 73 6f 75 72 63 65  ame?" or "source
9640: 20 2d 72 73 72 63 69 64 20 69 64 20 3f 66 69 6c   -rsrcid id ?fil
9650: 65 4e 61 6d 65 3f 22 20 6f 72 20 22 73 6f 75 72  eName?" or "sour
9660: 63 65 20 2d 65 6e 63 6f 64 69 6e 67 20 6e 61 6d  ce -encoding nam
9670: 65 20 66 69 6c 65 4e 61 6d 65 22 7d 0a 2b 0a 2b  e fileName"}.+.+
9680: 74 65 73 74 20 73 6f 75 72 63 65 2d 34 2e 34 20  test source-4.4 
9690: 7b 73 6f 75 72 63 65 20 65 72 72 6f 72 20 63 6f  {source error co
96a0: 6e 64 69 74 69 6f 6e 73 7d 20 2d 63 6f 6e 73 74  nditions} -const
96b0: 72 61 69 6e 74 73 20 6d 61 63 4f 6e 6c 79 20 2d  raints macOnly -
96c0: 62 6f 64 79 20 7b 0a 2b 20 20 20 20 73 6f 75 72  body {.+    sour
96d0: 63 65 20 6e 6f 6e 5f 73 77 69 74 63 68 20 72 73  ce non_switch rs
96e0: 72 63 4e 61 6d 65 0a 2b 7d 20 2d 72 65 74 75 72  rcName.+} -retur
96f0: 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d 72 65  nCodes error -re
9700: 73 75 6c 74 20 7b 62 61 64 20 61 72 67 75 6d 65  sult {bad argume
9710: 6e 74 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 73  nt: should be "s
9720: 6f 75 72 63 65 20 66 69 6c 65 4e 61 6d 65 22 20  ource fileName" 
9730: 6f 72 20 22 73 6f 75 72 63 65 20 2d 72 73 72 63  or "source -rsrc
9740: 20 6e 61 6d 65 20 3f 66 69 6c 65 4e 61 6d 65 3f   name ?fileName?
9750: 22 20 6f 72 20 22 73 6f 75 72 63 65 20 2d 72 73  " or "source -rs
9760: 72 63 69 64 20 69 64 20 3f 66 69 6c 65 4e 61 6d  rcid id ?fileNam
9770: 65 3f 22 20 6f 72 20 22 73 6f 75 72 63 65 20 2d  e?" or "source -
9780: 65 6e 63 6f 64 69 6e 67 20 6e 61 6d 65 20 66 69  encoding name fi
9790: 6c 65 4e 61 6d 65 22 7d 0a 2b 0a 2b 74 65 73 74  leName"}.+.+test
97a0: 20 73 6f 75 72 63 65 2d 34 2e 35 20 7b 73 6f 75   source-4.5 {sou
97b0: 72 63 65 20 65 72 72 6f 72 20 63 6f 6e 64 69 74  rce error condit
97c0: 69 6f 6e 73 7d 20 2d 63 6f 6e 73 74 72 61 69 6e  ions} -constrain
97d0: 74 73 20 6d 61 63 4f 6e 6c 79 20 2d 62 6f 64 79  ts macOnly -body
97e0: 20 7b 0a 2b 20 20 20 20 73 6f 75 72 63 65 20 2d   {.+    source -
97f0: 62 61 64 5f 73 77 69 74 63 68 20 61 72 67 75 6d  bad_switch argum
9800: 65 6e 74 0a 2b 7d 20 2d 72 65 74 75 72 6e 43 6f  ent.+} -returnCo
9810: 64 65 73 20 65 72 72 6f 72 20 2d 72 65 73 75 6c  des error -resul
9820: 74 20 7b 62 61 64 20 61 72 67 75 6d 65 6e 74 3a  t {bad argument:
9830: 20 73 68 6f 75 6c 64 20 62 65 20 22 73 6f 75 72   should be "sour
9840: 63 65 20 66 69 6c 65 4e 61 6d 65 22 20 6f 72 20  ce fileName" or 
9850: 22 73 6f 75 72 63 65 20 2d 72 73 72 63 20 6e 61  "source -rsrc na
9860: 6d 65 20 3f 66 69 6c 65 4e 61 6d 65 3f 22 20 6f  me ?fileName?" o
9870: 72 20 22 73 6f 75 72 63 65 20 2d 72 73 72 63 69  r "source -rsrci
9880: 64 20 69 64 20 3f 66 69 6c 65 4e 61 6d 65 3f 22  d id ?fileName?"
9890: 20 6f 72 20 22 73 6f 75 72 63 65 20 2d 65 6e 63   or "source -enc
98a0: 6f 64 69 6e 67 20 6e 61 6d 65 20 66 69 6c 65 4e  oding name fileN
98b0: 61 6d 65 22 7d 0a 2b 0a 2b 20 0a 2b 74 65 73 74  ame"}.+.+ .+test
98c0: 43 6f 6e 73 74 72 61 69 6e 74 20 74 65 73 74 57  Constraint testW
98d0: 72 69 74 65 54 65 78 74 52 65 73 6f 75 72 63 65  riteTextResource
98e0: 20 5c 0a 2b 09 5b 6c 6c 65 6e 67 74 68 20 5b 69   \.+.[llength [i
98f0: 6e 66 6f 20 63 6f 6d 6d 61 6e 64 73 20 74 65 73  nfo commands tes
9900: 74 57 72 69 74 65 54 65 78 74 52 65 73 6f 75 72  tWriteTextResour
9910: 63 65 5d 5d 0a 2b 0a 2b 74 65 73 74 20 73 6f 75  ce]].+.+test sou
9920: 72 63 65 2d 35 2e 31 20 7b 73 6f 75 72 63 65 20  rce-5.1 {source 
9930: 72 65 73 6f 75 72 63 65 20 66 69 6c 65 73 7d 20  resource files} 
9940: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 6d 61 63  -constraints mac
9950: 4f 6e 6c 79 20 2d 73 65 74 75 70 20 7b 0a 2b 20  Only -setup {.+ 
9960: 20 20 20 73 65 74 20 73 6f 75 72 63 65 66 69 6c     set sourcefil
9970: 65 20 5b 6d 61 6b 65 46 69 6c 65 20 7b 7d 20 62  e [makeFile {} b
9980: 61 64 5f 66 69 6c 65 5d 0a 2b 20 20 20 20 72 65  ad_file].+    re
9990: 6d 6f 76 65 46 69 6c 65 20 62 61 64 5f 66 69 6c  moveFile bad_fil
99a0: 65 0a 2b 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20 20  e.+} -body {.+  
99b0: 20 20 73 6f 75 72 63 65 20 2d 72 73 72 63 20 72    source -rsrc r
99c0: 73 72 63 4e 61 6d 65 20 24 73 6f 75 72 63 65 66  srcName $sourcef
99d0: 69 6c 65 0a 2b 7d 20 2d 72 65 74 75 72 6e 43 6f  ile.+} -returnCo
99e0: 64 65 73 20 65 72 72 6f 72 20 2d 6d 61 74 63 68  des error -match
99f0: 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20 7b 45   glob -result {E
9a00: 72 72 6f 72 20 66 69 6e 64 69 6e 67 20 74 68 65  rror finding the
9a10: 20 66 69 6c 65 3a 20 22 2a 62 61 64 5f 66 69 6c   file: "*bad_fil
9a20: 65 22 2e 7d 0a 2b 0a 2b 74 65 73 74 20 73 6f 75  e".}.+.+test sou
9a30: 72 63 65 2d 35 2e 32 20 7b 73 6f 75 72 63 65 20  rce-5.2 {source 
9a40: 72 65 73 6f 75 72 63 65 20 66 69 6c 65 73 7d 20  resource files} 
9a50: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 6d 61 63  -constraints mac
9a60: 4f 6e 6c 79 20 2d 73 65 74 75 70 20 7b 0a 2b 20  Only -setup {.+ 
9a70: 20 20 20 73 65 74 20 73 6f 75 72 63 65 66 69 6c     set sourcefil
9a80: 65 20 5b 6d 61 6b 65 46 69 6c 65 20 7b 72 65 74  e [makeFile {ret
9a90: 75 72 6e 7d 20 73 6f 75 72 63 65 2e 66 69 6c 65  urn} source.file
9aa0: 5d 0a 2b 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20 20  ].+} -body {.+  
9ab0: 20 20 73 6f 75 72 63 65 20 2d 72 73 72 63 20 72    source -rsrc r
9ac0: 73 72 63 4e 61 6d 65 20 24 73 6f 75 72 63 65 66  srcName $sourcef
9ad0: 69 6c 65 0a 2b 7d 20 2d 63 6c 65 61 6e 75 70 20  ile.+} -cleanup 
9ae0: 7b 0a 2b 20 20 20 20 72 65 6d 6f 76 65 46 69 6c  {.+    removeFil
9af0: 65 20 73 6f 75 72 63 65 2e 66 69 6c 65 0a 2b 7d  e source.file.+}
9b00: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 65 72   -returnCodes er
9b10: 72 6f 72 20 2d 6d 61 74 63 68 20 67 6c 6f 62 20  ror -match glob 
9b20: 5c 0a 2b 20 20 2d 72 65 73 75 6c 74 20 7b 45 72  \.+  -result {Er
9b30: 72 6f 72 20 72 65 61 64 69 6e 67 20 74 68 65 20  ror reading the 
9b40: 66 69 6c 65 3a 20 22 2a 73 6f 75 72 63 65 2e 66  file: "*source.f
9b50: 69 6c 65 22 2e 7d 0a 2b 0a 2b 74 65 73 74 20 73  ile".}.+.+test s
9b60: 6f 75 72 63 65 2d 35 2e 33 20 7b 73 6f 75 72 63  ource-5.3 {sourc
9b70: 65 20 72 65 73 6f 75 72 63 65 20 66 69 6c 65 73  e resource files
9b80: 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b  } -constraints {
9b90: 0a 2b 20 20 20 20 6d 61 63 4f 6e 6c 79 20 74 65  .+    macOnly te
9ba0: 73 74 57 72 69 74 65 54 65 78 74 52 65 73 6f 75  stWriteTextResou
9bb0: 72 63 65 0a 2b 7d 20 2d 73 65 74 75 70 20 7b 0a  rce.+} -setup {.
9bc0: 2b 20 20 20 20 73 65 74 20 6d 73 67 32 20 75 6e  +    set msg2 un
9bd0: 73 65 74 0a 2b 20 20 20 20 73 65 74 20 72 73 72  set.+    set rsr
9be0: 63 46 69 6c 65 20 5b 6d 61 6b 65 46 69 6c 65 20  cFile [makeFile 
9bf0: 7b 7d 20 72 73 72 63 2e 66 69 6c 65 5d 0a 20 20  {} rsrc.file].  
9c00: 20 20 20 72 65 6d 6f 76 65 46 69 6c 65 20 72 73     removeFile rs
9c10: 72 63 2e 66 69 6c 65 0a 2b 20 20 20 20 74 65 73  rc.file.+    tes
9c20: 74 57 72 69 74 65 54 65 78 74 52 65 73 6f 75 72  tWriteTextResour
9c30: 63 65 20 2d 72 73 72 63 20 72 73 72 63 4e 61 6d  ce -rsrc rsrcNam
9c40: 65 20 2d 66 69 6c 65 20 24 72 73 72 63 2e 66 69  e -file $rsrc.fi
9c50: 6c 65 20 7b 73 65 74 20 6d 73 67 32 20 6f 6b 3b  le {set msg2 ok;
9c60: 20 72 65 74 75 72 6e 7d 0a 2b 7d 20 2d 62 6f 64   return}.+} -bod
9c70: 79 20 7b 0a 2b 20 20 20 20 73 65 74 20 72 65 73  y {.+    set res
9c80: 75 6c 74 20 5b 63 61 74 63 68 20 7b 73 6f 75 72  ult [catch {sour
9c90: 63 65 20 2d 72 73 72 63 20 72 73 72 63 4e 61 6d  ce -rsrc rsrcNam
9ca0: 65 20 72 73 72 63 2e 66 69 6c 65 7d 20 6d 73 67  e rsrc.file} msg
9cb0: 5d 0a 20 20 20 20 20 6c 69 73 74 20 24 6d 73 67  ].     list $msg
9cc0: 32 20 24 72 65 73 75 6c 74 20 24 6d 73 67 0a 2d  2 $result $msg.-
9cd0: 7d 20 5b 6c 69 73 74 20 6f 6b 20 30 20 7b 7d 5d  } [list ok 0 {}]
9ce0: 0a 2d 74 65 73 74 20 73 6f 75 72 63 65 2d 35 2e  .-test source-5.
9cf0: 34 20 7b 73 6f 75 72 63 65 20 72 65 73 6f 75 72  4 {source resour
9d00: 63 65 20 66 69 6c 65 73 7d 20 7b 6d 61 63 4f 6e  ce files} {macOn
9d10: 6c 79 7d 20 7b 0a 2d 20 20 20 20 63 61 74 63 68  ly} {.-    catch
9d20: 20 7b 75 6e 73 65 74 20 6d 73 67 32 7d 0a 2d 20   {unset msg2}.- 
9d30: 20 20 20 74 65 73 74 57 72 69 74 65 54 65 78 74     testWriteText
9d40: 52 65 73 6f 75 72 63 65 20 2d 72 73 72 63 20 66  Resource -rsrc f
9d50: 69 6c 65 52 73 72 63 4e 61 6d 65 20 2d 66 69 6c  ileRsrcName -fil
9d60: 65 20 72 73 72 63 2e 66 69 6c 65 20 7b 73 65 74  e rsrc.file {set
9d70: 20 6d 73 67 32 20 6f 6b 3b 20 72 65 74 75 72 6e   msg2 ok; return
9d80: 7d 0a 2d 20 20 20 20 73 6f 75 72 63 65 20 2d 72  }.-    source -r
9d90: 73 72 63 20 66 69 6c 65 52 73 72 63 4e 61 6d 65  src fileRsrcName
9da0: 20 72 73 72 63 2e 66 69 6c 65 0a 2d 20 20 20 20   rsrc.file.-    
9db0: 73 65 74 20 72 65 73 75 6c 74 20 5b 63 61 74 63  set result [catc
9dc0: 68 20 7b 73 6f 75 72 63 65 20 2d 72 73 72 63 20  h {source -rsrc 
9dd0: 66 69 6c 65 52 73 72 63 4e 61 6d 65 7d 20 6d 73  fileRsrcName} ms
9de0: 67 5d 20 20 20 20 0a 2b 7d 20 2d 63 6c 65 61 6e  g]    .+} -clean
9df0: 75 70 20 7b 0a 20 20 20 20 20 72 65 6d 6f 76 65  up {.     remove
9e00: 46 69 6c 65 20 72 73 72 63 2e 66 69 6c 65 0a 2b  File rsrc.file.+
9e10: 7d 20 2d 72 65 73 75 6c 74 20 5b 6c 69 73 74 20  } -result [list 
9e20: 6f 6b 20 30 20 7b 7d 5d 0a 2b 0a 2b 74 65 73 74  ok 0 {}].+.+test
9e30: 20 73 6f 75 72 63 65 2d 35 2e 34 20 7b 73 6f 75   source-5.4 {sou
9e40: 72 63 65 20 72 65 73 6f 75 72 63 65 20 66 69 6c  rce resource fil
9e50: 65 73 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73  es} -constraints
9e60: 20 7b 0a 2b 20 20 20 20 6d 61 63 4f 6e 6c 79 20   {.+    macOnly 
9e70: 74 65 73 74 57 72 69 74 65 54 65 78 74 52 65 73  testWriteTextRes
9e80: 6f 75 72 63 65 0a 2b 7d 20 2d 73 65 74 75 70 20  ource.+} -setup 
9e90: 7b 0a 2b 20 20 20 20 73 65 74 20 6d 73 67 32 20  {.+    set msg2 
9ea0: 75 6e 73 65 74 0a 2b 20 20 20 20 73 65 74 20 72  unset.+    set r
9eb0: 73 72 73 46 69 6c 65 20 5b 6d 61 6b 65 46 69 6c  srsFile [makeFil
9ec0: 65 20 7b 7d 20 72 73 72 63 2e 66 69 6c 65 5d 0a  e {} rsrc.file].
9ed0: 2b 20 20 20 20 72 65 6d 6f 76 65 46 69 6c 65 20  +    removeFile 
9ee0: 72 73 72 63 2e 66 69 6c 65 0a 2b 20 20 20 20 74  rsrc.file.+    t
9ef0: 65 73 74 57 72 69 74 65 54 65 78 74 52 65 73 6f  estWriteTextReso
9f00: 75 72 63 65 20 2d 72 73 72 63 20 66 69 6c 65 52  urce -rsrc fileR
9f10: 73 72 63 4e 61 6d 65 20 5c 0a 2b 09 20 20 20 20  srcName \.+.    
9f20: 2d 66 69 6c 65 20 24 72 73 72 63 46 69 6c 65 20  -file $rsrcFile 
9f30: 7b 73 65 74 20 6d 73 67 32 20 6f 6b 3b 20 72 65  {set msg2 ok; re
9f40: 74 75 72 6e 7d 0a 2b 7d 20 2d 62 6f 64 79 20 7b  turn}.+} -body {
9f50: 0a 2b 20 20 20 20 73 6f 75 72 63 65 20 2d 72 73  .+    source -rs
9f60: 72 63 20 66 69 6c 65 52 73 72 63 4e 61 6d 65 20  rc fileRsrcName 
9f70: 24 72 73 72 63 46 69 6c 65 0a 2b 20 20 20 20 73  $rsrcFile.+    s
9f80: 65 74 20 72 65 73 75 6c 74 20 5b 63 61 74 63 68  et result [catch
9f90: 20 7b 73 6f 75 72 63 65 20 2d 72 73 72 63 20 66   {source -rsrc f
9fa0: 69 6c 65 52 73 72 63 4e 61 6d 65 7d 20 6d 73 67  ileRsrcName} msg
9fb0: 5d 20 20 20 20 0a 20 20 20 20 20 6c 69 73 74 20  ]    .     list 
9fc0: 24 6d 73 67 32 20 24 72 65 73 75 6c 74 20 24 6d  $msg2 $result $m
9fd0: 73 67 0a 2d 7d 20 5b 6c 69 73 74 20 6f 6b 20 31  sg.-} [list ok 1
9fe0: 20 7b 54 68 65 20 72 65 73 6f 75 72 63 65 20 22   {The resource "
9ff0: 66 69 6c 65 52 73 72 63 4e 61 6d 65 22 20 63 6f  fileRsrcName" co
a000: 75 6c 64 20 6e 6f 74 20 62 65 20 6c 6f 61 64 65  uld not be loade
a010: 64 20 66 72 6f 6d 20 61 70 70 6c 69 63 61 74 69  d from applicati
a020: 6f 6e 2e 7d 5d 0a 2d 74 65 73 74 20 73 6f 75 72  on.}].-test sour
a030: 63 65 2d 35 2e 35 20 7b 73 6f 75 72 63 65 20 72  ce-5.5 {source r
a040: 65 73 6f 75 72 63 65 20 66 69 6c 65 73 7d 20 7b  esource files} {
a050: 6d 61 63 4f 6e 6c 79 7d 20 7b 0a 2d 20 20 20 20  macOnly} {.-    
a060: 74 65 73 74 57 72 69 74 65 54 65 78 74 52 65 73  testWriteTextRes
a070: 6f 75 72 63 65 20 2d 72 73 72 63 69 64 20 32 30  ource -rsrcid 20
a080: 30 20 2d 66 69 6c 65 20 72 73 72 63 2e 66 69 6c  0 -file rsrc.fil
a090: 65 20 7b 73 65 74 20 6d 73 67 32 20 68 65 6c 6c  e {set msg2 hell
a0a0: 6f 3b 20 73 65 74 20 6d 73 67 33 20 62 79 65 7d  o; set msg3 bye}
a0b0: 0a 2d 20 20 20 20 73 65 74 20 72 65 73 75 6c 74  .-    set result
a0c0: 20 5b 63 61 74 63 68 20 7b 73 6f 75 72 63 65 20   [catch {source 
a0d0: 2d 72 73 72 63 69 64 20 32 30 30 20 72 73 72 63  -rsrcid 200 rsrc
a0e0: 2e 66 69 6c 65 7d 20 6d 73 67 5d 0a 2b 7d 20 2d  .file} msg].+} -
a0f0: 63 6c 65 61 6e 75 70 20 7b 0a 2b 20 20 20 20 72  cleanup {.+    r
a100: 65 6d 6f 76 65 46 69 6c 65 20 72 73 72 63 2e 66  emoveFile rsrc.f
a110: 69 6c 65 0a 2b 7d 20 2d 72 65 73 75 6c 74 20 5b  ile.+} -result [
a120: 6c 69 73 74 20 6f 6b 20 31 20 7b 54 68 65 20 72  list ok 1 {The r
a130: 65 73 6f 75 72 63 65 20 22 66 69 6c 65 52 73 72  esource "fileRsr
a140: 63 4e 61 6d 65 22 20 63 6f 75 6c 64 20 6e 6f 74  cName" could not
a150: 20 62 65 20 6c 6f 61 64 65 64 20 66 72 6f 6d 20   be loaded from 
a160: 61 70 70 6c 69 63 61 74 69 6f 6e 2e 7d 5d 0a 2b  application.}].+
a170: 0a 2b 74 65 73 74 20 73 6f 75 72 63 65 2d 35 2e  .+test source-5.
a180: 35 20 7b 73 6f 75 72 63 65 20 72 65 73 6f 75 72  5 {source resour
a190: 63 65 20 66 69 6c 65 73 7d 20 2d 63 6f 6e 73 74  ce files} -const
a1a0: 72 61 69 6e 74 73 20 7b 0a 2b 20 20 20 20 6d 61  raints {.+    ma
a1b0: 63 4f 6e 6c 79 20 74 65 73 74 57 72 69 74 65 54  cOnly testWriteT
a1c0: 65 78 74 52 65 73 6f 75 72 63 65 0a 2b 7d 20 2d  extResource.+} -
a1d0: 73 65 74 75 70 20 7b 0a 2b 20 20 20 20 73 65 74  setup {.+    set
a1e0: 20 6d 73 67 32 20 75 6e 73 65 74 0a 2b 20 20 20   msg2 unset.+   
a1f0: 20 73 65 74 20 72 73 72 63 46 69 6c 65 20 5b 6d   set rsrcFile [m
a200: 61 6b 65 46 69 6c 65 20 7b 7d 20 72 73 72 63 2e  akeFile {} rsrc.
a210: 66 69 6c 65 5d 0a 20 20 20 20 20 72 65 6d 6f 76  file].     remov
a220: 65 46 69 6c 65 20 72 73 72 63 2e 66 69 6c 65 0a  eFile rsrc.file.
a230: 2b 20 20 20 20 74 65 73 74 57 72 69 74 65 54 65  +    testWriteTe
a240: 78 74 52 65 73 6f 75 72 63 65 20 2d 72 73 72 63  xtResource -rsrc
a250: 69 64 20 32 30 30 20 5c 0a 2b 09 20 20 20 20 2d  id 200 \.+.    -
a260: 66 69 6c 65 20 24 72 73 72 63 46 69 6c 65 20 7b  file $rsrcFile {
a270: 73 65 74 20 6d 73 67 32 20 68 65 6c 6c 6f 3b 20  set msg2 hello; 
a280: 73 65 74 20 6d 73 67 33 20 62 79 65 7d 0a 2b 7d  set msg3 bye}.+}
a290: 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20 73 65   -body {.+    se
a2a0: 74 20 72 65 73 75 6c 74 20 5b 63 61 74 63 68 20  t result [catch 
a2b0: 7b 73 6f 75 72 63 65 20 2d 72 73 72 63 69 64 20  {source -rsrcid 
a2c0: 32 30 30 20 24 72 73 72 63 46 69 6c 65 7d 20 6d  200 $rsrcFile} m
a2d0: 73 67 5d 0a 20 20 20 20 20 6c 69 73 74 20 24 6d  sg].     list $m
a2e0: 73 67 32 20 24 72 65 73 75 6c 74 20 24 6d 73 67  sg2 $result $msg
a2f0: 0a 2d 7d 20 5b 6c 69 73 74 20 68 65 6c 6c 6f 20  .-} [list hello 
a300: 30 20 62 79 65 5d 0a 2d 74 65 73 74 20 73 6f 75  0 bye].-test sou
a310: 72 63 65 2d 35 2e 36 20 7b 73 6f 75 72 63 65 20  rce-5.6 {source 
a320: 72 65 73 6f 75 72 63 65 20 66 69 6c 65 73 7d 20  resource files} 
a330: 7b 6d 61 63 4f 6e 6c 79 7d 20 7b 0a 2d 20 20 20  {macOnly} {.-   
a340: 20 74 65 73 74 57 72 69 74 65 54 65 78 74 52 65   testWriteTextRe
a350: 73 6f 75 72 63 65 20 2d 72 73 72 63 69 64 20 32  source -rsrcid 2
a360: 30 30 20 2d 66 69 6c 65 20 72 73 72 63 2e 66 69  00 -file rsrc.fi
a370: 6c 65 20 7b 73 65 74 20 6d 73 67 32 20 68 65 6c  le {set msg2 hel
a380: 6c 6f 3b 20 65 72 72 6f 72 20 62 61 64 3b 20 73  lo; error bad; s
a390: 65 74 20 6d 73 67 33 20 62 79 65 7d 0a 2d 20 20  et msg3 bye}.-  
a3a0: 20 20 73 65 74 20 72 65 73 75 6c 74 20 5b 63 61    set result [ca
a3b0: 74 63 68 20 7b 73 6f 75 72 63 65 20 2d 72 73 72  tch {source -rsr
a3c0: 63 69 64 20 32 30 30 20 72 73 72 63 2e 66 69 6c  cid 200 rsrc.fil
a3d0: 65 7d 20 6d 73 67 5d 0a 2b 7d 20 2d 63 6c 65 61  e} msg].+} -clea
a3e0: 6e 75 70 20 7b 0a 2b 20 20 20 20 72 65 6d 6f 76  nup {.+    remov
a3f0: 65 46 69 6c 65 20 72 73 72 63 2e 66 69 6c 65 0a  eFile rsrc.file.
a400: 2b 7d 20 2d 72 65 73 75 6c 74 20 5b 6c 69 73 74  +} -result [list
a410: 20 68 65 6c 6c 6f 20 30 20 62 79 65 5d 0a 2b 0a   hello 0 bye].+.
a420: 2b 74 65 73 74 20 73 6f 75 72 63 65 2d 35 2e 36  +test source-5.6
a430: 20 7b 73 6f 75 72 63 65 20 72 65 73 6f 75 72 63   {source resourc
a440: 65 20 66 69 6c 65 73 7d 20 2d 63 6f 6e 73 74 72  e files} -constr
a450: 61 69 6e 74 73 20 7b 0a 2b 20 20 20 20 6d 61 63  aints {.+    mac
a460: 4f 6e 6c 79 20 74 65 73 74 57 72 69 74 65 54 65  Only testWriteTe
a470: 78 74 52 65 73 6f 75 72 63 65 0a 2b 7d 20 2d 73  xtResource.+} -s
a480: 65 74 75 70 20 7b 0a 2b 20 20 20 20 73 65 74 20  etup {.+    set 
a490: 6d 73 67 32 20 75 6e 73 65 74 0a 2b 20 20 20 20  msg2 unset.+    
a4a0: 73 65 74 20 72 73 72 63 46 69 6c 65 20 5b 6d 61  set rsrcFile [ma
a4b0: 6b 65 46 69 6c 65 20 7b 7d 20 72 73 72 63 2e 66  keFile {} rsrc.f
a4c0: 69 6c 65 5d 0a 20 20 20 20 20 72 65 6d 6f 76 65  ile].     remove
a4d0: 46 69 6c 65 20 72 73 72 63 2e 66 69 6c 65 0a 2b  File rsrc.file.+
a4e0: 20 20 20 20 74 65 73 74 57 72 69 74 65 54 65 78      testWriteTex
a4f0: 74 52 65 73 6f 75 72 63 65 20 2d 72 73 72 63 69  tResource -rsrci
a500: 64 20 32 30 30 20 5c 0a 2b 09 20 20 20 20 2d 66  d 200 \.+.    -f
a510: 69 6c 65 20 24 72 73 72 63 46 69 6c 65 20 7b 73  ile $rsrcFile {s
a520: 65 74 20 6d 73 67 32 20 68 65 6c 6c 6f 3b 20 65  et msg2 hello; e
a530: 72 72 6f 72 20 62 61 64 3b 20 73 65 74 20 6d 73  rror bad; set ms
a540: 67 33 20 62 79 65 7d 0a 2b 7d 20 2d 62 6f 64 79  g3 bye}.+} -body
a550: 20 7b 0a 2b 20 20 20 20 73 65 74 20 72 65 73 75   {.+    set resu
a560: 6c 74 20 5b 63 61 74 63 68 20 7b 73 6f 75 72 63  lt [catch {sourc
a570: 65 20 2d 72 73 72 63 69 64 20 32 30 30 20 72 73  e -rsrcid 200 rs
a580: 72 63 2e 66 69 6c 65 7d 20 6d 73 67 5d 0a 20 20  rc.file} msg].  
a590: 20 20 20 6c 69 73 74 20 24 6d 73 67 32 20 24 72     list $msg2 $r
a5a0: 65 73 75 6c 74 20 24 6d 73 67 0a 2d 7d 20 5b 6c  esult $msg.-} [l
a5b0: 69 73 74 20 68 65 6c 6c 6f 20 31 20 62 61 64 5d  ist hello 1 bad]
a5c0: 0a 2b 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 2b  .+} -cleanup {.+
a5d0: 20 20 20 20 72 65 6d 6f 76 65 46 69 6c 65 20 72      removeFile r
a5e0: 73 72 63 2e 66 69 6c 65 0a 2b 7d 20 2d 72 65 73  src.file.+} -res
a5f0: 75 6c 74 20 5b 6c 69 73 74 20 68 65 6c 6c 6f 20  ult [list hello 
a600: 31 20 62 61 64 5d 0a 2b 0a 20 0a 2d 74 65 73 74  1 bad].+. .-test
a610: 20 73 6f 75 72 63 65 2d 36 2e 31 20 7b 73 6f 75   source-6.1 {sou
a620: 72 63 65 20 69 73 20 62 69 6e 61 72 79 20 6f 6b  rce is binary ok
a630: 7d 20 7b 0a 2b 74 65 73 74 20 73 6f 75 72 63 65  } {.+test source
a640: 2d 36 2e 31 20 7b 73 6f 75 72 63 65 20 69 73 20  -6.1 {source is 
a650: 62 69 6e 61 72 79 20 6f 6b 7d 20 2d 73 65 74 75  binary ok} -setu
a660: 70 20 7b 0a 2b 20 20 20 20 23 20 4e 6f 74 65 20  p {.+    # Note 
a670: 5b 6d 61 6b 65 46 69 6c 65 5d 20 77 72 69 74 65  [makeFile] write
a680: 73 20 69 6e 20 74 68 65 20 73 79 73 74 65 6d 20  s in the system 
a690: 65 6e 63 6f 64 69 6e 67 2e 0a 2b 20 20 20 20 23  encoding..+    #
a6a0: 20 5b 73 6f 75 72 63 65 5d 20 64 65 66 61 75 6c   [source] defaul
a6b0: 74 73 20 74 6f 20 72 65 61 64 69 6e 67 20 69 6e  ts to reading in
a6c0: 20 74 68 65 20 73 79 73 74 65 6d 20 65 6e 63 6f   the system enco
a6d0: 64 69 6e 67 2e 0a 2b 20 20 20 20 73 65 74 20 73  ding..+    set s
a6e0: 6f 75 72 63 65 66 69 6c 65 20 5b 6d 61 6b 65 46  ourcefile [makeF
a6f0: 69 6c 65 20 5b 6c 69 73 74 20 73 65 74 20 78 20  ile [list set x 
a700: 22 61 20 62 5c 30 63 22 5d 20 73 6f 75 72 63 65  "a b\0c"] source
a710: 2e 66 69 6c 65 5d 0a 2b 7d 20 2d 62 6f 64 79 20  .file].+} -body 
a720: 7b 0a 20 20 20 20 20 73 65 74 20 78 20 7b 7d 0a  {.     set x {}.
a730: 2d 20 20 20 20 6d 61 6b 65 46 69 6c 65 20 5b 6c  -    makeFile [l
a740: 69 73 74 20 73 65 74 20 78 20 22 61 20 62 5c 30  ist set x "a b\0
a750: 63 22 5d 20 73 6f 75 72 63 65 2e 66 69 6c 65 0a  c"] source.file.
a760: 20 20 20 20 20 73 6f 75 72 63 65 20 24 73 6f 75       source $sou
a770: 72 63 65 66 69 6c 65 0a 20 20 20 20 20 73 74 72  rcefile.     str
a780: 69 6e 67 20 6c 65 6e 67 74 68 20 24 78 0a 2d 7d  ing length $x.-}
a790: 20 35 0a 2d 74 65 73 74 20 73 6f 75 72 63 65 2d   5.-test source-
a7a0: 36 2e 32 20 7b 73 6f 75 72 63 65 20 73 6b 69 70  6.2 {source skip
a7b0: 73 20 65 76 65 72 79 74 68 69 6e 67 20 61 66 74  s everything aft
a7c0: 65 72 20 43 74 72 6c 2d 5a 3a 20 42 75 67 20 32  er Ctrl-Z: Bug 2
a7d0: 30 34 30 7d 20 7b 0a 2b 7d 20 2d 63 6c 65 61 6e  040} {.+} -clean
a7e0: 75 70 20 7b 0a 2b 20 20 20 20 72 65 6d 6f 76 65  up {.+    remove
a7f0: 46 69 6c 65 20 73 6f 75 72 63 65 2e 66 69 6c 65  File source.file
a800: 0a 2b 7d 20 2d 72 65 73 75 6c 74 20 35 0a 2b 0a  .+} -result 5.+.
a810: 2b 74 65 73 74 20 73 6f 75 72 63 65 2d 36 2e 32  +test source-6.2
a820: 20 7b 73 6f 75 72 63 65 20 73 6b 69 70 73 20 65   {source skips e
a830: 76 65 72 79 74 68 69 6e 67 20 61 66 74 65 72 20  verything after 
a840: 43 74 72 6c 2d 5a 3a 20 42 75 67 20 32 30 34 30  Ctrl-Z: Bug 2040
a850: 7d 20 2d 73 65 74 75 70 20 7b 0a 2b 20 20 20 20  } -setup {.+    
a860: 73 65 74 20 73 6f 75 72 63 65 66 69 6c 65 20 5b  set sourcefile [
a870: 6d 61 6b 65 46 69 6c 65 20 22 73 65 74 20 78 20  makeFile "set x 
a880: 61 62 5c 33 32 63 22 20 73 6f 75 72 63 65 2e 66  ab\32c" source.f
a890: 69 6c 65 5d 0a 2b 7d 20 2d 62 6f 64 79 20 7b 0a  ile].+} -body {.
a8a0: 20 20 20 20 20 73 65 74 20 78 20 7b 7d 0a 2d 20       set x {}.- 
a8b0: 20 20 20 6d 61 6b 65 46 69 6c 65 20 5b 6c 69 73     makeFile [lis
a8c0: 74 20 73 65 74 20 78 20 22 61 62 5c 33 32 63 22  t set x "ab\32c"
a8d0: 5d 20 73 6f 75 72 63 65 2e 66 69 6c 65 0a 20 20  ] source.file.  
a8e0: 20 20 20 73 6f 75 72 63 65 20 24 73 6f 75 72 63     source $sourc
a8f0: 65 66 69 6c 65 0a 20 20 20 20 20 73 74 72 69 6e  efile.     strin
a900: 67 20 6c 65 6e 67 74 68 20 24 78 0a 2d 7d 20 32  g length $x.-} 2
a910: 0a 2b 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 2b  .+} -cleanup {.+
a920: 20 20 20 20 72 65 6d 6f 76 65 46 69 6c 65 20 73      removeFile s
a930: 6f 75 72 63 65 2e 66 69 6c 65 0a 2b 7d 20 2d 72  ource.file.+} -r
a940: 65 73 75 6c 74 20 32 0a 2b 0a 2b 74 65 73 74 20  esult 2.+.+test 
a950: 73 6f 75 72 63 65 2d 37 2e 31 20 7b 73 6f 75 72  source-7.1 {sour
a960: 63 65 20 2d 65 6e 63 6f 64 69 6e 67 20 74 65 73  ce -encoding tes
a970: 74 7d 20 2d 73 65 74 75 70 20 7b 0a 2b 20 20 20  t} -setup {.+   
a980: 20 73 65 74 20 73 6f 75 72 63 65 66 69 6c 65 20   set sourcefile 
a990: 5b 6d 61 6b 65 46 69 6c 65 20 7b 7d 20 73 6f 75  [makeFile {} sou
a9a0: 72 63 65 2e 66 69 6c 65 5d 0a 2b 20 20 20 20 72  rce.file].+    r
a9b0: 65 6d 6f 76 65 46 69 6c 65 20 73 6f 75 72 63 65  emoveFile source
a9c0: 2e 66 69 6c 65 0a 2b 20 20 20 20 73 65 74 20 66  .file.+    set f
a9d0: 20 5b 6f 70 65 6e 20 24 73 6f 75 72 63 65 66 69   [open $sourcefi
a9e0: 6c 65 20 77 5d 0a 2b 20 20 20 20 66 63 6f 6e 66  le w].+    fconf
a9f0: 69 67 75 72 65 20 24 66 20 2d 65 6e 63 6f 64 69  igure $f -encodi
aa00: 6e 67 20 75 74 66 2d 38 0a 2b 20 20 20 20 70 75  ng utf-8.+    pu
aa10: 74 73 20 24 66 20 22 73 65 74 20 73 79 6d 62 6f  ts $f "set symbo
aa20: 6c 28 73 71 75 61 72 65 2d 72 6f 6f 74 29 20 5c  l(square-root) \
aa30: 75 32 32 31 41 3b 20 73 65 74 20 78 20 63 6f 72  u221A; set x cor
aa40: 72 65 63 74 22 0a 2b 20 20 20 20 63 6c 6f 73 65  rect".+    close
aa50: 20 24 66 0a 2b 7d 20 2d 62 6f 64 79 20 7b 0a 2b   $f.+} -body {.+
aa60: 20 20 20 20 73 65 74 20 78 20 75 6e 73 65 74 0a      set x unset.
aa70: 2b 20 20 20 20 73 6f 75 72 63 65 20 2d 65 6e 63  +    source -enc
aa80: 6f 64 69 6e 67 20 75 74 66 2d 38 20 24 73 6f 75  oding utf-8 $sou
aa90: 72 63 65 66 69 6c 65 0a 2b 20 20 20 20 73 65 74  rcefile.+    set
aaa0: 20 78 0a 2b 7d 20 2d 63 6c 65 61 6e 75 70 20 7b   x.+} -cleanup {
aab0: 0a 2b 20 20 20 20 72 65 6d 6f 76 65 46 69 6c 65  .+    removeFile
aac0: 20 73 6f 75 72 63 65 2e 66 69 6c 65 0a 2b 7d 20   source.file.+} 
aad0: 2d 72 65 73 75 6c 74 20 63 6f 72 72 65 63 74 0a  -result correct.
aae0: 2b 0a 2b 74 65 73 74 20 73 6f 75 72 63 65 2d 37  +.+test source-7
aaf0: 2e 32 20 7b 73 6f 75 72 63 65 20 2d 65 6e 63 6f  .2 {source -enco
ab00: 64 69 6e 67 20 74 65 73 74 7d 20 2d 73 65 74 75  ding test} -setu
ab10: 70 20 7b 0a 2b 20 20 20 20 23 20 54 68 69 73 20  p {.+    # This 
ab20: 74 65 73 74 73 20 66 6f 72 20 62 61 64 20 69 6e  tests for bad in
ab30: 74 65 72 61 63 74 69 6f 6e 73 20 62 65 74 77 65  teractions betwe
ab40: 65 6e 20 5b 73 6f 75 72 63 65 20 2d 65 6e 63 6f  en [source -enco
ab50: 64 69 6e 67 5d 0a 2b 20 20 20 20 23 20 61 6e 64  ding].+    # and
ab60: 20 75 73 65 20 6f 66 20 74 68 65 20 43 6f 6e 74   use of the Cont
ab70: 72 6f 6c 2d 5a 20 63 68 61 72 61 63 74 65 72 20  rol-Z character 
ab80: 28 5c 75 30 30 31 41 29 20 61 73 20 61 20 63 72  (\u001A) as a cr
ab90: 6f 73 73 2d 70 6c 61 74 66 6f 72 6d 0a 2b 20 20  oss-platform.+  
aba0: 20 20 23 20 45 4f 46 20 63 68 61 72 61 63 74 65    # EOF characte
abb0: 72 20 62 79 20 5b 73 6f 75 72 63 65 5d 2e 20 20  r by [source].  
abc0: 48 65 72 65 20 77 65 20 77 72 69 74 65 20 6f 75  Here we write ou
abd0: 74 20 61 6e 64 20 74 68 65 20 5b 73 6f 75 72 63  t and the [sourc
abe0: 65 5d 20 61 0a 2b 20 20 20 20 23 20 66 69 6c 65  e] a.+    # file
abf0: 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 74   that contains t
ac00: 68 65 20 62 79 74 65 20 5c 78 31 41 2c 20 61 6c  he byte \x1A, al
ac10: 74 68 6f 75 67 68 20 6e 6f 74 20 74 68 65 20 63  though not the c
ac20: 68 61 72 61 63 74 65 72 20 5c 75 30 30 31 41 20  haracter \u001A 
ac30: 69 6e 0a 2b 20 20 20 20 23 20 74 68 65 20 69 6e  in.+    # the in
ac40: 64 69 63 61 74 65 64 20 65 6e 63 6f 64 69 6e 67  dicated encoding
ac50: 2e 0a 2b 20 20 20 20 73 65 74 20 73 6f 75 72 63  ..+    set sourc
ac60: 65 66 69 6c 65 20 5b 6d 61 6b 65 46 69 6c 65 20  efile [makeFile 
ac70: 7b 7d 20 73 6f 75 72 63 65 2e 66 69 6c 65 5d 0a  {} source.file].
ac80: 2b 20 20 20 20 72 65 6d 6f 76 65 46 69 6c 65 20  +    removeFile 
ac90: 73 6f 75 72 63 65 2e 66 69 6c 65 0a 2b 20 20 20  source.file.+   
aca0: 20 73 65 74 20 66 20 5b 6f 70 65 6e 20 24 73 6f   set f [open $so
acb0: 75 72 63 65 66 69 6c 65 20 77 5d 0a 2b 20 20 20  urcefile w].+   
acc0: 20 66 63 6f 6e 66 69 67 75 72 65 20 24 66 20 2d   fconfigure $f -
acd0: 65 6e 63 6f 64 69 6e 67 20 75 6e 69 63 6f 64 65  encoding unicode
ace0: 0a 2b 20 20 20 20 70 75 74 73 20 24 66 20 22 73  .+    puts $f "s
acf0: 65 74 20 73 79 6d 62 6f 6c 28 73 71 75 61 72 65  et symbol(square
ad00: 2d 72 6f 6f 74 29 20 5c 75 32 32 31 41 3b 20 73  -root) \u221A; s
ad10: 65 74 20 78 20 63 6f 72 72 65 63 74 22 0a 2b 20  et x correct".+ 
ad20: 20 20 20 63 6c 6f 73 65 20 24 66 0a 2b 7d 20 2d     close $f.+} -
ad30: 62 6f 64 79 20 7b 0a 2b 20 20 20 20 73 65 74 20  body {.+    set 
ad40: 78 20 75 6e 73 65 74 0a 2b 20 20 20 20 73 6f 75  x unset.+    sou
ad50: 72 63 65 20 2d 65 6e 63 6f 64 69 6e 67 20 75 6e  rce -encoding un
ad60: 69 63 6f 64 65 20 24 73 6f 75 72 63 65 66 69 6c  icode $sourcefil
ad70: 65 0a 2b 20 20 20 20 73 65 74 20 78 0a 2b 7d 20  e.+    set x.+} 
ad80: 2d 63 6c 65 61 6e 75 70 20 7b 0a 2b 20 20 20 20  -cleanup {.+    
ad90: 72 65 6d 6f 76 65 46 69 6c 65 20 73 6f 75 72 63  removeFile sourc
ada0: 65 2e 66 69 6c 65 0a 2b 7d 20 2d 72 65 73 75 6c  e.file.+} -resul
adb0: 74 20 63 6f 72 72 65 63 74 0a 20 0a 2d 23 20 63  t correct. .-# c
adc0: 6c 65 61 6e 75 70 0a 2d 63 61 74 63 68 20 7b 3a  leanup.-catch {:
add0: 3a 74 63 6c 74 65 73 74 3a 3a 72 65 6d 6f 76 65  :tcltest::remove
ade0: 46 69 6c 65 20 73 6f 75 72 63 65 2e 66 69 6c 65  File source.file
adf0: 7d 0a 2d 3a 3a 74 63 6c 74 65 73 74 3a 3a 63 6c  }.-::tcltest::cl
ae00: 65 61 6e 75 70 54 65 73 74 73 0a 2b 74 65 73 74  eanupTests.+test
ae10: 20 73 6f 75 72 63 65 2d 37 2e 33 20 7b 73 6f 75   source-7.3 {sou
ae20: 72 63 65 20 2d 65 6e 63 6f 64 69 6e 67 3a 20 73  rce -encoding: s
ae30: 79 6e 74 61 78 7d 20 2d 62 6f 64 79 20 7b 0a 2b  yntax} -body {.+
ae40: 20 20 20 20 23 20 48 61 76 65 20 74 6f 20 73 70      # Have to sp
ae50: 65 6c 6c 20 6f 75 74 20 74 68 65 20 2d 65 6e 63  ell out the -enc
ae60: 6f 64 69 6e 67 20 6f 70 74 69 6f 6e 0a 2b 20 20  oding option.+  
ae70: 20 20 73 6f 75 72 63 65 20 2d 65 20 75 74 66 2d    source -e utf-
ae80: 38 20 6e 6f 5f 66 69 6c 65 0a 2b 7d 20 2d 72 65  8 no_file.+} -re
ae90: 74 75 72 6e 43 6f 64 65 73 20 31 20 2d 6d 61 74  turnCodes 1 -mat
aea0: 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20  ch glob -result 
aeb0: 7b 62 61 64 20 6f 70 74 69 6f 6e 2a 7d 0a 2b 0a  {bad option*}.+.
aec0: 2b 74 65 73 74 20 73 6f 75 72 63 65 2d 37 2e 34  +test source-7.4
aed0: 20 7b 73 6f 75 72 63 65 20 2d 65 6e 63 6f 64 69   {source -encodi
aee0: 6e 67 3a 20 73 79 6e 74 61 78 7d 20 2d 73 65 74  ng: syntax} -set
aef0: 75 70 20 7b 0a 2b 20 20 20 20 73 65 74 20 73 6f  up {.+    set so
af00: 75 72 63 65 66 69 6c 65 20 5b 6d 61 6b 65 46 69  urcefile [makeFi
af10: 6c 65 20 7b 7d 20 73 6f 75 72 63 65 2e 66 69 6c  le {} source.fil
af20: 65 5d 0a 2b 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20  e].+} -body {.+ 
af30: 20 20 20 73 6f 75 72 63 65 20 2d 65 6e 63 6f 64     source -encod
af40: 69 6e 67 20 6e 6f 2d 73 75 63 68 2d 65 6e 63 6f  ing no-such-enco
af50: 64 69 6e 67 20 24 73 6f 75 72 63 65 66 69 6c 65  ding $sourcefile
af60: 0a 2b 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 2b  .+} -cleanup {.+
af70: 20 20 20 20 72 65 6d 6f 76 65 46 69 6c 65 20 73      removeFile s
af80: 6f 75 72 63 65 2e 66 69 6c 65 0a 2b 7d 20 2d 72  ource.file.+} -r
af90: 65 74 75 72 6e 43 6f 64 65 73 20 31 20 2d 6d 61  eturnCodes 1 -ma
afa0: 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74  tch glob -result
afb0: 20 7b 75 6e 6b 6e 6f 77 6e 20 65 6e 63 6f 64 69   {unknown encodi
afc0: 6e 67 2a 7d 0a 2b 0a 2b 74 65 73 74 20 73 6f 75  ng*}.+.+test sou
afd0: 72 63 65 2d 37 2e 35 20 7b 73 6f 75 72 63 65 20  rce-7.5 {source 
afe0: 2d 65 6e 63 6f 64 69 6e 67 3a 20 63 6f 72 72 65  -encoding: corre
aff0: 63 74 20 6f 70 65 72 61 74 69 6f 6e 7d 20 2d 73  ct operation} -s
b000: 65 74 75 70 20 7b 0a 2b 20 20 20 20 73 65 74 20  etup {.+    set 
b010: 73 6f 75 72 63 65 66 69 6c 65 20 5b 6d 61 6b 65  sourcefile [make
b020: 46 69 6c 65 20 7b 7d 20 73 6f 75 72 63 65 2e 66  File {} source.f
b030: 69 6c 65 5d 0a 2b 20 20 20 20 72 65 6d 6f 76 65  ile].+    remove
b040: 46 69 6c 65 20 73 6f 75 72 63 65 2e 66 69 6c 65  File source.file
b050: 0a 2b 20 20 20 20 73 65 74 20 66 20 5b 6f 70 65  .+    set f [ope
b060: 6e 20 24 73 6f 75 72 63 65 66 69 6c 65 20 77 5d  n $sourcefile w]
b070: 0a 2b 20 20 20 20 66 63 6f 6e 66 69 67 75 72 65  .+    fconfigure
b080: 20 24 66 20 2d 65 6e 63 6f 64 69 6e 67 20 75 74   $f -encoding ut
b090: 66 2d 38 0a 2b 20 20 20 20 70 75 74 73 20 24 66  f-8.+    puts $f
b0a0: 20 22 70 72 6f 63 20 5c 75 32 30 61 63 20 7b 7d   "proc \u20ac {}
b0b0: 20 7b 72 65 74 75 72 6e 20 66 6f 6f 7d 22 0a 2b   {return foo}".+
b0c0: 20 20 20 20 63 6c 6f 73 65 20 24 66 0a 2b 7d 20      close $f.+} 
b0d0: 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20 73 6f 75  -body {.+    sou
b0e0: 72 63 65 20 2d 65 6e 63 6f 64 69 6e 67 20 75 74  rce -encoding ut
b0f0: 66 2d 38 20 24 73 6f 75 72 63 65 66 69 6c 65 0a  f-8 $sourcefile.
b100: 2b 20 20 20 20 5c 75 32 30 61 63 0a 2b 7d 20 2d  +    \u20ac.+} -
b110: 63 6c 65 61 6e 75 70 20 7b 0a 2b 20 20 20 20 72  cleanup {.+    r
b120: 65 6d 6f 76 65 46 69 6c 65 20 73 6f 75 72 63 65  emoveFile source
b130: 2e 66 69 6c 65 0a 2b 20 20 20 20 72 65 6e 61 6d  .file.+    renam
b140: 65 20 5c 75 32 30 61 63 20 7b 7d 0a 2b 7d 20 2d  e \u20ac {}.+} -
b150: 72 65 73 75 6c 74 20 66 6f 6f 0a 2b 0a 2b 74 65  result foo.+.+te
b160: 73 74 20 73 6f 75 72 63 65 2d 37 2e 36 20 7b 73  st source-7.6 {s
b170: 6f 75 72 63 65 20 2d 65 6e 63 6f 64 69 6e 67 3a  ource -encoding:
b180: 20 6d 69 73 6d 61 74 63 68 20 65 6e 63 6f 64 69   mismatch encodi
b190: 6e 67 20 65 72 72 6f 72 7d 20 2d 73 65 74 75 70  ng error} -setup
b1a0: 20 7b 0a 2b 20 20 20 20 73 65 74 20 73 6f 75 72   {.+    set sour
b1b0: 63 65 66 69 6c 65 20 5b 6d 61 6b 65 46 69 6c 65  cefile [makeFile
b1c0: 20 7b 7d 20 73 6f 75 72 63 65 2e 66 69 6c 65 5d   {} source.file]
b1d0: 0a 2b 20 20 20 20 72 65 6d 6f 76 65 46 69 6c 65  .+    removeFile
b1e0: 20 73 6f 75 72 63 65 2e 66 69 6c 65 0a 2b 20 20   source.file.+  
b1f0: 20 20 73 65 74 20 66 20 5b 6f 70 65 6e 20 24 73    set f [open $s
b200: 6f 75 72 63 65 66 69 6c 65 20 77 5d 0a 2b 20 20  ourcefile w].+  
b210: 20 20 66 63 6f 6e 66 69 67 75 72 65 20 24 66 20    fconfigure $f 
b220: 2d 65 6e 63 6f 64 69 6e 67 20 75 74 66 2d 38 0a  -encoding utf-8.
b230: 2b 20 20 20 20 70 75 74 73 20 24 66 20 22 70 72  +    puts $f "pr
b240: 6f 63 20 5c 75 32 30 61 63 20 7b 7d 20 7b 72 65  oc \u20ac {} {re
b250: 74 75 72 6e 20 66 6f 6f 7d 22 0a 2b 20 20 20 20  turn foo}".+    
b260: 63 6c 6f 73 65 20 24 66 0a 2b 7d 20 2d 62 6f 64  close $f.+} -bod
b270: 79 20 7b 0a 2b 20 20 20 20 73 6f 75 72 63 65 20  y {.+    source 
b280: 2d 65 6e 63 6f 64 69 6e 67 20 61 73 63 69 69 20  -encoding ascii 
b290: 24 73 6f 75 72 63 65 66 69 6c 65 0a 2b 20 20 20  $sourcefile.+   
b2a0: 20 5c 75 32 30 61 63 0a 2b 7d 20 2d 63 6c 65 61   \u20ac.+} -clea
b2b0: 6e 75 70 20 7b 0a 2b 20 20 20 20 72 65 6d 6f 76  nup {.+    remov
b2c0: 65 46 69 6c 65 20 73 6f 75 72 63 65 2e 66 69 6c  eFile source.fil
b2d0: 65 0a 2b 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65  e.+} -returnCode
b2e0: 73 20 65 72 72 6f 72 20 2d 6d 61 74 63 68 20 67  s error -match g
b2f0: 6c 6f 62 20 2d 72 65 73 75 6c 74 20 7b 69 6e 76  lob -result {inv
b300: 61 6c 69 64 20 63 6f 6d 6d 61 6e 64 20 6e 61 6d  alid command nam
b310: 65 2a 7d 0a 2b 0a 2b 63 6c 65 61 6e 75 70 54 65  e*}.+.+cleanupTe
b320: 73 74 73 0a 2b 7d 0a 2b 6e 61 6d 65 73 70 61 63  sts.+}.+namespac
b330: 65 20 64 65 6c 65 74 65 20 3a 3a 74 63 6c 3a 3a  e delete ::tcl::
b340: 74 65 73 74 3a 3a 73 6f 75 72 63 65 0a 20 72 65  test::source. re
b350: 74 75 72 6e 0a                                   turn.