Tcl Source Code

Hex Artifact Content
Login

Artifact 0d639bdcd9e7c8d21176ba5e0c521df30410a2fe:

Attachment "1165695.patch" to ticket [1165695fff] added by dgp 2005-04-30 03:34:05.
0000: 49 6e 64 65 78 3a 20 64 6f 63 2f 6c 69 6e 64 65  Index: doc/linde
0010: 78 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  x.n.============
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 0a 52 43 53 20 66 69 6c 65  =======.RCS file
0060: 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74  : /cvsroot/tcl/t
0070: 63 6c 2f 64 6f 63 2f 6c 69 6e 64 65 78 2e 6e 2c  cl/doc/lindex.n,
0080: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76  v.retrieving rev
0090: 69 73 69 6f 6e 20 31 2e 39 0a 64 69 66 66 20 2d  ision 1.9.diff -
00a0: 75 20 2d 72 31 2e 39 20 6c 69 6e 64 65 78 2e 6e  u -r1.9 lindex.n
00b0: 0a 2d 2d 2d 20 64 6f 63 2f 6c 69 6e 64 65 78 2e  .--- doc/lindex.
00c0: 6e 09 36 20 41 70 72 20 32 30 30 35 20 32 30 3a  n.6 Apr 2005 20:
00d0: 35 35 3a 32 33 20 2d 30 30 30 30 09 31 2e 39 0a  55:23 -0000.1.9.
00e0: 2b 2b 2b 20 64 6f 63 2f 6c 69 6e 64 65 78 2e 6e  +++ doc/lindex.n
00f0: 09 32 39 20 41 70 72 20 32 30 30 35 20 32 30 3a  .29 Apr 2005 20:
0100: 33 30 3a 33 38 20 2d 30 30 30 30 0a 40 40 20 2d  30:38 -0000.@@ -
0110: 34 36 2c 39 20 2b 34 36 2c 31 31 20 40 40 0a 20  46,9 +46,11 @@. 
0120: 49 66 20 5c 66 49 69 6e 64 65 78 5c 66 52 20 69  If \fIindex\fR i
0130: 73 20 6e 65 67 61 74 69 76 65 20 6f 72 20 67 72  s negative or gr
0140: 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65 71  eater than or eq
0150: 75 61 6c 20 74 6f 20 74 68 65 20 6e 75 6d 62 65  ual to the numbe
0160: 72 0a 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 69  r. of elements i
0170: 6e 20 5c 66 49 76 61 6c 75 65 5c 66 52 2c 20 74  n \fIvalue\fR, t
0180: 68 65 6e 20 61 6e 20 65 6d 70 74 79 0a 20 73 74  hen an empty. st
0190: 72 69 6e 67 20 69 73 20 72 65 74 75 72 6e 65 64  ring is returned
01a0: 2e 0a 2d 49 66 20 5c 66 49 69 6e 64 65 78 5c 66  ..-If \fIindex\f
01b0: 52 20 68 61 73 20 74 68 65 20 76 61 6c 75 65 20  R has the value 
01c0: 5c 66 42 65 6e 64 5c 66 52 2c 20 69 74 20 72 65  \fBend\fR, it re
01d0: 66 65 72 73 20 74 6f 20 74 68 65 20 6c 61 73 74  fers to the last
01e0: 20 65 6c 65 6d 65 6e 74 0a 2d 69 6e 20 74 68 65   element.-in the
01f0: 20 6c 69 73 74 2c 20 61 6e 64 20 5c 66 42 65 6e   list, and \fBen
0200: 64 5c 2d 5c 66 49 69 6e 74 65 67 65 72 5c 66 52  d\-\fIinteger\fR
0210: 20 72 65 66 65 72 73 20 74 6f 20 74 68 65 20 6c   refers to the l
0220: 61 73 74 20 65 6c 65 6d 65 6e 74 20 69 6e 0a 2d  ast element in.-
0230: 74 68 65 20 6c 69 73 74 20 6d 69 6e 75 73 20 74  the list minus t
0240: 68 65 20 73 70 65 63 69 66 69 65 64 20 69 6e 74  he specified int
0250: 65 67 65 72 20 6f 66 66 73 65 74 2e 0a 2b 2e 56  eger offset..+.V
0260: 53 20 38 2e 35 0a 2b 54 68 65 20 69 6e 74 65 72  S 8.5.+The inter
0270: 70 72 65 74 61 74 69 6f 6e 20 6f 66 20 65 61 63  pretation of eac
0280: 68 20 73 69 6d 70 6c 65 20 5c 66 49 69 6e 64 65  h simple \fIinde
0290: 78 5c 66 52 20 76 61 6c 75 65 20 69 73 20 74 68  x\fR value is th
02a0: 65 20 73 61 6d 65 20 61 73 20 0a 2b 66 6f 72 20  e same as .+for 
02b0: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 5c 66 42 73  the command \fBs
02c0: 74 72 69 6e 67 20 69 6e 64 65 78 5c 66 52 2c 20  tring index\fR, 
02d0: 73 75 70 70 6f 72 74 69 6e 67 20 73 69 6d 70 6c  supporting simpl
02e0: 65 20 69 6e 64 65 78 0a 2b 61 72 69 74 68 6d 65  e index.+arithme
02f0: 74 69 63 20 61 6e 64 20 69 6e 64 69 63 65 73 20  tic and indices 
0300: 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20  relative to the 
0310: 65 6e 64 20 6f 66 20 74 68 65 20 6c 69 73 74 2e  end of the list.
0320: 0a 2b 2e 56 45 20 38 2e 35 0a 20 2e 50 50 0a 20  .+.VE 8.5. .PP. 
0330: 49 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 5c 66  If additional \f
0340: 49 69 6e 64 65 78 5c 66 52 20 61 72 67 75 6d 65  Iindex\fR argume
0350: 6e 74 73 20 61 72 65 20 73 75 70 70 6c 69 65 64  nts are supplied
0360: 2c 20 74 68 65 6e 20 65 61 63 68 20 61 72 67 75  , then each argu
0370: 6d 65 6e 74 20 69 73 0a 20 75 73 65 64 20 69 6e  ment is. used in
0380: 20 74 75 72 6e 20 74 6f 20 73 65 6c 65 63 74 20   turn to select 
0390: 61 6e 20 65 6c 65 6d 65 6e 74 20 66 72 6f 6d 20  an element from 
03a0: 74 68 65 20 70 72 65 76 69 6f 75 73 20 69 6e 64  the previous ind
03b0: 65 78 69 6e 67 20 6f 70 65 72 61 74 69 6f 6e 2c  exing operation,
03c0: 0a 40 40 20 2d 37 39 2c 37 20 2b 38 31 2c 31 30  .@@ -79,7 +81,10
03d0: 20 40 40 0a 20 2e 43 45 0a 20 2e 53 48 20 22 53   @@. .CE. .SH "S
03e0: 45 45 20 41 4c 53 4f 22 0a 20 6c 69 73 74 28 6e  EE ALSO". list(n
03f0: 29 2c 20 6c 61 70 70 65 6e 64 28 6e 29 2c 20 6c  ), lappend(n), l
0400: 69 6e 73 65 72 74 28 6e 29 2c 20 6c 6c 65 6e 67  insert(n), lleng
0410: 74 68 28 6e 29 2c 20 6c 73 65 61 72 63 68 28 6e  th(n), lsearch(n
0420: 29 2c 20 0a 2d 6c 73 65 74 28 6e 29 2c 20 6c 73  ), .-lset(n), ls
0430: 6f 72 74 28 6e 29 2c 20 6c 72 61 6e 67 65 28 6e  ort(n), lrange(n
0440: 29 2c 20 6c 72 65 70 6c 61 63 65 28 6e 29 0a 2b  ), lreplace(n).+
0450: 6c 73 65 74 28 6e 29 2c 20 6c 73 6f 72 74 28 6e  lset(n), lsort(n
0460: 29 2c 20 6c 72 61 6e 67 65 28 6e 29 2c 20 6c 72  ), lrange(n), lr
0470: 65 70 6c 61 63 65 28 6e 29 2c 0a 2b 2e 56 53 20  eplace(n),.+.VS 
0480: 38 2e 35 0a 2b 73 74 72 69 6e 67 28 6e 29 0a 2b  8.5.+string(n).+
0490: 2e 56 45 0a 20 0a 20 2e 53 48 20 4b 45 59 57 4f  .VE. . .SH KEYWO
04a0: 52 44 53 0a 20 65 6c 65 6d 65 6e 74 2c 20 69 6e  RDS. element, in
04b0: 64 65 78 2c 20 6c 69 73 74 0a 49 6e 64 65 78 3a  dex, list.Index:
04c0: 20 64 6f 63 2f 6c 69 6e 73 65 72 74 2e 6e 0a 3d   doc/linsert.n.=
04d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
04e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
04f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0500: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0510: 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76  ==.RCS file: /cv
0520: 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 64 6f  sroot/tcl/tcl/do
0530: 63 2f 6c 69 6e 73 65 72 74 2e 6e 2c 76 0a 72 65  c/linsert.n,v.re
0540: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f  trieving revisio
0550: 6e 20 31 2e 31 31 0a 64 69 66 66 20 2d 75 20 2d  n 1.11.diff -u -
0560: 72 31 2e 31 31 20 6c 69 6e 73 65 72 74 2e 6e 0a  r1.11 linsert.n.
0570: 2d 2d 2d 20 64 6f 63 2f 6c 69 6e 73 65 72 74 2e  --- doc/linsert.
0580: 6e 09 36 20 41 70 72 20 32 30 30 35 20 32 30 3a  n.6 Apr 2005 20:
0590: 35 35 3a 32 33 20 2d 30 30 30 30 09 31 2e 31 31  55:23 -0000.1.11
05a0: 0a 2b 2b 2b 20 64 6f 63 2f 6c 69 6e 73 65 72 74  .+++ doc/linsert
05b0: 2e 6e 09 32 39 20 41 70 72 20 32 30 30 35 20 32  .n.29 Apr 2005 2
05c0: 30 3a 33 30 3a 33 38 20 2d 30 30 30 30 0a 40 40  0:30:38 -0000.@@
05d0: 20 2d 32 34 2c 31 31 20 2b 32 34 2c 31 32 20 40   -24,11 +24,12 @
05e0: 40 0a 20 5c 66 49 65 6c 65 6d 65 6e 74 5c 66 52  @. \fIelement\fR
05f0: 20 61 72 67 75 6d 65 6e 74 73 20 6a 75 73 74 20   arguments just 
0600: 62 65 66 6f 72 65 20 74 68 65 20 5c 66 49 69 6e  before the \fIin
0610: 64 65 78 5c 66 52 27 74 68 20 65 6c 65 6d 65 6e  dex\fR'th elemen
0620: 74 20 6f 66 0a 20 5c 66 49 6c 69 73 74 5c 66 52  t of. \fIlist\fR
0630: 2e 20 20 45 61 63 68 20 5c 66 49 65 6c 65 6d 65  .  Each \fIeleme
0640: 6e 74 5c 66 52 20 61 72 67 75 6d 65 6e 74 20 77  nt\fR argument w
0650: 69 6c 6c 20 62 65 63 6f 6d 65 20 61 20 73 65 70  ill become a sep
0660: 61 72 61 74 65 20 65 6c 65 6d 65 6e 74 20 6f 66  arate element of
0670: 0a 20 74 68 65 20 6e 65 77 20 6c 69 73 74 2e 20  . the new list. 
0680: 20 49 66 20 5c 66 49 69 6e 64 65 78 5c 66 52 20   If \fIindex\fR 
0690: 69 73 20 6c 65 73 73 20 74 68 61 6e 20 6f 72 20  is less than or 
06a0: 65 71 75 61 6c 20 74 6f 20 7a 65 72 6f 2c 20 74  equal to zero, t
06b0: 68 65 6e 20 74 68 65 20 6e 65 77 0a 2d 65 6c 65  hen the new.-ele
06c0: 6d 65 6e 74 73 20 61 72 65 20 69 6e 73 65 72 74  ments are insert
06d0: 65 64 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e  ed at the beginn
06e0: 69 6e 67 20 6f 66 20 74 68 65 20 6c 69 73 74 2e  ing of the list.
06f0: 20 20 49 66 20 5c 66 49 69 6e 64 65 78 5c 66 52    If \fIindex\fR
0700: 20 68 61 73 20 74 68 65 0a 2d 76 61 6c 75 65 20   has the.-value 
0710: 5c 66 42 65 6e 64 5c 66 52 2c 20 6f 72 20 69 66  \fBend\fR, or if
0720: 20 69 74 20 69 73 20 67 72 65 61 74 65 72 20 74   it is greater t
0730: 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f 20  han or equal to 
0740: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 2d 65  the number of.-e
0750: 6c 65 6d 65 6e 74 73 20 69 6e 20 74 68 65 20 6c  lements in the l
0760: 69 73 74 2c 20 74 68 65 6e 20 74 68 65 20 6e 65  ist, then the ne
0770: 77 20 65 6c 65 6d 65 6e 74 73 20 61 72 65 20 61  w elements are a
0780: 70 70 65 6e 64 65 64 20 74 6f 20 74 68 65 20 6c  ppended to the l
0790: 69 73 74 2e 0a 2d 5c 66 42 65 6e 64 5c 2d 5c 66  ist..-\fBend\-\f
07a0: 49 69 6e 74 65 67 65 72 5c 66 52 20 72 65 66 65  Iinteger\fR refe
07b0: 72 73 20 74 6f 20 74 68 65 20 6c 61 73 74 20 65  rs to the last e
07c0: 6c 65 6d 65 6e 74 20 69 6e 20 74 68 65 20 6c 69  lement in the li
07d0: 73 74 20 6d 69 6e 75 73 20 74 68 65 0a 2d 73 70  st minus the.-sp
07e0: 65 63 69 66 69 65 64 20 69 6e 74 65 67 65 72 20  ecified integer 
07f0: 6f 66 66 73 65 74 2e 0a 2b 65 6c 65 6d 65 6e 74  offset..+element
0800: 73 20 61 72 65 20 69 6e 73 65 72 74 65 64 20 61  s are inserted a
0810: 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20  t the beginning 
0820: 6f 66 20 74 68 65 20 6c 69 73 74 2e 20 20 0a 2b  of the list.  .+
0830: 2e 56 53 20 38 2e 35 0a 2b 54 68 65 20 69 6e 74  .VS 8.5.+The int
0840: 65 72 70 72 65 74 61 74 69 6f 6e 20 6f 66 20 74  erpretation of t
0850: 68 65 20 5c 66 49 69 6e 64 65 78 5c 66 52 20 76  he \fIindex\fR v
0860: 61 6c 75 65 20 69 73 20 74 68 65 20 73 61 6d 65  alue is the same
0870: 20 61 73 0a 2b 66 6f 72 20 74 68 65 20 63 6f 6d   as.+for the com
0880: 6d 61 6e 64 20 5c 66 42 73 74 72 69 6e 67 20 69  mand \fBstring i
0890: 6e 64 65 78 5c 66 52 2c 20 73 75 70 70 6f 72 74  ndex\fR, support
08a0: 69 6e 67 20 73 69 6d 70 6c 65 20 69 6e 64 65 78  ing simple index
08b0: 0a 2b 61 72 69 74 68 6d 65 74 69 63 20 61 6e 64  .+arithmetic and
08c0: 20 69 6e 64 69 63 65 73 20 72 65 6c 61 74 69 76   indices relativ
08d0: 65 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20  e to the end of 
08e0: 74 68 65 20 6c 69 73 74 2e 0a 2b 2e 56 45 0a 20  the list..+.VE. 
08f0: 2e 53 48 20 45 58 41 4d 50 4c 45 0a 20 50 75 74  .SH EXAMPLE. Put
0900: 74 69 6e 67 20 73 6f 6d 65 20 76 61 6c 75 65 73  ting some values
0910: 20 69 6e 74 6f 20 61 20 6c 69 73 74 2c 20 66 69   into a list, fi
0920: 72 73 74 20 69 6e 64 65 78 69 6e 67 20 66 72 6f  rst indexing fro
0930: 6d 20 74 68 65 20 73 74 61 72 74 20 61 6e 64 0a  m the start and.
0940: 20 74 68 65 6e 20 69 6e 64 65 78 69 6e 67 20 66   then indexing f
0950: 72 6f 6d 20 74 68 65 20 65 6e 64 2c 20 61 6e 64  rom the end, and
0960: 20 74 68 65 6e 20 63 68 61 69 6e 69 6e 67 20 74   then chaining t
0970: 68 65 6d 20 74 6f 67 65 74 68 65 72 3a 0a 40 40  hem together:.@@
0980: 20 2d 34 32 2c 37 20 2b 34 33 2c 31 30 20 40 40   -42,7 +43,10 @@
0990: 0a 20 0a 20 2e 53 48 20 22 53 45 45 20 41 4c 53  . . .SH "SEE ALS
09a0: 4f 22 0a 20 6c 69 73 74 28 6e 29 2c 20 6c 61 70  O". list(n), lap
09b0: 70 65 6e 64 28 6e 29 2c 20 6c 69 6e 64 65 78 28  pend(n), lindex(
09c0: 6e 29 2c 20 6c 6c 65 6e 67 74 68 28 6e 29 2c 20  n), llength(n), 
09d0: 6c 73 65 61 72 63 68 28 6e 29 2c 20 0a 2d 6c 73  lsearch(n), .-ls
09e0: 65 74 28 6e 29 2c 20 6c 73 6f 72 74 28 6e 29 2c  et(n), lsort(n),
09f0: 20 6c 72 61 6e 67 65 28 6e 29 2c 20 6c 72 65 70   lrange(n), lrep
0a00: 6c 61 63 65 28 6e 29 0a 2b 6c 73 65 74 28 6e 29  lace(n).+lset(n)
0a10: 2c 20 6c 73 6f 72 74 28 6e 29 2c 20 6c 72 61 6e  , lsort(n), lran
0a20: 67 65 28 6e 29 2c 20 6c 72 65 70 6c 61 63 65 28  ge(n), lreplace(
0a30: 6e 29 2c 0a 2b 2e 56 53 20 38 2e 35 0a 2b 73 74  n),.+.VS 8.5.+st
0a40: 72 69 6e 67 28 6e 29 0a 2b 2e 56 45 0a 20 0a 20  ring(n).+.VE. . 
0a50: 2e 53 48 20 4b 45 59 57 4f 52 44 53 0a 20 65 6c  .SH KEYWORDS. el
0a60: 65 6d 65 6e 74 2c 20 69 6e 73 65 72 74 2c 20 6c  ement, insert, l
0a70: 69 73 74 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 6c  ist.Index: doc/l
0a80: 72 61 6e 67 65 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d  range.n.========
0a90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
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 0a 52 43 53 20  ===========.RCS 
0ad0: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74  file: /cvsroot/t
0ae0: 63 6c 2f 74 63 6c 2f 64 6f 63 2f 6c 72 61 6e 67  cl/tcl/doc/lrang
0af0: 65 2e 6e 2c 76 0a 72 65 74 72 69 65 76 69 6e 67  e.n,v.retrieving
0b00: 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 30 0a 64   revision 1.10.d
0b10: 69 66 66 20 2d 75 20 2d 72 31 2e 31 30 20 6c 72  iff -u -r1.10 lr
0b20: 61 6e 67 65 2e 6e 0a 2d 2d 2d 20 64 6f 63 2f 6c  ange.n.--- doc/l
0b30: 72 61 6e 67 65 2e 6e 09 36 20 41 70 72 20 32 30  range.n.6 Apr 20
0b40: 30 35 20 32 30 3a 35 35 3a 32 33 20 2d 30 30 30  05 20:55:23 -000
0b50: 30 09 31 2e 31 30 0a 2b 2b 2b 20 64 6f 63 2f 6c  0.1.10.+++ doc/l
0b60: 72 61 6e 67 65 2e 6e 09 32 39 20 41 70 72 20 32  range.n.29 Apr 2
0b70: 30 30 35 20 32 30 3a 33 30 3a 33 38 20 2d 30 30  005 20:30:38 -00
0b80: 30 30 0a 40 40 20 2d 32 33 2c 39 20 2b 32 33 2c  00.@@ -23,9 +23,
0b90: 31 32 20 40 40 0a 20 5c 66 49 4c 69 73 74 5c 66  12 @@. \fIList\f
0ba0: 52 20 6d 75 73 74 20 62 65 20 61 20 76 61 6c 69  R must be a vali
0bb0: 64 20 54 63 6c 20 6c 69 73 74 2e 20 20 54 68 69  d Tcl list.  Thi
0bc0: 73 20 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c 0a 20  s command will. 
0bd0: 72 65 74 75 72 6e 20 61 20 6e 65 77 20 6c 69 73  return a new lis
0be0: 74 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20  t consisting of 
0bf0: 65 6c 65 6d 65 6e 74 73 0a 20 5c 66 49 66 69 72  elements. \fIfir
0c00: 73 74 5c 66 52 20 74 68 72 6f 75 67 68 20 5c 66  st\fR through \f
0c10: 49 6c 61 73 74 5c 66 52 2c 20 69 6e 63 6c 75 73  Ilast\fR, inclus
0c20: 69 76 65 2e 0a 2d 5c 66 49 46 69 72 73 74 5c 66  ive..-\fIFirst\f
0c30: 52 20 6f 72 20 5c 66 49 6c 61 73 74 5c 66 52 0a  R or \fIlast\fR.
0c40: 2d 6d 61 79 20 62 65 20 5c 66 42 65 6e 64 5c 66  -may be \fBend\f
0c50: 52 20 28 6f 72 20 61 6e 79 20 61 62 62 72 65 76  R (or any abbrev
0c60: 69 61 74 69 6f 6e 20 6f 66 20 69 74 29 20 74 6f  iation of it) to
0c70: 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6c 61   refer to the la
0c80: 73 74 0a 2d 65 6c 65 6d 65 6e 74 20 6f 66 20 74  st.-element of t
0c90: 68 65 20 6c 69 73 74 2e 0a 2b 2e 56 53 20 38 2e  he list..+.VS 8.
0ca0: 35 0a 2b 54 68 65 20 69 6e 64 65 78 20 76 61 6c  5.+The index val
0cb0: 75 65 73 20 5c 66 49 66 69 72 73 74 5c 66 52 20  ues \fIfirst\fR 
0cc0: 61 6e 64 20 5c 66 49 6c 61 73 74 5c 66 52 20 61  and \fIlast\fR a
0cd0: 72 65 20 69 6e 74 65 72 70 72 65 74 65 64 0a 2b  re interpreted.+
0ce0: 74 68 65 20 73 61 6d 65 20 61 73 20 69 6e 64 65  the same as inde
0cf0: 78 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65  x values for the
0d00: 20 63 6f 6d 6d 61 6e 64 20 5c 66 42 73 74 72 69   command \fBstri
0d10: 6e 67 20 69 6e 64 65 78 5c 66 52 2c 0a 2b 73 75  ng index\fR,.+su
0d20: 70 70 6f 72 74 69 6e 67 20 73 69 6d 70 6c 65 20  pporting simple 
0d30: 69 6e 64 65 78 20 61 72 69 74 68 6d 65 74 69 63  index arithmetic
0d40: 20 61 6e 64 20 69 6e 64 69 63 65 73 20 72 65 6c   and indices rel
0d50: 61 74 69 76 65 20 74 6f 20 74 68 65 0a 2b 65 6e  ative to the.+en
0d60: 64 20 6f 66 20 74 68 65 20 6c 69 73 74 2e 0a 2b  d of the list..+
0d70: 2e 56 45 0a 20 49 66 20 5c 66 49 66 69 72 73 74  .VE. If \fIfirst
0d80: 5c 66 52 20 69 73 20 6c 65 73 73 20 74 68 61 6e  \fR is less than
0d90: 20 7a 65 72 6f 2c 20 69 74 20 69 73 20 74 72 65   zero, it is tre
0da0: 61 74 65 64 20 61 73 20 69 66 20 69 74 20 77 65  ated as if it we
0db0: 72 65 20 7a 65 72 6f 2e 0a 20 49 66 20 5c 66 49  re zero.. If \fI
0dc0: 6c 61 73 74 5c 66 52 20 69 73 20 67 72 65 61 74  last\fR is great
0dd0: 65 72 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c  er than or equal
0de0: 20 74 6f 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   to the number o
0df0: 66 20 65 6c 65 6d 65 6e 74 73 0a 20 69 6e 20 74  f elements. in t
0e00: 68 65 20 6c 69 73 74 2c 20 74 68 65 6e 20 69 74  he list, then it
0e10: 20 69 73 20 74 72 65 61 74 65 64 20 61 73 20 69   is treated as i
0e20: 66 20 69 74 20 77 65 72 65 20 5c 66 42 65 6e 64  f it were \fBend
0e30: 5c 66 52 2e 0a 40 40 20 2d 36 37 2c 37 20 2b 37  \fR..@@ -67,7 +7
0e40: 30 2c 31 30 20 40 40 0a 20 0a 20 2e 53 48 20 22  0,10 @@. . .SH "
0e50: 53 45 45 20 41 4c 53 4f 22 0a 20 6c 69 73 74 28  SEE ALSO". list(
0e60: 6e 29 2c 20 6c 61 70 70 65 6e 64 28 6e 29 2c 20  n), lappend(n), 
0e70: 6c 69 6e 64 65 78 28 6e 29 2c 20 6c 69 6e 73 65  lindex(n), linse
0e80: 72 74 28 6e 29 2c 20 6c 6c 65 6e 67 74 68 28 6e  rt(n), llength(n
0e90: 29 2c 20 6c 73 65 61 72 63 68 28 6e 29 2c 20 0a  ), lsearch(n), .
0ea0: 2d 6c 73 65 74 28 6e 29 2c 20 6c 72 65 70 6c 61  -lset(n), lrepla
0eb0: 63 65 28 6e 29 2c 20 6c 73 6f 72 74 28 6e 29 0a  ce(n), lsort(n).
0ec0: 2b 6c 73 65 74 28 6e 29 2c 20 6c 72 65 70 6c 61  +lset(n), lrepla
0ed0: 63 65 28 6e 29 2c 20 6c 73 6f 72 74 28 6e 29 2c  ce(n), lsort(n),
0ee0: 0a 2b 2e 56 53 20 38 2e 35 0a 2b 73 74 72 69 6e  .+.VS 8.5.+strin
0ef0: 67 28 6e 29 0a 2b 2e 56 45 0a 20 0a 20 2e 53 48  g(n).+.VE. . .SH
0f00: 20 4b 45 59 57 4f 52 44 53 0a 20 65 6c 65 6d 65   KEYWORDS. eleme
0f10: 6e 74 2c 20 6c 69 73 74 2c 20 72 61 6e 67 65 2c  nt, list, range,
0f20: 20 73 75 62 6c 69 73 74 0a 49 6e 64 65 78 3a 20   sublist.Index: 
0f30: 64 6f 63 2f 6c 72 65 70 6c 61 63 65 2e 6e 0a 3d  doc/lreplace.n.=
0f40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0f50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0f60: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0f70: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0f80: 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76  ==.RCS file: /cv
0f90: 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 64 6f  sroot/tcl/tcl/do
0fa0: 63 2f 6c 72 65 70 6c 61 63 65 2e 6e 2c 76 0a 72  c/lreplace.n,v.r
0fb0: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69  etrieving revisi
0fc0: 6f 6e 20 31 2e 31 31 0a 64 69 66 66 20 2d 75 20  on 1.11.diff -u 
0fd0: 2d 72 31 2e 31 31 20 6c 72 65 70 6c 61 63 65 2e  -r1.11 lreplace.
0fe0: 6e 0a 2d 2d 2d 20 64 6f 63 2f 6c 72 65 70 6c 61  n.--- doc/lrepla
0ff0: 63 65 2e 6e 09 36 20 41 70 72 20 32 30 30 35 20  ce.n.6 Apr 2005 
1000: 32 30 3a 35 35 3a 32 33 20 2d 30 30 30 30 09 31  20:55:23 -0000.1
1010: 2e 31 31 0a 2b 2b 2b 20 64 6f 63 2f 6c 72 65 70  .11.+++ doc/lrep
1020: 6c 61 63 65 2e 6e 09 32 39 20 41 70 72 20 32 30  lace.n.29 Apr 20
1030: 30 35 20 32 30 3a 33 30 3a 33 38 20 2d 30 30 30  05 20:30:38 -000
1040: 30 0a 40 40 20 2d 32 32 2c 31 31 20 2b 32 32 2c  0.@@ -22,11 +22,
1050: 31 37 20 40 40 0a 20 2e 50 50 0a 20 5c 66 42 6c  17 @@. .PP. \fBl
1060: 72 65 70 6c 61 63 65 5c 66 52 20 72 65 74 75 72  replace\fR retur
1070: 6e 73 20 61 20 6e 65 77 20 6c 69 73 74 20 66 6f  ns a new list fo
1080: 72 6d 65 64 20 62 79 20 72 65 70 6c 61 63 69 6e  rmed by replacin
1090: 67 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 65 6c  g one or more el
10a0: 65 6d 65 6e 74 73 20 6f 66 0a 20 5c 66 49 6c 69  ements of. \fIli
10b0: 73 74 5c 66 52 20 77 69 74 68 20 74 68 65 20 5c  st\fR with the \
10c0: 66 49 65 6c 65 6d 65 6e 74 5c 66 52 20 61 72 67  fIelement\fR arg
10d0: 75 6d 65 6e 74 73 2e 0a 2d 5c 66 49 66 69 72 73  uments..-\fIfirs
10e0: 74 5c 66 52 20 61 6e 64 20 5c 66 49 6c 61 73 74  t\fR and \fIlast
10f0: 5c 66 52 20 73 70 65 63 69 66 79 20 74 68 65 20  \fR specify the 
1100: 66 69 72 73 74 20 61 6e 64 20 6c 61 73 74 20 69  first and last i
1110: 6e 64 65 78 20 6f 66 20 74 68 65 0a 2d 72 61 6e  ndex of the.-ran
1120: 67 65 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 74  ge of elements t
1130: 6f 20 72 65 70 6c 61 63 65 2e 20 20 30 20 72 65  o replace.  0 re
1140: 66 65 72 73 20 74 6f 20 74 68 65 20 66 69 72 73  fers to the firs
1150: 74 20 65 6c 65 6d 65 6e 74 20 6f 66 20 74 68 65  t element of the
1160: 0a 2d 6c 69 73 74 2c 20 61 6e 64 20 5c 66 42 65  .-list, and \fBe
1170: 6e 64 5c 66 52 20 28 6f 72 20 61 6e 79 20 61 62  nd\fR (or any ab
1180: 62 72 65 76 69 61 74 69 6f 6e 20 6f 66 20 69 74  breviation of it
1190: 29 20 6d 61 79 20 62 65 20 75 73 65 64 20 74 6f  ) may be used to
11a0: 20 72 65 66 65 72 0a 2d 74 6f 20 74 68 65 20 6c   refer.-to the l
11b0: 61 73 74 20 65 6c 65 6d 65 6e 74 20 6f 66 20 74  ast element of t
11c0: 68 65 20 6c 69 73 74 2e 20 20 49 66 20 5c 66 49  he list.  If \fI
11d0: 6c 69 73 74 5c 66 52 20 69 73 20 65 6d 70 74 79  list\fR is empty
11e0: 2c 20 74 68 65 6e 0a 2d 5c 66 49 66 69 72 73 74  , then.-\fIfirst
11f0: 5c 66 52 20 61 6e 64 20 5c 66 49 6c 61 73 74 5c  \fR and \fIlast\
1200: 66 52 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 0a  fR are ignored..
1210: 2b 2e 56 53 20 38 2e 35 0a 2b 5c 66 49 66 69 72  +.VS 8.5.+\fIfir
1220: 73 74 5c 66 52 20 61 6e 64 20 5c 66 49 6c 61 73  st\fR and \fIlas
1230: 74 5c 66 52 20 61 72 65 20 69 6e 64 65 78 20 76  t\fR are index v
1240: 61 6c 75 65 73 20 73 70 65 63 69 66 79 69 6e 67  alues specifying
1250: 20 74 68 65 20 66 69 72 73 74 20 61 6e 64 0a 2b   the first and.+
1260: 6c 61 73 74 20 65 6c 65 6d 65 6e 74 73 20 6f 66  last elements of
1270: 20 74 68 65 20 72 61 6e 67 65 20 74 6f 20 72 65   the range to re
1280: 70 6c 61 63 65 2e 20 20 0a 2b 54 68 65 20 69 6e  place.  .+The in
1290: 64 65 78 20 76 61 6c 75 65 73 20 5c 66 49 66 69  dex values \fIfi
12a0: 72 73 74 5c 66 52 20 61 6e 64 20 5c 66 49 6c 61  rst\fR and \fIla
12b0: 73 74 5c 66 52 20 61 72 65 20 69 6e 74 65 72 70  st\fR are interp
12c0: 72 65 74 65 64 0a 2b 74 68 65 20 73 61 6d 65 20  reted.+the same 
12d0: 61 73 20 69 6e 64 65 78 20 76 61 6c 75 65 73 20  as index values 
12e0: 66 6f 72 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20  for the command 
12f0: 5c 66 42 73 74 72 69 6e 67 20 69 6e 64 65 78 5c  \fBstring index\
1300: 66 52 2c 0a 2b 73 75 70 70 6f 72 74 69 6e 67 20  fR,.+supporting 
1310: 73 69 6d 70 6c 65 20 69 6e 64 65 78 20 61 72 69  simple index ari
1320: 74 68 6d 65 74 69 63 20 61 6e 64 20 69 6e 64 69  thmetic and indi
1330: 63 65 73 20 72 65 6c 61 74 69 76 65 20 74 6f 20  ces relative to 
1340: 74 68 65 0a 2b 65 6e 64 20 6f 66 20 74 68 65 20  the.+end of the 
1350: 6c 69 73 74 2e 0a 2b 30 20 72 65 66 65 72 73 20  list..+0 refers 
1360: 74 6f 20 74 68 65 20 66 69 72 73 74 20 65 6c 65  to the first ele
1370: 6d 65 6e 74 20 6f 66 20 74 68 65 0a 2b 6c 69 73  ment of the.+lis
1380: 74 2c 20 61 6e 64 20 5c 66 42 65 6e 64 5c 66 52  t, and \fBend\fR
1390: 20 72 65 66 65 72 73 20 74 6f 20 74 68 65 20 6c   refers to the l
13a0: 61 73 74 20 65 6c 65 6d 65 6e 74 20 6f 66 20 74  ast element of t
13b0: 68 65 20 6c 69 73 74 2e 0a 2b 49 66 20 5c 66 49  he list..+If \fI
13c0: 6c 69 73 74 5c 66 52 20 69 73 20 65 6d 70 74 79  list\fR is empty
13d0: 2c 20 74 68 65 6e 20 5c 66 49 66 69 72 73 74 5c  , then \fIfirst\
13e0: 66 52 20 61 6e 64 20 5c 66 49 6c 61 73 74 5c 66  fR and \fIlast\f
13f0: 52 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 0a 2b  R are ignored..+
1400: 2e 56 45 0a 20 0a 20 49 66 20 5c 66 49 66 69 72  .VE. . If \fIfir
1410: 73 74 5c 66 52 20 69 73 20 6c 65 73 73 20 74 68  st\fR is less th
1420: 61 6e 20 7a 65 72 6f 2c 20 69 74 20 69 73 20 63  an zero, it is c
1430: 6f 6e 73 69 64 65 72 65 64 20 74 6f 20 72 65 66  onsidered to ref
1440: 65 72 20 74 6f 20 74 68 65 0a 20 66 69 72 73 74  er to the. first
1450: 20 65 6c 65 6d 65 6e 74 20 6f 66 20 74 68 65 20   element of the 
1460: 6c 69 73 74 2e 20 20 46 6f 72 20 6e 6f 6e 2d 65  list.  For non-e
1470: 6d 70 74 79 20 6c 69 73 74 73 2c 20 74 68 65 20  mpty lists, the 
1480: 65 6c 65 6d 65 6e 74 20 69 6e 64 69 63 61 74 65  element indicate
1490: 64 0a 40 40 20 2d 36 36 2c 37 20 2b 37 32 2c 31  d.@@ -66,7 +72,1
14a0: 31 20 40 40 0a 20 0a 20 2e 53 48 20 22 53 45 45  1 @@. . .SH "SEE
14b0: 20 41 4c 53 4f 22 0a 20 6c 69 73 74 28 6e 29 2c   ALSO". list(n),
14c0: 20 6c 61 70 70 65 6e 64 28 6e 29 2c 20 6c 69 6e   lappend(n), lin
14d0: 64 65 78 28 6e 29 2c 20 6c 69 6e 73 65 72 74 28  dex(n), linsert(
14e0: 6e 29 2c 20 6c 6c 65 6e 67 74 68 28 6e 29 2c 20  n), llength(n), 
14f0: 6c 73 65 61 72 63 68 28 6e 29 2c 20 0a 2d 6c 73  lsearch(n), .-ls
1500: 65 74 28 6e 29 2c 20 6c 72 61 6e 67 65 28 6e 29  et(n), lrange(n)
1510: 2c 20 6c 73 6f 72 74 28 6e 29 0a 2b 6c 73 65 74  , lsort(n).+lset
1520: 28 6e 29 2c 20 6c 72 61 6e 67 65 28 6e 29 2c 20  (n), lrange(n), 
1530: 6c 73 6f 72 74 28 6e 29 2c 0a 2b 2e 56 53 20 38  lsort(n),.+.VS 8
1540: 2e 35 0a 2b 73 74 72 69 6e 67 28 6e 29 0a 2b 2e  .5.+string(n).+.
1550: 56 45 0a 2b 0a 20 0a 20 2e 53 48 20 4b 45 59 57  VE.+. . .SH KEYW
1560: 4f 52 44 53 0a 20 65 6c 65 6d 65 6e 74 2c 20 6c  ORDS. element, l
1570: 69 73 74 2c 20 72 65 70 6c 61 63 65 0a 49 6e 64  ist, replace.Ind
1580: 65 78 3a 20 64 6f 63 2f 6c 73 65 61 72 63 68 2e  ex: doc/lsearch.
1590: 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  n.==============
15a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
15b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
15c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
15d0: 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20  =====.RCS file: 
15e0: 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c  /cvsroot/tcl/tcl
15f0: 2f 64 6f 63 2f 6c 73 65 61 72 63 68 2e 6e 2c 76  /doc/lsearch.n,v
1600: 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69  .retrieving revi
1610: 73 69 6f 6e 20 31 2e 32 32 0a 64 69 66 66 20 2d  sion 1.22.diff -
1620: 75 20 2d 72 31 2e 32 32 20 6c 73 65 61 72 63 68  u -r1.22 lsearch
1630: 2e 6e 0a 2d 2d 2d 20 64 6f 63 2f 6c 73 65 61 72  .n.--- doc/lsear
1640: 63 68 2e 6e 09 35 20 4a 61 6e 20 32 30 30 35 20  ch.n.5 Jan 2005 
1650: 31 36 3a 33 38 3a 35 34 20 2d 30 30 30 30 09 31  16:38:54 -0000.1
1660: 2e 32 32 0a 2b 2b 2b 20 64 6f 63 2f 6c 73 65 61  .22.+++ doc/lsea
1670: 72 63 68 2e 6e 09 32 39 20 41 70 72 20 32 30 30  rch.n.29 Apr 200
1680: 35 20 32 30 3a 33 30 3a 33 38 20 2d 30 30 30 30  5 20:30:38 -0000
1690: 0a 40 40 20 2d 37 30 2c 31 30 20 2b 37 30 2c 31  .@@ -70,10 +70,1
16a0: 32 20 40 40 0a 20 6e 6f 6e 2d 6d 61 74 63 68 69  2 @@. non-matchi
16b0: 6e 67 20 76 61 6c 75 65 20 69 6e 20 74 68 65 20  ng value in the 
16c0: 6c 69 73 74 2e 0a 20 2e 54 50 0a 20 5c 66 42 5c  list.. .TP. \fB\
16d0: 2d 73 74 61 72 74 5c 66 52 5c 30 5c 66 49 69 6e  -start\fR\0\fIin
16e0: 64 65 78 5c 66 52 0a 2d 54 68 65 20 6c 69 73 74  dex\fR.-The list
16f0: 20 69 73 20 73 65 61 72 63 68 65 64 20 73 74 61   is searched sta
1700: 72 74 69 6e 67 20 61 74 20 70 6f 73 69 74 69 6f  rting at positio
1710: 6e 20 5c 66 49 69 6e 64 65 78 5c 66 52 2e 20 20  n \fIindex\fR.  
1720: 49 66 20 5c 66 49 69 6e 64 65 78 5c 66 52 0a 2d  If \fIindex\fR.-
1730: 68 61 73 20 74 68 65 20 76 61 6c 75 65 20 5c 66  has the value \f
1740: 42 65 6e 64 5c 66 52 2c 20 69 74 20 72 65 66 65  Bend\fR, it refe
1750: 72 73 20 74 6f 20 74 68 65 20 6c 61 73 74 20 65  rs to the last e
1760: 6c 65 6d 65 6e 74 20 69 6e 20 74 68 65 20 6c 69  lement in the li
1770: 73 74 2c 0a 2d 61 6e 64 20 5c 66 42 65 6e 64 5c  st,.-and \fBend\
1780: 2d 5c 66 49 69 6e 74 65 67 65 72 5c 66 52 20 72  -\fIinteger\fR r
1790: 65 66 65 72 73 20 74 6f 20 74 68 65 20 6c 61 73  efers to the las
17a0: 74 20 65 6c 65 6d 65 6e 74 20 69 6e 20 74 68 65  t element in the
17b0: 20 6c 69 73 74 20 6d 69 6e 75 73 0a 2d 74 68 65   list minus.-the
17c0: 20 73 70 65 63 69 66 69 65 64 20 69 6e 74 65 67   specified integ
17d0: 65 72 20 6f 66 66 73 65 74 2e 0a 2b 54 68 65 20  er offset..+The 
17e0: 6c 69 73 74 20 69 73 20 73 65 61 72 63 68 65 64  list is searched
17f0: 20 73 74 61 72 74 69 6e 67 20 61 74 20 70 6f 73   starting at pos
1800: 69 74 69 6f 6e 20 5c 66 49 69 6e 64 65 78 5c 66  ition \fIindex\f
1810: 52 2e 20 20 0a 2b 2e 56 53 20 38 2e 35 0a 2b 54  R.  .+.VS 8.5.+T
1820: 68 65 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f  he interpretatio
1830: 6e 20 6f 66 20 74 68 65 20 5c 66 49 69 6e 64 65  n of the \fIinde
1840: 78 5c 66 52 20 76 61 6c 75 65 20 69 73 20 74 68  x\fR value is th
1850: 65 20 73 61 6d 65 20 61 73 0a 2b 66 6f 72 20 74  e same as.+for t
1860: 68 65 20 63 6f 6d 6d 61 6e 64 20 5c 66 42 73 74  he command \fBst
1870: 72 69 6e 67 20 69 6e 64 65 78 5c 66 52 2c 20 73  ring index\fR, s
1880: 75 70 70 6f 72 74 69 6e 67 20 73 69 6d 70 6c 65  upporting simple
1890: 20 69 6e 64 65 78 0a 2b 61 72 69 74 68 6d 65 74   index.+arithmet
18a0: 69 63 20 61 6e 64 20 69 6e 64 69 63 65 73 20 72  ic and indices r
18b0: 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20 65  elative to the e
18c0: 6e 64 20 6f 66 20 74 68 65 20 6c 69 73 74 2e 0a  nd of the list..
18d0: 2b 2e 56 45 20 38 2e 35 0a 20 2e 53 53 20 22 43  +.VE 8.5. .SS "C
18e0: 4f 4e 54 45 4e 54 53 20 44 45 53 43 52 49 50 54  ONTENTS DESCRIPT
18f0: 49 4f 4e 20 4f 50 54 49 4f 4e 53 22 0a 20 54 68  ION OPTIONS". Th
1900: 65 73 65 20 6f 70 74 69 6f 6e 73 20 64 65 73 63  ese options desc
1910: 72 69 62 65 20 68 6f 77 20 74 6f 20 69 6e 74 65  ribe how to inte
1920: 72 70 72 65 74 20 74 68 65 20 69 74 65 6d 73 20  rpret the items 
1930: 69 6e 20 74 68 65 20 6c 69 73 74 20 62 65 69 6e  in the list bein
1940: 67 0a 20 73 65 61 72 63 68 65 64 2e 20 20 54 68  g. searched.  Th
1950: 65 79 20 61 72 65 20 6f 6e 6c 79 20 6d 65 61 6e  ey are only mean
1960: 69 6e 67 66 75 6c 20 77 68 65 6e 20 75 73 65 64  ingful when used
1970: 20 77 69 74 68 20 74 68 65 20 5c 66 42 5c 2d 65   with the \fB\-e
1980: 78 61 63 74 5c 66 52 0a 40 40 20 2d 31 36 36 2c  xact\fR.@@ -166,
1990: 37 20 2b 31 36 38 2c 31 31 20 40 40 0a 20 0a 20  7 +168,11 @@. . 
19a0: 2e 53 48 20 22 53 45 45 20 41 4c 53 4f 22 0a 20  .SH "SEE ALSO". 
19b0: 66 6f 72 65 61 63 68 28 6e 29 2c 20 6c 69 73 74  foreach(n), list
19c0: 28 6e 29 2c 20 6c 61 70 70 65 6e 64 28 6e 29 2c  (n), lappend(n),
19d0: 20 6c 69 6e 64 65 78 28 6e 29 2c 20 6c 69 6e 73   lindex(n), lins
19e0: 65 72 74 28 6e 29 2c 20 6c 6c 65 6e 67 74 68 28  ert(n), llength(
19f0: 6e 29 2c 20 0a 2d 6c 73 65 74 28 6e 29 2c 20 6c  n), .-lset(n), l
1a00: 73 6f 72 74 28 6e 29 2c 20 6c 72 61 6e 67 65 28  sort(n), lrange(
1a10: 6e 29 2c 20 6c 72 65 70 6c 61 63 65 28 6e 29 0a  n), lreplace(n).
1a20: 2b 6c 73 65 74 28 6e 29 2c 20 6c 73 6f 72 74 28  +lset(n), lsort(
1a30: 6e 29 2c 20 6c 72 61 6e 67 65 28 6e 29 2c 20 6c  n), lrange(n), l
1a40: 72 65 70 6c 61 63 65 28 6e 29 2c 0a 2b 2e 56 53  replace(n),.+.VS
1a50: 20 38 2e 35 0a 2b 73 74 72 69 6e 67 28 6e 29 0a   8.5.+string(n).
1a60: 2b 2e 56 45 0a 2b 0a 20 0a 20 2e 53 48 20 4b 45  +.VE.+. . .SH KE
1a70: 59 57 4f 52 44 53 0a 20 6c 69 73 74 2c 20 6d 61  YWORDS. list, ma
1a80: 74 63 68 2c 20 70 61 74 74 65 72 6e 2c 20 72 65  tch, pattern, re
1a90: 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e  gular expression
1aa0: 2c 20 73 65 61 72 63 68 2c 20 73 74 72 69 6e 67  , search, string
1ab0: 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 6c 73 65 74  .Index: doc/lset
1ac0: 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  .n.=============
1ad0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1ae0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1af0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1b00: 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a  ======.RCS file:
1b10: 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63   /cvsroot/tcl/tc
1b20: 6c 2f 64 6f 63 2f 6c 73 65 74 2e 6e 2c 76 0a 72  l/doc/lset.n,v.r
1b30: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69  etrieving revisi
1b40: 6f 6e 20 31 2e 37 0a 64 69 66 66 20 2d 75 20 2d  on 1.7.diff -u -
1b50: 72 31 2e 37 20 6c 73 65 74 2e 6e 0a 2d 2d 2d 20  r1.7 lset.n.--- 
1b60: 64 6f 63 2f 6c 73 65 74 2e 6e 09 31 20 44 65 63  doc/lset.n.1 Dec
1b70: 20 32 30 30 33 20 32 31 3a 32 37 3a 31 34 20 2d   2003 21:27:14 -
1b80: 30 30 30 30 09 31 2e 37 0a 2b 2b 2b 20 64 6f 63  0000.1.7.+++ doc
1b90: 2f 6c 73 65 74 2e 6e 09 32 39 20 41 70 72 20 32  /lset.n.29 Apr 2
1ba0: 30 30 35 20 32 30 3a 33 30 3a 33 38 20 2d 30 30  005 20:30:38 -00
1bb0: 30 30 0a 40 40 20 2d 35 32 2c 39 20 2b 35 32 2c  00.@@ -52,9 +52,
1bc0: 31 31 20 40 40 0a 20 49 66 20 5c 66 49 69 6e 64  11 @@. If \fIind
1bd0: 65 78 5c 66 52 20 69 73 20 6e 65 67 61 74 69 76  ex\fR is negativ
1be0: 65 20 6f 72 20 67 72 65 61 74 65 72 20 74 68 61  e or greater tha
1bf0: 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f 20 74 68  n or equal to th
1c00: 65 20 6e 75 6d 62 65 72 0a 20 6f 66 20 65 6c 65  e number. of ele
1c10: 6d 65 6e 74 73 20 69 6e 20 5c 66 49 24 76 61 72  ments in \fI$var
1c20: 4e 61 6d 65 5c 66 52 2c 20 74 68 65 6e 20 61 6e  Name\fR, then an
1c30: 20 65 72 72 6f 72 20 6f 63 63 75 72 73 2e 0a 20   error occurs.. 
1c40: 2e 50 50 0a 2d 49 66 20 5c 66 49 69 6e 64 65 78  .PP.-If \fIindex
1c50: 5c 66 52 20 68 61 73 20 74 68 65 20 76 61 6c 75  \fR has the valu
1c60: 65 20 5c 66 42 65 6e 64 5c 66 52 2c 20 69 74 20  e \fBend\fR, it 
1c70: 72 65 66 65 72 73 20 74 6f 20 74 68 65 20 6c 61  refers to the la
1c80: 73 74 20 65 6c 65 6d 65 6e 74 0a 2d 69 6e 20 74  st element.-in t
1c90: 68 65 20 6c 69 73 74 2c 20 61 6e 64 20 5c 66 42  he list, and \fB
1ca0: 65 6e 64 5c 2d 5c 66 49 69 6e 74 65 67 65 72 5c  end\-\fIinteger\
1cb0: 66 52 20 72 65 66 65 72 73 20 74 6f 20 74 68 65  fR refers to the
1cc0: 20 6c 61 73 74 20 65 6c 65 6d 65 6e 74 20 69 6e   last element in
1cd0: 0a 2d 74 68 65 20 6c 69 73 74 20 6d 69 6e 75 73  .-the list minus
1ce0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 69   the specified i
1cf0: 6e 74 65 67 65 72 20 6f 66 66 73 65 74 2e 0a 2b  nteger offset..+
1d00: 2e 56 53 20 38 2e 35 0a 2b 54 68 65 20 69 6e 74  .VS 8.5.+The int
1d10: 65 72 70 72 65 74 61 74 69 6f 6e 20 6f 66 20 65  erpretation of e
1d20: 61 63 68 20 73 69 6d 70 6c 65 20 5c 66 49 69 6e  ach simple \fIin
1d30: 64 65 78 5c 66 52 20 76 61 6c 75 65 20 69 73 20  dex\fR value is 
1d40: 74 68 65 20 73 61 6d 65 20 61 73 0a 2b 66 6f 72  the same as.+for
1d50: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 5c 66 42   the command \fB
1d60: 73 74 72 69 6e 67 20 69 6e 64 65 78 5c 66 52 2c  string index\fR,
1d70: 20 73 75 70 70 6f 72 74 69 6e 67 20 73 69 6d 70   supporting simp
1d80: 6c 65 20 69 6e 64 65 78 0a 2b 61 72 69 74 68 6d  le index.+arithm
1d90: 65 74 69 63 20 61 6e 64 20 69 6e 64 69 63 65 73  etic and indices
1da0: 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65   relative to the
1db0: 20 65 6e 64 20 6f 66 20 74 68 65 20 6c 69 73 74   end of the list
1dc0: 2e 0a 2b 2e 56 45 20 38 2e 35 0a 20 2e 50 50 0a  ..+.VE 8.5. .PP.
1dd0: 20 49 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 5c   If additional \
1de0: 66 49 69 6e 64 65 78 5c 66 52 20 61 72 67 75 6d  fIindex\fR argum
1df0: 65 6e 74 73 20 61 72 65 20 73 75 70 70 6c 69 65  ents are supplie
1e00: 64 2c 20 74 68 65 6e 20 65 61 63 68 20 61 72 67  d, then each arg
1e10: 75 6d 65 6e 74 20 69 73 0a 20 75 73 65 64 20 69  ument is. used i
1e20: 6e 20 74 75 72 6e 20 74 6f 20 61 64 64 72 65 73  n turn to addres
1e30: 73 20 61 6e 20 65 6c 65 6d 65 6e 74 20 77 69 74  s an element wit
1e40: 68 69 6e 20 61 20 73 75 62 6c 69 73 74 20 64 65  hin a sublist de
1e50: 73 69 67 6e 61 74 65 64 0a 40 40 20 2d 31 30 37  signated.@@ -107
1e60: 2c 37 20 2b 31 30 39 2c 31 31 20 40 40 0a 20 2e  ,7 +109,11 @@. .
1e70: 43 45 0a 20 2e 53 48 20 22 53 45 45 20 41 4c 53  CE. .SH "SEE ALS
1e80: 4f 22 0a 20 6c 69 73 74 28 6e 29 2c 20 6c 61 70  O". list(n), lap
1e90: 70 65 6e 64 28 6e 29 2c 20 6c 69 6e 64 65 78 28  pend(n), lindex(
1ea0: 6e 29 2c 20 6c 69 6e 73 65 72 74 28 6e 29 2c 20  n), linsert(n), 
1eb0: 6c 6c 65 6e 67 74 68 28 6e 29 2c 20 6c 73 65 61  llength(n), lsea
1ec0: 72 63 68 28 6e 29 2c 20 0a 2d 6c 73 6f 72 74 28  rch(n), .-lsort(
1ed0: 6e 29 2c 20 6c 72 61 6e 67 65 28 6e 29 2c 20 6c  n), lrange(n), l
1ee0: 72 65 70 6c 61 63 65 28 6e 29 0a 2b 6c 73 6f 72  replace(n).+lsor
1ef0: 74 28 6e 29 2c 20 6c 72 61 6e 67 65 28 6e 29 2c  t(n), lrange(n),
1f00: 20 6c 72 65 70 6c 61 63 65 28 6e 29 2c 0a 2b 2e   lreplace(n),.+.
1f10: 56 53 20 38 2e 35 0a 2b 73 74 72 69 6e 67 28 6e  VS 8.5.+string(n
1f20: 29 0a 2b 2e 56 45 0a 2b 0a 20 0a 20 2e 53 48 20  ).+.VE.+. . .SH 
1f30: 4b 45 59 57 4f 52 44 53 0a 20 65 6c 65 6d 65 6e  KEYWORDS. elemen
1f40: 74 2c 20 69 6e 64 65 78 2c 20 6c 69 73 74 2c 20  t, index, list, 
1f50: 72 65 70 6c 61 63 65 2c 20 73 65 74 0a 49 6e 64  replace, set.Ind
1f60: 65 78 3a 20 64 6f 63 2f 6c 73 6f 72 74 2e 6e 0a  ex: doc/lsort.n.
1f70: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1f80: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1f90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1fa0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1fb0: 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63  ===.RCS file: /c
1fc0: 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 64  vsroot/tcl/tcl/d
1fd0: 6f 63 2f 6c 73 6f 72 74 2e 6e 2c 76 0a 72 65 74  oc/lsort.n,v.ret
1fe0: 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e  rieving revision
1ff0: 20 31 2e 31 38 0a 64 69 66 66 20 2d 75 20 2d 72   1.18.diff -u -r
2000: 31 2e 31 38 20 6c 73 6f 72 74 2e 6e 0a 2d 2d 2d  1.18 lsort.n.---
2010: 20 64 6f 63 2f 6c 73 6f 72 74 2e 6e 09 32 37 20   doc/lsort.n.27 
2020: 4f 63 74 20 32 30 30 34 20 31 32 3a 35 33 3a 32  Oct 2004 12:53:2
2030: 32 20 2d 30 30 30 30 09 31 2e 31 38 0a 2b 2b 2b  2 -0000.1.18.+++
2040: 20 64 6f 63 2f 6c 73 6f 72 74 2e 6e 09 32 39 20   doc/lsort.n.29 
2050: 41 70 72 20 32 30 30 35 20 32 30 3a 33 30 3a 33  Apr 2005 20:30:3
2060: 38 20 2d 30 30 30 30 0a 40 40 20 2d 37 38 2c 31  8 -0000.@@ -78,1
2070: 30 20 2b 37 38 2c 37 20 40 40 0a 20 65 61 63 68  0 +78,7 @@. each
2080: 20 73 75 62 6c 69 73 74 0a 20 2e 56 53 20 38 2e   sublist. .VS 8.
2090: 35 0a 20 28 61 73 20 69 66 20 74 68 65 20 6f 76  5. (as if the ov
20a0: 65 72 61 6c 6c 20 65 6c 65 6d 65 6e 74 20 61 6e  erall element an
20b0: 64 20 74 68 65 20 5c 66 49 69 6e 64 65 78 4c 69  d the \fIindexLi
20c0: 73 74 5c 66 52 20 77 65 72 65 20 70 61 73 73 65  st\fR were passe
20d0: 64 20 74 6f 0a 2d 5c 66 42 6c 69 6e 64 65 78 5c  d to.-\fBlindex\
20e0: 66 52 29 20 61 6e 64 20 73 6f 72 74 20 62 61 73  fR) and sort bas
20f0: 65 64 20 6f 6e 20 74 68 65 20 67 69 76 65 6e 20  ed on the given 
2100: 65 6c 65 6d 65 6e 74 2e 20 20 54 68 65 20 6b 65  element.  The ke
2110: 79 77 6f 72 64 0a 2d 5c 66 42 65 6e 64 5c 66 50  yword.-\fBend\fP
2120: 20 69 73 20 61 6c 6c 6f 77 65 64 20 66 6f 72 20   is allowed for 
2130: 65 61 63 68 20 65 6c 65 6d 65 6e 74 20 6f 66 20  each element of 
2140: 74 68 65 20 5c 66 49 69 6e 64 65 78 4c 69 73 74  the \fIindexList
2150: 5c 66 52 20 74 6f 20 73 6f 72 74 0a 2d 6f 6e 20  \fR to sort.-on 
2160: 74 68 65 20 6c 61 73 74 20 73 75 62 6c 69 73 74  the last sublist
2170: 20 65 6c 65 6d 65 6e 74 2c 20 61 6e 64 20 5c 66   element, and \f
2180: 42 65 6e 64 2d 5c 66 49 69 6e 64 65 78 5c 66 52  Bend-\fIindex\fR
2190: 20 73 6f 72 74 73 20 6f 6e 20 61 20 73 75 62 6c   sorts on a subl
21a0: 69 73 74 0a 2d 65 6c 65 6d 65 6e 74 20 6f 66 66  ist.-element off
21b0: 73 65 74 20 66 72 6f 6d 20 74 68 65 20 65 6e 64  set from the end
21c0: 2e 0a 2b 5c 66 42 6c 69 6e 64 65 78 5c 66 52 29  ..+\fBlindex\fR)
21d0: 20 61 6e 64 20 73 6f 72 74 20 62 61 73 65 64 20   and sort based 
21e0: 6f 6e 20 74 68 65 20 67 69 76 65 6e 20 65 6c 65  on the given ele
21f0: 6d 65 6e 74 2e 20 20 0a 20 2e 56 45 20 38 2e 35  ment.  . .VE 8.5
2200: 0a 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 20  . For example,. 
2210: 2e 52 53 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 72  .RS.Index: doc/r
2220: 65 67 65 78 70 2e 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d  egexp.n.========
2230: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2240: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2250: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2260: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20  ===========.RCS 
2270: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74  file: /cvsroot/t
2280: 63 6c 2f 74 63 6c 2f 64 6f 63 2f 72 65 67 65 78  cl/tcl/doc/regex
2290: 70 2e 6e 2c 76 0a 72 65 74 72 69 65 76 69 6e 67  p.n,v.retrieving
22a0: 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 37 0a 64   revision 1.17.d
22b0: 69 66 66 20 2d 75 20 2d 72 31 2e 31 37 20 72 65  iff -u -r1.17 re
22c0: 67 65 78 70 2e 6e 0a 2d 2d 2d 20 64 6f 63 2f 72  gexp.n.--- doc/r
22d0: 65 67 65 78 70 2e 6e 09 36 20 41 70 72 20 32 30  egexp.n.6 Apr 20
22e0: 30 35 20 32 30 3a 35 35 3a 32 33 20 2d 30 30 30  05 20:55:23 -000
22f0: 30 09 31 2e 31 37 0a 2b 2b 2b 20 64 6f 63 2f 72  0.1.17.+++ doc/r
2300: 65 67 65 78 70 2e 6e 09 32 39 20 41 70 72 20 32  egexp.n.29 Apr 2
2310: 30 30 35 20 32 30 3a 33 30 3a 33 38 20 2d 30 30  005 20:30:38 -00
2320: 30 30 0a 40 40 20 2d 31 30 37 2c 37 20 2b 31 30  00.@@ -107,7 +10
2330: 37 2c 31 32 20 40 40 0a 20 2e 54 50 20 31 35 0a  7,12 @@. .TP 15.
2340: 20 5c 66 42 5c 2d 73 74 61 72 74 5c 66 52 20 5c   \fB\-start\fR \
2350: 66 49 69 6e 64 65 78 5c 66 52 0a 20 53 70 65 63  fIindex\fR. Spec
2360: 69 66 69 65 73 20 61 20 63 68 61 72 61 63 74 65  ifies a characte
2370: 72 20 69 6e 64 65 78 20 6f 66 66 73 65 74 20 69  r index offset i
2380: 6e 74 6f 20 74 68 65 20 73 74 72 69 6e 67 20 74  nto the string t
2390: 6f 20 73 74 61 72 74 0a 2d 6d 61 74 63 68 69 6e  o start.-matchin
23a0: 67 20 74 68 65 20 72 65 67 75 6c 61 72 20 65 78  g the regular ex
23b0: 70 72 65 73 73 69 6f 6e 20 61 74 2e 20 20 57 68  pression at.  Wh
23c0: 65 6e 20 75 73 69 6e 67 20 74 68 69 73 20 73 77  en using this sw
23d0: 69 74 63 68 2c 20 60 5e 27 0a 2b 6d 61 74 63 68  itch, `^'.+match
23e0: 69 6e 67 20 74 68 65 20 72 65 67 75 6c 61 72 20  ing the regular 
23f0: 65 78 70 72 65 73 73 69 6f 6e 20 61 74 2e 20 20  expression at.  
2400: 0a 2b 2e 56 53 20 38 2e 35 0a 2b 54 68 65 20 5c  .+.VS 8.5.+The \
2410: 66 49 69 6e 64 65 78 5c 66 52 20 76 61 6c 75 65  fIindex\fR value
2420: 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20   is interpreted 
2430: 69 6e 20 74 68 65 20 73 61 6d 65 20 6d 61 6e 6e  in the same mann
2440: 65 72 0a 2b 61 73 20 74 68 65 20 5c 66 49 69 6e  er.+as the \fIin
2450: 64 65 78 5c 66 52 20 61 72 67 75 6d 65 6e 74 20  dex\fR argument 
2460: 74 6f 20 5c 66 42 73 74 72 69 6e 67 20 69 6e 64  to \fBstring ind
2470: 65 78 5c 66 52 2e 0a 2b 2e 56 45 20 38 2e 35 0a  ex\fR..+.VE 8.5.
2480: 2b 57 68 65 6e 20 75 73 69 6e 67 20 74 68 69 73  +When using this
2490: 20 73 77 69 74 63 68 2c 20 60 5e 27 0a 20 77 69   switch, `^'. wi
24a0: 6c 6c 20 6e 6f 74 20 6d 61 74 63 68 20 74 68 65  ll not match the
24b0: 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68   beginning of th
24c0: 65 20 6c 69 6e 65 2c 20 61 6e 64 20 5c 5c 41 20  e line, and \\A 
24d0: 77 69 6c 6c 20 73 74 69 6c 6c 0a 20 6d 61 74 63  will still. matc
24e0: 68 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 74  h the start of t
24f0: 68 65 20 73 74 72 69 6e 67 20 61 74 20 5c 66 49  he string at \fI
2500: 69 6e 64 65 78 5c 66 52 2e 20 20 49 66 20 5c 66  index\fR.  If \f
2510: 42 5c 2d 69 6e 64 69 63 65 73 5c 66 52 0a 20 69  B\-indices\fR. i
2520: 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65  s specified, the
2530: 20 69 6e 64 69 63 65 73 20 77 69 6c 6c 20 62 65   indices will be
2540: 20 69 6e 64 65 78 65 64 20 73 74 61 72 74 69 6e   indexed startin
2550: 67 20 66 72 6f 6d 20 74 68 65 0a 40 40 20 2d 31  g from the.@@ -1
2560: 35 33 2c 37 20 2b 31 35 38 2c 31 31 20 40 40 0a  53,7 +158,11 @@.
2570: 20 2e 43 45 0a 20 0a 20 2e 53 48 20 22 53 45 45   .CE. . .SH "SEE
2580: 20 41 4c 53 4f 22 0a 2d 72 65 5f 73 79 6e 74 61   ALSO".-re_synta
2590: 78 28 6e 29 2c 20 72 65 67 73 75 62 28 6e 29 0a  x(n), regsub(n).
25a0: 2b 72 65 5f 73 79 6e 74 61 78 28 6e 29 2c 20 72  +re_syntax(n), r
25b0: 65 67 73 75 62 28 6e 29 2c 0a 2b 2e 56 53 20 38  egsub(n),.+.VS 8
25c0: 2e 35 0a 2b 73 74 72 69 6e 67 28 6e 29 0a 2b 2e  .5.+string(n).+.
25d0: 56 45 0a 2b 0a 20 0a 20 2e 53 48 20 4b 45 59 57  VE.+. . .SH KEYW
25e0: 4f 52 44 53 0a 20 6d 61 74 63 68 2c 20 72 65 67  ORDS. match, reg
25f0: 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 2c  ular expression,
2600: 20 73 74 72 69 6e 67 0a 49 6e 64 65 78 3a 20 64   string.Index: d
2610: 6f 63 2f 72 65 67 73 75 62 2e 6e 0a 3d 3d 3d 3d  oc/regsub.n.====
2620: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2630: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2640: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2650: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a  ===============.
2660: 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f  RCS file: /cvsro
2670: 6f 74 2f 74 63 6c 2f 74 63 6c 2f 64 6f 63 2f 72  ot/tcl/tcl/doc/r
2680: 65 67 73 75 62 2e 6e 2c 76 0a 72 65 74 72 69 65  egsub.n,v.retrie
2690: 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e  ving revision 1.
26a0: 31 33 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 31  13.diff -u -r1.1
26b0: 33 20 72 65 67 73 75 62 2e 6e 0a 2d 2d 2d 20 64  3 regsub.n.--- d
26c0: 6f 63 2f 72 65 67 73 75 62 2e 6e 09 36 20 41 70  oc/regsub.n.6 Ap
26d0: 72 20 32 30 30 35 20 32 30 3a 35 35 3a 32 34 20  r 2005 20:55:24 
26e0: 2d 30 30 30 30 09 31 2e 31 33 0a 2b 2b 2b 20 64  -0000.1.13.+++ d
26f0: 6f 63 2f 72 65 67 73 75 62 2e 6e 09 32 39 20 41  oc/regsub.n.29 A
2700: 70 72 20 32 30 30 35 20 32 30 3a 33 30 3a 33 38  pr 2005 20:30:38
2710: 20 2d 30 30 30 30 0a 40 40 20 2d 39 32 2c 37 20   -0000.@@ -92,7 
2720: 2b 39 32 2c 31 32 20 40 40 0a 20 2e 54 50 20 31  +92,12 @@. .TP 1
2730: 30 0a 20 5c 66 42 5c 2d 73 74 61 72 74 5c 66 52  0. \fB\-start\fR
2740: 20 5c 66 49 69 6e 64 65 78 5c 66 52 0a 20 53 70   \fIindex\fR. Sp
2750: 65 63 69 66 69 65 73 20 61 20 63 68 61 72 61 63  ecifies a charac
2760: 74 65 72 20 69 6e 64 65 78 20 6f 66 66 73 65 74  ter index offset
2770: 20 69 6e 74 6f 20 74 68 65 20 73 74 72 69 6e 67   into the string
2780: 20 74 6f 20 73 74 61 72 74 0a 2d 6d 61 74 63 68   to start.-match
2790: 69 6e 67 20 74 68 65 20 72 65 67 75 6c 61 72 20  ing the regular 
27a0: 65 78 70 72 65 73 73 69 6f 6e 20 61 74 2e 20 20  expression at.  
27b0: 57 68 65 6e 20 75 73 69 6e 67 20 74 68 69 73 20  When using this 
27c0: 73 77 69 74 63 68 2c 20 60 5e 27 0a 2b 6d 61 74  switch, `^'.+mat
27d0: 63 68 69 6e 67 20 74 68 65 20 72 65 67 75 6c 61  ching the regula
27e0: 72 20 65 78 70 72 65 73 73 69 6f 6e 20 61 74 2e  r expression at.
27f0: 20 20 0a 2b 2e 56 53 20 38 2e 35 0a 2b 54 68 65    .+.VS 8.5.+The
2800: 20 5c 66 49 69 6e 64 65 78 5c 66 52 20 76 61 6c   \fIindex\fR val
2810: 75 65 20 69 73 20 69 6e 74 65 72 70 72 65 74 65  ue is interprete
2820: 64 20 69 6e 20 74 68 65 20 73 61 6d 65 20 6d 61  d in the same ma
2830: 6e 6e 65 72 0a 2b 61 73 20 74 68 65 20 5c 66 49  nner.+as the \fI
2840: 69 6e 64 65 78 5c 66 52 20 61 72 67 75 6d 65 6e  index\fR argumen
2850: 74 20 74 6f 20 5c 66 42 73 74 72 69 6e 67 20 69  t to \fBstring i
2860: 6e 64 65 78 5c 66 52 2e 0a 2b 2e 56 45 20 38 2e  ndex\fR..+.VE 8.
2870: 35 0a 2b 57 68 65 6e 20 75 73 69 6e 67 20 74 68  5.+When using th
2880: 69 73 20 73 77 69 74 63 68 2c 20 60 5e 27 0a 20  is switch, `^'. 
2890: 77 69 6c 6c 20 6e 6f 74 20 6d 61 74 63 68 20 74  will not match t
28a0: 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20  he beginning of 
28b0: 74 68 65 20 6c 69 6e 65 2c 20 61 6e 64 20 5c 5c  the line, and \\
28c0: 41 20 77 69 6c 6c 20 73 74 69 6c 6c 0a 20 6d 61  A will still. ma
28d0: 74 63 68 20 74 68 65 20 73 74 61 72 74 20 6f 66  tch the start of
28e0: 20 74 68 65 20 73 74 72 69 6e 67 20 61 74 20 5c   the string at \
28f0: 66 49 69 6e 64 65 78 5c 66 52 2e 0a 20 5c 66 49  fIindex\fR.. \fI
2900: 69 6e 64 65 78 5c 66 52 20 77 69 6c 6c 20 62 65  index\fR will be
2910: 20 63 6f 6e 73 74 72 61 69 6e 65 64 20 74 6f 20   constrained to 
2920: 74 68 65 20 62 6f 75 6e 64 73 20 6f 66 20 74 68  the bounds of th
2930: 65 20 69 6e 70 75 74 20 73 74 72 69 6e 67 2e 0a  e input string..
2940: 40 40 20 2d 31 33 34 2c 37 20 2b 31 33 39 2c 31  @@ -134,7 +139,1
2950: 31 20 40 40 0a 20 2e 43 45 0a 20 0a 20 2e 53 48  1 @@. .CE. . .SH
2960: 20 22 53 45 45 20 41 4c 53 4f 22 0a 2d 72 65 67   "SEE ALSO".-reg
2970: 65 78 70 28 6e 29 2c 20 72 65 5f 73 79 6e 74 61  exp(n), re_synta
2980: 78 28 6e 29 2c 20 73 75 62 73 74 28 6e 29 0a 2b  x(n), subst(n).+
2990: 72 65 67 65 78 70 28 6e 29 2c 20 72 65 5f 73 79  regexp(n), re_sy
29a0: 6e 74 61 78 28 6e 29 2c 20 73 75 62 73 74 28 6e  ntax(n), subst(n
29b0: 29 2c 0a 2b 2e 56 53 20 38 2e 35 0a 2b 73 74 72  ),.+.VS 8.5.+str
29c0: 69 6e 67 28 6e 29 0a 2b 2e 56 45 0a 2b 0a 20 0a  ing(n).+.VE.+. .
29d0: 20 2e 53 48 20 4b 45 59 57 4f 52 44 53 0a 20 6d   .SH KEYWORDS. m
29e0: 61 74 63 68 2c 20 70 61 74 74 65 72 6e 2c 20 72  atch, pattern, r
29f0: 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f  egular expressio
2a00: 6e 2c 20 73 75 62 73 74 69 74 75 74 65 0a 49 6e  n, substitute.In
2a10: 64 65 78 3a 20 64 6f 63 2f 73 74 72 69 6e 67 2e  dex: doc/string.
2a20: 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  n.==============
2a30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2a40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2a50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2a60: 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20  =====.RCS file: 
2a70: 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c  /cvsroot/tcl/tcl
2a80: 2f 64 6f 63 2f 73 74 72 69 6e 67 2e 6e 2c 76 0a  /doc/string.n,v.
2a90: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73  retrieving revis
2aa0: 69 6f 6e 20 31 2e 32 36 0a 64 69 66 66 20 2d 75  ion 1.26.diff -u
2ab0: 20 2d 72 31 2e 32 36 20 73 74 72 69 6e 67 2e 6e   -r1.26 string.n
2ac0: 0a 2d 2d 2d 20 64 6f 63 2f 73 74 72 69 6e 67 2e  .--- doc/string.
2ad0: 6e 09 37 20 4d 61 72 20 32 30 30 35 20 32 31 3a  n.7 Mar 2005 21:
2ae0: 33 38 3a 31 30 20 2d 30 30 30 30 09 31 2e 32 36  38:10 -0000.1.26
2af0: 0a 2b 2b 2b 20 64 6f 63 2f 73 74 72 69 6e 67 2e  .+++ doc/string.
2b00: 6e 09 32 39 20 41 70 72 20 32 30 30 35 20 32 30  n.29 Apr 2005 20
2b10: 3a 33 30 3a 33 38 20 2d 30 30 30 30 0a 40 40 20  :30:38 -0000.@@ 
2b20: 2d 37 32 2c 31 38 20 2b 37 32 2c 33 38 20 40 40  -72,18 +72,38 @@
2b30: 0a 20 52 65 74 75 72 6e 73 20 74 68 65 20 5c 66  . Returns the \f
2b40: 49 63 68 61 72 49 6e 64 65 78 5c 66 52 27 74 68  IcharIndex\fR'th
2b50: 20 63 68 61 72 61 63 74 65 72 20 6f 66 20 74 68   character of th
2b60: 65 20 5c 66 49 73 74 72 69 6e 67 5c 66 52 20 61  e \fIstring\fR a
2b70: 72 67 75 6d 65 6e 74 2e 0a 20 41 20 5c 66 49 63  rgument.. A \fIc
2b80: 68 61 72 49 6e 64 65 78 5c 66 52 20 6f 66 20 30  harIndex\fR of 0
2b90: 20 63 6f 72 72 65 73 70 6f 6e 64 73 20 74 6f 20   corresponds to 
2ba0: 74 68 65 20 66 69 72 73 74 20 63 68 61 72 61 63  the first charac
2bb0: 74 65 72 20 6f 66 20 74 68 65 0a 20 73 74 72 69  ter of the. stri
2bc0: 6e 67 2e 20 20 5c 66 49 63 68 61 72 49 6e 64 65  ng.  \fIcharInde
2bd0: 78 5c 66 52 20 6d 61 79 20 62 65 20 73 70 65 63  x\fR may be spec
2be0: 69 66 69 65 64 20 61 73 20 66 6f 6c 6c 6f 77 73  ified as follows
2bf0: 3a 0a 2b 2e 56 53 20 38 2e 35 0a 20 2e 52 53 0a  :.+.VS 8.5. .RS.
2c00: 20 2e 49 50 20 5c 66 49 69 6e 74 65 67 65 72 5c   .IP \fIinteger\
2c10: 66 52 20 31 30 0a 2d 54 68 65 20 63 68 61 72 20  fR 10.-The char 
2c20: 73 70 65 63 69 66 69 65 64 20 61 74 20 74 68 69  specified at thi
2c30: 73 20 69 6e 74 65 67 72 61 6c 20 69 6e 64 65 78  s integral index
2c40: 2e 0a 2b 46 6f 72 20 61 6e 79 20 69 6e 64 65 78  ..+For any index
2c50: 20 76 61 6c 75 65 20 74 68 61 74 20 70 61 73 73   value that pass
2c60: 65 73 20 5c 66 42 73 74 72 69 6e 67 20 69 73 20  es \fBstring is 
2c70: 69 6e 74 65 67 65 72 20 2d 73 74 72 69 63 74 5c  integer -strict\
2c80: 66 52 2c 0a 2b 74 68 65 20 63 68 61 72 20 73 70  fR,.+the char sp
2c90: 65 63 69 66 69 65 64 20 61 74 20 74 68 69 73 20  ecified at this 
2ca0: 69 6e 74 65 67 72 61 6c 20 69 6e 64 65 78 0a 2b  integral index.+
2cb0: 28 65 2e 67 2e 20 5c 66 42 32 5c 66 52 20 77 6f  (e.g. \fB2\fR wo
2cc0: 75 6c 64 20 72 65 66 65 72 20 74 6f 20 74 68 65  uld refer to the
2cd0: 20 22 63 22 20 69 6e 20 22 61 62 63 64 22 29 2e   "c" in "abcd").
2ce0: 0a 20 2e 49 50 20 5c 66 42 65 6e 64 5c 66 52 20  . .IP \fBend\fR 
2cf0: 31 30 0a 2d 54 68 65 20 6c 61 73 74 20 63 68 61  10.-The last cha
2d00: 72 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 2e  r of the string.
2d10: 0a 2d 2e 49 50 20 5c 66 42 65 6e 64 5c 2d 5c 66  .-.IP \fBend\-\f
2d20: 49 69 6e 74 65 67 65 72 5c 66 52 20 31 30 0a 2d  Iinteger\fR 10.-
2d30: 54 68 65 20 6c 61 73 74 20 63 68 61 72 20 6f 66  The last char of
2d40: 20 74 68 65 20 73 74 72 69 6e 67 20 6d 69 6e 75   the string minu
2d50: 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  s the specified 
2d60: 69 6e 74 65 67 65 72 20 6f 66 66 73 65 74 0a 2b  integer offset.+
2d70: 54 68 65 20 6c 61 73 74 20 63 68 61 72 20 6f 66  The last char of
2d80: 20 74 68 65 20 73 74 72 69 6e 67 0a 2b 28 65 2e   the string.+(e.
2d90: 67 2e 20 5c 66 42 65 6e 64 5c 66 52 20 77 6f 75  g. \fBend\fR wou
2da0: 6c 64 20 72 65 66 65 72 20 74 6f 20 74 68 65 20  ld refer to the 
2db0: 22 64 22 20 69 6e 20 22 61 62 63 64 22 29 2e 0a  "d" in "abcd")..
2dc0: 2b 2e 49 50 20 5c 66 42 65 6e 64 5c 2d 5c 66 49  +.IP \fBend\-\fI
2dd0: 4e 5c 66 52 20 31 30 0a 2b 54 68 65 20 6c 61 73  N\fR 10.+The las
2de0: 74 20 63 68 61 72 20 6f 66 20 74 68 65 20 73 74  t char of the st
2df0: 72 69 6e 67 20 6d 69 6e 75 73 20 74 68 65 20 73  ring minus the s
2e00: 70 65 63 69 66 69 65 64 20 69 6e 74 65 67 65 72  pecified integer
2e10: 20 6f 66 66 73 65 74 20 5c 66 49 4e 5c 66 52 0a   offset \fIN\fR.
2e20: 20 28 65 2e 67 2e 20 5c 66 42 65 6e 64 5c 2d 31   (e.g. \fBend\-1
2e30: 5c 66 52 20 77 6f 75 6c 64 20 72 65 66 65 72 20  \fR would refer 
2e40: 74 6f 20 74 68 65 20 22 63 22 20 69 6e 20 22 61  to the "c" in "a
2e50: 62 63 64 22 29 2e 0a 2b 2e 49 50 20 5c 66 42 65  bcd")..+.IP \fBe
2e60: 6e 64 5c 2b 5c 66 49 4e 5c 66 52 20 31 30 0a 2b  nd\+\fIN\fR 10.+
2e70: 54 68 65 20 6c 61 73 74 20 63 68 61 72 20 6f 66  The last char of
2e80: 20 74 68 65 20 73 74 72 69 6e 67 20 70 6c 75 73   the string plus
2e90: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 69   the specified i
2ea0: 6e 74 65 67 65 72 20 6f 66 66 73 65 74 20 5c 66  nteger offset \f
2eb0: 49 4e 5c 66 52 0a 2b 28 65 2e 67 2e 20 5c 66 42  IN\fR.+(e.g. \fB
2ec0: 65 6e 64 5c 2b 5c 2d 31 5c 66 52 20 77 6f 75 6c  end\+\-1\fR woul
2ed0: 64 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 22  d refer to the "
2ee0: 63 22 20 69 6e 20 22 61 62 63 64 22 29 2e 0a 2b  c" in "abcd")..+
2ef0: 2e 49 50 20 5c 66 49 4d 5c 66 52 5c 2b 5c 66 49  .IP \fIM\fR\+\fI
2f00: 4e 5c 66 52 20 31 30 0a 2b 54 68 65 20 63 68 61  N\fR 10.+The cha
2f10: 72 20 73 70 65 63 69 66 69 65 64 20 61 74 20 74  r specified at t
2f20: 68 65 20 69 6e 74 65 67 72 61 6c 20 69 6e 64 65  he integral inde
2f30: 78 20 74 68 61 74 20 69 73 20 74 68 65 20 73 75  x that is the su
2f40: 6d 20 6f 66 20 0a 2b 69 6e 74 65 67 65 72 20 76  m of .+integer v
2f50: 61 6c 75 65 73 20 5c 66 49 4d 5c 66 52 20 61 6e  alues \fIM\fR an
2f60: 64 20 5c 66 49 4e 5c 66 52 0a 2b 28 65 2e 67 2e  d \fIN\fR.+(e.g.
2f70: 20 5c 66 42 31 5c 2b 31 5c 66 52 20 77 6f 75 6c   \fB1\+1\fR woul
2f80: 64 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 22  d refer to the "
2f90: 63 22 20 69 6e 20 22 61 62 63 64 22 29 2e 0a 2b  c" in "abcd")..+
2fa0: 2e 49 50 20 5c 66 49 4d 5c 66 52 5c 2d 5c 66 49  .IP \fIM\fR\-\fI
2fb0: 4e 5c 66 52 20 31 30 0a 2b 54 68 65 20 63 68 61  N\fR 10.+The cha
2fc0: 72 20 73 70 65 63 69 66 69 65 64 20 61 74 20 74  r specified at t
2fd0: 68 65 20 69 6e 74 65 67 72 61 6c 20 69 6e 64 65  he integral inde
2fe0: 78 20 74 68 61 74 20 69 73 20 74 68 65 20 64 69  x that is the di
2ff0: 66 66 65 72 65 6e 63 65 20 6f 66 20 0a 2b 69 6e  fference of .+in
3000: 74 65 67 65 72 20 76 61 6c 75 65 73 20 5c 66 49  teger values \fI
3010: 4d 5c 66 52 20 61 6e 64 20 5c 66 49 4e 5c 66 52  M\fR and \fIN\fR
3020: 0a 2b 28 65 2e 67 2e 20 5c 66 42 32 5c 2d 31 5c  .+(e.g. \fB2\-1\
3030: 66 52 20 77 6f 75 6c 64 20 72 65 66 65 72 20 74  fR would refer t
3040: 6f 20 74 68 65 20 22 62 22 20 69 6e 20 22 61 62  o the "b" in "ab
3050: 63 64 22 29 2e 0a 2b 2e 50 50 0a 2b 49 6e 20 74  cd")..+.PP.+In t
3060: 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  he specification
3070: 73 20 61 62 6f 76 65 2c 20 74 68 65 20 69 6e 74  s above, the int
3080: 65 67 65 72 20 76 61 6c 75 65 20 5c 66 49 4d 5c  eger value \fIM\
3090: 66 52 20 63 6f 6e 74 61 69 6e 73 20 6e 6f 0a 2b  fR contains no.+
30a0: 74 72 61 69 6c 69 6e 67 20 77 68 69 74 65 73 70  trailing whitesp
30b0: 61 63 65 20 61 6e 64 20 74 68 65 20 69 6e 74 65  ace and the inte
30c0: 67 65 72 20 76 61 6c 75 65 20 5c 66 49 4e 5c 66  ger value \fIN\f
30d0: 52 20 63 6f 6e 74 61 69 6e 73 20 6e 6f 0a 2b 6c  R contains no.+l
30e0: 65 61 64 69 6e 67 20 77 68 69 74 65 73 70 61 63  eading whitespac
30f0: 65 2e 0a 20 2e 50 50 0a 20 49 66 20 5c 66 49 63  e.. .PP. If \fIc
3100: 68 61 72 49 6e 64 65 78 5c 66 52 20 69 73 20 6c  harIndex\fR is l
3110: 65 73 73 20 74 68 61 6e 20 30 20 6f 72 20 67 72  ess than 0 or gr
3120: 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65 71  eater than or eq
3130: 75 61 6c 20 74 6f 20 74 68 65 0a 2d 6c 65 6e 67  ual to the.-leng
3140: 74 68 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67  th of the string
3150: 20 74 68 65 6e 20 61 6e 20 65 6d 70 74 79 20 73   then an empty s
3160: 74 72 69 6e 67 20 69 73 20 72 65 74 75 72 6e 65  tring is returne
3170: 64 2e 0a 2b 6c 65 6e 67 74 68 20 6f 66 20 74 68  d..+length of th
3180: 65 20 73 74 72 69 6e 67 20 74 68 65 6e 20 74 68  e string then th
3190: 69 73 20 63 6f 6d 6d 61 6e 64 20 72 65 74 75 72  is command retur
31a0: 6e 73 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69  ns an empty stri
31b0: 6e 67 2e 0a 20 2e 52 45 0a 2b 2e 56 45 0a 20 2e  ng.. .RE.+.VE. .
31c0: 54 50 0a 20 5c 66 42 73 74 72 69 6e 67 20 69 73  TP. \fBstring is
31d0: 20 5c 66 49 63 6c 61 73 73 5c 66 52 20 3f 5c 66   \fIclass\fR ?\f
31e0: 42 5c 2d 73 74 72 69 63 74 5c 66 52 3f 20 3f 5c  B\-strict\fR? ?\
31f0: 66 42 5c 2d 66 61 69 6c 69 6e 64 65 78 20 5c 66  fB\-failindex \f
3200: 49 76 61 72 6e 61 6d 65 5c 66 52 3f 20 5c 66 49  Ivarname\fR? \fI
3210: 73 74 72 69 6e 67 5c 66 52 0a 20 52 65 74 75 72  string\fR. Retur
3220: 6e 73 20 31 20 69 66 20 5c 66 49 73 74 72 69 6e  ns 1 if \fIstrin
3230: 67 5c 66 52 20 69 73 20 61 20 76 61 6c 69 64 20  g\fR is a valid 
3240: 6d 65 6d 62 65 72 20 6f 66 20 74 68 65 20 73 70  member of the sp
3250: 65 63 69 66 69 65 64 20 63 68 61 72 61 63 74 65  ecified characte
3260: 72 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63  r.Index: generic
3270: 2f 74 63 6c 43 6d 64 4d 5a 2e 63 0a 3d 3d 3d 3d  /tclCmdMZ.c.====
3280: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3290: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
32a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
32b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a  ===============.
32c0: 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f  RCS file: /cvsro
32d0: 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72  ot/tcl/tcl/gener
32e0: 69 63 2f 74 63 6c 43 6d 64 4d 5a 2e 63 2c 76 0a  ic/tclCmdMZ.c,v.
32f0: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73  retrieving revis
3300: 69 6f 6e 20 31 2e 31 31 36 0a 64 69 66 66 20 2d  ion 1.116.diff -
3310: 75 20 2d 72 31 2e 31 31 36 20 74 63 6c 43 6d 64  u -r1.116 tclCmd
3320: 4d 5a 2e 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63  MZ.c.--- generic
3330: 2f 74 63 6c 43 6d 64 4d 5a 2e 63 09 38 20 41 70  /tclCmdMZ.c.8 Ap
3340: 72 20 32 30 30 35 20 31 30 3a 34 32 3a 35 31 20  r 2005 10:42:51 
3350: 2d 30 30 30 30 09 31 2e 31 31 36 0a 2b 2b 2b 20  -0000.1.116.+++ 
3360: 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64 4d 5a  generic/tclCmdMZ
3370: 2e 63 09 32 39 20 41 70 72 20 32 30 30 35 20 32  .c.29 Apr 2005 2
3380: 30 3a 33 30 3a 33 39 20 2d 30 30 30 30 0a 40 40  0:30:39 -0000.@@
3390: 20 2d 39 30 2c 37 20 2b 39 30 2c 37 20 40 40 0a   -90,7 +90,7 @@.
33a0: 20 20 20 20 20 69 6e 74 20 69 2c 20 69 6e 64 69       int i, indi
33b0: 63 65 73 2c 20 6d 61 74 63 68 2c 20 61 62 6f 75  ces, match, abou
33c0: 74 2c 20 6f 66 66 73 65 74 2c 20 61 6c 6c 2c 20  t, offset, all, 
33d0: 64 6f 69 6e 6c 69 6e 65 2c 20 6e 75 6d 4d 61 74  doinline, numMat
33e0: 63 68 65 73 53 61 76 65 64 3b 0a 20 20 20 20 20  chesSaved;.     
33f0: 69 6e 74 20 63 66 6c 61 67 73 2c 20 65 66 6c 61  int cflags, efla
3400: 67 73 2c 20 73 74 72 69 6e 67 4c 65 6e 67 74 68  gs, stringLength
3410: 3b 0a 20 20 20 20 20 54 63 6c 5f 52 65 67 45 78  ;.     Tcl_RegEx
3420: 70 20 72 65 67 45 78 70 72 3b 0a 2d 20 20 20 20  p regExpr;.-    
3430: 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 74 72 2c  Tcl_Obj *objPtr,
3440: 20 2a 72 65 73 75 6c 74 50 74 72 20 3d 20 4e 55   *resultPtr = NU
3450: 4c 4c 3b 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a  LL;.+    Tcl_Obj
3460: 20 2a 6f 62 6a 50 74 72 2c 20 2a 73 74 61 72 74   *objPtr, *start
3470: 49 6e 64 65 78 20 3d 20 4e 55 4c 4c 2c 20 2a 72  Index = NULL, *r
3480: 65 73 75 6c 74 50 74 72 20 3d 20 4e 55 4c 4c 3b  esultPtr = NULL;
3490: 0a 20 20 20 20 20 54 63 6c 5f 52 65 67 45 78 70  .     Tcl_RegExp
34a0: 49 6e 66 6f 20 69 6e 66 6f 3b 0a 20 20 20 20 20  Info info;.     
34b0: 73 74 61 74 69 63 20 43 4f 4e 53 54 20 63 68 61  static CONST cha
34c0: 72 20 2a 6f 70 74 69 6f 6e 73 5b 5d 20 3d 20 7b  r *options[] = {
34d0: 0a 20 09 22 2d 61 6c 6c 22 2c 09 09 22 2d 61 62  . ."-all",.."-ab
34e0: 6f 75 74 22 2c 09 22 2d 69 6e 64 69 63 65 73 22  out",."-indices"
34f0: 2c 09 22 2d 69 6e 6c 69 6e 65 22 2c 0a 40 40 20  ,."-inline",.@@ 
3500: 2d 31 32 31 2c 37 20 2b 31 32 31 2c 37 20 40 40  -121,7 +121,7 @@
3510: 0a 20 09 7d 0a 20 09 69 66 20 28 54 63 6c 5f 47  . .}. .if (Tcl_G
3520: 65 74 49 6e 64 65 78 46 72 6f 6d 4f 62 6a 28 69  etIndexFromObj(i
3530: 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 69 5d 2c 20  nterp, objv[i], 
3540: 6f 70 74 69 6f 6e 73 2c 20 22 73 77 69 74 63 68  options, "switch
3550: 22 2c 20 54 43 4c 5f 45 58 41 43 54 2c 0a 20 09  ", TCL_EXACT,. .
3560: 09 26 69 6e 64 65 78 29 20 21 3d 20 54 43 4c 5f  .&index) != TCL_
3570: 4f 4b 29 20 7b 0a 2d 09 20 20 20 20 72 65 74 75  OK) {.-.    retu
3580: 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b 09  rn TCL_ERROR;.+.
3590: 20 20 20 20 67 6f 74 6f 20 6f 70 74 69 6f 6e 45      goto optionE
35a0: 72 72 6f 72 3b 0a 20 09 7d 0a 20 09 73 77 69 74  rror;. .}. .swit
35b0: 63 68 20 28 28 65 6e 75 6d 20 6f 70 74 69 6f 6e  ch ((enum option
35c0: 73 29 20 69 6e 64 65 78 29 20 7b 0a 20 09 20 20  s) index) {. .  
35d0: 20 20 63 61 73 65 20 52 45 47 45 58 50 5f 41 4c    case REGEXP_AL
35e0: 4c 3a 20 7b 0a 40 40 20 2d 31 36 31 2c 31 35 20  L: {.@@ -161,15 
35f0: 2b 31 36 31 2c 31 38 20 40 40 0a 20 09 09 62 72  +161,18 @@. ..br
3600: 65 61 6b 3b 0a 20 09 20 20 20 20 7d 0a 20 09 20  eak;. .    }. . 
3610: 20 20 20 63 61 73 65 20 52 45 47 45 58 50 5f 53     case REGEXP_S
3620: 54 41 52 54 3a 20 7b 0a 2b 09 09 69 6e 74 20 74  TART: {.+..int t
3630: 65 6d 70 3b 0a 20 09 09 69 66 20 28 2b 2b 69 20  emp;. ..if (++i 
3640: 3e 3d 20 6f 62 6a 63 29 20 7b 0a 20 09 09 20 20  >= objc) {. ..  
3650: 20 20 67 6f 74 6f 20 65 6e 64 4f 66 46 6f 72 4c    goto endOfForL
3660: 6f 6f 70 3b 0a 20 09 09 7d 0a 2d 09 09 69 66 20  oop;. ..}.-..if 
3670: 28 54 63 6c 5f 47 65 74 49 6e 74 46 72 6f 6d 4f  (Tcl_GetIntFromO
3680: 62 6a 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b  bj(interp, objv[
3690: 69 5d 2c 20 26 6f 66 66 73 65 74 29 20 21 3d 20  i], &offset) != 
36a0: 54 43 4c 5f 4f 4b 29 20 7b 0a 2d 09 09 20 20 20  TCL_OK) {.-..   
36b0: 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f   return TCL_ERRO
36c0: 52 3b 0a 2b 09 09 69 66 20 28 54 63 6c 47 65 74  R;.+..if (TclGet
36d0: 49 6e 74 46 6f 72 49 6e 64 65 78 28 69 6e 74 65  IntForIndex(inte
36e0: 72 70 2c 20 6f 62 6a 76 5b 69 5d 2c 20 30 2c 20  rp, objv[i], 0, 
36f0: 26 74 65 6d 70 29 20 21 3d 20 54 43 4c 5f 4f 4b  &temp) != TCL_OK
3700: 29 20 7b 0a 2b 09 09 20 20 20 20 67 6f 74 6f 20  ) {.+..    goto 
3710: 6f 70 74 69 6f 6e 45 72 72 6f 72 3b 0a 20 09 09  optionError;. ..
3720: 7d 0a 2d 09 09 69 66 20 28 6f 66 66 73 65 74 20  }.-..if (offset 
3730: 3c 20 30 29 20 7b 0a 2d 09 09 20 20 20 20 6f 66  < 0) {.-..    of
3740: 66 73 65 74 20 3d 20 30 3b 0a 2b 09 09 69 66 20  fset = 0;.+..if 
3750: 28 73 74 61 72 74 49 6e 64 65 78 29 20 7b 0a 2b  (startIndex) {.+
3760: 09 09 20 20 20 20 54 63 6c 5f 44 65 63 72 52 65  ..    Tcl_DecrRe
3770: 66 43 6f 75 6e 74 28 73 74 61 72 74 49 6e 64 65  fCount(startInde
3780: 78 29 3b 0a 20 09 09 7d 0a 2b 09 09 73 74 61 72  x);. ..}.+..star
3790: 74 49 6e 64 65 78 20 3d 20 6f 62 6a 76 5b 69 5d  tIndex = objv[i]
37a0: 3b 0a 2b 09 09 54 63 6c 5f 49 6e 63 72 52 65 66  ;.+..Tcl_IncrRef
37b0: 43 6f 75 6e 74 28 73 74 61 72 74 49 6e 64 65 78  Count(startIndex
37c0: 29 3b 0a 20 09 09 62 72 65 61 6b 3b 0a 20 09 20  );. ..break;. . 
37d0: 20 20 20 7d 0a 20 09 20 20 20 20 63 61 73 65 20     }. .    case 
37e0: 52 45 47 45 58 50 5f 4c 41 53 54 3a 20 7b 0a 40  REGEXP_LAST: {.@
37f0: 40 20 2d 31 38 33 2c 37 20 2b 31 38 36 2c 37 20  @ -183,7 +186,7 
3800: 40 40 0a 20 20 20 20 20 69 66 20 28 28 6f 62 6a  @@.     if ((obj
3810: 63 20 2d 20 69 29 20 3c 20 28 32 20 2d 20 61 62  c - i) < (2 - ab
3820: 6f 75 74 29 29 20 7b 0a 20 09 54 63 6c 5f 57 72  out)) {. .Tcl_Wr
3830: 6f 6e 67 4e 75 6d 41 72 67 73 28 69 6e 74 65 72  ongNumArgs(inter
3840: 70 2c 20 31 2c 20 6f 62 6a 76 2c 20 0a 20 09 20  p, 1, objv, . . 
3850: 20 22 3f 73 77 69 74 63 68 65 73 3f 20 65 78 70   "?switches? exp
3860: 20 73 74 72 69 6e 67 20 3f 6d 61 74 63 68 56 61   string ?matchVa
3870: 72 3f 20 3f 73 75 62 4d 61 74 63 68 56 61 72 20  r? ?subMatchVar 
3880: 73 75 62 4d 61 74 63 68 56 61 72 20 2e 2e 2e 3f  subMatchVar ...?
3890: 22 29 3b 0a 2d 09 72 65 74 75 72 6e 20 54 43 4c  ");.-.return TCL
38a0: 5f 45 52 52 4f 52 3b 0a 2b 09 67 6f 74 6f 20 6f  _ERROR;.+.goto o
38b0: 70 74 69 6f 6e 45 72 72 6f 72 3b 0a 20 20 20 20  ptionError;.    
38c0: 20 7d 0a 20 20 20 20 20 6f 62 6a 63 20 2d 3d 20   }.     objc -= 
38d0: 69 3b 0a 20 20 20 20 20 6f 62 6a 76 20 2b 3d 20  i;.     objv += 
38e0: 69 3b 0a 40 40 20 2d 31 39 34 2c 37 20 2b 31 39  i;.@@ -194,7 +19
38f0: 37 2c 37 20 40 40 0a 20 09 20 2a 2f 0a 20 09 54  7,7 @@. . */. .T
3900: 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28  cl_AppendResult(
3910: 69 6e 74 65 72 70 2c 20 22 72 65 67 65 78 70 20  interp, "regexp 
3920: 6d 61 74 63 68 20 76 61 72 69 61 62 6c 65 73 20  match variables 
3930: 6e 6f 74 20 61 6c 6c 6f 77 65 64 22 2c 0a 20 09  not allowed",. .
3940: 09 22 20 77 68 65 6e 20 75 73 69 6e 67 20 2d 69  ." when using -i
3950: 6e 6c 69 6e 65 22 2c 20 28 63 68 61 72 20 2a 29  nline", (char *)
3960: 20 4e 55 4c 4c 29 3b 0a 2d 09 72 65 74 75 72 6e   NULL);.-.return
3970: 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b 09 67 6f   TCL_ERROR;.+.go
3980: 74 6f 20 6f 70 74 69 6f 6e 45 72 72 6f 72 3b 0a  to optionError;.
3990: 20 20 20 20 20 7d 0a 20 0a 20 20 20 20 20 2f 2a       }. .     /*
39a0: 0a 40 40 20 2d 32 30 33 2c 36 20 2b 32 30 36 2c  .@@ -203,6 +206,
39b0: 31 30 20 40 40 0a 20 20 20 20 20 69 66 20 28 61  10 @@.     if (a
39c0: 62 6f 75 74 29 20 7b 0a 20 09 72 65 67 45 78 70  bout) {. .regExp
39d0: 72 20 3d 20 54 63 6c 5f 47 65 74 52 65 67 45 78  r = Tcl_GetRegEx
39e0: 70 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c  pFromObj(interp,
39f0: 20 6f 62 6a 76 5b 30 5d 2c 20 63 66 6c 61 67 73   objv[0], cflags
3a00: 29 3b 0a 20 09 69 66 20 28 28 72 65 67 45 78 70  );. .if ((regExp
3a10: 72 20 3d 3d 20 4e 55 4c 4c 29 20 7c 7c 20 28 54  r == NULL) || (T
3a20: 63 6c 52 65 67 41 62 6f 75 74 28 69 6e 74 65 72  clRegAbout(inter
3a30: 70 2c 20 72 65 67 45 78 70 72 29 20 3c 20 30 29  p, regExpr) < 0)
3a40: 29 20 7b 0a 2b 6f 70 74 69 6f 6e 45 72 72 6f 72  ) {.+optionError
3a50: 3a 0a 2b 09 20 20 20 20 69 66 20 28 73 74 61 72  :.+.    if (star
3a60: 74 49 6e 64 65 78 29 20 7b 0a 2b 09 09 54 63 6c  tIndex) {.+..Tcl
3a70: 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28 73 74  _DecrRefCount(st
3a80: 61 72 74 49 6e 64 65 78 29 3b 0a 2b 09 20 20 20  artIndex);.+.   
3a90: 20 7d 0a 20 09 20 20 20 20 72 65 74 75 72 6e 20   }. .    return 
3aa0: 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 09 7d 0a 20  TCL_ERROR;. .}. 
3ab0: 09 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b 3b 0a  .return TCL_OK;.
3ac0: 40 40 20 2d 32 31 36 2c 36 20 2b 32 32 33 2c 31  @@ -216,6 +223,1
3ad0: 34 20 40 40 0a 20 20 20 20 20 6f 62 6a 50 74 72  4 @@.     objPtr
3ae0: 20 3d 20 6f 62 6a 76 5b 31 5d 3b 0a 20 20 20 20   = objv[1];.    
3af0: 20 73 74 72 69 6e 67 4c 65 6e 67 74 68 20 3d 20   stringLength = 
3b00: 54 63 6c 5f 47 65 74 43 68 61 72 4c 65 6e 67 74  Tcl_GetCharLengt
3b10: 68 28 6f 62 6a 50 74 72 29 3b 0a 20 0a 2b 20 20  h(objPtr);. .+  
3b20: 20 20 69 66 20 28 73 74 61 72 74 49 6e 64 65 78    if (startIndex
3b30: 29 20 7b 0a 2b 09 54 63 6c 47 65 74 49 6e 74 46  ) {.+.TclGetIntF
3b40: 6f 72 49 6e 64 65 78 28 4e 55 4c 4c 2c 20 73 74  orIndex(NULL, st
3b50: 61 72 74 49 6e 64 65 78 2c 20 73 74 72 69 6e 67  artIndex, string
3b60: 4c 65 6e 67 74 68 2c 20 26 6f 66 66 73 65 74 29  Length, &offset)
3b70: 3b 0a 2b 09 54 63 6c 5f 44 65 63 72 52 65 66 43  ;.+.Tcl_DecrRefC
3b80: 6f 75 6e 74 28 73 74 61 72 74 49 6e 64 65 78 29  ount(startIndex)
3b90: 3b 0a 2b 09 69 66 20 28 6f 66 66 73 65 74 20 3c  ;.+.if (offset <
3ba0: 20 30 29 20 7b 0a 2b 09 20 20 20 20 6f 66 66 73   0) {.+.    offs
3bb0: 65 74 20 3d 20 30 3b 0a 2b 09 7d 0a 2b 20 20 20  et = 0;.+.}.+   
3bc0: 20 7d 0a 2b 0a 20 20 20 20 20 72 65 67 45 78 70   }.+.     regExp
3bd0: 72 20 3d 20 54 63 6c 5f 47 65 74 52 65 67 45 78  r = Tcl_GetRegEx
3be0: 70 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c  pFromObj(interp,
3bf0: 20 6f 62 6a 76 5b 30 5d 2c 20 63 66 6c 61 67 73   objv[0], cflags
3c00: 29 3b 0a 20 20 20 20 20 69 66 20 28 72 65 67 45  );.     if (regE
3c10: 78 70 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 20  xpr == NULL) {. 
3c20: 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f  .return TCL_ERRO
3c30: 52 3b 0a 40 40 20 2d 34 32 36 2c 37 20 2b 34 34  R;.@@ -426,7 +44
3c40: 31 2c 37 20 40 40 0a 20 20 20 20 20 69 6e 74 20  1,7 @@.     int 
3c50: 73 74 61 72 74 2c 20 65 6e 64 2c 20 73 75 62 53  start, end, subS
3c60: 74 61 72 74 2c 20 73 75 62 45 6e 64 2c 20 6d 61  tart, subEnd, ma
3c70: 74 63 68 3b 0a 20 20 20 20 20 54 63 6c 5f 52 65  tch;.     Tcl_Re
3c80: 67 45 78 70 20 72 65 67 45 78 70 72 3b 0a 20 20  gExp regExpr;.  
3c90: 20 20 20 54 63 6c 5f 52 65 67 45 78 70 49 6e 66     Tcl_RegExpInf
3ca0: 6f 20 69 6e 66 6f 3b 0a 2d 20 20 20 20 54 63 6c  o info;.-    Tcl
3cb0: 5f 4f 62 6a 20 2a 72 65 73 75 6c 74 50 74 72 2c  _Obj *resultPtr,
3cc0: 20 2a 73 75 62 50 74 72 2c 20 2a 6f 62 6a 50 74   *subPtr, *objPt
3cd0: 72 3b 0a 2b 20 20 20 20 54 63 6c 5f 4f 62 6a 20  r;.+    Tcl_Obj 
3ce0: 2a 72 65 73 75 6c 74 50 74 72 2c 20 2a 73 75 62  *resultPtr, *sub
3cf0: 50 74 72 2c 20 2a 6f 62 6a 50 74 72 2c 20 2a 73  Ptr, *objPtr, *s
3d00: 74 61 72 74 49 6e 64 65 78 20 3d 20 4e 55 4c 4c  tartIndex = NULL
3d10: 3b 0a 20 20 20 20 20 54 63 6c 5f 55 6e 69 43 68  ;.     Tcl_UniCh
3d20: 61 72 20 63 68 2c 20 2a 77 73 72 63 2c 20 2a 77  ar ch, *wsrc, *w
3d30: 66 69 72 73 74 43 68 61 72 2c 20 2a 77 73 74 72  firstChar, *wstr
3d40: 69 6e 67 2c 20 2a 77 73 75 62 73 70 65 63 2c 20  ing, *wsubspec, 
3d50: 2a 77 65 6e 64 3b 0a 20 0a 20 20 20 20 20 73 74  *wend;. .     st
3d60: 61 74 69 63 20 43 4f 4e 53 54 20 63 68 61 72 20  atic CONST char 
3d70: 2a 6f 70 74 69 6f 6e 73 5b 5d 20 3d 20 7b 0a 40  *options[] = {.@
3d80: 40 20 2d 34 35 35 2c 37 20 2b 34 37 30 2c 37 20  @ -455,7 +470,7 
3d90: 40 40 0a 20 09 7d 0a 20 09 69 66 20 28 54 63 6c  @@. .}. .if (Tcl
3da0: 5f 47 65 74 49 6e 64 65 78 46 72 6f 6d 4f 62 6a  _GetIndexFromObj
3db0: 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 69 64  (interp, objv[id
3dc0: 78 5d 2c 20 6f 70 74 69 6f 6e 73 2c 20 22 73 77  x], options, "sw
3dd0: 69 74 63 68 22 2c 0a 20 09 09 54 43 4c 5f 45 58  itch",. ..TCL_EX
3de0: 41 43 54 2c 20 26 69 6e 64 65 78 29 20 21 3d 20  ACT, &index) != 
3df0: 54 43 4c 5f 4f 4b 29 20 7b 0a 2d 09 20 20 20 20  TCL_OK) {.-.    
3e00: 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52  return TCL_ERROR
3e10: 3b 0a 2b 09 20 20 20 20 67 6f 74 6f 20 6f 70 74  ;.+.    goto opt
3e20: 69 6f 6e 45 72 72 6f 72 3b 0a 20 09 7d 0a 20 09  ionError;. .}. .
3e30: 73 77 69 74 63 68 20 28 28 65 6e 75 6d 20 6f 70  switch ((enum op
3e40: 74 69 6f 6e 73 29 20 69 6e 64 65 78 29 20 7b 0a  tions) index) {.
3e50: 20 09 20 20 20 20 63 61 73 65 20 52 45 47 53 55   .    case REGSU
3e60: 42 5f 41 4c 4c 3a 20 7b 0a 40 40 20 2d 34 38 33  B_ALL: {.@@ -483
3e70: 2c 31 35 20 2b 34 39 38 2c 31 38 20 40 40 0a 20  ,15 +498,18 @@. 
3e80: 09 09 62 72 65 61 6b 3b 0a 20 09 20 20 20 20 7d  ..break;. .    }
3e90: 0a 20 09 20 20 20 20 63 61 73 65 20 52 45 47 53  . .    case REGS
3ea0: 55 42 5f 53 54 41 52 54 3a 20 7b 0a 2b 09 09 69  UB_START: {.+..i
3eb0: 6e 74 20 74 65 6d 70 3b 0a 20 09 09 69 66 20 28  nt temp;. ..if (
3ec0: 2b 2b 69 64 78 20 3e 3d 20 6f 62 6a 63 29 20 7b  ++idx >= objc) {
3ed0: 0a 20 09 09 20 20 20 20 67 6f 74 6f 20 65 6e 64  . ..    goto end
3ee0: 4f 66 46 6f 72 4c 6f 6f 70 3b 0a 20 09 09 7d 0a  OfForLoop;. ..}.
3ef0: 2d 09 09 69 66 20 28 54 63 6c 5f 47 65 74 49 6e  -..if (Tcl_GetIn
3f00: 74 46 72 6f 6d 4f 62 6a 28 69 6e 74 65 72 70 2c  tFromObj(interp,
3f10: 20 6f 62 6a 76 5b 69 64 78 5d 2c 20 26 6f 66 66   objv[idx], &off
3f20: 73 65 74 29 20 21 3d 20 54 43 4c 5f 4f 4b 29 20  set) != TCL_OK) 
3f30: 7b 0a 2d 09 09 20 20 20 20 72 65 74 75 72 6e 20  {.-..    return 
3f40: 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b 09 09 69 66  TCL_ERROR;.+..if
3f50: 20 28 54 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e   (TclGetIntForIn
3f60: 64 65 78 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76  dex(interp, objv
3f70: 5b 69 64 78 5d 2c 20 30 2c 20 26 74 65 6d 70 29  [idx], 0, &temp)
3f80: 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 2b 09   != TCL_OK) {.+.
3f90: 09 20 20 20 20 67 6f 74 6f 20 6f 70 74 69 6f 6e  .    goto option
3fa0: 45 72 72 6f 72 3b 0a 20 09 09 7d 0a 2d 09 09 69  Error;. ..}.-..i
3fb0: 66 20 28 6f 66 66 73 65 74 20 3c 20 30 29 20 7b  f (offset < 0) {
3fc0: 0a 2d 09 09 20 20 20 20 6f 66 66 73 65 74 20 3d  .-..    offset =
3fd0: 20 30 3b 0a 2b 09 09 69 66 20 28 73 74 61 72 74   0;.+..if (start
3fe0: 49 6e 64 65 78 29 20 7b 0a 2b 09 09 20 20 20 20  Index) {.+..    
3ff0: 54 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74  Tcl_DecrRefCount
4000: 28 73 74 61 72 74 49 6e 64 65 78 29 3b 0a 20 09  (startIndex);. .
4010: 09 7d 0a 2b 09 09 73 74 61 72 74 49 6e 64 65 78  .}.+..startIndex
4020: 20 3d 20 6f 62 6a 76 5b 69 64 78 5d 3b 0a 2b 09   = objv[idx];.+.
4030: 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e  .Tcl_IncrRefCoun
4040: 74 28 73 74 61 72 74 49 6e 64 65 78 29 3b 0a 20  t(startIndex);. 
4050: 09 09 62 72 65 61 6b 3b 0a 20 09 20 20 20 20 7d  ..break;. .    }
4060: 0a 20 09 20 20 20 20 63 61 73 65 20 52 45 47 53  . .    case REGS
4070: 55 42 5f 4c 41 53 54 3a 20 7b 0a 40 40 20 2d 35  UB_LAST: {.@@ -5
4080: 30 34 2c 31 32 20 2b 35 32 32 2c 32 35 20 40 40  04,12 +522,25 @@
4090: 0a 20 20 20 20 20 69 66 20 28 6f 62 6a 63 2d 69  .     if (objc-i
40a0: 64 78 20 3c 20 33 20 7c 7c 20 6f 62 6a 63 2d 69  dx < 3 || objc-i
40b0: 64 78 20 3e 20 34 29 20 7b 0a 20 09 54 63 6c 5f  dx > 4) {. .Tcl_
40c0: 57 72 6f 6e 67 4e 75 6d 41 72 67 73 28 69 6e 74  WrongNumArgs(int
40d0: 65 72 70 2c 20 31 2c 20 6f 62 6a 76 2c 0a 20 09  erp, 1, objv,. .
40e0: 09 22 3f 73 77 69 74 63 68 65 73 3f 20 65 78 70  ."?switches? exp
40f0: 20 73 74 72 69 6e 67 20 73 75 62 53 70 65 63 20   string subSpec 
4100: 3f 76 61 72 4e 61 6d 65 3f 22 29 3b 0a 2d 09 72  ?varName?");.-.r
4110: 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b  eturn TCL_ERROR;
4120: 0a 2b 6f 70 74 69 6f 6e 45 72 72 6f 72 3a 0a 2b  .+optionError:.+
4130: 09 20 20 20 20 69 66 20 28 73 74 61 72 74 49 6e  .    if (startIn
4140: 64 65 78 29 20 7b 0a 2b 09 09 54 63 6c 5f 44 65  dex) {.+..Tcl_De
4150: 63 72 52 65 66 43 6f 75 6e 74 28 73 74 61 72 74  crRefCount(start
4160: 49 6e 64 65 78 29 3b 0a 2b 09 20 20 20 20 7d 0a  Index);.+.    }.
4170: 2b 09 20 20 20 20 72 65 74 75 72 6e 20 54 43 4c  +.    return TCL
4180: 5f 45 52 52 4f 52 3b 0a 20 20 20 20 20 7d 0a 20  _ERROR;.     }. 
4190: 0a 20 20 20 20 20 6f 62 6a 63 20 2d 3d 20 69 64  .     objc -= id
41a0: 78 3b 0a 20 20 20 20 20 6f 62 6a 76 20 2b 3d 20  x;.     objv += 
41b0: 69 64 78 3b 0a 20 0a 2b 20 20 20 20 69 66 20 28  idx;. .+    if (
41c0: 73 74 61 72 74 49 6e 64 65 78 29 20 7b 0a 2b 09  startIndex) {.+.
41d0: 69 6e 74 20 73 74 72 69 6e 67 4c 65 6e 67 74 68  int stringLength
41e0: 20 3d 20 54 63 6c 5f 47 65 74 43 68 61 72 4c 65   = Tcl_GetCharLe
41f0: 6e 67 74 68 28 6f 62 6a 76 5b 31 5d 29 3b 0a 2b  ngth(objv[1]);.+
4200: 09 54 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64  .TclGetIntForInd
4210: 65 78 28 4e 55 4c 4c 2c 20 73 74 61 72 74 49 6e  ex(NULL, startIn
4220: 64 65 78 2c 20 73 74 72 69 6e 67 4c 65 6e 67 74  dex, stringLengt
4230: 68 2c 20 26 6f 66 66 73 65 74 29 3b 0a 2b 09 54  h, &offset);.+.T
4240: 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28  cl_DecrRefCount(
4250: 73 74 61 72 74 49 6e 64 65 78 29 3b 0a 2b 09 69  startIndex);.+.i
4260: 66 20 28 6f 66 66 73 65 74 20 3c 20 30 29 20 7b  f (offset < 0) {
4270: 0a 2b 09 20 20 20 20 6f 66 66 73 65 74 20 3d 20  .+.    offset = 
4280: 30 3b 0a 2b 09 7d 0a 2b 20 20 20 20 7d 0a 2b 0a  0;.+.}.+    }.+.
4290: 20 20 20 20 20 69 66 20 28 61 6c 6c 20 26 26 20       if (all && 
42a0: 28 6f 66 66 73 65 74 20 3d 3d 20 30 29 0a 20 09  (offset == 0). .
42b0: 20 20 20 20 26 26 20 28 73 74 72 70 62 72 6b 28      && (strpbrk(
42c0: 54 63 6c 47 65 74 53 74 72 69 6e 67 28 6f 62 6a  TclGetString(obj
42d0: 76 5b 32 5d 29 2c 20 22 26 5c 5c 22 29 20 3d 3d  v[2]), "&\\") ==
42e0: 20 4e 55 4c 4c 29 0a 20 09 20 20 20 20 26 26 20   NULL). .    && 
42f0: 28 73 74 72 70 62 72 6b 28 54 63 6c 47 65 74 53  (strpbrk(TclGetS
4300: 74 72 69 6e 67 28 6f 62 6a 76 5b 30 5d 29 2c 20  tring(objv[0]), 
4310: 22 2a 2b 3f 7b 7d 28 29 5b 5d 2e 5c 5c 7c 5e 24  "*+?{}()[].\\|^$
4320: 22 29 20 3d 3d 20 4e 55 4c 4c 29 29 20 7b 0a 49  ") == NULL)) {.I
4330: 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63  ndex: generic/tc
4340: 6c 55 74 69 6c 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d  lUtil.c.========
4350: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4360: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4370: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4380: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20  ===========.RCS 
4390: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74  file: /cvsroot/t
43a0: 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f 74  cl/tcl/generic/t
43b0: 63 6c 55 74 69 6c 2e 63 2c 76 0a 72 65 74 72 69  clUtil.c,v.retri
43c0: 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31  eving revision 1
43d0: 2e 35 35 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e  .55.diff -u -r1.
43e0: 35 35 20 74 63 6c 55 74 69 6c 2e 63 0a 2d 2d 2d  55 tclUtil.c.---
43f0: 20 67 65 6e 65 72 69 63 2f 74 63 6c 55 74 69 6c   generic/tclUtil
4400: 2e 63 09 31 32 20 41 70 72 20 32 30 30 35 20 32  .c.12 Apr 2005 2
4410: 30 3a 32 38 3a 34 38 20 2d 30 30 30 30 09 31 2e  0:28:48 -0000.1.
4420: 35 35 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74  55.+++ generic/t
4430: 63 6c 55 74 69 6c 2e 63 09 32 39 20 41 70 72 20  clUtil.c.29 Apr 
4440: 32 30 30 35 20 32 30 3a 33 30 3a 33 39 20 2d 30  2005 20:30:39 -0
4450: 30 30 30 0a 40 40 20 2d 32 32 36 39 2c 31 35 20  000.@@ -2269,15 
4460: 2b 32 32 36 39 2c 31 34 20 40 40 0a 20 20 2a 0a  +2269,14 @@.  *.
4470: 20 20 2a 09 54 68 69 73 20 70 72 6f 63 65 64 75    *.This procedu
4480: 72 65 20 72 65 74 75 72 6e 73 20 61 6e 20 69 6e  re returns an in
4490: 74 65 67 65 72 20 63 6f 72 72 65 73 70 6f 6e 64  teger correspond
44a0: 69 6e 67 20 74 6f 20 74 68 65 20 6c 69 73 74 20  ing to the list 
44b0: 69 6e 64 65 78 0a 20 20 2a 09 68 65 6c 64 20 69  index.  *.held i
44c0: 6e 20 61 20 54 63 6c 20 6f 62 6a 65 63 74 2e 20  n a Tcl object. 
44d0: 54 68 65 20 54 63 6c 20 6f 62 6a 65 63 74 27 73  The Tcl object's
44e0: 20 76 61 6c 75 65 20 69 73 20 65 78 70 65 63 74   value is expect
44f0: 65 64 20 74 6f 20 62 65 0a 2d 20 2a 09 65 69 74  ed to be.- *.eit
4500: 68 65 72 20 61 6e 20 69 6e 74 65 67 65 72 20 6f  her an integer o
4510: 72 20 61 20 73 74 72 69 6e 67 20 6f 66 20 74 68  r a string of th
4520: 65 20 66 6f 72 6d 20 22 65 6e 64 28 5b 2b 2d 5d  e form "end([+-]
4530: 69 6e 74 65 67 65 72 29 3f 22 2e 20 0a 2b 20 2a  integer)?". .+ *
4540: 09 69 6e 20 74 68 65 20 66 6f 72 6d 61 74 20 69  .in the format i
4550: 6e 74 65 67 65 72 28 5b 2b 2d 5d 69 6e 74 65 67  nteger([+-]integ
4560: 65 72 29 3f 20 6f 72 20 74 68 65 20 66 6f 72 6d  er)? or the form
4570: 61 74 20 65 6e 64 28 5b 2b 2d 5d 69 6e 74 65 67  at end([+-]integ
4580: 65 72 29 3f 2e 20 0a 20 20 2a 0a 20 20 2a 20 52  er)?. .  *.  * R
4590: 65 73 75 6c 74 73 3a 0a 20 20 2a 09 54 68 65 20  esults:.  *.The 
45a0: 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73 20  return value is 
45b0: 6e 6f 72 6d 61 6c 6c 79 20 54 43 4c 5f 4f 4b 2c  normally TCL_OK,
45c0: 20 77 68 69 63 68 20 6d 65 61 6e 73 20 74 68 61   which means tha
45d0: 74 20 74 68 65 20 69 6e 64 65 78 20 77 61 73 0a  t the index was.
45e0: 20 20 2a 09 73 75 63 63 65 73 73 66 75 6c 6c 79    *.successfully
45f0: 20 73 74 6f 72 65 64 20 69 6e 74 6f 20 74 68 65   stored into the
4600: 20 6c 6f 63 61 74 69 6f 6e 20 72 65 66 65 72 65   location refere
4610: 6e 63 65 64 20 62 79 20 22 69 6e 64 65 78 50 74  nced by "indexPt
4620: 72 22 2e 20 20 49 66 0a 20 20 2a 09 74 68 65 20  r".  If.  *.the 
4630: 54 63 6c 20 6f 62 6a 65 63 74 20 72 65 66 65 72  Tcl object refer
4640: 65 6e 63 65 64 20 62 79 20 22 6f 62 6a 50 74 72  enced by "objPtr
4650: 22 20 68 61 73 20 74 68 65 20 76 61 6c 75 65 20  " has the value 
4660: 22 65 6e 64 22 2c 20 74 68 65 0a 2d 20 2a 09 76  "end", the.- *.v
4670: 61 6c 75 65 20 73 74 6f 72 65 64 20 69 73 20 22  alue stored is "
4680: 65 6e 64 56 61 6c 75 65 22 2e 20 49 66 20 22 6f  endValue". If "o
4690: 62 6a 50 74 72 22 73 20 76 61 6c 75 65 73 20 69  bjPtr"s values i
46a0: 73 20 6e 6f 74 20 6f 66 20 74 68 65 20 66 6f 72  s not of the for
46b0: 6d 0a 2d 20 2a 09 22 65 6e 64 28 5b 2b 2d 5d 69  m.- *."end([+-]i
46c0: 6e 74 65 67 65 72 29 3f 22 20 61 6e 64 0a 2d 20  nteger)?" and.- 
46d0: 2a 09 63 61 6e 20 6e 6f 74 20 62 65 20 63 6f 6e  *.can not be con
46e0: 76 65 72 74 65 64 20 74 6f 20 61 6e 20 69 6e 74  verted to an int
46f0: 65 67 65 72 2c 20 54 43 4c 5f 45 52 52 4f 52 20  eger, TCL_ERROR 
4700: 69 73 20 72 65 74 75 72 6e 65 64 20 61 6e 64 2c  is returned and,
4710: 20 69 66 0a 2b 20 2a 09 76 61 6c 75 65 20 73 74   if.+ *.value st
4720: 6f 72 65 64 20 69 73 20 22 65 6e 64 56 61 6c 75  ored is "endValu
4730: 65 22 2e 20 49 66 20 22 6f 62 6a 50 74 72 22 73  e". If "objPtr"s
4740: 20 76 61 6c 75 65 73 20 69 73 20 6e 6f 74 20 6f   values is not o
4750: 66 20 6f 6e 65 0a 2b 20 2a 09 6f 66 20 74 68 65  f one.+ *.of the
4760: 20 65 78 70 65 63 74 65 64 20 66 6f 72 6d 61 74   expected format
4770: 73 2c 20 54 43 4c 5f 45 52 52 4f 52 20 69 73 20  s, TCL_ERROR is 
4780: 72 65 74 75 72 6e 65 64 20 61 6e 64 2c 20 69 66  returned and, if
4790: 0a 20 20 2a 09 22 69 6e 74 65 72 70 22 20 69 73  .  *."interp" is
47a0: 20 6e 6f 6e 2d 4e 55 4c 4c 2c 20 61 6e 20 65 72   non-NULL, an er
47b0: 72 6f 72 20 6d 65 73 73 61 67 65 20 69 73 20 6c  ror message is l
47c0: 65 66 74 20 69 6e 20 74 68 65 20 69 6e 74 65 72  eft in the inter
47d0: 70 72 65 74 65 72 27 73 0a 20 20 2a 09 72 65 73  preter's.  *.res
47e0: 75 6c 74 20 6f 62 6a 65 63 74 2e 0a 20 20 2a 0a  ult object..  *.
47f0: 40 40 20 2d 32 33 31 33 2c 31 30 20 2b 32 33 31  @@ -2313,10 +231
4800: 32 2c 35 31 20 40 40 0a 20 09 2a 69 6e 64 65 78  2,51 @@. .*index
4810: 50 74 72 20 3d 20 65 6e 64 56 61 6c 75 65 20 2b  Ptr = endValue +
4820: 20 6f 62 6a 50 74 72 2d 3e 69 6e 74 65 72 6e 61   objPtr->interna
4830: 6c 52 65 70 2e 6c 6f 6e 67 56 61 6c 75 65 3b 0a  lRep.longValue;.
4840: 20 0a 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a   .     } else {.
4850: 2b 09 69 6e 74 20 6f 70 49 64 78 2c 20 6c 65 6e  +.int opIdx, len
4860: 67 74 68 3b 0a 2b 09 63 68 61 72 20 2a 62 79 74  gth;.+.char *byt
4870: 65 73 20 3d 20 54 63 6c 5f 47 65 74 53 74 72 69  es = Tcl_GetStri
4880: 6e 67 46 72 6f 6d 4f 62 6a 28 6f 62 6a 50 74 72  ngFromObj(objPtr
4890: 2c 20 26 6c 65 6e 67 74 68 29 3b 0a 2b 09 63 68  , &length);.+.ch
48a0: 61 72 20 2a 70 20 3d 20 62 79 74 65 73 3b 0a 2b  ar *p = bytes;.+
48b0: 0a 2b 09 77 68 69 6c 65 20 28 6c 65 6e 67 74 68  .+.while (length
48c0: 20 26 26 20 69 73 73 70 61 63 65 28 55 43 48 41   && isspace(UCHA
48d0: 52 28 2a 70 29 29 29 20 7b 20 2f 2a 20 49 4e 54  R(*p))) { /* INT
48e0: 4c 3a 20 49 53 4f 20 73 70 61 63 65 2e 20 2a 2f  L: ISO space. */
48f0: 0a 2b 09 20 20 20 20 6c 65 6e 67 74 68 2d 2d 3b  .+.    length--;
4900: 20 70 2b 2b 3b 0a 2b 09 7d 0a 2b 09 69 66 20 28   p++;.+.}.+.if (
4910: 6c 65 6e 67 74 68 20 3d 3d 20 30 29 20 7b 0a 2b  length == 0) {.+
4920: 20 20 20 20 20 20 20 20 20 20 20 20 67 6f 74 6f              goto
4930: 20 70 61 72 73 65 45 72 72 6f 72 3b 0a 2b 09 7d   parseError;.+.}
4940: 0a 2b 09 69 66 20 28 28 2a 70 20 3d 3d 20 27 2b  .+.if ((*p == '+
4950: 27 29 20 7c 7c 20 28 2a 70 20 3d 3d 20 27 2d 27  ') || (*p == '-'
4960: 29 29 20 7b 0a 2b 09 20 20 20 20 70 2b 2b 3b 20  )) {.+.    p++; 
4970: 6c 65 6e 67 74 68 2d 2d 3b 0a 2b 09 7d 0a 2b 09  length--;.+.}.+.
4980: 6f 70 49 64 78 20 3d 20 54 63 6c 50 61 72 73 65  opIdx = TclParse
4990: 49 6e 74 65 67 65 72 28 70 2c 20 6c 65 6e 67 74  Integer(p, lengt
49a0: 68 29 20 2b 20 28 69 6e 74 29 20 28 70 2d 62 79  h) + (int) (p-by
49b0: 74 65 73 29 3b 0a 2b 09 69 66 20 28 6f 70 49 64  tes);.+.if (opId
49c0: 78 29 20 7b 0a 2b 09 20 20 20 20 69 6e 74 20 63  x) {.+.    int c
49d0: 6f 64 65 2c 20 66 69 72 73 74 2c 20 73 65 63 6f  ode, first, seco
49e0: 6e 64 3b 0a 2b 09 20 20 20 20 63 68 61 72 20 73  nd;.+.    char s
49f0: 61 76 65 64 4f 70 20 3d 20 62 79 74 65 73 5b 6f  avedOp = bytes[o
4a00: 70 49 64 78 5d 3b 0a 2b 09 20 20 20 20 69 66 20  pIdx];.+.    if 
4a10: 28 28 73 61 76 65 64 4f 70 20 21 3d 20 27 2b 27  ((savedOp != '+'
4a20: 29 20 26 26 20 28 73 61 76 65 64 4f 70 20 21 3d  ) && (savedOp !=
4a30: 20 27 2d 27 29 29 20 7b 0a 2b 09 09 67 6f 74 6f   '-')) {.+..goto
4a40: 20 70 61 72 73 65 45 72 72 6f 72 3b 0a 2b 09 20   parseError;.+. 
4a50: 20 20 20 7d 0a 2b 09 20 20 20 20 69 66 20 28 69     }.+.    if (i
4a60: 73 73 70 61 63 65 28 55 43 48 41 52 28 62 79 74  sspace(UCHAR(byt
4a70: 65 73 5b 6f 70 49 64 78 2b 31 5d 29 29 29 20 7b  es[opIdx+1]))) {
4a80: 0a 2b 09 09 67 6f 74 6f 20 70 61 72 73 65 45 72  .+..goto parseEr
4a90: 72 6f 72 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 20  ror;.+.    }.+. 
4aa0: 20 20 20 62 79 74 65 73 5b 6f 70 49 64 78 5d 20     bytes[opIdx] 
4ab0: 3d 20 27 5c 30 27 3b 0a 2b 09 20 20 20 20 63 6f  = '\0';.+.    co
4ac0: 64 65 20 3d 20 54 63 6c 5f 47 65 74 49 6e 74 28  de = Tcl_GetInt(
4ad0: 69 6e 74 65 72 70 2c 20 62 79 74 65 73 2c 20 26  interp, bytes, &
4ae0: 66 69 72 73 74 29 3b 0a 2b 09 20 20 20 20 62 79  first);.+.    by
4af0: 74 65 73 5b 6f 70 49 64 78 5d 20 3d 20 73 61 76  tes[opIdx] = sav
4b00: 65 64 4f 70 3b 0a 2b 09 20 20 20 20 69 66 20 28  edOp;.+.    if (
4b10: 63 6f 64 65 20 3d 3d 20 54 43 4c 5f 45 52 52 4f  code == TCL_ERRO
4b20: 52 29 20 20 7b 0a 2b 09 09 67 6f 74 6f 20 70 61  R)  {.+..goto pa
4b30: 72 73 65 45 72 72 6f 72 3b 0a 2b 09 20 20 20 20  rseError;.+.    
4b40: 7d 0a 2b 09 20 20 20 20 69 66 20 28 54 43 4c 5f  }.+.    if (TCL_
4b50: 45 52 52 4f 52 20 3d 3d 20 54 63 6c 5f 47 65 74  ERROR == Tcl_Get
4b60: 49 6e 74 28 69 6e 74 65 72 70 2c 20 62 79 74 65  Int(interp, byte
4b70: 73 2b 6f 70 49 64 78 2b 31 2c 20 26 73 65 63 6f  s+opIdx+1, &seco
4b80: 6e 64 29 29 20 20 7b 0a 2b 09 09 67 6f 74 6f 20  nd))  {.+..goto 
4b90: 70 61 72 73 65 45 72 72 6f 72 3b 0a 2b 09 20 20  parseError;.+.  
4ba0: 20 20 7d 0a 2b 09 20 20 20 20 69 66 20 28 73 61    }.+.    if (sa
4bb0: 76 65 64 4f 70 20 3d 3d 20 27 2b 27 29 20 7b 0a  vedOp == '+') {.
4bc0: 2b 09 09 2a 69 6e 64 65 78 50 74 72 20 3d 20 66  +..*indexPtr = f
4bd0: 69 72 73 74 20 2b 20 73 65 63 6f 6e 64 3b 0a 2b  irst + second;.+
4be0: 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 2b 09  .    } else {.+.
4bf0: 09 2a 69 6e 64 65 78 50 74 72 20 3d 20 66 69 72  .*indexPtr = fir
4c00: 73 74 20 2d 20 73 65 63 6f 6e 64 3b 0a 2b 09 20  st - second;.+. 
4c10: 20 20 20 7d 0a 2b 09 20 20 20 20 72 65 74 75 72     }.+.    retur
4c20: 6e 20 54 43 4c 5f 4f 4b 3b 0a 2b 09 7d 0a 2b 0a  n TCL_OK;.+.}.+.
4c30: 20 09 2f 2a 0a 20 09 20 2a 20 52 65 70 6f 72 74   ./*. . * Report
4c40: 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 2e 0a   a parse error..
4c50: 20 09 20 2a 2f 0a 20 0a 2b 70 61 72 73 65 45 72   . */. .+parseEr
4c60: 72 6f 72 3a 0a 20 09 69 66 20 28 69 6e 74 65 72  ror:. .if (inter
4c70: 70 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 20  p != NULL) {. . 
4c80: 20 20 20 63 68 61 72 20 2a 62 79 74 65 73 20 3d     char *bytes =
4c90: 20 54 63 6c 5f 47 65 74 53 74 72 69 6e 67 28 6f   Tcl_GetString(o
4ca0: 62 6a 50 74 72 29 3b 0a 20 09 20 20 20 20 2f 2a  bjPtr);. .    /*
4cb0: 0a 40 40 20 2d 32 33 32 36 2c 37 20 2b 32 33 36  .@@ -2326,7 +236
4cc0: 36 2c 38 20 40 40 0a 20 09 20 20 20 20 20 2a 2f  6,8 @@. .     */
4cd0: 0a 20 09 20 20 20 20 54 63 6c 5f 52 65 73 65 74  . .    Tcl_Reset
4ce0: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 29 3b 0a  Result(interp);.
4cf0: 20 09 20 20 20 20 54 63 6c 5f 41 70 70 65 6e 64   .    Tcl_Append
4d00: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22  Result(interp, "
4d10: 62 61 64 20 69 6e 64 65 78 20 5c 22 22 2c 20 62  bad index \"", b
4d20: 79 74 65 73 2c 0a 2d 09 09 20 20 20 20 22 5c 22  ytes,.-..    "\"
4d30: 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65  : must be intege
4d40: 72 20 6f 72 20 65 6e 64 3f 2d 69 6e 74 65 67 65  r or end?-intege
4d50: 72 3f 22 2c 20 28 63 68 61 72 20 2a 29 20 4e 55  r?", (char *) NU
4d60: 4c 4c 29 3b 0a 2b 09 09 20 20 20 20 22 5c 22 3a  LL);.+..    "\":
4d70: 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65 72   must be integer
4d80: 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 6f 72  ?[+-]integer? or
4d90: 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72   end?[+-]integer
4da0: 3f 22 2c 0a 2b 09 09 20 20 20 20 28 63 68 61 72  ?",.+..    (char
4db0: 20 2a 29 20 4e 55 4c 4c 29 3b 0a 20 09 20 20 20   *) NULL);. .   
4dc0: 20 69 66 20 28 21 73 74 72 6e 63 6d 70 28 62 79   if (!strncmp(by
4dd0: 74 65 73 2c 20 22 65 6e 64 2d 22 2c 20 33 29 29  tes, "end-", 3))
4de0: 20 7b 0a 20 09 09 62 79 74 65 73 20 2b 3d 20 33   {. ..bytes += 3
4df0: 3b 0a 20 09 20 20 20 20 7d 0a 40 40 20 2d 32 33  ;. .    }.@@ -23
4e00: 38 33 2c 37 20 2b 32 34 32 34 2c 37 20 40 40 0a  83,7 +2424,7 @@.
4e10: 20 20 2a 0a 20 20 2a 20 53 65 74 45 6e 64 4f 66    *.  * SetEndOf
4e20: 66 73 65 74 46 72 6f 6d 41 6e 79 20 2d 2d 0a 20  fsetFromAny --. 
4e30: 20 2a 0a 2d 20 2a 09 4c 6f 6f 6b 20 66 6f 72 20   *.- *.Look for 
4e40: 61 20 73 74 72 69 6e 67 20 6f 66 20 74 68 65 20  a string of the 
4e50: 66 6f 72 6d 20 22 65 6e 64 2d 6f 66 66 73 65 74  form "end-offset
4e60: 22 20 61 6e 64 20 63 6f 6e 76 65 72 74 20 69 74  " and convert it
4e70: 0a 2b 20 2a 09 4c 6f 6f 6b 20 66 6f 72 20 61 20  .+ *.Look for a 
4e80: 73 74 72 69 6e 67 20 6f 66 20 74 68 65 20 66 6f  string of the fo
4e90: 72 6d 20 22 65 6e 64 5b 2b 2d 5d 6f 66 66 73 65  rm "end[+-]offse
4ea0: 74 22 20 61 6e 64 20 63 6f 6e 76 65 72 74 20 69  t" and convert i
4eb0: 74 0a 20 20 2a 09 74 6f 20 61 6e 20 69 6e 74 65  t.  *.to an inte
4ec0: 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74  rnal representat
4ed0: 69 6f 6e 20 68 6f 6c 64 69 6e 67 20 74 68 65 20  ion holding the 
4ee0: 6f 66 66 73 65 74 2e 0a 20 20 2a 0a 20 20 2a 20  offset..  *.  * 
4ef0: 52 65 73 75 6c 74 73 3a 0a 40 40 20 2d 32 34 31  Results:.@@ -241
4f00: 39 2c 37 20 2b 32 34 36 30 2c 37 20 40 40 0a 20  9,7 +2460,7 @@. 
4f10: 09 69 66 20 28 69 6e 74 65 72 70 20 21 3d 20 4e  .if (interp != N
4f20: 55 4c 4c 29 20 7b 0a 20 09 20 20 20 20 54 63 6c  ULL) {. .    Tcl
4f30: 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69 6e 74  _ResetResult(int
4f40: 65 72 70 29 3b 0a 20 09 20 20 20 20 54 63 6c 5f  erp);. .    Tcl_
4f50: 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69 6e 74  AppendResult(int
4f60: 65 72 70 2c 20 22 62 61 64 20 69 6e 64 65 78 20  erp, "bad index 
4f70: 5c 22 22 2c 20 62 79 74 65 73 2c 0a 2d 09 09 20  \"", bytes,.-.. 
4f80: 20 20 20 22 5c 22 3a 20 6d 75 73 74 20 62 65 20     "\": must be 
4f90: 65 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 22 2c 20  end?-integer?", 
4fa0: 28 63 68 61 72 2a 29 20 4e 55 4c 4c 29 3b 0a 2b  (char*) NULL);.+
4fb0: 09 09 20 20 20 20 22 5c 22 3a 20 6d 75 73 74 20  ..    "\": must 
4fc0: 62 65 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67  be end?[+-]integ
4fd0: 65 72 3f 22 2c 20 28 63 68 61 72 2a 29 20 4e 55  er?", (char*) NU
4fe0: 4c 4c 29 3b 0a 20 09 7d 0a 20 09 72 65 74 75 72  LL);. .}. .retur
4ff0: 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20  n TCL_ERROR;.   
5000: 20 20 7d 0a 40 40 20 2d 32 34 32 38 2c 31 35 20    }.@@ -2428,15 
5010: 2b 32 34 36 39 2c 32 30 20 40 40 0a 20 0a 20 20  +2469,20 @@. .  
5020: 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3c 3d     if (length <=
5030: 20 33 29 20 7b 0a 20 09 6f 66 66 73 65 74 20 3d   3) {. .offset =
5040: 20 30 3b 0a 2d 20 20 20 20 7d 20 65 6c 73 65 20   0;.-    } else 
5050: 69 66 20 28 28 6c 65 6e 67 74 68 20 3e 20 34 29  if ((length > 4)
5060: 20 26 26 20 28 62 79 74 65 73 5b 33 5d 20 3d 3d   && (bytes[3] ==
5070: 20 27 2d 27 29 29 20 7b 0a 2b 20 20 20 20 7d 20   '-')) {.+    } 
5080: 65 6c 73 65 20 69 66 20 28 28 6c 65 6e 67 74 68  else if ((length
5090: 20 3e 20 34 29 20 26 26 20 28 28 62 79 74 65 73   > 4) && ((bytes
50a0: 5b 33 5d 20 3d 3d 20 27 2d 27 29 20 7c 7c 20 28  [3] == '-') || (
50b0: 62 79 74 65 73 5b 33 5d 20 3d 3d 20 27 2b 27 29  bytes[3] == '+')
50c0: 29 29 20 7b 0a 20 09 2f 2a 0a 20 09 20 2a 20 54  )) {. ./*. . * T
50d0: 68 69 73 20 69 73 20 6f 75 72 20 6c 69 6d 69 74  his is our limit
50e0: 65 64 20 73 74 72 69 6e 67 20 65 78 70 72 65 73  ed string expres
50f0: 73 69 6f 6e 20 65 76 61 6c 75 61 74 6f 72 2e 20  sion evaluator. 
5100: 20 50 61 73 73 20 65 76 65 72 79 74 68 69 6e 67   Pass everything
5110: 0a 20 09 20 2a 20 61 66 74 65 72 20 22 65 6e 64  . . * after "end
5120: 2d 22 20 74 6f 20 54 63 6c 5f 47 65 74 49 6e 74  -" to Tcl_GetInt
5130: 2c 20 74 68 65 6e 20 72 65 76 65 72 73 65 20 66  , then reverse f
5140: 6f 72 20 6f 66 66 73 65 74 2e 0a 20 09 20 2a 2f  or offset.. . */
5150: 0a 2b 09 69 66 20 28 69 73 73 70 61 63 65 28 55  .+.if (isspace(U
5160: 43 48 41 52 28 62 79 74 65 73 5b 34 5d 29 29 29  CHAR(bytes[4])))
5170: 20 7b 0a 2b 09 20 20 20 20 72 65 74 75 72 6e 20   {.+.    return 
5180: 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b 09 7d 0a 20  TCL_ERROR;.+.}. 
5190: 09 69 66 20 28 54 63 6c 5f 47 65 74 49 6e 74 28  .if (Tcl_GetInt(
51a0: 69 6e 74 65 72 70 2c 20 62 79 74 65 73 2b 34 2c  interp, bytes+4,
51b0: 20 26 6f 66 66 73 65 74 29 20 21 3d 20 54 43 4c   &offset) != TCL
51c0: 5f 4f 4b 29 20 7b 0a 20 09 20 20 20 20 72 65 74  _OK) {. .    ret
51d0: 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20  urn TCL_ERROR;. 
51e0: 09 7d 0a 2d 09 6f 66 66 73 65 74 20 3d 20 2d 6f  .}.-.offset = -o
51f0: 66 66 73 65 74 3b 0a 2b 09 69 66 20 28 62 79 74  ffset;.+.if (byt
5200: 65 73 5b 33 5d 20 3d 3d 20 27 2d 27 29 20 7b 0a  es[3] == '-') {.
5210: 2b 09 20 20 20 20 6f 66 66 73 65 74 20 3d 20 2d  +.    offset = -
5220: 6f 66 66 73 65 74 3b 0a 2b 09 7d 0a 20 20 20 20  offset;.+.}.    
5230: 20 7d 20 65 6c 73 65 20 7b 0a 20 09 2f 2a 0a 20   } else {. ./*. 
5240: 09 20 2a 20 43 6f 6e 76 65 72 73 69 6f 6e 20 66  . * Conversion f
5250: 61 69 6c 65 64 2e 20 20 52 65 70 6f 72 74 20 74  ailed.  Report t
5260: 68 65 20 65 72 72 6f 72 2e 0a 40 40 20 2d 32 34  he error..@@ -24
5270: 34 34 2c 37 20 2b 32 34 39 30 2c 37 20 40 40 0a  44,7 +2490,7 @@.
5280: 20 09 69 66 20 28 69 6e 74 65 72 70 20 21 3d 20   .if (interp != 
5290: 4e 55 4c 4c 29 20 7b 0a 20 09 20 20 20 20 54 63  NULL) {. .    Tc
52a0: 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69 6e  l_ResetResult(in
52b0: 74 65 72 70 29 3b 0a 20 09 20 20 20 20 54 63 6c  terp);. .    Tcl
52c0: 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69 6e  _AppendResult(in
52d0: 74 65 72 70 2c 20 22 62 61 64 20 69 6e 64 65 78  terp, "bad index
52e0: 20 5c 22 22 2c 20 62 79 74 65 73 2c 0a 2d 09 09   \"", bytes,.-..
52f0: 20 20 20 20 22 5c 22 3a 20 6d 75 73 74 20 62 65      "\": must be
5300: 20 69 6e 74 65 67 65 72 20 6f 72 20 65 6e 64 3f   integer or end?
5310: 2d 69 6e 74 65 67 65 72 3f 22 2c 20 28 63 68 61  -integer?", (cha
5320: 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a 2b 09 09 20  r *) NULL);.+.. 
5330: 20 20 20 22 5c 22 3a 20 6d 75 73 74 20 62 65 20     "\": must be 
5340: 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f  end?[+-]integer?
5350: 22 2c 20 28 63 68 61 72 20 2a 29 20 4e 55 4c 4c  ", (char *) NULL
5360: 29 3b 0a 20 09 7d 0a 20 09 72 65 74 75 72 6e 20  );. .}. .return 
5370: 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20 20 20  TCL_ERROR;.     
5380: 7d 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 2f 63  }.Index: tests/c
5390: 6d 64 49 4c 2e 74 65 73 74 0a 3d 3d 3d 3d 3d 3d  mdIL.test.======
53a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
53b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
53c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
53d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43  =============.RC
53e0: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74  S file: /cvsroot
53f0: 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73 2f 63  /tcl/tcl/tests/c
5400: 6d 64 49 4c 2e 74 65 73 74 2c 76 0a 72 65 74 72  mdIL.test,v.retr
5410: 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20  ieving revision 
5420: 31 2e 32 33 0a 64 69 66 66 20 2d 75 20 2d 72 31  1.23.diff -u -r1
5430: 2e 32 33 20 63 6d 64 49 4c 2e 74 65 73 74 0a 2d  .23 cmdIL.test.-
5440: 2d 2d 20 74 65 73 74 73 2f 63 6d 64 49 4c 2e 74  -- tests/cmdIL.t
5450: 65 73 74 09 31 34 20 4f 63 74 20 32 30 30 34 20  est.14 Oct 2004 
5460: 31 37 3a 32 30 3a 31 31 20 2d 30 30 30 30 09 31  17:20:11 -0000.1
5470: 2e 32 33 0a 2b 2b 2b 20 74 65 73 74 73 2f 63 6d  .23.+++ tests/cm
5480: 64 49 4c 2e 74 65 73 74 09 32 39 20 41 70 72 20  dIL.test.29 Apr 
5490: 32 30 30 35 20 32 30 3a 33 30 3a 34 31 20 2d 30  2005 20:30:41 -0
54a0: 30 30 30 0a 40 40 20 2d 35 39 2c 37 20 2b 35 39  000.@@ -59,7 +59
54b0: 2c 37 20 40 40 0a 20 7d 20 7b 31 20 7b 22 2d 69  ,7 @@. } {1 {"-i
54c0: 6e 64 65 78 22 20 6f 70 74 69 6f 6e 20 6d 75 73  ndex" option mus
54d0: 74 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79  t be followed by
54e0: 20 6c 69 73 74 20 69 6e 64 65 78 7d 7d 0a 20 74   list index}}. t
54f0: 65 73 74 20 63 6d 64 49 4c 2d 31 2e 31 32 20 7b  est cmdIL-1.12 {
5500: 54 63 6c 5f 4c 73 6f 72 74 4f 62 6a 43 6d 64 20  Tcl_LsortObjCmd 
5510: 70 72 6f 63 65 64 75 72 65 2c 20 2d 69 6e 64 65  procedure, -inde
5520: 78 20 6f 70 74 69 6f 6e 7d 20 7b 0a 20 20 20 20  x option} {.    
5530: 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 6c 73   list [catch {ls
5540: 6f 72 74 20 2d 69 6e 64 65 78 20 66 6f 6f 20 7b  ort -index foo {
5550: 31 20 33 20 32 20 35 7d 7d 20 6d 73 67 5d 20 24  1 3 2 5}} msg] $
5560: 6d 73 67 0a 2d 7d 20 7b 31 20 7b 62 61 64 20 69  msg.-} {1 {bad i
5570: 6e 64 65 78 20 22 66 6f 6f 22 3a 20 6d 75 73 74  ndex "foo": must
5580: 20 62 65 20 69 6e 74 65 67 65 72 20 6f 72 20 65   be integer or e
5590: 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 7d 7d 0a 2b  nd?-integer?}}.+
55a0: 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64 65 78 20  } {1 {bad index 
55b0: 22 66 6f 6f 22 3a 20 6d 75 73 74 20 62 65 20 69  "foo": must be i
55c0: 6e 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67  nteger?[+-]integ
55d0: 65 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69  er? or end?[+-]i
55e0: 6e 74 65 67 65 72 3f 7d 7d 0a 20 74 65 73 74 20  nteger?}}. test 
55f0: 63 6d 64 49 4c 2d 31 2e 31 33 20 7b 54 63 6c 5f  cmdIL-1.13 {Tcl_
5600: 4c 73 6f 72 74 4f 62 6a 43 6d 64 20 70 72 6f 63  LsortObjCmd proc
5610: 65 64 75 72 65 2c 20 2d 69 6e 64 65 78 20 6f 70  edure, -index op
5620: 74 69 6f 6e 7d 20 7b 0a 20 20 20 20 20 6c 73 6f  tion} {.     lso
5630: 72 74 20 2d 69 6e 64 65 78 20 65 6e 64 20 2d 69  rt -index end -i
5640: 6e 74 65 67 65 72 20 7b 7b 32 20 32 35 7d 20 7b  nteger {{2 25} {
5650: 31 30 20 32 30 20 35 30 20 31 30 30 7d 20 7b 33  10 20 50 100} {3
5660: 20 31 36 20 34 32 7d 20 31 7d 0a 20 7d 20 7b 31   16 42} 1}. } {1
5670: 20 7b 32 20 32 35 7d 20 7b 33 20 31 36 20 34 32   {2 25} {3 16 42
5680: 7d 20 7b 31 30 20 32 30 20 35 30 20 31 30 30 7d  } {10 20 50 100}
5690: 7d 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 2f 63  }.Index: tests/c
56a0: 6f 6d 70 69 6c 65 2e 74 65 73 74 0a 3d 3d 3d 3d  ompile.test.====
56b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
56c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
56d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
56e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a  ===============.
56f0: 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f  RCS file: /cvsro
5700: 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73  ot/tcl/tcl/tests
5710: 2f 63 6f 6d 70 69 6c 65 2e 74 65 73 74 2c 76 0a  /compile.test,v.
5720: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73  retrieving revis
5730: 69 6f 6e 20 31 2e 33 36 0a 64 69 66 66 20 2d 75  ion 1.36.diff -u
5740: 20 2d 72 31 2e 33 36 20 63 6f 6d 70 69 6c 65 2e   -r1.36 compile.
5750: 74 65 73 74 0a 2d 2d 2d 20 74 65 73 74 73 2f 63  test.--- tests/c
5760: 6f 6d 70 69 6c 65 2e 74 65 73 74 09 31 34 20 4a  ompile.test.14 J
5770: 61 6e 20 32 30 30 35 20 31 35 3a 32 37 3a 35 33  an 2005 15:27:53
5780: 20 2d 30 30 30 30 09 31 2e 33 36 0a 2b 2b 2b 20   -0000.1.36.+++ 
5790: 74 65 73 74 73 2f 63 6f 6d 70 69 6c 65 2e 74 65  tests/compile.te
57a0: 73 74 09 32 39 20 41 70 72 20 32 30 30 35 20 32  st.29 Apr 2005 2
57b0: 30 3a 33 30 3a 34 31 20 2d 30 30 30 30 0a 40 40  0:30:41 -0000.@@
57c0: 20 2d 32 33 36 2c 31 35 20 2b 32 33 36 2c 31 35   -236,15 +236,15
57d0: 20 40 40 0a 20 09 6c 69 6e 64 65 78 20 61 20 62   @@. .lindex a b
57e0: 6f 67 75 73 0a 20 20 20 20 20 7d 0a 20 20 20 20  ogus.     }.    
57f0: 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 70 7d   list [catch {p}
5800: 20 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31   msg] $msg.-} {1
5810: 20 7b 62 61 64 20 69 6e 64 65 78 20 22 62 6f 67   {bad index "bog
5820: 75 73 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74  us": must be int
5830: 65 67 65 72 20 6f 72 20 65 6e 64 3f 2d 69 6e 74  eger or end?-int
5840: 65 67 65 72 3f 7d 7d 0a 2b 7d 20 7b 31 20 7b 62  eger?}}.+} {1 {b
5850: 61 64 20 69 6e 64 65 78 20 22 62 6f 67 75 73 22  ad index "bogus"
5860: 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65  : must be intege
5870: 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 6f  r?[+-]integer? o
5880: 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65  r end?[+-]intege
5890: 72 3f 7d 7d 0a 20 74 65 73 74 20 63 6f 6d 70 69  r?}}. test compi
58a0: 6c 65 2d 31 31 2e 32 20 7b 54 63 6c 5f 41 70 70  le-11.2 {Tcl_App
58b0: 65 6e 64 2a 3a 20 65 6e 73 75 72 65 20 54 63 6c  end*: ensure Tcl
58c0: 5f 52 65 73 65 74 52 65 73 75 6c 74 20 69 73 20  _ResetResult is 
58d0: 75 73 65 64 20 70 72 6f 70 65 72 6c 79 7d 20 7b  used properly} {
58e0: 0a 20 20 20 20 20 70 72 6f 63 20 70 20 7b 7d 20  .     proc p {} 
58f0: 7b 20 73 65 74 20 72 20 5b 6c 69 73 74 20 66 6f  { set r [list fo
5900: 6f 62 61 72 5d 20 3b 20 73 74 72 69 6e 67 20 69  obar] ; string i
5910: 6e 64 65 78 20 61 20 62 6f 67 75 73 20 7d 0a 20  ndex a bogus }. 
5920: 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20      list [catch 
5930: 7b 70 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d  {p} msg] $msg.-}
5940: 20 7b 31 20 7b 62 61 64 20 69 6e 64 65 78 20 22   {1 {bad index "
5950: 62 6f 67 75 73 22 3a 20 6d 75 73 74 20 62 65 20  bogus": must be 
5960: 69 6e 74 65 67 65 72 20 6f 72 20 65 6e 64 3f 2d  integer or end?-
5970: 69 6e 74 65 67 65 72 3f 7d 7d 0a 2b 7d 20 7b 31  integer?}}.+} {1
5980: 20 7b 62 61 64 20 69 6e 64 65 78 20 22 62 6f 67   {bad index "bog
5990: 75 73 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74  us": must be int
59a0: 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72  eger?[+-]integer
59b0: 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74  ? or end?[+-]int
59c0: 65 67 65 72 3f 7d 7d 0a 20 74 65 73 74 20 63 6f  eger?}}. test co
59d0: 6d 70 69 6c 65 2d 31 31 2e 33 20 7b 54 63 6c 5f  mpile-11.3 {Tcl_
59e0: 41 70 70 65 6e 64 2a 3a 20 65 6e 73 75 72 65 20  Append*: ensure 
59f0: 54 63 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 20  Tcl_ResetResult 
5a00: 69 73 20 75 73 65 64 20 70 72 6f 70 65 72 6c 79  is used properly
5a10: 7d 20 7b 0a 20 20 20 20 20 70 72 6f 63 20 70 20  } {.     proc p 
5a20: 7b 7d 20 7b 20 73 65 74 20 72 20 5b 6c 69 73 74  {} { set r [list
5a30: 20 66 6f 6f 62 61 72 5d 20 3b 20 73 74 72 69 6e   foobar] ; strin
5a40: 67 20 69 6e 64 65 78 20 61 20 30 39 20 7d 0a 20  g index a 09 }. 
5a50: 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20      list [catch 
5a60: 7b 70 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d  {p} msg] $msg.-}
5a70: 20 7b 31 20 7b 62 61 64 20 69 6e 64 65 78 20 22   {1 {bad index "
5a80: 30 39 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74  09": must be int
5a90: 65 67 65 72 20 6f 72 20 65 6e 64 3f 2d 69 6e 74  eger or end?-int
5aa0: 65 67 65 72 3f 20 28 6c 6f 6f 6b 73 20 6c 69 6b  eger? (looks lik
5ab0: 65 20 69 6e 76 61 6c 69 64 20 6f 63 74 61 6c 20  e invalid octal 
5ac0: 6e 75 6d 62 65 72 29 7d 7d 0a 2b 7d 20 7b 31 20  number)}}.+} {1 
5ad0: 7b 62 61 64 20 69 6e 64 65 78 20 22 30 39 22 3a  {bad index "09":
5ae0: 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65 72   must be integer
5af0: 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 6f 72  ?[+-]integer? or
5b00: 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72   end?[+-]integer
5b10: 3f 20 28 6c 6f 6f 6b 73 20 6c 69 6b 65 20 69 6e  ? (looks like in
5b20: 76 61 6c 69 64 20 6f 63 74 61 6c 20 6e 75 6d 62  valid octal numb
5b30: 65 72 29 7d 7d 0a 20 74 65 73 74 20 63 6f 6d 70  er)}}. test comp
5b40: 69 6c 65 2d 31 31 2e 34 20 7b 54 63 6c 5f 41 70  ile-11.4 {Tcl_Ap
5b50: 70 65 6e 64 2a 3a 20 65 6e 73 75 72 65 20 54 63  pend*: ensure Tc
5b60: 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 20 69 73  l_ResetResult is
5b70: 20 75 73 65 64 20 70 72 6f 70 65 72 6c 79 7d 20   used properly} 
5b80: 7b 0a 20 20 20 20 20 70 72 6f 63 20 70 20 7b 7d  {.     proc p {}
5b90: 20 7b 20 73 65 74 20 72 20 5b 6c 69 73 74 20 66   { set r [list f
5ba0: 6f 6f 62 61 72 5d 20 3b 20 61 72 72 61 79 20 73  oobar] ; array s
5bb0: 65 74 20 76 61 72 20 7b 6f 6e 65 20 74 77 6f 20  et var {one two 
5bc0: 6d 61 6e 79 7d 20 7d 0a 20 20 20 20 20 6c 69 73  many} }.     lis
5bd0: 74 20 5b 63 61 74 63 68 20 7b 70 7d 20 6d 73 67  t [catch {p} msg
5be0: 5d 20 24 6d 73 67 0a 49 6e 64 65 78 3a 20 74 65  ] $msg.Index: te
5bf0: 73 74 73 2f 6c 69 6e 64 65 78 2e 74 65 73 74 0a  sts/lindex.test.
5c00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5c10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5c20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5c30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
5c40: 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63  ===.RCS file: /c
5c50: 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74  vsroot/tcl/tcl/t
5c60: 65 73 74 73 2f 6c 69 6e 64 65 78 2e 74 65 73 74  ests/lindex.test
5c70: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65  ,v.retrieving re
5c80: 76 69 73 69 6f 6e 20 31 2e 31 31 0a 64 69 66 66  vision 1.11.diff
5c90: 20 2d 75 20 2d 72 31 2e 31 31 20 6c 69 6e 64 65   -u -r1.11 linde
5ca0: 78 2e 74 65 73 74 0a 2d 2d 2d 20 74 65 73 74 73  x.test.--- tests
5cb0: 2f 6c 69 6e 64 65 78 2e 74 65 73 74 09 31 34 20  /lindex.test.14 
5cc0: 4e 6f 76 20 32 30 30 33 20 32 30 3a 34 34 3a 34  Nov 2003 20:44:4
5cd0: 36 20 2d 30 30 30 30 09 31 2e 31 31 0a 2b 2b 2b  6 -0000.1.11.+++
5ce0: 20 74 65 73 74 73 2f 6c 69 6e 64 65 78 2e 74 65   tests/lindex.te
5cf0: 73 74 09 32 39 20 41 70 72 20 32 30 30 35 20 32  st.29 Apr 2005 2
5d00: 30 3a 33 30 3a 34 31 20 2d 30 30 30 30 0a 40 40  0:30:41 -0000.@@
5d10: 20 2d 34 39 2c 37 20 2b 34 39 2c 37 20 40 40 0a   -49,7 +49,7 @@.
5d20: 20 74 65 73 74 20 6c 69 6e 64 65 78 2d 32 2e 34   test lindex-2.4
5d30: 20 7b 6d 61 6c 66 6f 72 6d 65 64 20 69 6e 64 65   {malformed inde
5d40: 78 20 6c 69 73 74 7d 20 74 65 73 74 65 76 61 6c  x list} testeval
5d50: 65 78 20 7b 0a 20 20 20 20 20 73 65 74 20 78 20  ex {.     set x 
5d60: 5c 7b 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61  \{.     list [ca
5d70: 74 63 68 20 7b 20 74 65 73 74 65 76 61 6c 65 78  tch { testevalex
5d80: 20 7b 6c 69 6e 64 65 78 20 7b 61 20 62 20 63 7d   {lindex {a b c}
5d90: 20 24 78 7d 20 7d 20 72 65 73 75 6c 74 5d 20 24   $x} } result] $
5da0: 72 65 73 75 6c 74 0a 2d 7d 20 7b 31 20 62 61 64  result.-} {1 bad
5db0: 5c 20 69 6e 64 65 78 5c 20 5c 22 5c 7b 5c 22 3a  \ index\ \"\{\":
5dc0: 5c 20 6d 75 73 74 5c 20 62 65 5c 20 69 6e 74 65  \ must\ be\ inte
5dd0: 67 65 72 5c 20 6f 72 5c 20 65 6e 64 3f 2d 69 6e  ger\ or\ end?-in
5de0: 74 65 67 65 72 3f 7d 0a 2b 7d 20 7b 31 20 62 61  teger?}.+} {1 ba
5df0: 64 5c 20 69 6e 64 65 78 5c 20 5c 22 5c 7b 5c 22  d\ index\ \"\{\"
5e00: 3a 5c 20 6d 75 73 74 5c 20 62 65 5c 20 69 6e 74  :\ must\ be\ int
5e10: 65 67 65 72 3f 5c 5b 2b 2d 5c 5d 69 6e 74 65 67  eger?\[+-\]integ
5e20: 65 72 3f 5c 20 6f 72 5c 20 65 6e 64 3f 5c 5b 2b  er?\ or\ end?\[+
5e30: 2d 5c 5d 69 6e 74 65 67 65 72 3f 7d 0a 20 0a 20  -\]integer?}. . 
5e40: 23 20 49 6e 64 69 63 65 73 20 74 68 61 74 20 61  # Indices that a
5e50: 72 65 20 69 6e 74 65 67 65 72 73 20 6f 72 20 63  re integers or c
5e60: 6f 6e 76 65 72 74 69 62 6c 65 20 74 6f 20 69 6e  onvertible to in
5e70: 74 65 67 65 72 73 0a 20 0a 40 40 20 2d 37 36 2c  tegers. .@@ -76,
5e80: 31 32 20 2b 37 36 2c 31 32 20 40 40 0a 20 74 65  12 +76,12 @@. te
5e90: 73 74 20 6c 69 6e 64 65 78 2d 33 2e 35 20 7b 62  st lindex-3.5 {b
5ea0: 61 64 20 6f 63 74 61 6c 7d 20 74 65 73 74 65 76  ad octal} testev
5eb0: 61 6c 65 78 20 7b 0a 20 20 20 20 20 73 65 74 20  alex {.     set 
5ec0: 78 20 30 38 0a 20 20 20 20 20 6c 69 73 74 20 5b  x 08.     list [
5ed0: 63 61 74 63 68 20 7b 20 74 65 73 74 65 76 61 6c  catch { testeval
5ee0: 65 78 20 7b 6c 69 6e 64 65 78 20 7b 61 20 62 20  ex {lindex {a b 
5ef0: 63 7d 20 24 78 7d 20 7d 20 72 65 73 75 6c 74 5d  c} $x} } result]
5f00: 20 24 72 65 73 75 6c 74 0a 2d 7d 20 22 31 20 7b   $result.-} "1 {
5f10: 62 61 64 20 69 6e 64 65 78 20 5c 22 30 38 5c 22  bad index \"08\"
5f20: 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65  : must be intege
5f30: 72 20 6f 72 20 65 6e 64 3f 2d 69 6e 74 65 67 65  r or end?-intege
5f40: 72 3f 20 28 6c 6f 6f 6b 73 20 6c 69 6b 65 20 69  r? (looks like i
5f50: 6e 76 61 6c 69 64 20 6f 63 74 61 6c 20 6e 75 6d  nvalid octal num
5f60: 62 65 72 29 7d 22 0a 2b 7d 20 7b 31 20 7b 62 61  ber)}".+} {1 {ba
5f70: 64 20 69 6e 64 65 78 20 22 30 38 22 3a 20 6d 75  d index "08": mu
5f80: 73 74 20 62 65 20 69 6e 74 65 67 65 72 3f 5b 2b  st be integer?[+
5f90: 2d 5d 69 6e 74 65 67 65 72 3f 20 6f 72 20 65 6e  -]integer? or en
5fa0: 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 28  d?[+-]integer? (
5fb0: 6c 6f 6f 6b 73 20 6c 69 6b 65 20 69 6e 76 61 6c  looks like inval
5fc0: 69 64 20 6f 63 74 61 6c 20 6e 75 6d 62 65 72 29  id octal number)
5fd0: 7d 7d 0a 20 0a 20 74 65 73 74 20 6c 69 6e 64 65  }}. . test linde
5fe0: 78 2d 33 2e 36 20 7b 62 61 64 20 6f 63 74 61 6c  x-3.6 {bad octal
5ff0: 7d 20 74 65 73 74 65 76 61 6c 65 78 20 7b 0a 20  } testevalex {. 
6000: 20 20 20 20 73 65 74 20 78 20 2d 30 39 0a 20 20      set x -09.  
6010: 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b     list [catch {
6020: 20 74 65 73 74 65 76 61 6c 65 78 20 7b 6c 69 6e   testevalex {lin
6030: 64 65 78 20 7b 61 20 62 20 63 7d 20 24 78 7d 20  dex {a b c} $x} 
6040: 7d 20 72 65 73 75 6c 74 5d 20 24 72 65 73 75 6c  } result] $resul
6050: 74 0a 2d 7d 20 22 31 20 7b 62 61 64 20 69 6e 64  t.-} "1 {bad ind
6060: 65 78 20 5c 22 2d 30 39 5c 22 3a 20 6d 75 73 74  ex \"-09\": must
6070: 20 62 65 20 69 6e 74 65 67 65 72 20 6f 72 20 65   be integer or e
6080: 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 20 28 6c 6f  nd?-integer? (lo
6090: 6f 6b 73 20 6c 69 6b 65 20 69 6e 76 61 6c 69 64  oks like invalid
60a0: 20 6f 63 74 61 6c 20 6e 75 6d 62 65 72 29 7d 22   octal number)}"
60b0: 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64 65  .+} {1 {bad inde
60c0: 78 20 22 2d 30 39 22 3a 20 6d 75 73 74 20 62 65  x "-09": must be
60d0: 20 69 6e 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74   integer?[+-]int
60e0: 65 67 65 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d  eger? or end?[+-
60f0: 5d 69 6e 74 65 67 65 72 3f 20 28 6c 6f 6f 6b 73  ]integer? (looks
6100: 20 6c 69 6b 65 20 69 6e 76 61 6c 69 64 20 6f 63   like invalid oc
6110: 74 61 6c 20 6e 75 6d 62 65 72 29 7d 7d 0a 20 0a  tal number)}}. .
6120: 20 74 65 73 74 20 6c 69 6e 64 65 78 2d 33 2e 37   test lindex-3.7
6130: 20 7b 69 6e 64 65 78 65 73 20 64 6f 6e 27 74 20   {indexes don't 
6140: 73 68 69 6d 6d 65 72 20 77 69 64 65 20 69 6e 74  shimmer wide int
6150: 73 7d 20 7b 0a 20 20 20 20 20 73 65 74 20 78 20  s} {.     set x 
6160: 5b 65 78 70 72 20 7b 28 77 69 64 65 28 31 29 3c  [expr {(wide(1)<
6170: 3c 33 31 29 20 2d 20 32 7d 5d 0a 40 40 20 2d 31  <31) - 2}].@@ -1
6180: 31 38 2c 33 31 20 2b 31 31 38 2c 33 31 20 40 40  18,31 +118,31 @@
6190: 0a 20 74 65 73 74 20 6c 69 6e 64 65 78 2d 34 2e  . test lindex-4.
61a0: 36 20 7b 62 61 64 20 6f 63 74 61 6c 7d 20 74 65  6 {bad octal} te
61b0: 73 74 65 76 61 6c 65 78 20 7b 0a 20 20 20 20 20  stevalex {.     
61c0: 73 65 74 20 78 20 65 6e 64 2d 30 38 0a 20 20 20  set x end-08.   
61d0: 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 20    list [catch { 
61e0: 74 65 73 74 65 76 61 6c 65 78 20 7b 6c 69 6e 64  testevalex {lind
61f0: 65 78 20 7b 61 20 62 20 63 7d 20 24 78 7d 20 7d  ex {a b c} $x} }
6200: 20 72 65 73 75 6c 74 5d 20 24 72 65 73 75 6c 74   result] $result
6210: 0a 2d 7d 20 22 31 20 7b 62 61 64 20 69 6e 64 65  .-} "1 {bad inde
6220: 78 20 5c 22 65 6e 64 2d 30 38 5c 22 3a 20 6d 75  x \"end-08\": mu
6230: 73 74 20 62 65 20 69 6e 74 65 67 65 72 20 6f 72  st be integer or
6240: 20 65 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 20 28   end?-integer? (
6250: 6c 6f 6f 6b 73 20 6c 69 6b 65 20 69 6e 76 61 6c  looks like inval
6260: 69 64 20 6f 63 74 61 6c 20 6e 75 6d 62 65 72 29  id octal number)
6270: 7d 22 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 69 6e  }".+} {1 {bad in
6280: 64 65 78 20 22 65 6e 64 2d 30 38 22 3a 20 6d 75  dex "end-08": mu
6290: 73 74 20 62 65 20 69 6e 74 65 67 65 72 3f 5b 2b  st be integer?[+
62a0: 2d 5d 69 6e 74 65 67 65 72 3f 20 6f 72 20 65 6e  -]integer? or en
62b0: 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 28  d?[+-]integer? (
62c0: 6c 6f 6f 6b 73 20 6c 69 6b 65 20 69 6e 76 61 6c  looks like inval
62d0: 69 64 20 6f 63 74 61 6c 20 6e 75 6d 62 65 72 29  id octal number)
62e0: 7d 7d 0a 20 0a 20 74 65 73 74 20 6c 69 6e 64 65  }}. . test linde
62f0: 78 2d 34 2e 37 20 7b 62 61 64 20 6f 63 74 61 6c  x-4.7 {bad octal
6300: 7d 20 74 65 73 74 65 76 61 6c 65 78 20 7b 0a 20  } testevalex {. 
6310: 20 20 20 20 73 65 74 20 78 20 65 6e 64 2d 2d 30      set x end--0
6320: 39 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74  9.     list [cat
6330: 63 68 20 7b 20 74 65 73 74 65 76 61 6c 65 78 20  ch { testevalex 
6340: 7b 6c 69 6e 64 65 78 20 7b 61 20 62 20 63 7d 20  {lindex {a b c} 
6350: 24 78 7d 20 7d 20 72 65 73 75 6c 74 5d 20 24 72  $x} } result] $r
6360: 65 73 75 6c 74 0a 2d 7d 20 22 31 20 7b 62 61 64  esult.-} "1 {bad
6370: 20 69 6e 64 65 78 20 5c 22 65 6e 64 2d 2d 30 39   index \"end--09
6380: 5c 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65  \": must be inte
6390: 67 65 72 20 6f 72 20 65 6e 64 3f 2d 69 6e 74 65  ger or end?-inte
63a0: 67 65 72 3f 7d 22 0a 2b 7d 20 7b 31 20 7b 62 61  ger?}".+} {1 {ba
63b0: 64 20 69 6e 64 65 78 20 22 65 6e 64 2d 2d 30 39  d index "end--09
63c0: 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67  ": must be integ
63d0: 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20  er?[+-]integer? 
63e0: 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67  or end?[+-]integ
63f0: 65 72 3f 7d 7d 0a 20 0a 20 74 65 73 74 20 6c 69  er?}}. . test li
6400: 6e 64 65 78 2d 34 2e 38 20 7b 62 61 64 20 69 6e  ndex-4.8 {bad in
6410: 74 65 67 65 72 2c 20 6e 6f 74 20 6f 63 74 61 6c  teger, not octal
6420: 7d 20 74 65 73 74 65 76 61 6c 65 78 20 7b 0a 20  } testevalex {. 
6430: 20 20 20 20 73 65 74 20 78 20 65 6e 64 2d 30 61      set x end-0a
6440: 32 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74  2.     list [cat
6450: 63 68 20 7b 20 74 65 73 74 65 76 61 6c 65 78 20  ch { testevalex 
6460: 7b 6c 69 6e 64 65 78 20 7b 61 20 62 20 63 7d 20  {lindex {a b c} 
6470: 24 78 7d 20 7d 20 72 65 73 75 6c 74 5d 20 24 72  $x} } result] $r
6480: 65 73 75 6c 74 0a 2d 7d 20 22 31 20 7b 62 61 64  esult.-} "1 {bad
6490: 20 69 6e 64 65 78 20 5c 22 65 6e 64 2d 30 61 32   index \"end-0a2
64a0: 5c 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65  \": must be inte
64b0: 67 65 72 20 6f 72 20 65 6e 64 3f 2d 69 6e 74 65  ger or end?-inte
64c0: 67 65 72 3f 7d 22 0a 2b 7d 20 7b 31 20 7b 62 61  ger?}".+} {1 {ba
64d0: 64 20 69 6e 64 65 78 20 22 65 6e 64 2d 30 61 32  d index "end-0a2
64e0: 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67  ": must be integ
64f0: 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20  er?[+-]integer? 
6500: 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67  or end?[+-]integ
6510: 65 72 3f 7d 7d 0a 20 0a 2d 74 65 73 74 20 6c 69  er?}}. .-test li
6520: 6e 64 65 78 2d 34 2e 39 20 7b 69 6e 63 6f 6d 70  ndex-4.9 {incomp
6530: 6c 65 74 65 20 65 6e 64 7d 20 74 65 73 74 65 76  lete end} testev
6540: 61 6c 65 78 20 7b 0a 2d 20 20 20 20 73 65 74 20  alex {.-    set 
6550: 78 20 65 6e 0a 2b 74 65 73 74 20 6c 69 6e 64 65  x en.+test linde
6560: 78 2d 34 2e 39 20 7b 6f 62 73 6f 6c 65 74 65 20  x-4.9 {obsolete 
6570: 74 65 73 74 7d 20 74 65 73 74 65 76 61 6c 65 78  test} testevalex
6580: 20 7b 0a 2b 20 20 20 20 73 65 74 20 78 20 65 6e   {.+    set x en
6590: 64 0a 20 20 20 20 20 6c 69 73 74 20 5b 74 65 73  d.     list [tes
65a0: 74 65 76 61 6c 65 78 20 7b 6c 69 6e 64 65 78 20  tevalex {lindex 
65b0: 7b 61 20 62 20 63 7d 20 24 78 7d 5d 20 5b 74 65  {a b c} $x}] [te
65c0: 73 74 65 76 61 6c 65 78 20 7b 6c 69 6e 64 65 78  stevalex {lindex
65d0: 20 7b 61 20 62 20 63 7d 20 24 78 7d 5d 0a 20 7d   {a b c} $x}]. }
65e0: 20 7b 63 20 63 7d 0a 20 0a 20 74 65 73 74 20 6c   {c c}. . test l
65f0: 69 6e 64 65 78 2d 34 2e 31 30 20 7b 69 6e 63 6f  index-4.10 {inco
6600: 6d 70 6c 65 74 65 20 65 6e 64 2d 7d 20 74 65 73  mplete end-} tes
6610: 74 65 76 61 6c 65 78 20 7b 0a 20 20 20 20 20 73  tevalex {.     s
6620: 65 74 20 78 20 65 6e 64 2d 0a 20 20 20 20 20 6c  et x end-.     l
6630: 69 73 74 20 5b 63 61 74 63 68 20 7b 20 74 65 73  ist [catch { tes
6640: 74 65 76 61 6c 65 78 20 7b 6c 69 6e 64 65 78 20  tevalex {lindex 
6650: 7b 61 20 62 20 63 7d 20 24 78 7d 20 7d 20 72 65  {a b c} $x} } re
6660: 73 75 6c 74 5d 20 24 72 65 73 75 6c 74 0a 2d 7d  sult] $result.-}
6670: 20 22 31 20 7b 62 61 64 20 69 6e 64 65 78 20 5c   "1 {bad index \
6680: 22 65 6e 64 2d 5c 22 3a 20 6d 75 73 74 20 62 65  "end-\": must be
6690: 20 69 6e 74 65 67 65 72 20 6f 72 20 65 6e 64 3f   integer or end?
66a0: 2d 69 6e 74 65 67 65 72 3f 7d 22 0a 2b 7d 20 7b  -integer?}".+} {
66b0: 31 20 7b 62 61 64 20 69 6e 64 65 78 20 22 65 6e  1 {bad index "en
66c0: 64 2d 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74  d-": must be int
66d0: 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72  eger?[+-]integer
66e0: 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74  ? or end?[+-]int
66f0: 65 67 65 72 3f 7d 7d 0a 20 0a 20 74 65 73 74 20  eger?}}. . test 
6700: 6c 69 6e 64 65 78 2d 35 2e 31 20 7b 62 61 64 20  lindex-5.1 {bad 
6710: 73 65 63 6f 6e 64 20 69 6e 64 65 78 7d 20 74 65  second index} te
6720: 73 74 65 76 61 6c 65 78 20 7b 0a 20 20 20 20 20  stevalex {.     
6730: 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 20 74 65  list [catch { te
6740: 73 74 65 76 61 6c 65 78 20 7b 6c 69 6e 64 65 78  stevalex {lindex
6750: 20 7b 61 20 62 20 63 7d 20 30 20 30 61 32 7d 20   {a b c} 0 0a2} 
6760: 7d 20 72 65 73 75 6c 74 5d 20 24 72 65 73 75 6c  } result] $resul
6770: 74 0a 2d 7d 20 22 31 20 7b 62 61 64 20 69 6e 64  t.-} "1 {bad ind
6780: 65 78 20 5c 22 30 61 32 5c 22 3a 20 6d 75 73 74  ex \"0a2\": must
6790: 20 62 65 20 69 6e 74 65 67 65 72 20 6f 72 20 65   be integer or e
67a0: 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 7d 22 0a 2b  nd?-integer?}".+
67b0: 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64 65 78 20  } {1 {bad index 
67c0: 22 30 61 32 22 3a 20 6d 75 73 74 20 62 65 20 69  "0a2": must be i
67d0: 6e 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67  nteger?[+-]integ
67e0: 65 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69  er? or end?[+-]i
67f0: 6e 74 65 67 65 72 3f 7d 7d 0a 20 0a 20 74 65 73  nteger?}}. . tes
6800: 74 20 6c 69 6e 64 65 78 2d 35 2e 32 20 7b 67 6f  t lindex-5.2 {go
6810: 6f 64 20 73 65 63 6f 6e 64 20 69 6e 64 65 78 7d  od second index}
6820: 20 74 65 73 74 65 76 61 6c 65 78 20 7b 0a 20 20   testevalex {.  
6830: 20 20 20 74 65 73 74 65 76 61 6c 65 78 20 7b 6c     testevalex {l
6840: 69 6e 64 65 78 20 7b 7b 61 20 62 20 63 7d 20 7b  index {{a b c} {
6850: 64 20 65 20 66 7d 20 7b 67 20 68 20 69 7d 7d 20  d e f} {g h i}} 
6860: 31 20 32 7d 0a 40 40 20 2d 32 34 35 2c 37 20 2b  1 2}.@@ -245,7 +
6870: 32 34 35 2c 37 20 40 40 0a 20 74 65 73 74 20 6c  245,7 @@. test l
6880: 69 6e 64 65 78 2d 31 30 2e 34 20 7b 6d 61 6c 66  index-10.4 {malf
6890: 6f 72 6d 65 64 20 69 6e 64 65 78 20 6c 69 73 74  ormed index list
68a0: 7d 20 7b 0a 20 20 20 20 20 73 65 74 20 78 20 5c  } {.     set x \
68b0: 7b 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74  {.     list [cat
68c0: 63 68 20 7b 20 6c 69 6e 64 65 78 20 7b 61 20 62  ch { lindex {a b
68d0: 20 63 7d 20 24 78 20 7d 20 72 65 73 75 6c 74 5d   c} $x } result]
68e0: 20 24 72 65 73 75 6c 74 0a 2d 7d 20 7b 31 20 62   $result.-} {1 b
68f0: 61 64 5c 20 69 6e 64 65 78 5c 20 5c 22 5c 7b 5c  ad\ index\ \"\{\
6900: 22 3a 5c 20 6d 75 73 74 5c 20 62 65 5c 20 69 6e  ":\ must\ be\ in
6910: 74 65 67 65 72 5c 20 6f 72 5c 20 65 6e 64 3f 2d  teger\ or\ end?-
6920: 69 6e 74 65 67 65 72 3f 7d 0a 2b 7d 20 7b 31 20  integer?}.+} {1 
6930: 62 61 64 5c 20 69 6e 64 65 78 5c 20 5c 22 5c 7b  bad\ index\ \"\{
6940: 5c 22 3a 5c 20 6d 75 73 74 5c 20 62 65 5c 20 69  \":\ must\ be\ i
6950: 6e 74 65 67 65 72 3f 5c 5b 2b 2d 5c 5d 69 6e 74  nteger?\[+-\]int
6960: 65 67 65 72 3f 5c 20 6f 72 5c 20 65 6e 64 3f 5c  eger?\ or\ end?\
6970: 5b 2b 2d 5c 5d 69 6e 74 65 67 65 72 3f 7d 0a 20  [+-\]integer?}. 
6980: 0a 20 23 20 49 6e 64 69 63 65 73 20 74 68 61 74  . # Indices that
6990: 20 61 72 65 20 69 6e 74 65 67 65 72 73 20 6f 72   are integers or
69a0: 20 63 6f 6e 76 65 72 74 69 62 6c 65 20 74 6f 20   convertible to 
69b0: 69 6e 74 65 67 65 72 73 0a 20 0a 40 40 20 2d 32  integers. .@@ -2
69c0: 38 34 2c 31 32 20 2b 32 38 34 2c 31 32 20 40 40  84,12 +284,12 @@
69d0: 0a 20 74 65 73 74 20 6c 69 6e 64 65 78 2d 31 31  . test lindex-11
69e0: 2e 35 20 7b 62 61 64 20 6f 63 74 61 6c 7d 20 7b  .5 {bad octal} {
69f0: 0a 20 20 20 20 20 73 65 74 20 78 20 30 38 0a 20  .     set x 08. 
6a00: 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20      list [catch 
6a10: 7b 20 6c 69 6e 64 65 78 20 7b 61 20 62 20 63 7d  { lindex {a b c}
6a20: 20 24 78 20 7d 20 72 65 73 75 6c 74 5d 20 24 72   $x } result] $r
6a30: 65 73 75 6c 74 0a 2d 7d 20 22 31 20 7b 62 61 64  esult.-} "1 {bad
6a40: 20 69 6e 64 65 78 20 5c 22 30 38 5c 22 3a 20 6d   index \"08\": m
6a50: 75 73 74 20 62 65 20 69 6e 74 65 67 65 72 20 6f  ust be integer o
6a60: 72 20 65 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 20  r end?-integer? 
6a70: 28 6c 6f 6f 6b 73 20 6c 69 6b 65 20 69 6e 76 61  (looks like inva
6a80: 6c 69 64 20 6f 63 74 61 6c 20 6e 75 6d 62 65 72  lid octal number
6a90: 29 7d 22 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 69  )}".+} {1 {bad i
6aa0: 6e 64 65 78 20 22 30 38 22 3a 20 6d 75 73 74 20  ndex "08": must 
6ab0: 62 65 20 69 6e 74 65 67 65 72 3f 5b 2b 2d 5d 69  be integer?[+-]i
6ac0: 6e 74 65 67 65 72 3f 20 6f 72 20 65 6e 64 3f 5b  nteger? or end?[
6ad0: 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 28 6c 6f 6f  +-]integer? (loo
6ae0: 6b 73 20 6c 69 6b 65 20 69 6e 76 61 6c 69 64 20  ks like invalid 
6af0: 6f 63 74 61 6c 20 6e 75 6d 62 65 72 29 7d 7d 0a  octal number)}}.
6b00: 20 0a 20 74 65 73 74 20 6c 69 6e 64 65 78 2d 31   . test lindex-1
6b10: 31 2e 36 20 7b 62 61 64 20 6f 63 74 61 6c 7d 20  1.6 {bad octal} 
6b20: 7b 0a 20 20 20 20 20 73 65 74 20 78 20 2d 30 39  {.     set x -09
6b30: 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63  .     list [catc
6b40: 68 20 7b 20 6c 69 6e 64 65 78 20 7b 61 20 62 20  h { lindex {a b 
6b50: 63 7d 20 24 78 20 7d 20 72 65 73 75 6c 74 5d 20  c} $x } result] 
6b60: 24 72 65 73 75 6c 74 0a 2d 7d 20 22 31 20 7b 62  $result.-} "1 {b
6b70: 61 64 20 69 6e 64 65 78 20 5c 22 2d 30 39 5c 22  ad index \"-09\"
6b80: 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65  : must be intege
6b90: 72 20 6f 72 20 65 6e 64 3f 2d 69 6e 74 65 67 65  r or end?-intege
6ba0: 72 3f 20 28 6c 6f 6f 6b 73 20 6c 69 6b 65 20 69  r? (looks like i
6bb0: 6e 76 61 6c 69 64 20 6f 63 74 61 6c 20 6e 75 6d  nvalid octal num
6bc0: 62 65 72 29 7d 22 0a 2b 7d 20 7b 31 20 7b 62 61  ber)}".+} {1 {ba
6bd0: 64 20 69 6e 64 65 78 20 22 2d 30 39 22 3a 20 6d  d index "-09": m
6be0: 75 73 74 20 62 65 20 69 6e 74 65 67 65 72 3f 5b  ust be integer?[
6bf0: 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 6f 72 20 65  +-]integer? or e
6c00: 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20  nd?[+-]integer? 
6c10: 28 6c 6f 6f 6b 73 20 6c 69 6b 65 20 69 6e 76 61  (looks like inva
6c20: 6c 69 64 20 6f 63 74 61 6c 20 6e 75 6d 62 65 72  lid octal number
6c30: 29 7d 7d 0a 20 0a 20 23 20 49 6e 64 69 63 65 73  )}}. . # Indices
6c40: 20 72 65 6c 61 74 69 76 65 20 74 6f 20 65 6e 64   relative to end
6c50: 0a 20 0a 40 40 20 2d 33 33 36 2c 32 30 20 2b 33  . .@@ -336,20 +3
6c60: 33 36 2c 32 30 20 40 40 0a 20 74 65 73 74 20 6c  36,20 @@. test l
6c70: 69 6e 64 65 78 2d 31 32 2e 36 20 7b 62 61 64 20  index-12.6 {bad 
6c80: 6f 63 74 61 6c 7d 20 7b 0a 20 20 20 20 20 73 65  octal} {.     se
6c90: 74 20 78 20 65 6e 64 2d 30 38 0a 20 20 20 20 20  t x end-08.     
6ca0: 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 20 6c 69  list [catch { li
6cb0: 6e 64 65 78 20 7b 61 20 62 20 63 7d 20 24 78 20  ndex {a b c} $x 
6cc0: 7d 20 72 65 73 75 6c 74 5d 20 24 72 65 73 75 6c  } result] $resul
6cd0: 74 0a 2d 7d 20 22 31 20 7b 62 61 64 20 69 6e 64  t.-} "1 {bad ind
6ce0: 65 78 20 5c 22 65 6e 64 2d 30 38 5c 22 3a 20 6d  ex \"end-08\": m
6cf0: 75 73 74 20 62 65 20 69 6e 74 65 67 65 72 20 6f  ust be integer o
6d00: 72 20 65 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 20  r end?-integer? 
6d10: 28 6c 6f 6f 6b 73 20 6c 69 6b 65 20 69 6e 76 61  (looks like inva
6d20: 6c 69 64 20 6f 63 74 61 6c 20 6e 75 6d 62 65 72  lid octal number
6d30: 29 7d 22 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 69  )}".+} {1 {bad i
6d40: 6e 64 65 78 20 22 65 6e 64 2d 30 38 22 3a 20 6d  ndex "end-08": m
6d50: 75 73 74 20 62 65 20 69 6e 74 65 67 65 72 3f 5b  ust be integer?[
6d60: 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 6f 72 20 65  +-]integer? or e
6d70: 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20  nd?[+-]integer? 
6d80: 28 6c 6f 6f 6b 73 20 6c 69 6b 65 20 69 6e 76 61  (looks like inva
6d90: 6c 69 64 20 6f 63 74 61 6c 20 6e 75 6d 62 65 72  lid octal number
6da0: 29 7d 7d 0a 20 0a 20 74 65 73 74 20 6c 69 6e 64  )}}. . test lind
6db0: 65 78 2d 31 32 2e 37 20 7b 62 61 64 20 6f 63 74  ex-12.7 {bad oct
6dc0: 61 6c 7d 20 7b 0a 20 20 20 20 20 73 65 74 20 78  al} {.     set x
6dd0: 20 65 6e 64 2d 2d 30 39 0a 20 20 20 20 20 6c 69   end--09.     li
6de0: 73 74 20 5b 63 61 74 63 68 20 7b 20 6c 69 6e 64  st [catch { lind
6df0: 65 78 20 7b 61 20 62 20 63 7d 20 24 78 20 7d 20  ex {a b c} $x } 
6e00: 72 65 73 75 6c 74 5d 20 24 72 65 73 75 6c 74 0a  result] $result.
6e10: 2d 7d 20 22 31 20 7b 62 61 64 20 69 6e 64 65 78  -} "1 {bad index
6e20: 20 5c 22 65 6e 64 2d 2d 30 39 5c 22 3a 20 6d 75   \"end--09\": mu
6e30: 73 74 20 62 65 20 69 6e 74 65 67 65 72 20 6f 72  st be integer or
6e40: 20 65 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 7d 22   end?-integer?}"
6e50: 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64 65  .+} {1 {bad inde
6e60: 78 20 22 65 6e 64 2d 2d 30 39 22 3a 20 6d 75 73  x "end--09": mus
6e70: 74 20 62 65 20 69 6e 74 65 67 65 72 3f 5b 2b 2d  t be integer?[+-
6e80: 5d 69 6e 74 65 67 65 72 3f 20 6f 72 20 65 6e 64  ]integer? or end
6e90: 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 7d 7d 0a  ?[+-]integer?}}.
6ea0: 20 0a 20 74 65 73 74 20 6c 69 6e 64 65 78 2d 31   . test lindex-1
6eb0: 32 2e 38 20 7b 62 61 64 20 69 6e 74 65 67 65 72  2.8 {bad integer
6ec0: 2c 20 6e 6f 74 20 6f 63 74 61 6c 7d 20 7b 0a 20  , not octal} {. 
6ed0: 20 20 20 20 73 65 74 20 78 20 65 6e 64 2d 30 61      set x end-0a
6ee0: 32 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74  2.     list [cat
6ef0: 63 68 20 7b 20 6c 69 6e 64 65 78 20 7b 61 20 62  ch { lindex {a b
6f00: 20 63 7d 20 24 78 20 7d 20 72 65 73 75 6c 74 5d   c} $x } result]
6f10: 20 24 72 65 73 75 6c 74 0a 2d 7d 20 22 31 20 7b   $result.-} "1 {
6f20: 62 61 64 20 69 6e 64 65 78 20 5c 22 65 6e 64 2d  bad index \"end-
6f30: 30 61 32 5c 22 3a 20 6d 75 73 74 20 62 65 20 69  0a2\": must be i
6f40: 6e 74 65 67 65 72 20 6f 72 20 65 6e 64 3f 2d 69  nteger or end?-i
6f50: 6e 74 65 67 65 72 3f 7d 22 0a 2b 7d 20 7b 31 20  nteger?}".+} {1 
6f60: 7b 62 61 64 20 69 6e 64 65 78 20 22 65 6e 64 2d  {bad index "end-
6f70: 30 61 32 22 3a 20 6d 75 73 74 20 62 65 20 69 6e  0a2": must be in
6f80: 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65  teger?[+-]intege
6f90: 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e  r? or end?[+-]in
6fa0: 74 65 67 65 72 3f 7d 7d 0a 20 0a 2d 74 65 73 74  teger?}}. .-test
6fb0: 20 6c 69 6e 64 65 78 2d 31 32 2e 39 20 7b 69 6e   lindex-12.9 {in
6fc0: 63 6f 6d 70 6c 65 74 65 20 65 6e 64 7d 20 7b 0a  complete end} {.
6fd0: 2d 20 20 20 20 73 65 74 20 78 20 65 6e 0a 2b 74  -    set x en.+t
6fe0: 65 73 74 20 6c 69 6e 64 65 78 2d 31 32 2e 39 20  est lindex-12.9 
6ff0: 7b 6f 62 73 6f 6c 65 74 65 20 74 65 73 74 7d 20  {obsolete test} 
7000: 7b 0a 2b 20 20 20 20 73 65 74 20 78 20 65 6e 64  {.+    set x end
7010: 0a 20 20 20 20 20 63 61 74 63 68 20 7b 0a 20 09  .     catch {. .
7020: 6c 69 73 74 20 5b 6c 69 6e 64 65 78 20 7b 61 20  list [lindex {a 
7030: 62 20 63 7d 20 24 78 5d 20 5b 6c 69 6e 64 65 78  b c} $x] [lindex
7040: 20 7b 61 20 62 20 63 7d 20 24 78 5d 0a 20 20 20   {a b c} $x].   
7050: 20 20 7d 20 72 65 73 75 6c 74 0a 40 40 20 2d 33    } result.@@ -3
7060: 35 39 2c 31 31 20 2b 33 35 39 2c 31 31 20 40 40  59,11 +359,11 @@
7070: 0a 20 74 65 73 74 20 6c 69 6e 64 65 78 2d 31 32  . test lindex-12
7080: 2e 31 30 20 7b 69 6e 63 6f 6d 70 6c 65 74 65 20  .10 {incomplete 
7090: 65 6e 64 2d 7d 20 7b 0a 20 20 20 20 20 73 65 74  end-} {.     set
70a0: 20 78 20 65 6e 64 2d 0a 20 20 20 20 20 6c 69 73   x end-.     lis
70b0: 74 20 5b 63 61 74 63 68 20 7b 20 6c 69 6e 64 65  t [catch { linde
70c0: 78 20 7b 61 20 62 20 63 7d 20 24 78 20 7d 20 72  x {a b c} $x } r
70d0: 65 73 75 6c 74 5d 20 24 72 65 73 75 6c 74 0a 2d  esult] $result.-
70e0: 7d 20 22 31 20 7b 62 61 64 20 69 6e 64 65 78 20  } "1 {bad index 
70f0: 5c 22 65 6e 64 2d 5c 22 3a 20 6d 75 73 74 20 62  \"end-\": must b
7100: 65 20 69 6e 74 65 67 65 72 20 6f 72 20 65 6e 64  e integer or end
7110: 3f 2d 69 6e 74 65 67 65 72 3f 7d 22 0a 2b 7d 20  ?-integer?}".+} 
7120: 7b 31 20 7b 62 61 64 20 69 6e 64 65 78 20 22 65  {1 {bad index "e
7130: 6e 64 2d 22 3a 20 6d 75 73 74 20 62 65 20 69 6e  nd-": must be in
7140: 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65  teger?[+-]intege
7150: 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e  r? or end?[+-]in
7160: 74 65 67 65 72 3f 7d 7d 0a 20 0a 20 74 65 73 74  teger?}}. . test
7170: 20 6c 69 6e 64 65 78 2d 31 33 2e 31 20 7b 62 61   lindex-13.1 {ba
7180: 64 20 73 65 63 6f 6e 64 20 69 6e 64 65 78 7d 20  d second index} 
7190: 7b 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74  {.     list [cat
71a0: 63 68 20 7b 20 6c 69 6e 64 65 78 20 7b 61 20 62  ch { lindex {a b
71b0: 20 63 7d 20 30 20 30 61 32 20 7d 20 72 65 73 75   c} 0 0a2 } resu
71c0: 6c 74 5d 20 24 72 65 73 75 6c 74 0a 2d 7d 20 22  lt] $result.-} "
71d0: 31 20 7b 62 61 64 20 69 6e 64 65 78 20 5c 22 30  1 {bad index \"0
71e0: 61 32 5c 22 3a 20 6d 75 73 74 20 62 65 20 69 6e  a2\": must be in
71f0: 74 65 67 65 72 20 6f 72 20 65 6e 64 3f 2d 69 6e  teger or end?-in
7200: 74 65 67 65 72 3f 7d 22 0a 2b 7d 20 7b 31 20 7b  teger?}".+} {1 {
7210: 62 61 64 20 69 6e 64 65 78 20 22 30 61 32 22 3a  bad index "0a2":
7220: 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65 72   must be integer
7230: 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 6f 72  ?[+-]integer? or
7240: 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72   end?[+-]integer
7250: 3f 7d 7d 0a 20 0a 20 74 65 73 74 20 6c 69 6e 64  ?}}. . test lind
7260: 65 78 2d 31 33 2e 32 20 7b 67 6f 6f 64 20 73 65  ex-13.2 {good se
7270: 63 6f 6e 64 20 69 6e 64 65 78 7d 20 7b 0a 20 20  cond index} {.  
7280: 20 20 20 63 61 74 63 68 20 7b 0a 49 6e 64 65 78     catch {.Index
7290: 3a 20 74 65 73 74 73 2f 6c 69 6e 73 65 72 74 2e  : tests/linsert.
72a0: 74 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  test.===========
72b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
72c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
72d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
72e0: 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c  ========.RCS fil
72f0: 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f  e: /cvsroot/tcl/
7300: 74 63 6c 2f 74 65 73 74 73 2f 6c 69 6e 73 65 72  tcl/tests/linser
7310: 74 2e 74 65 73 74 2c 76 0a 72 65 74 72 69 65 76  t.test,v.retriev
7320: 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 38  ing revision 1.8
7330: 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 38 20 6c  .diff -u -r1.8 l
7340: 69 6e 73 65 72 74 2e 74 65 73 74 0a 2d 2d 2d 20  insert.test.--- 
7350: 74 65 73 74 73 2f 6c 69 6e 73 65 72 74 2e 74 65  tests/linsert.te
7360: 73 74 09 31 30 20 41 70 72 20 32 30 30 30 20 31  st.10 Apr 2000 1
7370: 37 3a 31 39 3a 30 31 20 2d 30 30 30 30 09 31 2e  7:19:01 -0000.1.
7380: 38 0a 2b 2b 2b 20 74 65 73 74 73 2f 6c 69 6e 73  8.+++ tests/lins
7390: 65 72 74 2e 74 65 73 74 09 32 39 20 41 70 72 20  ert.test.29 Apr 
73a0: 32 30 30 35 20 32 30 3a 33 30 3a 34 31 20 2d 30  2005 20:30:41 -0
73b0: 30 30 30 0a 40 40 20 2d 39 30 2c 37 20 2b 39 30  000.@@ -90,7 +90
73c0: 2c 37 20 40 40 0a 20 7d 20 7b 31 20 7b 77 72 6f  ,7 @@. } {1 {wro
73d0: 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c  ng # args: shoul
73e0: 64 20 62 65 20 22 6c 69 6e 73 65 72 74 20 6c 69  d be "linsert li
73f0: 73 74 20 69 6e 64 65 78 20 65 6c 65 6d 65 6e 74  st index element
7400: 20 3f 65 6c 65 6d 65 6e 74 20 2e 2e 2e 3f 22 7d   ?element ...?"}
7410: 7d 0a 20 74 65 73 74 20 6c 69 6e 73 65 72 74 2d  }. test linsert-
7420: 32 2e 33 20 7b 6c 69 6e 73 65 72 74 20 65 72 72  2.3 {linsert err
7430: 6f 72 73 7d 20 7b 0a 20 20 20 20 20 6c 69 73 74  ors} {.     list
7440: 20 5b 63 61 74 63 68 20 7b 6c 69 6e 73 65 72 74   [catch {linsert
7450: 20 61 20 31 32 78 20 32 7d 20 6d 73 67 5d 20 24   a 12x 2} msg] $
7460: 6d 73 67 0a 2d 7d 20 7b 31 20 7b 62 61 64 20 69  msg.-} {1 {bad i
7470: 6e 64 65 78 20 22 31 32 78 22 3a 20 6d 75 73 74  ndex "12x": must
7480: 20 62 65 20 69 6e 74 65 67 65 72 20 6f 72 20 65   be integer or e
7490: 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 7d 7d 0a 2b  nd?-integer?}}.+
74a0: 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64 65 78 20  } {1 {bad index 
74b0: 22 31 32 78 22 3a 20 6d 75 73 74 20 62 65 20 69  "12x": must be i
74c0: 6e 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67  nteger?[+-]integ
74d0: 65 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69  er? or end?[+-]i
74e0: 6e 74 65 67 65 72 3f 7d 7d 0a 20 74 65 73 74 20  nteger?}}. test 
74f0: 6c 69 6e 73 65 72 74 2d 32 2e 34 20 7b 6c 69 6e  linsert-2.4 {lin
7500: 73 65 72 74 20 65 72 72 6f 72 73 7d 20 7b 0a 20  sert errors} {. 
7510: 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20      list [catch 
7520: 7b 6c 69 6e 73 65 72 74 20 5c 7b 20 31 32 20 32  {linsert \{ 12 2
7530: 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 20 7d 20 7b  } msg] $msg. } {
7540: 31 20 7b 75 6e 6d 61 74 63 68 65 64 20 6f 70 65  1 {unmatched ope
7550: 6e 20 62 72 61 63 65 20 69 6e 20 6c 69 73 74 7d  n brace in list}
7560: 7d 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 2f 6c  }.Index: tests/l
7570: 72 61 6e 67 65 2e 74 65 73 74 0a 3d 3d 3d 3d 3d  range.test.=====
7580: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
7590: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
75a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
75b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52  ==============.R
75c0: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f  CS file: /cvsroo
75d0: 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73 2f  t/tcl/tcl/tests/
75e0: 6c 72 61 6e 67 65 2e 74 65 73 74 2c 76 0a 72 65  lrange.test,v.re
75f0: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f  trieving revisio
7600: 6e 20 31 2e 37 0a 64 69 66 66 20 2d 75 20 2d 72  n 1.7.diff -u -r
7610: 31 2e 37 20 6c 72 61 6e 67 65 2e 74 65 73 74 0a  1.7 lrange.test.
7620: 2d 2d 2d 20 74 65 73 74 73 2f 6c 72 61 6e 67 65  --- tests/lrange
7630: 2e 74 65 73 74 09 31 30 20 41 70 72 20 32 30 30  .test.10 Apr 200
7640: 30 20 31 37 3a 31 39 3a 30 31 20 2d 30 30 30 30  0 17:19:01 -0000
7650: 09 31 2e 37 0a 2b 2b 2b 20 74 65 73 74 73 2f 6c  .1.7.+++ tests/l
7660: 72 61 6e 67 65 2e 74 65 73 74 09 32 39 20 41 70  range.test.29 Ap
7670: 72 20 32 30 30 35 20 32 30 3a 33 30 3a 34 31 20  r 2005 20:30:41 
7680: 2d 30 30 30 30 0a 40 40 20 2d 34 33 2c 37 20 2b  -0000.@@ -43,7 +
7690: 34 33 2c 37 20 40 40 0a 20 20 20 20 20 6c 72 61  43,7 @@.     lra
76a0: 6e 67 65 20 7b 61 20 62 20 63 20 64 20 65 7d 20  nge {a b c d e} 
76b0: 2d 32 20 2d 31 0a 20 7d 20 7b 7d 0a 20 74 65 73  -2 -1. } {}. tes
76c0: 74 20 6c 72 61 6e 67 65 2d 31 2e 39 20 7b 72 61  t lrange-1.9 {ra
76d0: 6e 67 65 20 6f 66 20 6c 69 73 74 20 65 6c 65 6d  nge of list elem
76e0: 65 6e 74 73 7d 20 7b 0a 2d 20 20 20 20 6c 72 61  ents} {.-    lra
76f0: 6e 67 65 20 7b 61 20 62 20 63 20 64 20 65 7d 20  nge {a b c d e} 
7700: 2d 32 20 65 0a 2b 20 20 20 20 6c 72 61 6e 67 65  -2 e.+    lrange
7710: 20 7b 61 20 62 20 63 20 64 20 65 7d 20 2d 32 20   {a b c d e} -2 
7720: 65 6e 64 0a 20 7d 20 7b 61 20 62 20 63 20 64 20  end. } {a b c d 
7730: 65 7d 0a 20 74 65 73 74 20 6c 72 61 6e 67 65 2d  e}. test lrange-
7740: 31 2e 31 30 20 7b 72 61 6e 67 65 20 6f 66 20 6c  1.10 {range of l
7750: 69 73 74 20 65 6c 65 6d 65 6e 74 73 7d 20 7b 0a  ist elements} {.
7760: 20 20 20 20 20 6c 72 61 6e 67 65 20 22 61 20 62       lrange "a b
7770: 5c 7b 63 20 64 22 20 31 20 32 0a 40 40 20 2d 35  \{c d" 1 2.@@ -5
7780: 35 2c 37 20 2b 35 35 2c 37 20 40 40 0a 20 20 20  5,7 +55,7 @@.   
7790: 20 20 6c 72 61 6e 67 65 20 22 61 20 62 20 63 20    lrange "a b c 
77a0: 64 22 20 65 6e 64 20 31 30 30 30 30 30 0a 20 7d  d" end 100000. }
77b0: 20 64 0a 20 74 65 73 74 20 6c 72 61 6e 67 65 2d   d. test lrange-
77c0: 31 2e 31 33 20 7b 72 61 6e 67 65 20 6f 66 20 6c  1.13 {range of l
77d0: 69 73 74 20 65 6c 65 6d 65 6e 74 73 7d 20 7b 0a  ist elements} {.
77e0: 2d 20 20 20 20 6c 72 61 6e 67 65 20 22 61 20 62  -    lrange "a b
77f0: 20 63 20 64 22 20 65 20 33 0a 2b 20 20 20 20 6c   c d" e 3.+    l
7800: 72 61 6e 67 65 20 22 61 20 62 20 63 20 64 22 20  range "a b c d" 
7810: 65 6e 64 20 33 0a 20 7d 20 64 0a 20 74 65 73 74  end 3. } d. test
7820: 20 6c 72 61 6e 67 65 2d 31 2e 31 34 20 7b 72 61   lrange-1.14 {ra
7830: 6e 67 65 20 6f 66 20 6c 69 73 74 20 65 6c 65 6d  nge of list elem
7840: 65 6e 74 73 7d 20 7b 0a 20 20 20 20 20 6c 72 61  ents} {.     lra
7850: 6e 67 65 20 22 61 20 62 20 63 20 64 22 20 65 6e  nge "a b c d" en
7860: 64 20 32 0a 40 40 20 2d 37 35 2c 31 30 20 2b 37  d 2.@@ -75,10 +7
7870: 35 2c 31 30 20 40 40 0a 20 7d 20 7b 31 20 7b 77  5,10 @@. } {1 {w
7880: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f  rong # args: sho
7890: 75 6c 64 20 62 65 20 22 6c 72 61 6e 67 65 20 6c  uld be "lrange l
78a0: 69 73 74 20 66 69 72 73 74 20 6c 61 73 74 22 7d  ist first last"}
78b0: 7d 0a 20 74 65 73 74 20 6c 72 61 6e 67 65 2d 32  }. test lrange-2
78c0: 2e 33 20 7b 65 72 72 6f 72 20 63 6f 6e 64 69 74  .3 {error condit
78d0: 69 6f 6e 73 7d 20 7b 0a 20 20 20 20 20 6c 69 73  ions} {.     lis
78e0: 74 20 5b 63 61 74 63 68 20 7b 6c 72 61 6e 67 65  t [catch {lrange
78f0: 20 61 20 62 20 36 7d 20 6d 73 67 5d 20 24 6d 73   a b 6} msg] $ms
7900: 67 0a 2d 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64  g.-} {1 {bad ind
7910: 65 78 20 22 62 22 3a 20 6d 75 73 74 20 62 65 20  ex "b": must be 
7920: 69 6e 74 65 67 65 72 20 6f 72 20 65 6e 64 3f 2d  integer or end?-
7930: 69 6e 74 65 67 65 72 3f 7d 7d 0a 2b 7d 20 7b 31  integer?}}.+} {1
7940: 20 7b 62 61 64 20 69 6e 64 65 78 20 22 62 22 3a   {bad index "b":
7950: 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65 72   must be integer
7960: 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 6f 72  ?[+-]integer? or
7970: 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72   end?[+-]integer
7980: 3f 7d 7d 0a 20 74 65 73 74 20 6c 72 61 6e 67 65  ?}}. test lrange
7990: 2d 32 2e 34 20 7b 65 72 72 6f 72 20 63 6f 6e 64  -2.4 {error cond
79a0: 69 74 69 6f 6e 73 7d 20 7b 0a 20 20 20 20 20 6c  itions} {.     l
79b0: 69 73 74 20 5b 63 61 74 63 68 20 7b 6c 72 61 6e  ist [catch {lran
79c0: 67 65 20 61 20 30 20 65 6e 69 67 6d 61 7d 20 6d  ge a 0 enigma} m
79d0: 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b  sg] $msg.-} {1 {
79e0: 62 61 64 20 69 6e 64 65 78 20 22 65 6e 69 67 6d  bad index "enigm
79f0: 61 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65  a": must be inte
7a00: 67 65 72 20 6f 72 20 65 6e 64 3f 2d 69 6e 74 65  ger or end?-inte
7a10: 67 65 72 3f 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61  ger?}}.+} {1 {ba
7a20: 64 20 69 6e 64 65 78 20 22 65 6e 69 67 6d 61 22  d index "enigma"
7a30: 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65  : must be intege
7a40: 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 6f  r?[+-]integer? o
7a50: 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65  r end?[+-]intege
7a60: 72 3f 7d 7d 0a 20 74 65 73 74 20 6c 72 61 6e 67  r?}}. test lrang
7a70: 65 2d 32 2e 35 20 7b 65 72 72 6f 72 20 63 6f 6e  e-2.5 {error con
7a80: 64 69 74 69 6f 6e 73 7d 20 7b 0a 20 20 20 20 20  ditions} {.     
7a90: 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 6c 72 61  list [catch {lra
7aa0: 6e 67 65 20 22 61 20 5c 7b 62 20 63 22 20 33 20  nge "a \{b c" 3 
7ab0: 34 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 20 7d 20  4} msg] $msg. } 
7ac0: 7b 31 20 7b 75 6e 6d 61 74 63 68 65 64 20 6f 70  {1 {unmatched op
7ad0: 65 6e 20 62 72 61 63 65 20 69 6e 20 6c 69 73 74  en brace in list
7ae0: 7d 7d 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 2f  }}.Index: tests/
7af0: 6c 72 65 70 6c 61 63 65 2e 74 65 73 74 0a 3d 3d  lreplace.test.==
7b00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
7b10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
7b20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
7b30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
7b40: 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73  =.RCS file: /cvs
7b50: 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73  root/tcl/tcl/tes
7b60: 74 73 2f 6c 72 65 70 6c 61 63 65 2e 74 65 73 74  ts/lreplace.test
7b70: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65  ,v.retrieving re
7b80: 76 69 73 69 6f 6e 20 31 2e 37 0a 64 69 66 66 20  vision 1.7.diff 
7b90: 2d 75 20 2d 72 31 2e 37 20 6c 72 65 70 6c 61 63  -u -r1.7 lreplac
7ba0: 65 2e 74 65 73 74 0a 2d 2d 2d 20 74 65 73 74 73  e.test.--- tests
7bb0: 2f 6c 72 65 70 6c 61 63 65 2e 74 65 73 74 09 31  /lreplace.test.1
7bc0: 30 20 41 70 72 20 32 30 30 30 20 31 37 3a 31 39  0 Apr 2000 17:19
7bd0: 3a 30 31 20 2d 30 30 30 30 09 31 2e 37 0a 2b 2b  :01 -0000.1.7.++
7be0: 2b 20 74 65 73 74 73 2f 6c 72 65 70 6c 61 63 65  + tests/lreplace
7bf0: 2e 74 65 73 74 09 32 39 20 41 70 72 20 32 30 30  .test.29 Apr 200
7c00: 35 20 32 30 3a 33 30 3a 34 31 20 2d 30 30 30 30  5 20:30:41 -0000
7c10: 0a 40 40 20 2d 31 31 30 2c 31 33 20 2b 31 31 30  .@@ -110,13 +110
7c20: 2c 31 33 20 40 40 0a 20 7d 20 7b 31 20 7b 77 72  ,13 @@. } {1 {wr
7c30: 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75  ong # args: shou
7c40: 6c 64 20 62 65 20 22 6c 72 65 70 6c 61 63 65 20  ld be "lreplace 
7c50: 6c 69 73 74 20 66 69 72 73 74 20 6c 61 73 74 20  list first last 
7c60: 3f 65 6c 65 6d 65 6e 74 20 65 6c 65 6d 65 6e 74  ?element element
7c70: 20 2e 2e 2e 3f 22 7d 7d 0a 20 74 65 73 74 20 6c   ...?"}}. test l
7c80: 72 65 70 6c 61 63 65 2d 32 2e 33 20 7b 6c 72 65  replace-2.3 {lre
7c90: 70 6c 61 63 65 20 65 72 72 6f 72 73 7d 20 7b 0a  place errors} {.
7ca0: 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68       list [catch
7cb0: 20 7b 6c 72 65 70 6c 61 63 65 20 78 20 61 20 31   {lreplace x a 1
7cc0: 30 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20  0} msg] $msg.-} 
7cd0: 7b 31 20 7b 62 61 64 20 69 6e 64 65 78 20 22 61  {1 {bad index "a
7ce0: 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67  ": must be integ
7cf0: 65 72 20 6f 72 20 65 6e 64 3f 2d 69 6e 74 65 67  er or end?-integ
7d00: 65 72 3f 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61 64  er?}}.+} {1 {bad
7d10: 20 69 6e 64 65 78 20 22 61 22 3a 20 6d 75 73 74   index "a": must
7d20: 20 62 65 20 69 6e 74 65 67 65 72 3f 5b 2b 2d 5d   be integer?[+-]
7d30: 69 6e 74 65 67 65 72 3f 20 6f 72 20 65 6e 64 3f  integer? or end?
7d40: 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 7d 7d 0a 20  [+-]integer?}}. 
7d50: 74 65 73 74 20 6c 72 65 70 6c 61 63 65 2d 32 2e  test lreplace-2.
7d60: 34 20 7b 6c 72 65 70 6c 61 63 65 20 65 72 72 6f  4 {lreplace erro
7d70: 72 73 7d 20 7b 0a 20 20 20 20 20 6c 69 73 74 20  rs} {.     list 
7d80: 5b 63 61 74 63 68 20 7b 6c 72 65 70 6c 61 63 65  [catch {lreplace
7d90: 20 78 20 31 30 20 78 7d 20 6d 73 67 5d 20 24 6d   x 10 x} msg] $m
7da0: 73 67 0a 2d 7d 20 7b 31 20 7b 62 61 64 20 69 6e  sg.-} {1 {bad in
7db0: 64 65 78 20 22 78 22 3a 20 6d 75 73 74 20 62 65  dex "x": must be
7dc0: 20 69 6e 74 65 67 65 72 20 6f 72 20 65 6e 64 3f   integer or end?
7dd0: 2d 69 6e 74 65 67 65 72 3f 7d 7d 0a 2b 7d 20 7b  -integer?}}.+} {
7de0: 31 20 7b 62 61 64 20 69 6e 64 65 78 20 22 78 22  1 {bad index "x"
7df0: 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65  : must be intege
7e00: 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 6f  r?[+-]integer? o
7e10: 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65  r end?[+-]intege
7e20: 72 3f 7d 7d 0a 20 74 65 73 74 20 6c 72 65 70 6c  r?}}. test lrepl
7e30: 61 63 65 2d 32 2e 35 20 7b 6c 72 65 70 6c 61 63  ace-2.5 {lreplac
7e40: 65 20 65 72 72 6f 72 73 7d 20 7b 0a 20 20 20 20  e errors} {.    
7e50: 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 6c 72   list [catch {lr
7e60: 65 70 6c 61 63 65 20 78 20 31 30 20 31 78 7d 20  eplace x 10 1x} 
7e70: 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20  msg] $msg.-} {1 
7e80: 7b 62 61 64 20 69 6e 64 65 78 20 22 31 78 22 3a  {bad index "1x":
7e90: 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65 72   must be integer
7ea0: 20 6f 72 20 65 6e 64 3f 2d 69 6e 74 65 67 65 72   or end?-integer
7eb0: 3f 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 69  ?}}.+} {1 {bad i
7ec0: 6e 64 65 78 20 22 31 78 22 3a 20 6d 75 73 74 20  ndex "1x": must 
7ed0: 62 65 20 69 6e 74 65 67 65 72 3f 5b 2b 2d 5d 69  be integer?[+-]i
7ee0: 6e 74 65 67 65 72 3f 20 6f 72 20 65 6e 64 3f 5b  nteger? or end?[
7ef0: 2b 2d 5d 69 6e 74 65 67 65 72 3f 7d 7d 0a 20 74  +-]integer?}}. t
7f00: 65 73 74 20 6c 72 65 70 6c 61 63 65 2d 32 2e 36  est lreplace-2.6
7f10: 20 7b 6c 72 65 70 6c 61 63 65 20 65 72 72 6f 72   {lreplace error
7f20: 73 7d 20 7b 0a 20 20 20 20 20 6c 69 73 74 20 5b  s} {.     list [
7f30: 63 61 74 63 68 20 7b 6c 72 65 70 6c 61 63 65 20  catch {lreplace 
7f40: 78 20 33 20 32 7d 20 6d 73 67 5d 20 24 6d 73 67  x 3 2} msg] $msg
7f50: 0a 20 7d 20 7b 31 20 7b 6c 69 73 74 20 64 6f 65  . } {1 {list doe
7f60: 73 6e 27 74 20 63 6f 6e 74 61 69 6e 20 65 6c 65  sn't contain ele
7f70: 6d 65 6e 74 20 33 7d 7d 0a 49 6e 64 65 78 3a 20  ment 3}}.Index: 
7f80: 74 65 73 74 73 2f 6c 73 65 61 72 63 68 2e 74 65  tests/lsearch.te
7f90: 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  st.=============
7fa0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
7fb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
7fc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
7fd0: 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a  ======.RCS file:
7fe0: 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63   /cvsroot/tcl/tc
7ff0: 6c 2f 74 65 73 74 73 2f 6c 73 65 61 72 63 68 2e  l/tests/lsearch.
8000: 74 65 73 74 2c 76 0a 72 65 74 72 69 65 76 69 6e  test,v.retrievin
8010: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 33 0a  g revision 1.13.
8020: 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 33 20 6c  diff -u -r1.13 l
8030: 73 65 61 72 63 68 2e 74 65 73 74 0a 2d 2d 2d 20  search.test.--- 
8040: 74 65 73 74 73 2f 6c 73 65 61 72 63 68 2e 74 65  tests/lsearch.te
8050: 73 74 09 31 35 20 4f 63 74 20 32 30 30 33 20 31  st.15 Oct 2003 1
8060: 33 3a 31 35 3a 34 35 20 2d 30 30 30 30 09 31 2e  3:15:45 -0000.1.
8070: 31 33 0a 2b 2b 2b 20 74 65 73 74 73 2f 6c 73 65  13.+++ tests/lse
8080: 61 72 63 68 2e 74 65 73 74 09 32 39 20 41 70 72  arch.test.29 Apr
8090: 20 32 30 30 35 20 32 30 3a 33 30 3a 34 31 20 2d   2005 20:30:41 -
80a0: 30 30 30 30 0a 40 40 20 2d 32 38 34 2c 37 20 2b  0000.@@ -284,7 +
80b0: 32 38 34 2c 37 20 40 40 0a 20 7d 20 33 0a 20 74  284,7 @@. } 3. t
80c0: 65 73 74 20 6c 73 65 61 72 63 68 2d 31 30 2e 34  est lsearch-10.4
80d0: 20 7b 6f 66 66 73 65 74 20 73 65 61 72 63 68 69   {offset searchi
80e0: 6e 67 7d 20 7b 0a 20 20 20 20 20 6c 69 73 74 20  ng} {.     list 
80f0: 5b 63 61 74 63 68 20 7b 6c 73 65 61 72 63 68 20  [catch {lsearch 
8100: 2d 73 74 61 72 74 20 66 6f 6f 62 61 72 20 7b 61  -start foobar {a
8110: 20 62 20 63 20 61 20 62 20 63 7d 20 61 7d 20 6d   b c a b c} a} m
8120: 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b  sg] $msg.-} {1 {
8130: 62 61 64 20 69 6e 64 65 78 20 22 66 6f 6f 62 61  bad index "fooba
8140: 72 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65  r": must be inte
8150: 67 65 72 20 6f 72 20 65 6e 64 3f 2d 69 6e 74 65  ger or end?-inte
8160: 67 65 72 3f 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61  ger?}}.+} {1 {ba
8170: 64 20 69 6e 64 65 78 20 22 66 6f 6f 62 61 72 22  d index "foobar"
8180: 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65  : must be intege
8190: 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 6f  r?[+-]integer? o
81a0: 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65  r end?[+-]intege
81b0: 72 3f 7d 7d 0a 20 74 65 73 74 20 6c 73 65 61 72  r?}}. test lsear
81c0: 63 68 2d 31 30 2e 35 20 7b 6f 66 66 73 65 74 20  ch-10.5 {offset 
81d0: 73 65 61 72 63 68 69 6e 67 7d 20 7b 0a 20 20 20  searching} {.   
81e0: 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 6c    list [catch {l
81f0: 73 65 61 72 63 68 20 2d 73 74 61 72 74 20 31 20  search -start 1 
8200: 32 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 20 7d 20  2} msg] $msg. } 
8210: 7b 31 20 7b 6d 69 73 73 69 6e 67 20 73 74 61 72  {1 {missing star
8220: 74 69 6e 67 20 69 6e 64 65 78 7d 7d 0a 40 40 20  ting index}}.@@ 
8230: 2d 34 31 35 2c 37 20 2b 34 31 35 2c 37 20 40 40  -415,7 +415,7 @@
8240: 0a 20 7d 20 7b 31 20 7b 65 6c 65 6d 65 6e 74 20  . } {1 {element 
8250: 32 20 6d 69 73 73 69 6e 67 20 66 72 6f 6d 20 73  2 missing from s
8260: 75 62 6c 69 73 74 20 22 61 20 63 22 7d 7d 0a 20  ublist "a c"}}. 
8270: 74 65 73 74 20 6c 73 65 61 72 63 68 2d 32 30 2e  test lsearch-20.
8280: 32 20 7b 6c 73 65 61 72 63 68 20 2d 69 6e 64 65  2 {lsearch -inde
8290: 78 20 6f 70 74 69 6f 6e 2c 20 6d 61 6c 66 6f 72  x option, malfor
82a0: 6d 65 64 20 69 6e 64 65 78 7d 20 7b 0a 20 20 20  med index} {.   
82b0: 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 6c    list [catch {l
82c0: 73 65 61 72 63 68 20 2d 69 6e 64 65 78 20 66 6f  search -index fo
82d0: 6f 20 7b 7b 61 20 63 7d 20 7b 61 20 62 7d 20 7b  o {{a c} {a b} {
82e0: 61 20 61 7d 7d 20 61 7d 20 6d 73 67 5d 20 24 6d  a a}} a} msg] $m
82f0: 73 67 0a 2d 7d 20 7b 31 20 7b 62 61 64 20 69 6e  sg.-} {1 {bad in
8300: 64 65 78 20 22 66 6f 6f 22 3a 20 6d 75 73 74 20  dex "foo": must 
8310: 62 65 20 69 6e 74 65 67 65 72 20 6f 72 20 65 6e  be integer or en
8320: 64 3f 2d 69 6e 74 65 67 65 72 3f 7d 7d 0a 2b 7d  d?-integer?}}.+}
8330: 20 7b 31 20 7b 62 61 64 20 69 6e 64 65 78 20 22   {1 {bad index "
8340: 66 6f 6f 22 3a 20 6d 75 73 74 20 62 65 20 69 6e  foo": must be in
8350: 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65  teger?[+-]intege
8360: 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e  r? or end?[+-]in
8370: 74 65 67 65 72 3f 7d 7d 0a 20 74 65 73 74 20 6c  teger?}}. test l
8380: 73 65 61 72 63 68 2d 32 30 2e 33 20 7b 6c 73 65  search-20.3 {lse
8390: 61 72 63 68 20 2d 69 6e 64 65 78 20 6f 70 74 69  arch -index opti
83a0: 6f 6e 2c 20 6d 61 6c 66 6f 72 6d 65 64 20 69 6e  on, malformed in
83b0: 64 65 78 7d 20 7b 0a 20 20 20 20 20 6c 69 73 74  dex} {.     list
83c0: 20 5b 63 61 74 63 68 20 7b 6c 73 65 61 72 63 68   [catch {lsearch
83d0: 20 2d 69 6e 64 65 78 20 5c 7b 20 7b 7b 61 20 63   -index \{ {{a c
83e0: 7d 20 7b 61 20 62 7d 20 7b 61 20 61 7d 7d 20 61  } {a b} {a a}} a
83f0: 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 20 7d 20 7b  } msg] $msg. } {
8400: 31 20 7b 75 6e 6d 61 74 63 68 65 64 20 6f 70 65  1 {unmatched ope
8410: 6e 20 62 72 61 63 65 20 69 6e 20 6c 69 73 74 7d  n brace in list}
8420: 7d 0a 49 6e 64 65 78 3a 20 74 65 73 74 73 2f 6c  }.Index: tests/l
8430: 73 65 74 2e 74 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d  set.test.=======
8440: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
8450: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
8460: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
8470: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53  ============.RCS
8480: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f   file: /cvsroot/
8490: 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73 2f 6c 73  tcl/tcl/tests/ls
84a0: 65 74 2e 74 65 73 74 2c 76 0a 72 65 74 72 69 65  et.test,v.retrie
84b0: 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e  ving revision 1.
84c0: 34 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 34 20  4.diff -u -r1.4 
84d0: 6c 73 65 74 2e 74 65 73 74 0a 2d 2d 2d 20 74 65  lset.test.--- te
84e0: 73 74 73 2f 6c 73 65 74 2e 74 65 73 74 09 31 34  sts/lset.test.14
84f0: 20 4e 6f 76 20 32 30 30 33 20 32 30 3a 34 34 3a   Nov 2003 20:44:
8500: 34 36 20 2d 30 30 30 30 09 31 2e 34 0a 2b 2b 2b  46 -0000.1.4.+++
8510: 20 74 65 73 74 73 2f 6c 73 65 74 2e 74 65 73 74   tests/lset.test
8520: 09 32 39 20 41 70 72 20 32 30 30 35 20 32 30 3a  .29 Apr 2005 20:
8530: 33 30 3a 34 31 20 2d 30 30 30 30 0a 40 40 20 2d  30:41 -0000.@@ -
8540: 35 31 2c 37 20 2b 35 31 2c 37 20 40 40 0a 20 20  51,7 +51,7 @@.  
8550: 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b     list [catch {
8560: 0a 20 09 74 65 73 74 65 76 61 6c 65 78 20 7b 6c  . .testevalex {l
8570: 73 65 74 20 78 20 7b 7b 62 61 64 7d 31 7d 20 33  set x {{bad}1} 3
8580: 7d 0a 20 20 20 20 20 7d 20 6d 73 67 5d 20 24 6d  }.     } msg] $m
8590: 73 67 0a 2d 7d 20 22 31 20 7b 62 61 64 20 69 6e  sg.-} "1 {bad in
85a0: 64 65 78 20 5c 22 7b 62 61 64 7d 31 5c 22 3a 20  dex \"{bad}1\": 
85b0: 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65 72 20  must be integer 
85c0: 6f 72 20 65 6e 64 3f 2d 69 6e 74 65 67 65 72 3f  or end?-integer?
85d0: 7d 22 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 69 6e  }".+} {1 {bad in
85e0: 64 65 78 20 22 7b 62 61 64 7d 31 22 3a 20 6d 75  dex "{bad}1": mu
85f0: 73 74 20 62 65 20 69 6e 74 65 67 65 72 3f 5b 2b  st be integer?[+
8600: 2d 5d 69 6e 74 65 67 65 72 3f 20 6f 72 20 65 6e  -]integer? or en
8610: 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 7d 7d  d?[+-]integer?}}
8620: 0a 20 0a 20 74 65 73 74 20 6c 73 65 74 2d 33 2e  . . test lset-3.
8630: 31 20 7b 6c 73 65 74 2c 20 6e 6f 74 20 63 6f 6d  1 {lset, not com
8640: 70 69 6c 65 64 2c 20 33 20 61 72 67 73 2c 20 64  piled, 3 args, d
8650: 61 74 61 20 64 75 70 6c 69 63 61 74 65 64 7d 20  ata duplicated} 
8660: 74 65 73 74 65 76 61 6c 65 78 20 7b 0a 20 20 20  testevalex {.   
8670: 20 20 73 65 74 20 78 20 7b 30 20 31 20 32 7d 0a    set x {0 1 2}.
8680: 40 40 20 2d 39 39 2c 37 20 2b 39 39 2c 37 20 40  @@ -99,7 +99,7 @
8690: 40 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74  @.     list [cat
86a0: 63 68 20 7b 0a 20 09 74 65 73 74 65 76 61 6c 65  ch {. .testevale
86b0: 78 20 7b 6c 73 65 74 20 61 20 5b 6c 69 73 74 20  x {lset a [list 
86c0: 32 61 32 5d 20 77 7d 0a 20 20 20 20 20 7d 20 6d  2a2] w}.     } m
86d0: 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b  sg] $msg.-} {1 {
86e0: 62 61 64 20 69 6e 64 65 78 20 22 32 61 32 22 3a  bad index "2a2":
86f0: 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65 72   must be integer
8700: 20 6f 72 20 65 6e 64 3f 2d 69 6e 74 65 67 65 72   or end?-integer
8710: 3f 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 69  ?}}.+} {1 {bad i
8720: 6e 64 65 78 20 22 32 61 32 22 3a 20 6d 75 73 74  ndex "2a2": must
8730: 20 62 65 20 69 6e 74 65 67 65 72 3f 5b 2b 2d 5d   be integer?[+-]
8740: 69 6e 74 65 67 65 72 3f 20 6f 72 20 65 6e 64 3f  integer? or end?
8750: 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 7d 7d 0a 20  [+-]integer?}}. 
8760: 0a 20 74 65 73 74 20 6c 73 65 74 2d 34 2e 33 20  . test lset-4.3 
8770: 7b 6c 73 65 74 2c 20 6e 6f 74 20 63 6f 6d 70 69  {lset, not compi
8780: 6c 65 64 2c 20 33 20 61 72 67 73 2c 20 69 6e 64  led, 3 args, ind
8790: 65 78 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 7d  ex out of range}
87a0: 20 74 65 73 74 65 76 61 6c 65 78 20 7b 0a 20 20   testevalex {.  
87b0: 20 20 20 73 65 74 20 61 20 7b 78 20 79 20 7a 7d     set a {x y z}
87c0: 0a 40 40 20 2d 31 34 31 2c 37 20 2b 31 34 31 2c  .@@ -141,7 +141,
87d0: 37 20 40 40 0a 20 20 20 20 20 6c 69 73 74 20 5b  7 @@.     list [
87e0: 63 61 74 63 68 20 7b 0a 20 09 74 65 73 74 65 76  catch {. .testev
87f0: 61 6c 65 78 20 7b 6c 73 65 74 20 61 20 32 61 32  alex {lset a 2a2
8800: 20 77 7d 0a 20 20 20 20 20 7d 20 6d 73 67 5d 20   w}.     } msg] 
8810: 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b 62 61 64 20  $msg.-} {1 {bad 
8820: 69 6e 64 65 78 20 22 32 61 32 22 3a 20 6d 75 73  index "2a2": mus
8830: 74 20 62 65 20 69 6e 74 65 67 65 72 20 6f 72 20  t be integer or 
8840: 65 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 7d 7d 0a  end?-integer?}}.
8850: 2b 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64 65 78  +} {1 {bad index
8860: 20 22 32 61 32 22 3a 20 6d 75 73 74 20 62 65 20   "2a2": must be 
8870: 69 6e 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65  integer?[+-]inte
8880: 67 65 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d  ger? or end?[+-]
8890: 69 6e 74 65 67 65 72 3f 7d 7d 0a 20 0a 20 74 65  integer?}}. . te
88a0: 73 74 20 6c 73 65 74 2d 34 2e 39 20 7b 6c 73 65  st lset-4.9 {lse
88b0: 74 2c 20 6e 6f 74 20 63 6f 6d 70 69 6c 65 64 2c  t, not compiled,
88c0: 20 33 20 61 72 67 73 2c 20 69 6e 64 65 78 20 6f   3 args, index o
88d0: 75 74 20 6f 66 20 72 61 6e 67 65 7d 20 74 65 73  ut of range} tes
88e0: 74 65 76 61 6c 65 78 20 7b 0a 20 20 20 20 20 73  tevalex {.     s
88f0: 65 74 20 61 20 7b 78 20 79 20 7a 7d 0a 40 40 20  et a {x y z}.@@ 
8900: 2d 33 30 30 2c 31 32 20 2b 33 30 30 2c 31 32 20  -300,12 +300,12 
8910: 40 40 0a 20 74 65 73 74 20 6c 73 65 74 2d 38 2e  @@. test lset-8.
8920: 33 20 7b 6c 73 65 74 2c 20 6e 6f 74 20 63 6f 6d  3 {lset, not com
8930: 70 69 6c 65 64 2c 20 62 61 64 20 73 65 63 6f 6e  piled, bad secon
8940: 64 20 69 6e 64 65 78 7d 20 74 65 73 74 65 76 61  d index} testeva
8950: 6c 65 78 20 7b 0a 20 20 20 20 20 73 65 74 20 61  lex {.     set a
8960: 20 7b 7b 62 20 63 7d 20 7b 64 20 65 7d 7d 0a 20   {{b c} {d e}}. 
8970: 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20      list [catch 
8980: 7b 74 65 73 74 65 76 61 6c 65 78 20 7b 6c 73 65  {testevalex {lse
8990: 74 20 61 20 30 20 32 61 32 20 66 7d 7d 20 6d 73  t a 0 2a2 f}} ms
89a0: 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b 62  g] $msg.-} {1 {b
89b0: 61 64 20 69 6e 64 65 78 20 22 32 61 32 22 3a 20  ad index "2a2": 
89c0: 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65 72 20  must be integer 
89d0: 6f 72 20 65 6e 64 3f 2d 69 6e 74 65 67 65 72 3f  or end?-integer?
89e0: 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 69 6e  }}.+} {1 {bad in
89f0: 64 65 78 20 22 32 61 32 22 3a 20 6d 75 73 74 20  dex "2a2": must 
8a00: 62 65 20 69 6e 74 65 67 65 72 3f 5b 2b 2d 5d 69  be integer?[+-]i
8a10: 6e 74 65 67 65 72 3f 20 6f 72 20 65 6e 64 3f 5b  nteger? or end?[
8a20: 2b 2d 5d 69 6e 74 65 67 65 72 3f 7d 7d 0a 20 0a  +-]integer?}}. .
8a30: 20 74 65 73 74 20 6c 73 65 74 2d 38 2e 34 20 7b   test lset-8.4 {
8a40: 6c 73 65 74 2c 20 6e 6f 74 20 63 6f 6d 70 69 6c  lset, not compil
8a50: 65 64 2c 20 62 61 64 20 73 65 63 6f 6e 64 20 69  ed, bad second i
8a60: 6e 64 65 78 7d 20 74 65 73 74 65 76 61 6c 65 78  ndex} testevalex
8a70: 20 7b 0a 20 20 20 20 20 73 65 74 20 61 20 7b 7b   {.     set a {{
8a80: 62 20 63 7d 20 7b 64 20 65 7d 7d 0a 20 20 20 20  b c} {d e}}.    
8a90: 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 74 65   list [catch {te
8aa0: 73 74 65 76 61 6c 65 78 20 7b 6c 73 65 74 20 61  stevalex {lset a
8ab0: 20 7b 30 20 32 61 32 7d 20 66 7d 7d 20 6d 73 67   {0 2a2} f}} msg
8ac0: 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b 62 61  ] $msg.-} {1 {ba
8ad0: 64 20 69 6e 64 65 78 20 22 32 61 32 22 3a 20 6d  d index "2a2": m
8ae0: 75 73 74 20 62 65 20 69 6e 74 65 67 65 72 20 6f  ust be integer o
8af0: 72 20 65 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 7d  r end?-integer?}
8b00: 7d 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64  }.+} {1 {bad ind
8b10: 65 78 20 22 32 61 32 22 3a 20 6d 75 73 74 20 62  ex "2a2": must b
8b20: 65 20 69 6e 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e  e integer?[+-]in
8b30: 74 65 67 65 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b  teger? or end?[+
8b40: 2d 5d 69 6e 74 65 67 65 72 3f 7d 7d 0a 20 0a 20  -]integer?}}. . 
8b50: 74 65 73 74 20 6c 73 65 74 2d 38 2e 35 20 7b 6c  test lset-8.5 {l
8b60: 73 65 74 2c 20 6e 6f 74 20 63 6f 6d 70 69 6c 65  set, not compile
8b70: 64 2c 20 73 65 63 6f 6e 64 20 69 6e 64 65 78 20  d, second index 
8b80: 6f 75 74 20 6f 66 20 72 61 6e 67 65 7d 20 74 65  out of range} te
8b90: 73 74 65 76 61 6c 65 78 20 7b 0a 20 20 20 20 20  stevalex {.     
8ba0: 73 65 74 20 61 20 7b 7b 62 20 63 7d 20 7b 64 20  set a {{b c} {d 
8bb0: 65 7d 20 7b 66 20 67 7d 7d 0a 49 6e 64 65 78 3a  e} {f g}}.Index:
8bc0: 20 74 65 73 74 73 2f 72 65 67 65 78 70 2e 74 65   tests/regexp.te
8bd0: 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  st.=============
8be0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
8bf0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
8c00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
8c10: 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a  ======.RCS file:
8c20: 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63   /cvsroot/tcl/tc
8c30: 6c 2f 74 65 73 74 73 2f 72 65 67 65 78 70 2e 74  l/tests/regexp.t
8c40: 65 73 74 2c 76 0a 72 65 74 72 69 65 76 69 6e 67  est,v.retrieving
8c50: 20 72 65 76 69 73 69 6f 6e 20 31 2e 32 35 0a 64   revision 1.25.d
8c60: 69 66 66 20 2d 75 20 2d 72 31 2e 32 35 20 72 65  iff -u -r1.25 re
8c70: 67 65 78 70 2e 74 65 73 74 0a 2d 2d 2d 20 74 65  gexp.test.--- te
8c80: 73 74 73 2f 72 65 67 65 78 70 2e 74 65 73 74 09  sts/regexp.test.
8c90: 31 34 20 4f 63 74 20 32 30 30 33 20 31 38 3a 32  14 Oct 2003 18:2
8ca0: 33 3a 33 31 20 2d 30 30 30 30 09 31 2e 32 35 0a  3:31 -0000.1.25.
8cb0: 2b 2b 2b 20 74 65 73 74 73 2f 72 65 67 65 78 70  +++ tests/regexp
8cc0: 2e 74 65 73 74 09 32 39 20 41 70 72 20 32 30 30  .test.29 Apr 200
8cd0: 35 20 32 30 3a 33 30 3a 34 31 20 2d 30 30 30 30  5 20:30:41 -0000
8ce0: 0a 40 40 20 2d 32 32 30 2c 37 20 2b 32 32 30 2c  .@@ -220,7 +220,
8cf0: 37 20 40 40 0a 20 7d 20 7b 31 20 7b 63 6f 75 6c  7 @@. } {1 {coul
8d00: 64 6e 27 74 20 73 65 74 20 76 61 72 69 61 62 6c  dn't set variabl
8d10: 65 20 22 66 31 28 66 32 29 22 7d 7d 0a 20 74 65  e "f1(f2)"}}. te
8d20: 73 74 20 72 65 67 65 78 70 2d 36 2e 39 20 7b 72  st regexp-6.9 {r
8d30: 65 67 65 78 70 20 65 72 72 6f 72 73 2c 20 2d 73  egexp errors, -s
8d40: 74 61 72 74 20 62 61 64 20 69 6e 74 20 63 68 65  tart bad int che
8d50: 63 6b 7d 20 7b 0a 20 20 20 20 20 6c 69 73 74 20  ck} {.     list 
8d60: 5b 63 61 74 63 68 20 7b 72 65 67 65 78 70 20 2d  [catch {regexp -
8d70: 73 74 61 72 74 20 62 6f 67 75 73 20 7b 5e 24 7d  start bogus {^$}
8d80: 20 7b 7d 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 2d   {}} msg] $msg.-
8d90: 7d 20 7b 31 20 7b 65 78 70 65 63 74 65 64 20 69  } {1 {expected i
8da0: 6e 74 65 67 65 72 20 62 75 74 20 67 6f 74 20 22  nteger but got "
8db0: 62 6f 67 75 73 22 7d 7d 0a 2b 7d 20 7b 31 20 7b  bogus"}}.+} {1 {
8dc0: 62 61 64 20 69 6e 64 65 78 20 22 62 6f 67 75 73  bad index "bogus
8dd0: 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67  ": must be integ
8de0: 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20  er?[+-]integer? 
8df0: 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67  or end?[+-]integ
8e00: 65 72 3f 7d 7d 0a 20 0a 20 74 65 73 74 20 72 65  er?}}. . test re
8e10: 67 65 78 70 2d 37 2e 31 20 7b 62 61 73 69 63 20  gexp-7.1 {basic 
8e20: 72 65 67 73 75 62 20 6f 70 65 72 61 74 69 6f 6e  regsub operation
8e30: 7d 20 7b 0a 20 20 20 20 20 6c 69 73 74 20 5b 72  } {.     list [r
8e40: 65 67 73 75 62 20 61 61 2b 20 78 61 78 61 61 61  egsub aa+ xaxaaa
8e50: 78 61 61 20 31 31 31 26 32 32 32 20 66 6f 6f 5d  xaa 111&222 foo]
8e60: 20 24 66 6f 6f 0a 40 40 20 2d 33 37 37 2c 37 20   $foo.@@ -377,7 
8e70: 2b 33 37 37 2c 37 20 40 40 0a 20 7d 20 7b 31 20  +377,7 @@. } {1 
8e80: 7b 63 6f 75 6c 64 6e 27 74 20 73 65 74 20 76 61  {couldn't set va
8e90: 72 69 61 62 6c 65 20 22 66 31 28 66 32 29 22 7d  riable "f1(f2)"}
8ea0: 7d 0a 20 74 65 73 74 20 72 65 67 65 78 70 2d 31  }. test regexp-1
8eb0: 31 2e 38 20 7b 72 65 67 73 75 62 20 65 72 72 6f  1.8 {regsub erro
8ec0: 72 73 2c 20 2d 73 74 61 72 74 20 62 61 64 20 69  rs, -start bad i
8ed0: 6e 74 20 63 68 65 63 6b 7d 20 7b 0a 20 20 20 20  nt check} {.    
8ee0: 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 72 65   list [catch {re
8ef0: 67 73 75 62 20 2d 73 74 61 72 74 20 62 6f 67 75  gsub -start bogu
8f00: 73 20 70 61 74 74 65 72 6e 20 73 74 72 69 6e 67  s pattern string
8f10: 20 72 65 70 20 76 61 72 7d 20 6d 73 67 5d 20 24   rep var} msg] $
8f20: 6d 73 67 0a 2d 7d 20 7b 31 20 7b 65 78 70 65 63  msg.-} {1 {expec
8f30: 74 65 64 20 69 6e 74 65 67 65 72 20 62 75 74 20  ted integer but 
8f40: 67 6f 74 20 22 62 6f 67 75 73 22 7d 7d 0a 2b 7d  got "bogus"}}.+}
8f50: 20 7b 31 20 7b 62 61 64 20 69 6e 64 65 78 20 22   {1 {bad index "
8f60: 62 6f 67 75 73 22 3a 20 6d 75 73 74 20 62 65 20  bogus": must be 
8f70: 69 6e 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65  integer?[+-]inte
8f80: 67 65 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d  ger? or end?[+-]
8f90: 69 6e 74 65 67 65 72 3f 7d 7d 0a 20 74 65 73 74  integer?}}. test
8fa0: 20 72 65 67 65 78 70 2d 31 31 2e 39 20 7b 72 65   regexp-11.9 {re
8fb0: 67 73 75 62 20 77 69 74 68 6f 75 74 20 66 69 6e  gsub without fin
8fc0: 61 6c 20 76 61 72 69 61 62 6c 65 20 6e 61 6d 65  al variable name
8fd0: 20 72 65 74 75 72 6e 73 20 76 61 6c 75 65 7d 20   returns value} 
8fe0: 7b 0a 20 20 20 20 20 72 65 67 73 75 62 20 62 20  {.     regsub b 
8ff0: 61 62 61 63 61 20 58 0a 20 7d 20 7b 61 58 61 63  abaca X. } {aXac
9000: 61 7d 0a 40 40 20 2d 34 36 37 2c 36 20 2b 34 36  a}.@@ -467,6 +46
9010: 37 2c 32 30 20 40 40 0a 20 74 65 73 74 20 72 65  7,20 @@. test re
9020: 67 65 78 70 2d 31 35 2e 36 20 7b 72 65 67 65 78  gexp-15.6 {regex
9030: 70 20 2d 73 74 61 72 74 2c 20 6c 6f 73 73 20 6f  p -start, loss o
9040: 66 20 5e 24 20 62 65 68 61 76 69 6f 72 7d 20 7b  f ^$ behavior} {
9050: 0a 20 20 20 20 20 6c 69 73 74 20 5b 72 65 67 65  .     list [rege
9060: 78 70 20 2d 73 74 61 72 74 20 32 20 7b 5e 24 7d  xp -start 2 {^$}
9070: 20 7b 7d 5d 0a 20 7d 20 7b 30 7d 0a 2b 74 65 73   {}]. } {0}.+tes
9080: 74 20 72 65 67 65 78 70 2d 31 35 2e 37 20 7b 72  t regexp-15.7 {r
9090: 65 67 65 78 70 20 2d 73 74 61 72 74 2c 20 64 6f  egexp -start, do
90a0: 75 62 6c 65 20 6f 70 74 69 6f 6e 7d 20 7b 0a 2b  uble option} {.+
90b0: 20 20 20 20 72 65 67 65 78 70 20 2d 73 74 61 72      regexp -star
90c0: 74 20 32 20 2d 73 74 61 72 74 20 30 20 61 20 61  t 2 -start 0 a a
90d0: 62 63 0a 2b 7d 20 31 0a 2b 74 65 73 74 20 72 65  bc.+} 1.+test re
90e0: 67 65 78 70 2d 31 35 2e 38 20 7b 72 65 67 65 78  gexp-15.8 {regex
90f0: 70 20 2d 73 74 61 72 74 2c 20 64 6f 75 62 6c 65  p -start, double
9100: 20 6f 70 74 69 6f 6e 7d 20 7b 0a 2b 20 20 20 20   option} {.+    
9110: 72 65 67 65 78 70 20 2d 73 74 61 72 74 20 30 20  regexp -start 0 
9120: 2d 73 74 61 72 74 20 32 20 61 20 61 62 63 0a 2b  -start 2 a abc.+
9130: 7d 20 30 0a 2b 74 65 73 74 20 72 65 67 65 78 70  } 0.+test regexp
9140: 2d 31 35 2e 39 20 7b 72 65 67 65 78 70 20 2d 73  -15.9 {regexp -s
9150: 74 61 72 74 2c 20 65 6e 64 20 72 65 6c 61 74 69  tart, end relati
9160: 76 65 20 69 6e 64 65 78 7d 20 7b 0a 2b 20 20 20  ve index} {.+   
9170: 20 63 61 74 63 68 20 7b 75 6e 73 65 74 20 78 7d   catch {unset x}
9180: 0a 2b 20 20 20 20 6c 69 73 74 20 5b 72 65 67 65  .+    list [rege
9190: 78 70 20 2d 73 74 61 72 74 20 65 6e 64 20 7b 5c  xp -start end {\
91a0: 64 7d 20 31 61 62 63 32 64 65 33 20 78 5d 20 5b  d} 1abc2de3 x] [
91b0: 69 6e 66 6f 20 65 78 69 73 74 73 20 78 5d 0a 2b  info exists x].+
91c0: 7d 20 7b 30 20 30 7d 0a 2b 74 65 73 74 20 72 65  } {0 0}.+test re
91d0: 67 65 78 70 2d 31 35 2e 31 30 20 7b 72 65 67 65  gexp-15.10 {rege
91e0: 78 70 20 2d 73 74 61 72 74 2c 20 65 6e 64 20 72  xp -start, end r
91f0: 65 6c 61 74 69 76 65 20 69 6e 64 65 78 7d 20 7b  elative index} {
9200: 0a 2b 20 20 20 20 63 61 74 63 68 20 7b 75 6e 73  .+    catch {uns
9210: 65 74 20 78 7d 0a 2b 20 20 20 20 6c 69 73 74 20  et x}.+    list 
9220: 5b 72 65 67 65 78 70 20 2d 73 74 61 72 74 20 65  [regexp -start e
9230: 6e 64 2d 31 20 7b 5c 64 7d 20 31 61 62 63 32 64  nd-1 {\d} 1abc2d
9240: 65 33 20 78 5d 20 5b 69 6e 66 6f 20 65 78 69 73  e3 x] [info exis
9250: 74 73 20 78 5d 20 24 78 0a 2b 7d 20 7b 31 20 31  ts x] $x.+} {1 1
9260: 20 33 7d 0a 20 0a 20 74 65 73 74 20 72 65 67 65   3}. . test rege
9270: 78 70 2d 31 36 2e 31 20 7b 72 65 67 73 75 62 20  xp-16.1 {regsub 
9280: 2d 73 74 61 72 74 7d 20 7b 0a 20 20 20 20 20 63  -start} {.     c
9290: 61 74 63 68 20 7b 75 6e 73 65 74 20 78 7d 0a 40  atch {unset x}.@
92a0: 40 20 2d 34 38 35 2c 36 20 2b 34 39 39 2c 31 38  @ -485,6 +499,18
92b0: 20 40 40 0a 20 20 20 20 20 6c 61 70 70 65 6e 64   @@.     lappend
92c0: 20 6f 75 74 20 5b 72 65 67 73 75 62 20 2d 73 74   out [regsub -st
92d0: 61 72 74 20 30 20 2d 61 6c 6c 20 7b 5c 41 28 5c  art 0 -all {\A(\
92e0: 77 29 7d 20 7b 61 62 63 64 65 7d 20 7b 2f 5c 31  w)} {abcde} {/\1
92f0: 7d 20 78 5d 20 24 78 0a 20 20 20 20 20 6c 61 70  } x] $x.     lap
9300: 70 65 6e 64 20 6f 75 74 20 5b 72 65 67 73 75 62  pend out [regsub
9310: 20 2d 73 74 61 72 74 20 32 20 2d 61 6c 6c 20 7b   -start 2 -all {
9320: 5c 41 28 5c 77 29 7d 20 7b 61 62 63 64 65 7d 20  \A(\w)} {abcde} 
9330: 7b 2f 5c 31 7d 20 78 5d 20 24 78 0a 20 7d 20 7b  {/\1} x] $x. } {
9340: 35 20 2f 61 2f 62 2f 63 2f 64 2f 65 20 33 20 61  5 /a/b/c/d/e 3 a
9350: 62 2f 63 2f 64 2f 65 7d 0a 2b 74 65 73 74 20 72  b/c/d/e}.+test r
9360: 65 67 65 78 70 2d 31 36 2e 35 20 7b 72 65 67 73  egexp-16.5 {regs
9370: 75 62 20 2d 73 74 61 72 74 2c 20 64 6f 75 62 6c  ub -start, doubl
9380: 65 20 6f 70 74 69 6f 6e 7d 20 7b 0a 2b 20 20 20  e option} {.+   
9390: 20 6c 69 73 74 20 5b 72 65 67 73 75 62 20 2d 73   list [regsub -s
93a0: 74 61 72 74 20 32 20 2d 73 74 61 72 74 20 30 20  tart 2 -start 0 
93b0: 61 20 61 62 63 20 63 20 78 5d 20 24 78 0a 2b 7d  a abc c x] $x.+}
93c0: 20 7b 31 20 63 62 63 7d 0a 2b 74 65 73 74 20 72   {1 cbc}.+test r
93d0: 65 67 65 78 70 2d 31 36 2e 36 20 7b 72 65 67 73  egexp-16.6 {regs
93e0: 75 62 20 2d 73 74 61 72 74 2c 20 64 6f 75 62 6c  ub -start, doubl
93f0: 65 20 6f 70 74 69 6f 6e 7d 20 7b 0a 2b 20 20 20  e option} {.+   
9400: 20 6c 69 73 74 20 5b 72 65 67 73 75 62 20 2d 73   list [regsub -s
9410: 74 61 72 74 20 30 20 2d 73 74 61 72 74 20 32 20  tart 0 -start 2 
9420: 61 20 61 62 63 20 63 20 78 5d 20 24 78 0a 2b 7d  a abc c x] $x.+}
9430: 20 7b 30 20 61 62 63 7d 0a 2b 74 65 73 74 20 72   {0 abc}.+test r
9440: 65 67 65 78 70 2d 31 36 2e 37 20 7b 72 65 67 65  egexp-16.7 {rege
9450: 78 70 20 2d 73 74 61 72 74 2c 20 65 6e 64 20 72  xp -start, end r
9460: 65 6c 61 74 69 76 65 20 69 6e 64 65 78 7d 20 7b  elative index} {
9470: 0a 2b 20 20 20 20 6c 69 73 74 20 5b 72 65 67 73  .+    list [regs
9480: 75 62 20 2d 73 74 61 72 74 20 65 6e 64 20 61 20  ub -start end a 
9490: 61 61 61 20 62 20 78 5d 20 24 78 0a 2b 7d 20 7b  aaa b x] $x.+} {
94a0: 30 20 61 61 61 7d 0a 2b 74 65 73 74 20 72 65 67  0 aaa}.+test reg
94b0: 65 78 70 2d 31 36 2e 38 20 7b 72 65 67 65 78 70  exp-16.8 {regexp
94c0: 20 2d 73 74 61 72 74 2c 20 65 6e 64 20 72 65 6c   -start, end rel
94d0: 61 74 69 76 65 20 69 6e 64 65 78 7d 20 7b 0a 2b  ative index} {.+
94e0: 20 20 20 20 6c 69 73 74 20 5b 72 65 67 73 75 62      list [regsub
94f0: 20 2d 73 74 61 72 74 20 65 6e 64 2d 31 20 61 20   -start end-1 a 
9500: 61 61 61 20 62 20 78 5d 20 24 78 0a 2b 7d 20 7b  aaa b x] $x.+} {
9510: 31 20 61 61 62 7d 0a 20 0a 20 74 65 73 74 20 72  1 aab}. . test r
9520: 65 67 65 78 70 2d 31 37 2e 31 20 7b 72 65 67 65  egexp-17.1 {rege
9530: 78 70 20 2d 69 6e 6c 69 6e 65 7d 20 7b 0a 20 20  xp -inline} {.  
9540: 20 20 20 72 65 67 65 78 70 20 2d 69 6e 6c 69 6e     regexp -inlin
9550: 65 20 62 20 61 62 61 62 61 0a 49 6e 64 65 78 3a  e b ababa.Index:
9560: 20 74 65 73 74 73 2f 72 65 67 65 78 70 43 6f 6d   tests/regexpCom
9570: 70 2e 74 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d  p.test.=========
9580: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
9590: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
95a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
95b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66  ==========.RCS f
95c0: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63  ile: /cvsroot/tc
95d0: 6c 2f 74 63 6c 2f 74 65 73 74 73 2f 72 65 67 65  l/tcl/tests/rege
95e0: 78 70 43 6f 6d 70 2e 74 65 73 74 2c 76 0a 72 65  xpComp.test,v.re
95f0: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f  trieving revisio
9600: 6e 20 31 2e 39 0a 64 69 66 66 20 2d 75 20 2d 72  n 1.9.diff -u -r
9610: 31 2e 39 20 72 65 67 65 78 70 43 6f 6d 70 2e 74  1.9 regexpComp.t
9620: 65 73 74 0a 2d 2d 2d 20 74 65 73 74 73 2f 72 65  est.--- tests/re
9630: 67 65 78 70 43 6f 6d 70 2e 74 65 73 74 09 32 35  gexpComp.test.25
9640: 20 4d 61 79 20 32 30 30 34 20 31 38 3a 35 38 3a   May 2004 18:58:
9650: 30 35 20 2d 30 30 30 30 09 31 2e 39 0a 2b 2b 2b  05 -0000.1.9.+++
9660: 20 74 65 73 74 73 2f 72 65 67 65 78 70 43 6f 6d   tests/regexpCom
9670: 70 2e 74 65 73 74 09 32 39 20 41 70 72 20 32 30  p.test.29 Apr 20
9680: 30 35 20 32 30 3a 33 30 3a 34 31 20 2d 30 30 30  05 20:30:41 -000
9690: 30 0a 40 40 20 2d 33 30 31 2c 37 20 2b 33 30 31  0.@@ -301,7 +301
96a0: 2c 37 20 40 40 0a 20 20 20 20 20 65 76 61 6c 49  ,7 @@.     evalI
96b0: 6e 50 72 6f 63 20 7b 0a 20 09 6c 69 73 74 20 5b  nProc {. .list [
96c0: 63 61 74 63 68 20 7b 72 65 67 65 78 70 20 2d 73  catch {regexp -s
96d0: 74 61 72 74 20 62 6f 67 75 73 20 7b 5e 24 7d 20  tart bogus {^$} 
96e0: 7b 7d 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 20 20  {}} msg] $msg.  
96f0: 20 20 20 7d 0a 2d 7d 20 7b 31 20 7b 65 78 70 65     }.-} {1 {expe
9700: 63 74 65 64 20 69 6e 74 65 67 65 72 20 62 75 74  cted integer but
9710: 20 67 6f 74 20 22 62 6f 67 75 73 22 7d 7d 0a 2b   got "bogus"}}.+
9720: 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64 65 78 20  } {1 {bad index 
9730: 22 62 6f 67 75 73 22 3a 20 6d 75 73 74 20 62 65  "bogus": must be
9740: 20 69 6e 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74   integer?[+-]int
9750: 65 67 65 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d  eger? or end?[+-
9760: 5d 69 6e 74 65 67 65 72 3f 7d 7d 0a 20 0a 20 74  ]integer?}}. . t
9770: 65 73 74 20 72 65 67 65 78 70 43 6f 6d 70 2d 37  est regexpComp-7
9780: 2e 31 20 7b 62 61 73 69 63 20 72 65 67 73 75 62  .1 {basic regsub
9790: 20 6f 70 65 72 61 74 69 6f 6e 7d 20 7b 0a 20 20   operation} {.  
97a0: 20 20 20 65 76 61 6c 49 6e 50 72 6f 63 20 7b 0a     evalInProc {.
97b0: 40 40 20 2d 35 34 32 2c 37 20 2b 35 34 32 2c 37  @@ -542,7 +542,7
97c0: 20 40 40 0a 20 20 20 20 20 65 76 61 6c 49 6e 50   @@.     evalInP
97d0: 72 6f 63 20 7b 0a 20 09 6c 69 73 74 20 5b 63 61  roc {. .list [ca
97e0: 74 63 68 20 7b 72 65 67 73 75 62 20 2d 73 74 61  tch {regsub -sta
97f0: 72 74 20 62 6f 67 75 73 20 70 61 74 74 65 72 6e  rt bogus pattern
9800: 20 73 74 72 69 6e 67 20 72 65 70 20 76 61 72 7d   string rep var}
9810: 20 6d 73 67 5d 20 24 6d 73 67 0a 20 20 20 20 20   msg] $msg.     
9820: 7d 0a 2d 7d 20 7b 31 20 7b 65 78 70 65 63 74 65  }.-} {1 {expecte
9830: 64 20 69 6e 74 65 67 65 72 20 62 75 74 20 67 6f  d integer but go
9840: 74 20 22 62 6f 67 75 73 22 7d 7d 0a 2b 7d 20 7b  t "bogus"}}.+} {
9850: 31 20 7b 62 61 64 20 69 6e 64 65 78 20 22 62 6f  1 {bad index "bo
9860: 67 75 73 22 3a 20 6d 75 73 74 20 62 65 20 69 6e  gus": must be in
9870: 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65  teger?[+-]intege
9880: 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e  r? or end?[+-]in
9890: 74 65 67 65 72 3f 7d 7d 0a 20 0a 20 23 20 54 68  teger?}}. . # Th
98a0: 69 73 20 74 65 73 74 20 63 72 61 73 68 65 73 20  is test crashes 
98b0: 6f 6e 20 74 68 65 20 4d 61 63 20 75 6e 6c 65 73  on the Mac unles
98c0: 73 20 79 6f 75 20 69 6e 63 72 65 61 73 65 20 74  s you increase t
98d0: 68 65 20 53 74 61 63 6b 20 53 70 61 63 65 20 74  he Stack Space t
98e0: 6f 20 61 62 6f 75 74 20 31 0a 20 23 20 4d 65 67  o about 1. # Meg
98f0: 2e 20 20 54 68 69 73 20 69 73 20 70 72 6f 62 61  .  This is proba
9900: 62 6c 79 20 62 69 67 67 65 72 20 74 68 61 6e 20  bly bigger than 
9910: 6d 6f 73 74 20 75 73 65 72 73 20 77 61 6e 74 2e  most users want.
9920: 2e 2e 20 0a 49 6e 64 65 78 3a 20 74 65 73 74 73  .. .Index: tests
9930: 2f 73 74 72 69 6e 67 2e 74 65 73 74 0a 3d 3d 3d  /string.test.===
9940: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
9950: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
9960: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
9970: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
9980: 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72  .RCS file: /cvsr
9990: 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74  oot/tcl/tcl/test
99a0: 73 2f 73 74 72 69 6e 67 2e 74 65 73 74 2c 76 0a  s/string.test,v.
99b0: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73  retrieving revis
99c0: 69 6f 6e 20 31 2e 34 35 0a 64 69 66 66 20 2d 75  ion 1.45.diff -u
99d0: 20 2d 72 31 2e 34 35 20 73 74 72 69 6e 67 2e 74   -r1.45 string.t
99e0: 65 73 74 0a 2d 2d 2d 20 74 65 73 74 73 2f 73 74  est.--- tests/st
99f0: 72 69 6e 67 2e 74 65 73 74 09 32 32 20 41 70 72  ring.test.22 Apr
9a00: 20 32 30 30 35 20 31 36 3a 32 36 3a 30 34 20 2d   2005 16:26:04 -
9a10: 30 30 30 30 09 31 2e 34 35 0a 2b 2b 2b 20 74 65  0000.1.45.+++ te
9a20: 73 74 73 2f 73 74 72 69 6e 67 2e 74 65 73 74 09  sts/string.test.
9a30: 32 39 20 41 70 72 20 32 30 30 35 20 32 30 3a 33  29 Apr 2005 20:3
9a40: 30 3a 34 31 20 2d 30 30 30 30 0a 40 40 20 2d 31  0:41 -0000.@@ -1
9a50: 37 36 2c 37 20 2b 31 37 36 2c 37 20 40 40 0a 20  76,7 +176,7 @@. 
9a60: 7d 20 7b 31 20 7b 77 72 6f 6e 67 20 23 20 61 72  } {1 {wrong # ar
9a70: 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 73  gs: should be "s
9a80: 74 72 69 6e 67 20 66 69 72 73 74 20 73 75 62 53  tring first subS
9a90: 74 72 69 6e 67 20 73 74 72 69 6e 67 20 3f 73 74  tring string ?st
9aa0: 61 72 74 49 6e 64 65 78 3f 22 7d 7d 0a 20 74 65  artIndex?"}}. te
9ab0: 73 74 20 73 74 72 69 6e 67 2d 34 2e 32 20 7b 73  st string-4.2 {s
9ac0: 74 72 69 6e 67 20 66 69 72 73 74 2c 20 62 61 64  tring first, bad
9ad0: 20 61 72 67 73 7d 20 7b 0a 20 20 20 20 20 6c 69   args} {.     li
9ae0: 73 74 20 5b 63 61 74 63 68 20 7b 73 74 72 69 6e  st [catch {strin
9af0: 67 20 66 69 72 73 74 20 61 20 62 20 63 7d 20 6d  g first a b c} m
9b00: 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b  sg] $msg.-} {1 {
9b10: 62 61 64 20 69 6e 64 65 78 20 22 63 22 3a 20 6d  bad index "c": m
9b20: 75 73 74 20 62 65 20 69 6e 74 65 67 65 72 20 6f  ust be integer o
9b30: 72 20 65 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 7d  r end?-integer?}
9b40: 7d 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64  }.+} {1 {bad ind
9b50: 65 78 20 22 63 22 3a 20 6d 75 73 74 20 62 65 20  ex "c": must be 
9b60: 69 6e 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65  integer?[+-]inte
9b70: 67 65 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d  ger? or end?[+-]
9b80: 69 6e 74 65 67 65 72 3f 7d 7d 0a 20 74 65 73 74  integer?}}. test
9b90: 20 73 74 72 69 6e 67 2d 34 2e 33 20 7b 73 74 72   string-4.3 {str
9ba0: 69 6e 67 20 66 69 72 73 74 2c 20 74 6f 6f 20 6d  ing first, too m
9bb0: 61 6e 79 20 61 72 67 73 7d 20 7b 0a 20 20 20 20  any args} {.    
9bc0: 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 73 74   list [catch {st
9bd0: 72 69 6e 67 20 66 69 72 73 74 20 61 20 62 20 35  ring first a b 5
9be0: 20 64 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 20 7d   d} msg] $msg. }
9bf0: 20 7b 31 20 7b 77 72 6f 6e 67 20 23 20 61 72 67   {1 {wrong # arg
9c00: 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 73 74  s: should be "st
9c10: 72 69 6e 67 20 66 69 72 73 74 20 73 75 62 53 74  ring first subSt
9c20: 72 69 6e 67 20 73 74 72 69 6e 67 20 3f 73 74 61  ring string ?sta
9c30: 72 74 49 6e 64 65 78 3f 22 7d 7d 0a 40 40 20 2d  rtIndex?"}}.@@ -
9c40: 32 34 31 2c 37 20 2b 32 34 31 2c 37 20 40 40 0a  241,7 +241,7 @@.
9c50: 20 7d 20 7b 30 20 7b 7d 7d 0a 20 74 65 73 74 20   } {0 {}}. test 
9c60: 73 74 72 69 6e 67 2d 35 2e 37 20 7b 73 74 72 69  string-5.7 {stri
9c70: 6e 67 20 69 6e 64 65 78 7d 20 7b 0a 20 20 20 20  ng index} {.    
9c80: 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 73 74   list [catch {st
9c90: 72 69 6e 67 20 69 6e 64 65 78 20 61 20 78 79 7a  ring index a xyz
9ca0: 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b  } msg] $msg.-} {
9cb0: 31 20 7b 62 61 64 20 69 6e 64 65 78 20 22 78 79  1 {bad index "xy
9cc0: 7a 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65  z": must be inte
9cd0: 67 65 72 20 6f 72 20 65 6e 64 3f 2d 69 6e 74 65  ger or end?-inte
9ce0: 67 65 72 3f 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61  ger?}}.+} {1 {ba
9cf0: 64 20 69 6e 64 65 78 20 22 78 79 7a 22 3a 20 6d  d index "xyz": m
9d00: 75 73 74 20 62 65 20 69 6e 74 65 67 65 72 3f 5b  ust be integer?[
9d10: 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 6f 72 20 65  +-]integer? or e
9d20: 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 7d  nd?[+-]integer?}
9d30: 7d 0a 20 74 65 73 74 20 73 74 72 69 6e 67 2d 35  }. test string-5
9d40: 2e 38 20 7b 73 74 72 69 6e 67 20 69 6e 64 65 78  .8 {string index
9d50: 7d 20 7b 0a 20 20 20 20 20 73 74 72 69 6e 67 20  } {.     string 
9d60: 69 6e 64 65 78 20 61 62 63 20 65 6e 64 0a 20 7d  index abc end. }
9d70: 20 63 0a 40 40 20 2d 32 37 36 2c 31 30 20 2b 32   c.@@ -276,10 +2
9d80: 37 36 2c 31 30 20 40 40 0a 20 7d 20 30 0a 20 74  76,10 @@. } 0. t
9d90: 65 73 74 20 73 74 72 69 6e 67 2d 35 2e 31 37 20  est string-5.17 
9da0: 7b 73 74 72 69 6e 67 20 69 6e 64 65 78 2c 20 62  {string index, b
9db0: 61 64 20 69 6e 74 65 67 65 72 7d 20 7b 0a 20 20  ad integer} {.  
9dc0: 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b     list [catch {
9dd0: 73 74 72 69 6e 67 20 69 6e 64 65 78 20 22 61 62  string index "ab
9de0: 63 22 20 30 38 7d 20 6d 73 67 5d 20 24 6d 73 67  c" 08} msg] $msg
9df0: 0a 2d 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64 65  .-} {1 {bad inde
9e00: 78 20 22 30 38 22 3a 20 6d 75 73 74 20 62 65 20  x "08": must be 
9e10: 69 6e 74 65 67 65 72 20 6f 72 20 65 6e 64 3f 2d  integer or end?-
9e20: 69 6e 74 65 67 65 72 3f 20 28 6c 6f 6f 6b 73 20  integer? (looks 
9e30: 6c 69 6b 65 20 69 6e 76 61 6c 69 64 20 6f 63 74  like invalid oct
9e40: 61 6c 20 6e 75 6d 62 65 72 29 7d 7d 0a 2b 7d 20  al number)}}.+} 
9e50: 7b 31 20 7b 62 61 64 20 69 6e 64 65 78 20 22 30  {1 {bad index "0
9e60: 38 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65  8": must be inte
9e70: 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f  ger?[+-]integer?
9e80: 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65   or end?[+-]inte
9e90: 67 65 72 3f 20 28 6c 6f 6f 6b 73 20 6c 69 6b 65  ger? (looks like
9ea0: 20 69 6e 76 61 6c 69 64 20 6f 63 74 61 6c 20 6e   invalid octal n
9eb0: 75 6d 62 65 72 29 7d 7d 0a 20 74 65 73 74 20 73  umber)}}. test s
9ec0: 74 72 69 6e 67 2d 35 2e 31 38 20 7b 73 74 72 69  tring-5.18 {stri
9ed0: 6e 67 20 69 6e 64 65 78 2c 20 62 61 64 20 69 6e  ng index, bad in
9ee0: 74 65 67 65 72 7d 20 7b 0a 20 20 20 20 20 6c 69  teger} {.     li
9ef0: 73 74 20 5b 63 61 74 63 68 20 7b 73 74 72 69 6e  st [catch {strin
9f00: 67 20 69 6e 64 65 78 20 22 61 62 63 22 20 65 6e  g index "abc" en
9f10: 64 2d 30 30 32 38 39 7d 20 6d 73 67 5d 20 24 6d  d-00289} msg] $m
9f20: 73 67 0a 2d 7d 20 7b 31 20 7b 62 61 64 20 69 6e  sg.-} {1 {bad in
9f30: 64 65 78 20 22 65 6e 64 2d 30 30 32 38 39 22 3a  dex "end-00289":
9f40: 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65 72   must be integer
9f50: 20 6f 72 20 65 6e 64 3f 2d 69 6e 74 65 67 65 72   or end?-integer
9f60: 3f 20 28 6c 6f 6f 6b 73 20 6c 69 6b 65 20 69 6e  ? (looks like in
9f70: 76 61 6c 69 64 20 6f 63 74 61 6c 20 6e 75 6d 62  valid octal numb
9f80: 65 72 29 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61 64  er)}}.+} {1 {bad
9f90: 20 69 6e 64 65 78 20 22 65 6e 64 2d 30 30 32 38   index "end-0028
9fa0: 39 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65  9": must be inte
9fb0: 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f  ger?[+-]integer?
9fc0: 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65   or end?[+-]inte
9fd0: 67 65 72 3f 20 28 6c 6f 6f 6b 73 20 6c 69 6b 65  ger? (looks like
9fe0: 20 69 6e 76 61 6c 69 64 20 6f 63 74 61 6c 20 6e   invalid octal n
9ff0: 75 6d 62 65 72 29 7d 7d 0a 20 74 65 73 74 20 73  umber)}}. test s
a000: 74 72 69 6e 67 2d 35 2e 31 39 20 7b 73 74 72 69  tring-5.19 {stri
a010: 6e 67 20 69 6e 64 65 78 2c 20 62 79 74 65 61 72  ng index, bytear
a020: 72 61 79 20 6f 62 6a 65 63 74 20 6f 75 74 20 6f  ray object out o
a030: 66 20 62 6f 75 6e 64 73 7d 20 7b 0a 20 20 20 20  f bounds} {.    
a040: 20 73 74 72 69 6e 67 20 69 6e 64 65 78 20 5b 62   string index [b
a050: 69 6e 61 72 79 20 66 6f 72 6d 61 74 20 49 2a 20  inary format I* 
a060: 7b 30 78 35 30 35 31 35 32 35 33 20 30 78 35 32  {0x50515253 0x52
a070: 7d 5d 20 2d 31 0a 20 7d 20 7b 7d 0a 40 40 20 2d  }] -1. } {}.@@ -
a080: 36 36 37 2c 37 20 2b 36 36 37 2c 37 20 40 40 0a  667,7 +667,7 @@.
a090: 20 7d 20 7b 31 20 7b 77 72 6f 6e 67 20 23 20 61   } {1 {wrong # a
a0a0: 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22  rgs: should be "
a0b0: 73 74 72 69 6e 67 20 6c 61 73 74 20 73 75 62 53  string last subS
a0c0: 74 72 69 6e 67 20 73 74 72 69 6e 67 20 3f 73 74  tring string ?st
a0d0: 61 72 74 49 6e 64 65 78 3f 22 7d 7d 0a 20 74 65  artIndex?"}}. te
a0e0: 73 74 20 73 74 72 69 6e 67 2d 37 2e 32 20 7b 73  st string-7.2 {s
a0f0: 74 72 69 6e 67 20 6c 61 73 74 2c 20 62 61 64 20  tring last, bad 
a100: 61 72 67 73 7d 20 7b 0a 20 20 20 20 20 6c 69 73  args} {.     lis
a110: 74 20 5b 63 61 74 63 68 20 7b 73 74 72 69 6e 67  t [catch {string
a120: 20 6c 61 73 74 20 61 20 62 20 63 7d 20 6d 73 67   last a b c} msg
a130: 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b 62 61  ] $msg.-} {1 {ba
a140: 64 20 69 6e 64 65 78 20 22 63 22 3a 20 6d 75 73  d index "c": mus
a150: 74 20 62 65 20 69 6e 74 65 67 65 72 20 6f 72 20  t be integer or 
a160: 65 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 7d 7d 0a  end?-integer?}}.
a170: 2b 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64 65 78  +} {1 {bad index
a180: 20 22 63 22 3a 20 6d 75 73 74 20 62 65 20 69 6e   "c": must be in
a190: 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65  teger?[+-]intege
a1a0: 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e  r? or end?[+-]in
a1b0: 74 65 67 65 72 3f 7d 7d 0a 20 74 65 73 74 20 73  teger?}}. test s
a1c0: 74 72 69 6e 67 2d 37 2e 33 20 7b 73 74 72 69 6e  tring-7.3 {strin
a1d0: 67 20 6c 61 73 74 2c 20 74 6f 6f 20 6d 61 6e 79  g last, too many
a1e0: 20 61 72 67 73 7d 20 7b 0a 20 20 20 20 20 6c 69   args} {.     li
a1f0: 73 74 20 5b 63 61 74 63 68 20 7b 73 74 72 69 6e  st [catch {strin
a200: 67 20 6c 61 73 74 20 61 20 62 20 63 20 64 7d 20  g last a b c d} 
a210: 6d 73 67 5d 20 24 6d 73 67 0a 20 7d 20 7b 31 20  msg] $msg. } {1 
a220: 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73  {wrong # args: s
a230: 68 6f 75 6c 64 20 62 65 20 22 73 74 72 69 6e 67  hould be "string
a240: 20 6c 61 73 74 20 73 75 62 53 74 72 69 6e 67 20   last subString 
a250: 73 74 72 69 6e 67 20 3f 73 74 61 72 74 49 6e 64  string ?startInd
a260: 65 78 3f 22 7d 7d 0a 40 40 20 2d 31 30 32 32 2c  ex?"}}.@@ -1022,
a270: 37 20 2b 31 30 32 32 2c 37 20 40 40 0a 20 20 20  7 +1022,7 @@.   
a280: 20 20 73 74 72 69 6e 67 20 72 61 6e 67 65 20 61    string range a
a290: 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 20  bcdefghijklmnop 
a2a0: 37 20 31 30 30 30 0a 20 7d 20 7b 68 69 6a 6b 6c  7 1000. } {hijkl
a2b0: 6d 6e 6f 70 7d 0a 20 74 65 73 74 20 73 74 72 69  mnop}. test stri
a2c0: 6e 67 2d 31 32 2e 36 20 7b 73 74 72 69 6e 67 20  ng-12.6 {string 
a2d0: 72 61 6e 67 65 7d 20 7b 0a 2d 20 20 20 20 73 74  range} {.-    st
a2e0: 72 69 6e 67 20 72 61 6e 67 65 20 61 62 63 64 65  ring range abcde
a2f0: 66 67 68 69 6a 6b 6c 6d 6e 6f 70 20 31 30 20 65  fghijklmnop 10 e
a300: 0a 2b 20 20 20 20 73 74 72 69 6e 67 20 72 61 6e  .+    string ran
a310: 67 65 20 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d  ge abcdefghijklm
a320: 6e 6f 70 20 31 30 20 65 6e 64 0a 20 7d 20 7b 6b  nop 10 end. } {k
a330: 6c 6d 6e 6f 70 7d 0a 20 74 65 73 74 20 73 74 72  lmnop}. test str
a340: 69 6e 67 2d 31 32 2e 37 20 7b 73 74 72 69 6e 67  ing-12.7 {string
a350: 20 72 61 6e 67 65 2c 20 6c 61 73 74 20 3c 20 66   range, last < f
a360: 69 72 73 74 7d 20 7b 0a 20 20 20 20 20 73 74 72  irst} {.     str
a370: 69 6e 67 20 72 61 6e 67 65 20 61 62 63 64 65 66  ing range abcdef
a380: 67 68 69 6a 6b 6c 6d 6e 6f 70 20 31 30 20 39 0a  ghijklmnop 10 9.
a390: 40 40 20 2d 31 30 34 31 2c 31 35 20 2b 31 30 34  @@ -1041,15 +104
a3a0: 31 2c 31 35 20 40 40 0a 20 7d 20 7b 61 62 63 64  1,15 @@. } {abcd
a3b0: 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 7d 0a 20 74  efghijklmnop}. t
a3c0: 65 73 74 20 73 74 72 69 6e 67 2d 31 32 2e 31 32  est string-12.12
a3d0: 20 7b 73 74 72 69 6e 67 20 72 61 6e 67 65 7d 20   {string range} 
a3e0: 7b 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74  {.     list [cat
a3f0: 63 68 20 7b 73 74 72 69 6e 67 20 72 61 6e 67 65  ch {string range
a400: 20 61 62 63 20 61 62 63 20 31 7d 20 6d 73 67 5d   abc abc 1} msg]
a410: 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b 62 61 64   $msg.-} {1 {bad
a420: 20 69 6e 64 65 78 20 22 61 62 63 22 3a 20 6d 75   index "abc": mu
a430: 73 74 20 62 65 20 69 6e 74 65 67 65 72 20 6f 72  st be integer or
a440: 20 65 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 7d 7d   end?-integer?}}
a450: 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64 65  .+} {1 {bad inde
a460: 78 20 22 61 62 63 22 3a 20 6d 75 73 74 20 62 65  x "abc": must be
a470: 20 69 6e 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74   integer?[+-]int
a480: 65 67 65 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d  eger? or end?[+-
a490: 5d 69 6e 74 65 67 65 72 3f 7d 7d 0a 20 74 65 73  ]integer?}}. tes
a4a0: 74 20 73 74 72 69 6e 67 2d 31 32 2e 31 33 20 7b  t string-12.13 {
a4b0: 73 74 72 69 6e 67 20 72 61 6e 67 65 7d 20 7b 0a  string range} {.
a4c0: 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68       list [catch
a4d0: 20 7b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 61   {string range a
a4e0: 62 63 20 31 20 65 6f 66 7d 20 6d 73 67 5d 20 24  bc 1 eof} msg] $
a4f0: 6d 73 67 0a 2d 7d 20 7b 31 20 7b 62 61 64 20 69  msg.-} {1 {bad i
a500: 6e 64 65 78 20 22 65 6f 66 22 3a 20 6d 75 73 74  ndex "eof": must
a510: 20 62 65 20 69 6e 74 65 67 65 72 20 6f 72 20 65   be integer or e
a520: 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 7d 7d 0a 2b  nd?-integer?}}.+
a530: 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64 65 78 20  } {1 {bad index 
a540: 22 65 6f 66 22 3a 20 6d 75 73 74 20 62 65 20 69  "eof": must be i
a550: 6e 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67  nteger?[+-]integ
a560: 65 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69  er? or end?[+-]i
a570: 6e 74 65 67 65 72 3f 7d 7d 0a 20 74 65 73 74 20  nteger?}}. test 
a580: 73 74 72 69 6e 67 2d 31 32 2e 31 34 20 7b 73 74  string-12.14 {st
a590: 72 69 6e 67 20 72 61 6e 67 65 7d 20 7b 0a 20 20  ring range} {.  
a5a0: 20 20 20 73 74 72 69 6e 67 20 72 61 6e 67 65 20     string range 
a5b0: 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70  abcdefghijklmnop
a5c0: 20 65 6e 64 2d 31 20 65 6e 64 0a 20 7d 20 7b 6f   end-1 end. } {o
a5d0: 70 7d 0a 20 74 65 73 74 20 73 74 72 69 6e 67 2d  p}. test string-
a5e0: 31 32 2e 31 35 20 7b 73 74 72 69 6e 67 20 72 61  12.15 {string ra
a5f0: 6e 67 65 7d 20 7b 0a 2d 20 20 20 20 73 74 72 69  nge} {.-    stri
a600: 6e 67 20 72 61 6e 67 65 20 61 62 63 64 65 66 67  ng range abcdefg
a610: 68 69 6a 6b 6c 6d 6e 6f 70 20 65 20 31 30 30 30  hijklmnop e 1000
a620: 0a 2b 20 20 20 20 73 74 72 69 6e 67 20 72 61 6e  .+    string ran
a630: 67 65 20 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d  ge abcdefghijklm
a640: 6e 6f 70 20 65 6e 64 20 31 30 30 30 0a 20 7d 20  nop end 1000. } 
a650: 7b 70 7d 0a 20 74 65 73 74 20 73 74 72 69 6e 67  {p}. test string
a660: 2d 31 32 2e 31 36 20 7b 73 74 72 69 6e 67 20 72  -12.16 {string r
a670: 61 6e 67 65 7d 20 7b 0a 20 20 20 20 20 73 74 72  ange} {.     str
a680: 69 6e 67 20 72 61 6e 67 65 20 61 62 63 64 65 66  ing range abcdef
a690: 67 68 69 6a 6b 6c 6d 6e 6f 70 20 65 6e 64 20 65  ghijklmnop end e
a6a0: 6e 64 2d 31 0a 40 40 20 2d 31 31 33 32 2c 37 20  nd-1.@@ -1132,7 
a6b0: 2b 31 31 33 32 2c 37 20 40 40 0a 20 20 20 20 20  +1132,7 @@.     
a6c0: 73 74 72 69 6e 67 20 72 65 70 6c 61 63 65 20 61  string replace a
a6d0: 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 20  bcdefghijklmnop 
a6e0: 37 20 31 30 30 30 0a 20 7d 20 7b 61 62 63 64 65  7 1000. } {abcde
a6f0: 66 67 7d 0a 20 74 65 73 74 20 73 74 72 69 6e 67  fg}. test string
a700: 2d 31 34 2e 37 20 7b 73 74 72 69 6e 67 20 72 65  -14.7 {string re
a710: 70 6c 61 63 65 7d 20 7b 0a 2d 20 20 20 20 73 74  place} {.-    st
a720: 72 69 6e 67 20 72 65 70 6c 61 63 65 20 61 62 63  ring replace abc
a730: 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 20 31 30  defghijklmnop 10
a740: 20 65 0a 2b 20 20 20 20 73 74 72 69 6e 67 20 72   e.+    string r
a750: 65 70 6c 61 63 65 20 61 62 63 64 65 66 67 68 69  eplace abcdefghi
a760: 6a 6b 6c 6d 6e 6f 70 20 31 30 20 65 6e 64 0a 20  jklmnop 10 end. 
a770: 7d 20 7b 61 62 63 64 65 66 67 68 69 6a 7d 0a 20  } {abcdefghij}. 
a780: 74 65 73 74 20 73 74 72 69 6e 67 2d 31 34 2e 38  test string-14.8
a790: 20 7b 73 74 72 69 6e 67 20 72 65 70 6c 61 63 65   {string replace
a7a0: 7d 20 7b 0a 20 20 20 20 20 73 74 72 69 6e 67 20  } {.     string 
a7b0: 72 65 70 6c 61 63 65 20 61 62 63 64 65 66 67 68  replace abcdefgh
a7c0: 69 6a 6b 6c 6d 6e 6f 70 20 31 30 20 39 0a 40 40  ijklmnop 10 9.@@
a7d0: 20 2d 31 31 35 31 2c 31 35 20 2b 31 31 35 31 2c   -1151,15 +1151,
a7e0: 31 35 20 40 40 0a 20 7d 20 7b 7d 0a 20 74 65 73  15 @@. } {}. tes
a7f0: 74 20 73 74 72 69 6e 67 2d 31 34 2e 31 33 20 7b  t string-14.13 {
a800: 73 74 72 69 6e 67 20 72 65 70 6c 61 63 65 7d 20  string replace} 
a810: 7b 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74  {.     list [cat
a820: 63 68 20 7b 73 74 72 69 6e 67 20 72 65 70 6c 61  ch {string repla
a830: 63 65 20 61 62 63 20 61 62 63 20 31 7d 20 6d 73  ce abc abc 1} ms
a840: 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b 62  g] $msg.-} {1 {b
a850: 61 64 20 69 6e 64 65 78 20 22 61 62 63 22 3a 20  ad index "abc": 
a860: 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65 72 20  must be integer 
a870: 6f 72 20 65 6e 64 3f 2d 69 6e 74 65 67 65 72 3f  or end?-integer?
a880: 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 69 6e  }}.+} {1 {bad in
a890: 64 65 78 20 22 61 62 63 22 3a 20 6d 75 73 74 20  dex "abc": must 
a8a0: 62 65 20 69 6e 74 65 67 65 72 3f 5b 2b 2d 5d 69  be integer?[+-]i
a8b0: 6e 74 65 67 65 72 3f 20 6f 72 20 65 6e 64 3f 5b  nteger? or end?[
a8c0: 2b 2d 5d 69 6e 74 65 67 65 72 3f 7d 7d 0a 20 74  +-]integer?}}. t
a8d0: 65 73 74 20 73 74 72 69 6e 67 2d 31 34 2e 31 34  est string-14.14
a8e0: 20 7b 73 74 72 69 6e 67 20 72 65 70 6c 61 63 65   {string replace
a8f0: 7d 20 7b 0a 20 20 20 20 20 6c 69 73 74 20 5b 63  } {.     list [c
a900: 61 74 63 68 20 7b 73 74 72 69 6e 67 20 72 65 70  atch {string rep
a910: 6c 61 63 65 20 61 62 63 20 31 20 65 6f 66 7d 20  lace abc 1 eof} 
a920: 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20  msg] $msg.-} {1 
a930: 7b 62 61 64 20 69 6e 64 65 78 20 22 65 6f 66 22  {bad index "eof"
a940: 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65  : must be intege
a950: 72 20 6f 72 20 65 6e 64 3f 2d 69 6e 74 65 67 65  r or end?-intege
a960: 72 3f 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61 64 20  r?}}.+} {1 {bad 
a970: 69 6e 64 65 78 20 22 65 6f 66 22 3a 20 6d 75 73  index "eof": mus
a980: 74 20 62 65 20 69 6e 74 65 67 65 72 3f 5b 2b 2d  t be integer?[+-
a990: 5d 69 6e 74 65 67 65 72 3f 20 6f 72 20 65 6e 64  ]integer? or end
a9a0: 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 7d 7d 0a  ?[+-]integer?}}.
a9b0: 20 74 65 73 74 20 73 74 72 69 6e 67 2d 31 34 2e   test string-14.
a9c0: 31 35 20 7b 73 74 72 69 6e 67 20 72 65 70 6c 61  15 {string repla
a9d0: 63 65 7d 20 7b 0a 20 20 20 20 20 73 74 72 69 6e  ce} {.     strin
a9e0: 67 20 72 65 70 6c 61 63 65 20 61 62 63 64 65 66  g replace abcdef
a9f0: 67 68 69 6a 6b 6c 6d 6e 6f 70 20 65 6e 64 2d 31  ghijklmnop end-1
aa00: 30 20 65 6e 64 2d 32 20 4e 45 57 0a 20 7d 20 7b  0 end-2 NEW. } {
aa10: 61 62 63 64 65 4e 45 57 6f 70 7d 0a 20 74 65 73  abcdeNEWop}. tes
aa20: 74 20 73 74 72 69 6e 67 2d 31 34 2e 31 36 20 7b  t string-14.16 {
aa30: 73 74 72 69 6e 67 20 72 65 70 6c 61 63 65 7d 20  string replace} 
aa40: 7b 0a 2d 20 20 20 20 73 74 72 69 6e 67 20 72 65  {.-    string re
aa50: 70 6c 61 63 65 20 61 62 63 64 65 66 67 68 69 6a  place abcdefghij
aa60: 6b 6c 6d 6e 6f 70 20 30 20 65 20 66 6f 6f 0a 2b  klmnop 0 e foo.+
aa70: 20 20 20 20 73 74 72 69 6e 67 20 72 65 70 6c 61      string repla
aa80: 63 65 20 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d  ce abcdefghijklm
aa90: 6e 6f 70 20 30 20 65 6e 64 20 66 6f 6f 0a 20 7d  nop 0 end foo. }
aaa0: 20 7b 66 6f 6f 7d 0a 20 74 65 73 74 20 73 74 72   {foo}. test str
aab0: 69 6e 67 2d 31 34 2e 31 37 20 7b 73 74 72 69 6e  ing-14.17 {strin
aac0: 67 20 72 65 70 6c 61 63 65 7d 20 7b 0a 20 20 20  g replace} {.   
aad0: 20 20 73 74 72 69 6e 67 20 72 65 70 6c 61 63 65    string replace
aae0: 20 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f   abcdefghijklmno
aaf0: 70 20 65 6e 64 20 65 6e 64 2d 31 0a 40 40 20 2d  p end end-1.@@ -
ab00: 31 31 37 30 2c 37 20 2b 31 31 37 30 2c 37 20 40  1170,7 +1170,7 @
ab10: 40 0a 20 7d 20 7b 31 20 7b 77 72 6f 6e 67 20 23  @. } {1 {wrong #
ab20: 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65   args: should be
ab30: 20 22 73 74 72 69 6e 67 20 74 6f 6c 6f 77 65 72   "string tolower
ab40: 20 73 74 72 69 6e 67 20 3f 66 69 72 73 74 3f 20   string ?first? 
ab50: 3f 6c 61 73 74 3f 22 7d 7d 0a 20 74 65 73 74 20  ?last?"}}. test 
ab60: 73 74 72 69 6e 67 2d 31 35 2e 32 20 7b 73 74 72  string-15.2 {str
ab70: 69 6e 67 20 74 6f 6c 6f 77 65 72 20 62 61 64 20  ing tolower bad 
ab80: 61 72 67 73 7d 20 7b 0a 20 20 20 20 20 6c 69 73  args} {.     lis
ab90: 74 20 5b 63 61 74 63 68 20 7b 73 74 72 69 6e 67  t [catch {string
aba0: 20 74 6f 6c 6f 77 65 72 20 61 20 62 7d 20 6d 73   tolower a b} ms
abb0: 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b 62  g] $msg.-} {1 {b
abc0: 61 64 20 69 6e 64 65 78 20 22 62 22 3a 20 6d 75  ad index "b": mu
abd0: 73 74 20 62 65 20 69 6e 74 65 67 65 72 20 6f 72  st be integer or
abe0: 20 65 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 7d 7d   end?-integer?}}
abf0: 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64 65  .+} {1 {bad inde
ac00: 78 20 22 62 22 3a 20 6d 75 73 74 20 62 65 20 69  x "b": must be i
ac10: 6e 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67  nteger?[+-]integ
ac20: 65 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69  er? or end?[+-]i
ac30: 6e 74 65 67 65 72 3f 7d 7d 0a 20 74 65 73 74 20  nteger?}}. test 
ac40: 73 74 72 69 6e 67 2d 31 35 2e 33 20 7b 73 74 72  string-15.3 {str
ac50: 69 6e 67 20 74 6f 6c 6f 77 65 72 20 74 6f 6f 20  ing tolower too 
ac60: 6d 61 6e 79 20 61 72 67 73 7d 20 7b 0a 20 20 20  many args} {.   
ac70: 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 73    list [catch {s
ac80: 74 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 41 42  tring tolower AB
ac90: 43 20 31 20 65 6e 64 20 6f 6f 70 73 7d 20 6d 73  C 1 end oops} ms
aca0: 67 5d 20 24 6d 73 67 0a 20 7d 20 7b 31 20 7b 77  g] $msg. } {1 {w
acb0: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f  rong # args: sho
acc0: 75 6c 64 20 62 65 20 22 73 74 72 69 6e 67 20 74  uld be "string t
acd0: 6f 6c 6f 77 65 72 20 73 74 72 69 6e 67 20 3f 66  olower string ?f
ace0: 69 72 73 74 3f 20 3f 6c 61 73 74 3f 22 7d 7d 0a  irst? ?last?"}}.
acf0: 40 40 20 2d 31 32 30 31 2c 37 20 2b 31 32 30 31  @@ -1201,7 +1201
ad00: 2c 37 20 40 40 0a 20 7d 20 7b 31 20 7b 77 72 6f  ,7 @@. } {1 {wro
ad10: 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c  ng # args: shoul
ad20: 64 20 62 65 20 22 73 74 72 69 6e 67 20 74 6f 75  d be "string tou
ad30: 70 70 65 72 20 73 74 72 69 6e 67 20 3f 66 69 72  pper string ?fir
ad40: 73 74 3f 20 3f 6c 61 73 74 3f 22 7d 7d 0a 20 74  st? ?last?"}}. t
ad50: 65 73 74 20 73 74 72 69 6e 67 2d 31 36 2e 32 20  est string-16.2 
ad60: 7b 73 74 72 69 6e 67 20 74 6f 75 70 70 65 72 7d  {string toupper}
ad70: 20 7b 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61   {.     list [ca
ad80: 74 63 68 20 7b 73 74 72 69 6e 67 20 74 6f 75 70  tch {string toup
ad90: 70 65 72 20 61 20 62 7d 20 6d 73 67 5d 20 24 6d  per a b} msg] $m
ada0: 73 67 0a 2d 7d 20 7b 31 20 7b 62 61 64 20 69 6e  sg.-} {1 {bad in
adb0: 64 65 78 20 22 62 22 3a 20 6d 75 73 74 20 62 65  dex "b": must be
adc0: 20 69 6e 74 65 67 65 72 20 6f 72 20 65 6e 64 3f   integer or end?
add0: 2d 69 6e 74 65 67 65 72 3f 7d 7d 0a 2b 7d 20 7b  -integer?}}.+} {
ade0: 31 20 7b 62 61 64 20 69 6e 64 65 78 20 22 62 22  1 {bad index "b"
adf0: 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65  : must be intege
ae00: 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 6f  r?[+-]integer? o
ae10: 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65  r end?[+-]intege
ae20: 72 3f 7d 7d 0a 20 74 65 73 74 20 73 74 72 69 6e  r?}}. test strin
ae30: 67 2d 31 36 2e 33 20 7b 73 74 72 69 6e 67 20 74  g-16.3 {string t
ae40: 6f 75 70 70 65 72 7d 20 7b 0a 20 20 20 20 20 6c  oupper} {.     l
ae50: 69 73 74 20 5b 63 61 74 63 68 20 7b 73 74 72 69  ist [catch {stri
ae60: 6e 67 20 74 6f 75 70 70 65 72 20 61 20 31 20 65  ng toupper a 1 e
ae70: 6e 64 20 6f 6f 70 73 7d 20 6d 73 67 5d 20 24 6d  nd oops} msg] $m
ae80: 73 67 0a 20 7d 20 7b 31 20 7b 77 72 6f 6e 67 20  sg. } {1 {wrong 
ae90: 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62  # args: should b
aea0: 65 20 22 73 74 72 69 6e 67 20 74 6f 75 70 70 65  e "string touppe
aeb0: 72 20 73 74 72 69 6e 67 20 3f 66 69 72 73 74 3f  r string ?first?
aec0: 20 3f 6c 61 73 74 3f 22 7d 7d 0a 40 40 20 2d 31   ?last?"}}.@@ -1
aed0: 32 33 32 2c 37 20 2b 31 32 33 32 2c 37 20 40 40  232,7 +1232,7 @@
aee0: 0a 20 7d 20 7b 31 20 7b 77 72 6f 6e 67 20 23 20  . } {1 {wrong # 
aef0: 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20  args: should be 
af00: 22 73 74 72 69 6e 67 20 74 6f 74 69 74 6c 65 20  "string totitle 
af10: 73 74 72 69 6e 67 20 3f 66 69 72 73 74 3f 20 3f  string ?first? ?
af20: 6c 61 73 74 3f 22 7d 7d 0a 20 74 65 73 74 20 73  last?"}}. test s
af30: 74 72 69 6e 67 2d 31 37 2e 32 20 7b 73 74 72 69  tring-17.2 {stri
af40: 6e 67 20 74 6f 74 69 74 6c 65 7d 20 7b 0a 20 20  ng totitle} {.  
af50: 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b     list [catch {
af60: 73 74 72 69 6e 67 20 74 6f 74 69 74 6c 65 20 61  string totitle a
af70: 20 62 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d   b} msg] $msg.-}
af80: 20 7b 31 20 7b 62 61 64 20 69 6e 64 65 78 20 22   {1 {bad index "
af90: 62 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65  b": must be inte
afa0: 67 65 72 20 6f 72 20 65 6e 64 3f 2d 69 6e 74 65  ger or end?-inte
afb0: 67 65 72 3f 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61  ger?}}.+} {1 {ba
afc0: 64 20 69 6e 64 65 78 20 22 62 22 3a 20 6d 75 73  d index "b": mus
afd0: 74 20 62 65 20 69 6e 74 65 67 65 72 3f 5b 2b 2d  t be integer?[+-
afe0: 5d 69 6e 74 65 67 65 72 3f 20 6f 72 20 65 6e 64  ]integer? or end
aff0: 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 7d 7d 0a  ?[+-]integer?}}.
b000: 20 74 65 73 74 20 73 74 72 69 6e 67 2d 31 37 2e   test string-17.
b010: 33 20 7b 73 74 72 69 6e 67 20 74 6f 74 69 74 6c  3 {string totitl
b020: 65 7d 20 7b 0a 20 20 20 20 20 73 74 72 69 6e 67  e} {.     string
b030: 20 74 6f 74 69 74 6c 65 20 61 62 43 44 45 66 0a   totitle abCDEf.
b040: 20 7d 20 7b 41 62 63 64 65 66 7d 0a 40 40 20 2d   } {Abcdef}.@@ -
b050: 31 33 31 34 2c 37 20 2b 31 33 31 34 2c 37 20 40  1314,7 +1314,7 @
b060: 40 0a 20 7d 20 7b 31 20 7b 77 72 6f 6e 67 20 23  @. } {1 {wrong #
b070: 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65   args: should be
b080: 20 22 73 74 72 69 6e 67 20 77 6f 72 64 65 6e 64   "string wordend
b090: 20 73 74 72 69 6e 67 20 69 6e 64 65 78 22 7d 7d   string index"}}
b0a0: 0a 20 74 65 73 74 20 73 74 72 69 6e 67 2d 32 31  . test string-21
b0b0: 2e 33 20 7b 73 74 72 69 6e 67 20 77 6f 72 64 65  .3 {string worde
b0c0: 6e 64 7d 20 7b 0a 20 20 20 20 20 6c 69 73 74 20  nd} {.     list 
b0d0: 5b 63 61 74 63 68 20 7b 73 74 72 69 6e 67 20 77  [catch {string w
b0e0: 6f 72 64 65 6e 64 20 61 20 67 6f 72 70 7d 20 6d  ordend a gorp} m
b0f0: 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20 7b  sg] $msg.-} {1 {
b100: 62 61 64 20 69 6e 64 65 78 20 22 67 6f 72 70 22  bad index "gorp"
b110: 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65  : must be intege
b120: 72 20 6f 72 20 65 6e 64 3f 2d 69 6e 74 65 67 65  r or end?-intege
b130: 72 3f 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61 64 20  r?}}.+} {1 {bad 
b140: 69 6e 64 65 78 20 22 67 6f 72 70 22 3a 20 6d 75  index "gorp": mu
b150: 73 74 20 62 65 20 69 6e 74 65 67 65 72 3f 5b 2b  st be integer?[+
b160: 2d 5d 69 6e 74 65 67 65 72 3f 20 6f 72 20 65 6e  -]integer? or en
b170: 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 7d 7d  d?[+-]integer?}}
b180: 0a 20 74 65 73 74 20 73 74 72 69 6e 67 2d 32 31  . test string-21
b190: 2e 34 20 7b 73 74 72 69 6e 67 20 77 6f 72 64 65  .4 {string worde
b1a0: 6e 64 7d 20 7b 0a 20 20 20 20 20 73 74 72 69 6e  nd} {.     strin
b1b0: 67 20 77 6f 72 64 65 6e 64 20 61 62 63 2e 20 2d  g wordend abc. -
b1c0: 31 0a 20 7d 20 33 0a 40 40 20 2d 31 33 36 30 2c  1. } 3.@@ -1360,
b1d0: 37 20 2b 31 33 36 30 2c 37 20 40 40 0a 20 7d 20  7 +1360,7 @@. } 
b1e0: 7b 31 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73  {1 {wrong # args
b1f0: 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 73 74 72  : should be "str
b200: 69 6e 67 20 77 6f 72 64 73 74 61 72 74 20 73 74  ing wordstart st
b210: 72 69 6e 67 20 69 6e 64 65 78 22 7d 7d 0a 20 74  ring index"}}. t
b220: 65 73 74 20 73 74 72 69 6e 67 2d 32 32 2e 34 20  est string-22.4 
b230: 7b 73 74 72 69 6e 67 20 77 6f 72 64 73 74 61 72  {string wordstar
b240: 74 7d 20 7b 0a 20 20 20 20 20 6c 69 73 74 20 5b  t} {.     list [
b250: 63 61 74 63 68 20 7b 73 74 72 69 6e 67 20 77 6f  catch {string wo
b260: 72 64 73 74 61 72 74 20 61 20 67 6f 72 70 7d 20  rdstart a gorp} 
b270: 6d 73 67 5d 20 24 6d 73 67 0a 2d 7d 20 7b 31 20  msg] $msg.-} {1 
b280: 7b 62 61 64 20 69 6e 64 65 78 20 22 67 6f 72 70  {bad index "gorp
b290: 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67  ": must be integ
b2a0: 65 72 20 6f 72 20 65 6e 64 3f 2d 69 6e 74 65 67  er or end?-integ
b2b0: 65 72 3f 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61 64  er?}}.+} {1 {bad
b2c0: 20 69 6e 64 65 78 20 22 67 6f 72 70 22 3a 20 6d   index "gorp": m
b2d0: 75 73 74 20 62 65 20 69 6e 74 65 67 65 72 3f 5b  ust be integer?[
b2e0: 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 6f 72 20 65  +-]integer? or e
b2f0: 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 7d  nd?[+-]integer?}
b300: 7d 0a 20 74 65 73 74 20 73 74 72 69 6e 67 2d 32  }. test string-2
b310: 32 2e 35 20 7b 73 74 72 69 6e 67 20 77 6f 72 64  2.5 {string word
b320: 73 74 61 72 74 7d 20 7b 0a 20 20 20 20 20 73 74  start} {.     st
b330: 72 69 6e 67 20 77 6f 72 64 73 74 61 72 74 20 22  ring wordstart "
b340: 6f 6e 65 20 74 77 6f 20 74 68 72 65 65 5f 77 6f  one two three_wo
b350: 72 64 73 22 20 34 30 30 0a 20 7d 20 38 0a 49 6e  rds" 400. } 8.In
b360: 64 65 78 3a 20 74 65 73 74 73 2f 73 74 72 69 6e  dex: tests/strin
b370: 67 43 6f 6d 70 2e 74 65 73 74 0a 3d 3d 3d 3d 3d  gComp.test.=====
b380: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
b390: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
b3a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
b3b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52  ==============.R
b3c0: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f  CS file: /cvsroo
b3d0: 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73 2f  t/tcl/tcl/tests/
b3e0: 73 74 72 69 6e 67 43 6f 6d 70 2e 74 65 73 74 2c  stringComp.test,
b3f0: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76  v.retrieving rev
b400: 69 73 69 6f 6e 20 31 2e 38 0a 64 69 66 66 20 2d  ision 1.8.diff -
b410: 75 20 2d 72 31 2e 38 20 73 74 72 69 6e 67 43 6f  u -r1.8 stringCo
b420: 6d 70 2e 74 65 73 74 0a 2d 2d 2d 20 74 65 73 74  mp.test.--- test
b430: 73 2f 73 74 72 69 6e 67 43 6f 6d 70 2e 74 65 73  s/stringComp.tes
b440: 74 09 32 35 20 4d 61 79 20 32 30 30 34 20 31 38  t.25 May 2004 18
b450: 3a 35 38 3a 30 35 20 2d 30 30 30 30 09 31 2e 38  :58:05 -0000.1.8
b460: 0a 2b 2b 2b 20 74 65 73 74 73 2f 73 74 72 69 6e  .+++ tests/strin
b470: 67 43 6f 6d 70 2e 74 65 73 74 09 32 39 20 41 70  gComp.test.29 Ap
b480: 72 20 32 30 30 35 20 32 30 3a 33 30 3a 34 31 20  r 2005 20:30:41 
b490: 2d 30 30 30 30 0a 40 40 20 2d 32 32 36 2c 37 20  -0000.@@ -226,7 
b4a0: 2b 32 32 36 2c 37 20 40 40 0a 20 74 65 73 74 20  +226,7 @@. test 
b4b0: 73 74 72 69 6e 67 43 6f 6d 70 2d 34 2e 32 20 7b  stringComp-4.2 {
b4c0: 73 74 72 69 6e 67 20 66 69 72 73 74 2c 20 62 61  string first, ba
b4d0: 64 20 61 72 67 73 7d 20 7b 0a 20 20 20 20 20 70  d args} {.     p
b4e0: 72 6f 63 20 66 6f 6f 20 7b 7d 20 7b 73 74 72 69  roc foo {} {stri
b4f0: 6e 67 20 66 69 72 73 74 20 61 20 62 20 63 7d 0a  ng first a b c}.
b500: 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68       list [catch
b510: 20 7b 66 6f 6f 7d 20 6d 73 67 5d 20 24 6d 73 67   {foo} msg] $msg
b520: 0a 2d 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64 65  .-} {1 {bad inde
b530: 78 20 22 63 22 3a 20 6d 75 73 74 20 62 65 20 69  x "c": must be i
b540: 6e 74 65 67 65 72 20 6f 72 20 65 6e 64 3f 2d 69  nteger or end?-i
b550: 6e 74 65 67 65 72 3f 7d 7d 0a 2b 7d 20 7b 31 20  nteger?}}.+} {1 
b560: 7b 62 61 64 20 69 6e 64 65 78 20 22 63 22 3a 20  {bad index "c": 
b570: 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65 72 3f  must be integer?
b580: 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 6f 72 20  [+-]integer? or 
b590: 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f  end?[+-]integer?
b5a0: 7d 7d 0a 20 74 65 73 74 20 73 74 72 69 6e 67 43  }}. test stringC
b5b0: 6f 6d 70 2d 34 2e 33 20 7b 73 74 72 69 6e 67 20  omp-4.3 {string 
b5c0: 66 69 72 73 74 2c 20 74 6f 6f 20 6d 61 6e 79 20  first, too many 
b5d0: 61 72 67 73 7d 20 7b 0a 20 20 20 20 20 70 72 6f  args} {.     pro
b5e0: 63 20 66 6f 6f 20 7b 7d 20 7b 73 74 72 69 6e 67  c foo {} {string
b5f0: 20 66 69 72 73 74 20 61 20 62 20 35 20 64 7d 0a   first a b 5 d}.
b600: 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68       list [catch
b610: 20 7b 66 6f 6f 7d 20 6d 73 67 5d 20 24 6d 73 67   {foo} msg] $msg
b620: 0a 40 40 20 2d 33 30 33 2c 37 20 2b 33 30 33 2c  .@@ -303,7 +303,
b630: 37 20 40 40 0a 20 74 65 73 74 20 73 74 72 69 6e  7 @@. test strin
b640: 67 43 6f 6d 70 2d 35 2e 37 20 7b 73 74 72 69 6e  gComp-5.7 {strin
b650: 67 20 69 6e 64 65 78 7d 20 7b 0a 20 20 20 20 20  g index} {.     
b660: 70 72 6f 63 20 66 6f 6f 20 7b 7d 20 7b 73 74 72  proc foo {} {str
b670: 69 6e 67 20 69 6e 64 65 78 20 61 20 78 79 7a 7d  ing index a xyz}
b680: 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63  .     list [catc
b690: 68 20 7b 66 6f 6f 7d 20 6d 73 67 5d 20 24 6d 73  h {foo} msg] $ms
b6a0: 67 0a 2d 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64  g.-} {1 {bad ind
b6b0: 65 78 20 22 78 79 7a 22 3a 20 6d 75 73 74 20 62  ex "xyz": must b
b6c0: 65 20 69 6e 74 65 67 65 72 20 6f 72 20 65 6e 64  e integer or end
b6d0: 3f 2d 69 6e 74 65 67 65 72 3f 7d 7d 0a 2b 7d 20  ?-integer?}}.+} 
b6e0: 7b 31 20 7b 62 61 64 20 69 6e 64 65 78 20 22 78  {1 {bad index "x
b6f0: 79 7a 22 3a 20 6d 75 73 74 20 62 65 20 69 6e 74  yz": must be int
b700: 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72  eger?[+-]integer
b710: 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74  ? or end?[+-]int
b720: 65 67 65 72 3f 7d 7d 0a 20 74 65 73 74 20 73 74  eger?}}. test st
b730: 72 69 6e 67 43 6f 6d 70 2d 35 2e 38 20 7b 73 74  ringComp-5.8 {st
b740: 72 69 6e 67 20 69 6e 64 65 78 7d 20 7b 0a 20 20  ring index} {.  
b750: 20 20 20 70 72 6f 63 20 66 6f 6f 20 7b 7d 20 7b     proc foo {} {
b760: 73 74 72 69 6e 67 20 69 6e 64 65 78 20 61 62 63  string index abc
b770: 20 65 6e 64 7d 0a 20 20 20 20 20 66 6f 6f 0a 40   end}.     foo.@
b780: 40 20 2d 33 35 32 2c 31 31 20 2b 33 35 32 2c 31  @ -352,11 +352,1
b790: 31 20 40 40 0a 20 74 65 73 74 20 73 74 72 69 6e  1 @@. test strin
b7a0: 67 43 6f 6d 70 2d 35 2e 31 37 20 7b 73 74 72 69  gComp-5.17 {stri
b7b0: 6e 67 20 69 6e 64 65 78 2c 20 62 61 64 20 69 6e  ng index, bad in
b7c0: 74 65 67 65 72 7d 20 7b 0a 20 20 20 20 20 70 72  teger} {.     pr
b7d0: 6f 63 20 66 6f 6f 20 7b 7d 20 7b 73 74 72 69 6e  oc foo {} {strin
b7e0: 67 20 69 6e 64 65 78 20 22 61 62 63 22 20 30 38  g index "abc" 08
b7f0: 7d 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74  }.     list [cat
b800: 63 68 20 7b 66 6f 6f 7d 20 6d 73 67 5d 20 24 6d  ch {foo} msg] $m
b810: 73 67 0a 2d 7d 20 7b 31 20 7b 62 61 64 20 69 6e  sg.-} {1 {bad in
b820: 64 65 78 20 22 30 38 22 3a 20 6d 75 73 74 20 62  dex "08": must b
b830: 65 20 69 6e 74 65 67 65 72 20 6f 72 20 65 6e 64  e integer or end
b840: 3f 2d 69 6e 74 65 67 65 72 3f 20 28 6c 6f 6f 6b  ?-integer? (look
b850: 73 20 6c 69 6b 65 20 69 6e 76 61 6c 69 64 20 6f  s like invalid o
b860: 63 74 61 6c 20 6e 75 6d 62 65 72 29 7d 7d 0a 2b  ctal number)}}.+
b870: 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64 65 78 20  } {1 {bad index 
b880: 22 30 38 22 3a 20 6d 75 73 74 20 62 65 20 69 6e  "08": must be in
b890: 74 65 67 65 72 3f 5b 2b 2d 5d 69 6e 74 65 67 65  teger?[+-]intege
b8a0: 72 3f 20 6f 72 20 65 6e 64 3f 5b 2b 2d 5d 69 6e  r? or end?[+-]in
b8b0: 74 65 67 65 72 3f 20 28 6c 6f 6f 6b 73 20 6c 69  teger? (looks li
b8c0: 6b 65 20 69 6e 76 61 6c 69 64 20 6f 63 74 61 6c  ke invalid octal
b8d0: 20 6e 75 6d 62 65 72 29 7d 7d 0a 20 74 65 73 74   number)}}. test
b8e0: 20 73 74 72 69 6e 67 43 6f 6d 70 2d 35 2e 31 38   stringComp-5.18
b8f0: 20 7b 73 74 72 69 6e 67 20 69 6e 64 65 78 2c 20   {string index, 
b900: 62 61 64 20 69 6e 74 65 67 65 72 7d 20 7b 0a 20  bad integer} {. 
b910: 20 20 20 20 70 72 6f 63 20 66 6f 6f 20 7b 7d 20      proc foo {} 
b920: 7b 73 74 72 69 6e 67 20 69 6e 64 65 78 20 22 61  {string index "a
b930: 62 63 22 20 65 6e 64 2d 30 30 32 38 39 7d 0a 20  bc" end-00289}. 
b940: 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20      list [catch 
b950: 7b 66 6f 6f 7d 20 6d 73 67 5d 20 24 6d 73 67 0a  {foo} msg] $msg.
b960: 2d 7d 20 7b 31 20 7b 62 61 64 20 69 6e 64 65 78  -} {1 {bad index
b970: 20 22 65 6e 64 2d 30 30 32 38 39 22 3a 20 6d 75   "end-00289": mu
b980: 73 74 20 62 65 20 69 6e 74 65 67 65 72 20 6f 72  st be integer or
b990: 20 65 6e 64 3f 2d 69 6e 74 65 67 65 72 3f 20 28   end?-integer? (
b9a0: 6c 6f 6f 6b 73 20 6c 69 6b 65 20 69 6e 76 61 6c  looks like inval
b9b0: 69 64 20 6f 63 74 61 6c 20 6e 75 6d 62 65 72 29  id octal number)
b9c0: 7d 7d 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 69 6e  }}.+} {1 {bad in
b9d0: 64 65 78 20 22 65 6e 64 2d 30 30 32 38 39 22 3a  dex "end-00289":
b9e0: 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 65 72   must be integer
b9f0: 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72 3f 20 6f 72  ?[+-]integer? or
ba00: 20 65 6e 64 3f 5b 2b 2d 5d 69 6e 74 65 67 65 72   end?[+-]integer
ba10: 3f 20 28 6c 6f 6f 6b 73 20 6c 69 6b 65 20 69 6e  ? (looks like in
ba20: 76 61 6c 69 64 20 6f 63 74 61 6c 20 6e 75 6d 62  valid octal numb
ba30: 65 72 29 7d 7d 0a 20 74 65 73 74 20 73 74 72 69  er)}}. test stri
ba40: 6e 67 43 6f 6d 70 2d 35 2e 31 39 20 7b 73 74 72  ngComp-5.19 {str
ba50: 69 6e 67 20 69 6e 64 65 78 2c 20 62 79 74 65 61  ing index, bytea
ba60: 72 72 61 79 20 6f 62 6a 65 63 74 20 6f 75 74 20  rray object out 
ba70: 6f 66 20 62 6f 75 6e 64 73 7d 20 7b 0a 20 20 20  of bounds} {.   
ba80: 20 20 70 72 6f 63 20 66 6f 6f 20 7b 7d 20 7b 73    proc foo {} {s
ba90: 74 72 69 6e 67 20 69 6e 64 65 78 20 5b 62 69 6e  tring index [bin
baa0: 61 72 79 20 66 6f 72 6d 61 74 20 49 2a 20 7b 30  ary format I* {0
bab0: 78 35 30 35 31 35 32 35 33 20 30 78 35 32 7d 5d  x50515253 0x52}]
bac0: 20 2d 31 7d 0a 20 20 20 20 20 66 6f 6f 0a 49 6e   -1}.     foo.In
bad0: 64 65 78 3a 20 74 65 73 74 73 2f 75 74 69 6c 2e  dex: tests/util.
bae0: 74 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  test.===========
baf0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
bb00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
bb10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
bb20: 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c  ========.RCS fil
bb30: 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f  e: /cvsroot/tcl/
bb40: 74 63 6c 2f 74 65 73 74 73 2f 75 74 69 6c 2e 74  tcl/tests/util.t
bb50: 65 73 74 2c 76 0a 72 65 74 72 69 65 76 69 6e 67  est,v.retrieving
bb60: 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 34 0a 64   revision 1.14.d
bb70: 69 66 66 20 2d 75 20 2d 72 31 2e 31 34 20 75 74  iff -u -r1.14 ut
bb80: 69 6c 2e 74 65 73 74 0a 2d 2d 2d 20 74 65 73 74  il.test.--- test
bb90: 73 2f 75 74 69 6c 2e 74 65 73 74 09 31 39 20 4d  s/util.test.19 M
bba0: 61 79 20 32 30 30 34 20 32 30 3a 31 35 3a 33 32  ay 2004 20:15:32
bbb0: 20 2d 30 30 30 30 09 31 2e 31 34 0a 2b 2b 2b 20   -0000.1.14.+++ 
bbc0: 74 65 73 74 73 2f 75 74 69 6c 2e 74 65 73 74 09  tests/util.test.
bbd0: 32 39 20 41 70 72 20 32 30 30 35 20 32 30 3a 33  29 Apr 2005 20:3
bbe0: 30 3a 34 32 20 2d 30 30 30 30 0a 40 40 20 2d 33  0:42 -0000.@@ -3
bbf0: 38 38 2c 36 20 2b 33 38 38 2c 31 39 30 20 40 40  88,6 +388,190 @@
bc00: 0a 20 20 20 20 20 6c 69 73 74 20 5b 6c 6c 65 6e  .     list [llen
bc10: 67 74 68 20 5b 74 65 73 74 64 73 74 72 69 6e 67  gth [testdstring
bc20: 20 67 65 74 5d 5d 20 5b 73 74 72 69 6e 67 20 6c   get]] [string l
bc30: 65 6e 67 74 68 20 5b 74 65 73 74 64 73 74 72 69  ength [testdstri
bc40: 6e 67 20 67 65 74 5d 5d 0a 20 7d 20 7b 32 20 39  ng get]]. } {2 9
bc50: 7d 0a 20 0a 2b 74 65 73 74 20 75 74 69 6c 2d 39  }. .+test util-9
bc60: 2e 30 2e 30 20 7b 54 63 6c 47 65 74 49 6e 74 46  .0.0 {TclGetIntF
bc70: 6f 72 49 6e 64 65 78 7d 20 7b 0a 2b 20 20 20 20  orIndex} {.+    
bc80: 73 74 72 69 6e 67 20 69 6e 64 65 78 20 61 62 63  string index abc
bc90: 64 20 30 0a 2b 7d 20 61 0a 2b 74 65 73 74 20 75  d 0.+} a.+test u
bca0: 74 69 6c 2d 39 2e 30 2e 31 20 7b 54 63 6c 47 65  til-9.0.1 {TclGe
bcb0: 74 49 6e 74 46 6f 72 49 6e 64 65 78 7d 20 7b 0a  tIntForIndex} {.
bcc0: 2b 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65  +    string inde
bcd0: 78 20 61 62 63 64 20 30 78 30 0a 2b 7d 20 61 0a  x abcd 0x0.+} a.
bce0: 2b 74 65 73 74 20 75 74 69 6c 2d 39 2e 30 2e 32  +test util-9.0.2
bcf0: 20 7b 54 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e   {TclGetIntForIn
bd00: 64 65 78 7d 20 7b 0a 2b 20 20 20 20 73 74 72 69  dex} {.+    stri
bd10: 6e 67 20 69 6e 64 65 78 20 61 62 63 64 20 2d 30  ng index abcd -0
bd20: 78 30 0a 2b 7d 20 61 0a 2b 74 65 73 74 20 75 74  x0.+} a.+test ut
bd30: 69 6c 2d 39 2e 30 2e 33 20 7b 54 63 6c 47 65 74  il-9.0.3 {TclGet
bd40: 49 6e 74 46 6f 72 49 6e 64 65 78 7d 20 7b 0a 2b  IntForIndex} {.+
bd50: 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78      string index
bd60: 20 61 62 63 64 20 7b 20 30 20 7d 0a 2b 7d 20 61   abcd { 0 }.+} a
bd70: 0a 2b 74 65 73 74 20 75 74 69 6c 2d 39 2e 30 2e  .+test util-9.0.
bd80: 34 20 7b 54 63 6c 47 65 74 49 6e 74 46 6f 72 49  4 {TclGetIntForI
bd90: 6e 64 65 78 7d 20 7b 0a 2b 20 20 20 20 73 74 72  ndex} {.+    str
bda0: 69 6e 67 20 69 6e 64 65 78 20 61 62 63 64 20 7b  ing index abcd {
bdb0: 20 30 78 30 20 7d 0a 2b 7d 20 61 0a 2b 74 65 73   0x0 }.+} a.+tes
bdc0: 74 20 75 74 69 6c 2d 39 2e 30 2e 35 20 7b 54 63  t util-9.0.5 {Tc
bdd0: 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64 65 78 7d  lGetIntForIndex}
bde0: 20 7b 0a 2b 20 20 20 20 73 74 72 69 6e 67 20 69   {.+    string i
bdf0: 6e 64 65 78 20 61 62 63 64 20 7b 20 2d 30 78 30  ndex abcd { -0x0
be00: 20 7d 0a 2b 7d 20 61 0a 2b 74 65 73 74 20 75 74   }.+} a.+test ut
be10: 69 6c 2d 39 2e 30 2e 36 20 7b 54 63 6c 47 65 74  il-9.0.6 {TclGet
be20: 49 6e 74 46 6f 72 49 6e 64 65 78 7d 20 7b 0a 2b  IntForIndex} {.+
be30: 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78      string index
be40: 20 61 62 63 64 20 30 31 0a 2b 7d 20 62 0a 2b 74   abcd 01.+} b.+t
be50: 65 73 74 20 75 74 69 6c 2d 39 2e 30 2e 37 20 7b  est util-9.0.7 {
be60: 54 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64 65  TclGetIntForInde
be70: 78 7d 20 7b 0a 2b 20 20 20 20 73 74 72 69 6e 67  x} {.+    string
be80: 20 69 6e 64 65 78 20 61 62 63 64 20 7b 20 30 31   index abcd { 01
be90: 20 7d 0a 2b 7d 20 62 0a 2b 74 65 73 74 20 75 74   }.+} b.+test ut
bea0: 69 6c 2d 39 2e 31 2e 30 20 7b 54 63 6c 47 65 74  il-9.1.0 {TclGet
beb0: 49 6e 74 46 6f 72 49 6e 64 65 78 7d 20 7b 0a 2b  IntForIndex} {.+
bec0: 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78      string index
bed0: 20 61 62 63 64 20 33 0a 2b 7d 20 64 0a 2b 74 65   abcd 3.+} d.+te
bee0: 73 74 20 75 74 69 6c 2d 39 2e 31 2e 31 20 7b 54  st util-9.1.1 {T
bef0: 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64 65 78  clGetIntForIndex
bf00: 7d 20 7b 0a 2b 20 20 20 20 73 74 72 69 6e 67 20  } {.+    string 
bf10: 69 6e 64 65 78 20 61 62 63 64 20 7b 20 33 20 7d  index abcd { 3 }
bf20: 0a 2b 7d 20 64 0a 2b 74 65 73 74 20 75 74 69 6c  .+} d.+test util
bf30: 2d 39 2e 31 2e 32 20 7b 54 63 6c 47 65 74 49 6e  -9.1.2 {TclGetIn
bf40: 74 46 6f 72 49 6e 64 65 78 7d 20 7b 0a 2b 20 20  tForIndex} {.+  
bf50: 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78 20 61    string index a
bf60: 62 63 64 65 66 67 68 69 6a 6b 20 30 78 61 0a 2b  bcdefghijk 0xa.+
bf70: 7d 20 6b 0a 2b 74 65 73 74 20 75 74 69 6c 2d 39  } k.+test util-9
bf80: 2e 31 2e 33 20 7b 54 63 6c 47 65 74 49 6e 74 46  .1.3 {TclGetIntF
bf90: 6f 72 49 6e 64 65 78 7d 20 7b 0a 2b 20 20 20 20  orIndex} {.+    
bfa0: 73 74 72 69 6e 67 20 69 6e 64 65 78 20 61 62 63  string index abc
bfb0: 64 65 66 67 68 69 6a 6b 20 7b 20 30 78 61 20 7d  defghijk { 0xa }
bfc0: 0a 2b 7d 20 6b 0a 2b 74 65 73 74 20 75 74 69 6c  .+} k.+test util
bfd0: 2d 39 2e 32 2e 30 20 7b 54 63 6c 47 65 74 49 6e  -9.2.0 {TclGetIn
bfe0: 74 46 6f 72 49 6e 64 65 78 7d 20 7b 0a 2b 20 20  tForIndex} {.+  
bff0: 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78 20 61    string index a
c000: 62 63 64 20 65 6e 64 0a 2b 7d 20 64 20 0a 2b 74  bcd end.+} d .+t
c010: 65 73 74 20 75 74 69 6c 2d 39 2e 32 2e 31 20 7b  est util-9.2.1 {
c020: 54 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64 65  TclGetIntForInde
c030: 78 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20  x} -body {.+    
c040: 73 74 72 69 6e 67 20 69 6e 64 65 78 20 61 62 63  string index abc
c050: 64 20 7b 20 65 6e 64 7d 0a 2b 7d 20 2d 72 65 74  d { end}.+} -ret
c060: 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d  urnCodes error -
c070: 6d 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75  match glob -resu
c080: 6c 74 20 2a 0a 2b 74 65 73 74 20 75 74 69 6c 2d  lt *.+test util-
c090: 39 2e 32 2e 32 20 7b 54 63 6c 47 65 74 49 6e 74  9.2.2 {TclGetInt
c0a0: 46 6f 72 49 6e 64 65 78 7d 20 2d 62 6f 64 79 20  ForIndex} -body 
c0b0: 7b 0a 2b 20 20 20 20 73 74 72 69 6e 67 20 69 6e  {.+    string in
c0c0: 64 65 78 20 61 62 63 64 20 7b 65 6e 64 20 7d 0a  dex abcd {end }.
c0d0: 2b 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20  +} -returnCodes 
c0e0: 65 72 72 6f 72 20 2d 6d 61 74 63 68 20 67 6c 6f  error -match glo
c0f0: 62 20 2d 72 65 73 75 6c 74 20 2a 0a 2b 74 65 73  b -result *.+tes
c100: 74 20 75 74 69 6c 2d 39 2e 33 20 7b 54 63 6c 47  t util-9.3 {TclG
c110: 65 74 49 6e 74 46 6f 72 49 6e 64 65 78 7d 20 7b  etIntForIndex} {
c120: 0a 2b 20 20 20 20 23 20 44 65 70 72 65 63 61 74  .+    # Deprecat
c130: 65 64 0a 2b 20 20 20 20 73 74 72 69 6e 67 20 69  ed.+    string i
c140: 6e 64 65 78 20 61 62 63 64 20 65 6e 0a 2b 7d 20  ndex abcd en.+} 
c150: 64 0a 2b 74 65 73 74 20 75 74 69 6c 2d 39 2e 34  d.+test util-9.4
c160: 20 7b 54 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e   {TclGetIntForIn
c170: 64 65 78 7d 20 7b 0a 2b 20 20 20 20 23 20 44 65  dex} {.+    # De
c180: 70 72 65 63 61 74 65 64 0a 2b 20 20 20 20 73 74  precated.+    st
c190: 72 69 6e 67 20 69 6e 64 65 78 20 61 62 63 64 20  ring index abcd 
c1a0: 65 0a 2b 7d 20 64 0a 2b 74 65 73 74 20 75 74 69  e.+} d.+test uti
c1b0: 6c 2d 39 2e 35 2e 30 20 7b 54 63 6c 47 65 74 49  l-9.5.0 {TclGetI
c1c0: 6e 74 46 6f 72 49 6e 64 65 78 7d 20 7b 0a 2b 20  ntForIndex} {.+ 
c1d0: 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78 20     string index 
c1e0: 61 62 63 64 20 65 6e 64 2d 31 0a 2b 7d 20 63 0a  abcd end-1.+} c.
c1f0: 2b 74 65 73 74 20 75 74 69 6c 2d 39 2e 35 2e 31  +test util-9.5.1
c200: 20 7b 54 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e   {TclGetIntForIn
c210: 64 65 78 7d 20 7b 0a 2b 20 20 20 20 73 74 72 69  dex} {.+    stri
c220: 6e 67 20 69 6e 64 65 78 20 61 62 63 64 20 7b 65  ng index abcd {e
c230: 6e 64 2d 31 20 7d 0a 2b 7d 20 63 0a 2b 74 65 73  nd-1 }.+} c.+tes
c240: 74 20 75 74 69 6c 2d 39 2e 35 2e 32 20 7b 54 63  t util-9.5.2 {Tc
c250: 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64 65 78 7d  lGetIntForIndex}
c260: 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20 73 74   -body {.+    st
c270: 72 69 6e 67 20 69 6e 64 65 78 20 61 62 63 64 20  ring index abcd 
c280: 7b 20 65 6e 64 2d 31 7d 0a 2b 7d 20 2d 72 65 74  { end-1}.+} -ret
c290: 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d  urnCodes error -
c2a0: 6d 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75  match glob -resu
c2b0: 6c 74 20 2a 0a 2b 74 65 73 74 20 75 74 69 6c 2d  lt *.+test util-
c2c0: 39 2e 36 20 7b 54 63 6c 47 65 74 49 6e 74 46 6f  9.6 {TclGetIntFo
c2d0: 72 49 6e 64 65 78 7d 20 7b 0a 2b 20 20 20 20 73  rIndex} {.+    s
c2e0: 74 72 69 6e 67 20 69 6e 64 65 78 20 61 62 63 64  tring index abcd
c2f0: 20 65 6e 64 2b 2d 31 0a 2b 7d 20 63 0a 2b 74 65   end+-1.+} c.+te
c300: 73 74 20 75 74 69 6c 2d 39 2e 37 20 7b 54 63 6c  st util-9.7 {Tcl
c310: 47 65 74 49 6e 74 46 6f 72 49 6e 64 65 78 7d 20  GetIntForIndex} 
c320: 7b 0a 2b 20 20 20 20 73 74 72 69 6e 67 20 69 6e  {.+    string in
c330: 64 65 78 20 61 62 63 64 20 65 6e 64 2b 31 0a 2b  dex abcd end+1.+
c340: 7d 20 7b 7d 0a 2b 74 65 73 74 20 75 74 69 6c 2d  } {}.+test util-
c350: 39 2e 38 20 7b 54 63 6c 47 65 74 49 6e 74 46 6f  9.8 {TclGetIntFo
c360: 72 49 6e 64 65 78 7d 20 7b 0a 2b 20 20 20 20 73  rIndex} {.+    s
c370: 74 72 69 6e 67 20 69 6e 64 65 78 20 61 62 63 64  tring index abcd
c380: 20 65 6e 64 2d 2d 31 0a 2b 7d 20 7b 7d 0a 2b 74   end--1.+} {}.+t
c390: 65 73 74 20 75 74 69 6c 2d 39 2e 39 2e 30 20 7b  est util-9.9.0 {
c3a0: 54 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64 65  TclGetIntForInde
c3b0: 78 7d 20 7b 0a 2b 20 20 20 20 73 74 72 69 6e 67  x} {.+    string
c3c0: 20 69 6e 64 65 78 20 61 62 63 64 20 30 2b 30 0a   index abcd 0+0.
c3d0: 2b 7d 20 61 0a 2b 74 65 73 74 20 75 74 69 6c 2d  +} a.+test util-
c3e0: 39 2e 39 2e 31 20 7b 54 63 6c 47 65 74 49 6e 74  9.9.1 {TclGetInt
c3f0: 46 6f 72 49 6e 64 65 78 7d 20 7b 0a 2b 20 20 20  ForIndex} {.+   
c400: 20 73 74 72 69 6e 67 20 69 6e 64 65 78 20 61 62   string index ab
c410: 63 64 20 7b 20 30 2b 30 20 7d 0a 2b 7d 20 61 0a  cd { 0+0 }.+} a.
c420: 2b 74 65 73 74 20 75 74 69 6c 2d 39 2e 31 30 20  +test util-9.10 
c430: 7b 54 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64  {TclGetIntForInd
c440: 65 78 7d 20 7b 0a 2b 20 20 20 20 73 74 72 69 6e  ex} {.+    strin
c450: 67 20 69 6e 64 65 78 20 61 62 63 64 20 30 2d 30  g index abcd 0-0
c460: 0a 2b 7d 20 61 0a 2b 74 65 73 74 20 75 74 69 6c  .+} a.+test util
c470: 2d 39 2e 31 31 20 7b 54 63 6c 47 65 74 49 6e 74  -9.11 {TclGetInt
c480: 46 6f 72 49 6e 64 65 78 7d 20 7b 0a 2b 20 20 20  ForIndex} {.+   
c490: 20 73 74 72 69 6e 67 20 69 6e 64 65 78 20 61 62   string index ab
c4a0: 63 64 20 31 2b 30 0a 2b 7d 20 62 0a 2b 74 65 73  cd 1+0.+} b.+tes
c4b0: 74 20 75 74 69 6c 2d 39 2e 31 32 20 7b 54 63 6c  t util-9.12 {Tcl
c4c0: 47 65 74 49 6e 74 46 6f 72 49 6e 64 65 78 7d 20  GetIntForIndex} 
c4d0: 7b 0a 2b 20 20 20 20 73 74 72 69 6e 67 20 69 6e  {.+    string in
c4e0: 64 65 78 20 61 62 63 64 20 31 2d 30 0a 2b 7d 20  dex abcd 1-0.+} 
c4f0: 62 0a 2b 74 65 73 74 20 75 74 69 6c 2d 39 2e 31  b.+test util-9.1
c500: 33 20 7b 54 63 6c 47 65 74 49 6e 74 46 6f 72 49  3 {TclGetIntForI
c510: 6e 64 65 78 7d 20 7b 0a 2b 20 20 20 20 73 74 72  ndex} {.+    str
c520: 69 6e 67 20 69 6e 64 65 78 20 61 62 63 64 20 31  ing index abcd 1
c530: 2b 31 0a 2b 7d 20 63 0a 2b 74 65 73 74 20 75 74  +1.+} c.+test ut
c540: 69 6c 2d 39 2e 31 34 20 7b 54 63 6c 47 65 74 49  il-9.14 {TclGetI
c550: 6e 74 46 6f 72 49 6e 64 65 78 7d 20 7b 0a 2b 20  ntForIndex} {.+ 
c560: 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78 20     string index 
c570: 61 62 63 64 20 31 2d 31 0a 2b 7d 20 61 0a 2b 74  abcd 1-1.+} a.+t
c580: 65 73 74 20 75 74 69 6c 2d 39 2e 31 35 20 7b 54  est util-9.15 {T
c590: 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64 65 78  clGetIntForIndex
c5a0: 7d 20 7b 0a 2b 20 20 20 20 73 74 72 69 6e 67 20  } {.+    string 
c5b0: 69 6e 64 65 78 20 61 62 63 64 20 2d 31 2b 32 0a  index abcd -1+2.
c5c0: 2b 7d 20 62 0a 2b 74 65 73 74 20 75 74 69 6c 2d  +} b.+test util-
c5d0: 39 2e 31 36 20 7b 54 63 6c 47 65 74 49 6e 74 46  9.16 {TclGetIntF
c5e0: 6f 72 49 6e 64 65 78 7d 20 7b 0a 2b 20 20 20 20  orIndex} {.+    
c5f0: 73 74 72 69 6e 67 20 69 6e 64 65 78 20 61 62 63  string index abc
c600: 64 20 2d 31 2d 2d 32 0a 2b 7d 20 62 0a 2b 74 65  d -1--2.+} b.+te
c610: 73 74 20 75 74 69 6c 2d 39 2e 31 37 20 7b 54 63  st util-9.17 {Tc
c620: 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64 65 78 7d  lGetIntForIndex}
c630: 20 7b 0a 2b 20 20 20 20 73 74 72 69 6e 67 20 69   {.+    string i
c640: 6e 64 65 78 20 61 62 63 64 20 7b 20 2d 31 2b 32  ndex abcd { -1+2
c650: 20 7d 0a 2b 7d 20 62 0a 2b 74 65 73 74 20 75 74   }.+} b.+test ut
c660: 69 6c 2d 39 2e 31 38 20 7b 54 63 6c 47 65 74 49  il-9.18 {TclGetI
c670: 6e 74 46 6f 72 49 6e 64 65 78 7d 20 7b 0a 2b 20  ntForIndex} {.+ 
c680: 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78 20     string index 
c690: 61 62 63 64 20 7b 20 2d 31 2d 2d 32 20 7d 0a 2b  abcd { -1--2 }.+
c6a0: 7d 20 62 0a 2b 74 65 73 74 20 75 74 69 6c 2d 39  } b.+test util-9
c6b0: 2e 31 39 20 7b 54 63 6c 47 65 74 49 6e 74 46 6f  .19 {TclGetIntFo
c6c0: 72 49 6e 64 65 78 7d 20 2d 62 6f 64 79 20 7b 0a  rIndex} -body {.
c6d0: 2b 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65  +    string inde
c6e0: 78 20 61 20 7b 7d 0a 2b 7d 20 2d 72 65 74 75 72  x a {}.+} -retur
c6f0: 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d 6d 61  nCodes error -ma
c700: 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74  tch glob -result
c710: 20 2a 0a 2b 74 65 73 74 20 75 74 69 6c 2d 39 2e   *.+test util-9.
c720: 32 30 20 7b 54 63 6c 47 65 74 49 6e 74 46 6f 72  20 {TclGetIntFor
c730: 49 6e 64 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 2b  Index} -body {.+
c740: 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78      string index
c750: 20 61 20 7b 20 7d 0a 2b 7d 20 2d 72 65 74 75 72   a { }.+} -retur
c760: 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d 6d 61  nCodes error -ma
c770: 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74  tch glob -result
c780: 20 2a 0a 2b 74 65 73 74 20 75 74 69 6c 2d 39 2e   *.+test util-9.
c790: 32 31 20 7b 54 63 6c 47 65 74 49 6e 74 46 6f 72  21 {TclGetIntFor
c7a0: 49 6e 64 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 2b  Index} -body {.+
c7b0: 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78      string index
c7c0: 20 61 20 22 20 5c 72 5c 74 5c 6e 22 0a 2b 7d 20   a " \r\t\n".+} 
c7d0: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 65 72 72  -returnCodes err
c7e0: 6f 72 20 2d 6d 61 74 63 68 20 67 6c 6f 62 20 2d  or -match glob -
c7f0: 72 65 73 75 6c 74 20 2a 0a 2b 74 65 73 74 20 75  result *.+test u
c800: 74 69 6c 2d 39 2e 32 32 20 7b 54 63 6c 47 65 74  til-9.22 {TclGet
c810: 49 6e 74 46 6f 72 49 6e 64 65 78 7d 20 2d 62 6f  IntForIndex} -bo
c820: 64 79 20 7b 0a 2b 20 20 20 20 73 74 72 69 6e 67  dy {.+    string
c830: 20 69 6e 64 65 78 20 61 20 2b 0a 2b 7d 20 2d 72   index a +.+} -r
c840: 65 74 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72  eturnCodes error
c850: 20 2d 6d 61 74 63 68 20 67 6c 6f 62 20 2d 72 65   -match glob -re
c860: 73 75 6c 74 20 2a 0a 2b 74 65 73 74 20 75 74 69  sult *.+test uti
c870: 6c 2d 39 2e 32 33 20 7b 54 63 6c 47 65 74 49 6e  l-9.23 {TclGetIn
c880: 74 46 6f 72 49 6e 64 65 78 7d 20 2d 62 6f 64 79  tForIndex} -body
c890: 20 7b 0a 2b 20 20 20 20 73 74 72 69 6e 67 20 69   {.+    string i
c8a0: 6e 64 65 78 20 61 20 2d 0a 2b 7d 20 2d 72 65 74  ndex a -.+} -ret
c8b0: 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d  urnCodes error -
c8c0: 6d 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75  match glob -resu
c8d0: 6c 74 20 2a 0a 2b 74 65 73 74 20 75 74 69 6c 2d  lt *.+test util-
c8e0: 39 2e 32 34 20 7b 54 63 6c 47 65 74 49 6e 74 46  9.24 {TclGetIntF
c8f0: 6f 72 49 6e 64 65 78 7d 20 2d 62 6f 64 79 20 7b  orIndex} -body {
c900: 0a 2b 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64  .+    string ind
c910: 65 78 20 61 20 78 0a 2b 7d 20 2d 72 65 74 75 72  ex a x.+} -retur
c920: 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d 6d 61  nCodes error -ma
c930: 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74  tch glob -result
c940: 20 2a 0a 2b 74 65 73 74 20 75 74 69 6c 2d 39 2e   *.+test util-9.
c950: 32 35 20 7b 54 63 6c 47 65 74 49 6e 74 46 6f 72  25 {TclGetIntFor
c960: 49 6e 64 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 2b  Index} -body {.+
c970: 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78      string index
c980: 20 61 20 2b 78 0a 2b 7d 20 2d 72 65 74 75 72 6e   a +x.+} -return
c990: 43 6f 64 65 73 20 65 72 72 6f 72 20 2d 6d 61 74  Codes error -mat
c9a0: 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20  ch glob -result 
c9b0: 2a 0a 2b 74 65 73 74 20 75 74 69 6c 2d 39 2e 32  *.+test util-9.2
c9c0: 36 20 7b 54 63 6c 47 65 74 49 6e 74 46 6f 72 49  6 {TclGetIntForI
c9d0: 6e 64 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20  ndex} -body {.+ 
c9e0: 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78 20     string index 
c9f0: 61 20 2d 78 0a 2b 7d 20 2d 72 65 74 75 72 6e 43  a -x.+} -returnC
ca00: 6f 64 65 73 20 65 72 72 6f 72 20 2d 6d 61 74 63  odes error -matc
ca10: 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20 2a  h glob -result *
ca20: 0a 2b 74 65 73 74 20 75 74 69 6c 2d 39 2e 32 37  .+test util-9.27
ca30: 20 7b 54 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e   {TclGetIntForIn
ca40: 64 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20 20  dex} -body {.+  
ca50: 20 20 73 74 72 69 6e 67 20 69 6e 64 65 78 20 61    string index a
ca60: 20 30 79 0a 2b 7d 20 2d 72 65 74 75 72 6e 43 6f   0y.+} -returnCo
ca70: 64 65 73 20 65 72 72 6f 72 20 2d 6d 61 74 63 68  des error -match
ca80: 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20 2a 0a   glob -result *.
ca90: 2b 74 65 73 74 20 75 74 69 6c 2d 39 2e 32 38 20  +test util-9.28 
caa0: 7b 54 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64  {TclGetIntForInd
cab0: 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20  ex} -body {.+   
cac0: 20 73 74 72 69 6e 67 20 69 6e 64 65 78 20 61 20   string index a 
cad0: 31 2a 0a 2b 7d 20 2d 72 65 74 75 72 6e 43 6f 64  1*.+} -returnCod
cae0: 65 73 20 65 72 72 6f 72 20 2d 6d 61 74 63 68 20  es error -match 
caf0: 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20 2a 0a 2b  glob -result *.+
cb00: 74 65 73 74 20 75 74 69 6c 2d 39 2e 32 39 20 7b  test util-9.29 {
cb10: 54 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64 65  TclGetIntForInde
cb20: 78 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20  x} -body {.+    
cb30: 73 74 72 69 6e 67 20 69 6e 64 65 78 20 61 20 30  string index a 0
cb40: 2b 0a 2b 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65  +.+} -returnCode
cb50: 73 20 65 72 72 6f 72 20 2d 6d 61 74 63 68 20 67  s error -match g
cb60: 6c 6f 62 20 2d 72 65 73 75 6c 74 20 2a 0a 2b 74  lob -result *.+t
cb70: 65 73 74 20 75 74 69 6c 2d 39 2e 33 30 20 7b 54  est util-9.30 {T
cb80: 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64 65 78  clGetIntForIndex
cb90: 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20 73  } -body {.+    s
cba0: 74 72 69 6e 67 20 69 6e 64 65 78 20 61 20 7b 30  tring index a {0
cbb0: 2b 20 7d 0a 2b 7d 20 2d 72 65 74 75 72 6e 43 6f  + }.+} -returnCo
cbc0: 64 65 73 20 65 72 72 6f 72 20 2d 6d 61 74 63 68  des error -match
cbd0: 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20 2a 0a   glob -result *.
cbe0: 2b 74 65 73 74 20 75 74 69 6c 2d 39 2e 33 31 20  +test util-9.31 
cbf0: 7b 54 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64  {TclGetIntForInd
cc00: 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20  ex} -body {.+   
cc10: 20 73 74 72 69 6e 67 20 69 6e 64 65 78 20 61 20   string index a 
cc20: 30 78 0a 2b 7d 20 2d 72 65 74 75 72 6e 43 6f 64  0x.+} -returnCod
cc30: 65 73 20 65 72 72 6f 72 20 2d 6d 61 74 63 68 20  es error -match 
cc40: 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20 2a 0a 2b  glob -result *.+
cc50: 74 65 73 74 20 75 74 69 6c 2d 39 2e 33 32 20 7b  test util-9.32 {
cc60: 54 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64 65  TclGetIntForInde
cc70: 78 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20  x} -body {.+    
cc80: 73 74 72 69 6e 67 20 69 6e 64 65 78 20 61 20 30  string index a 0
cc90: 78 31 46 46 46 46 46 46 46 46 2b 30 0a 2b 7d 20  x1FFFFFFFF+0.+} 
cca0: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 65 72 72  -returnCodes err
ccb0: 6f 72 20 2d 6d 61 74 63 68 20 67 6c 6f 62 20 2d  or -match glob -
ccc0: 72 65 73 75 6c 74 20 2a 0a 2b 74 65 73 74 20 75  result *.+test u
ccd0: 74 69 6c 2d 39 2e 33 33 20 7b 54 63 6c 47 65 74  til-9.33 {TclGet
cce0: 49 6e 74 46 6f 72 49 6e 64 65 78 7d 20 2d 62 6f  IntForIndex} -bo
ccf0: 64 79 20 7b 0a 2b 20 20 20 20 73 74 72 69 6e 67  dy {.+    string
cd00: 20 69 6e 64 65 78 20 61 20 31 30 30 30 30 30 30   index a 1000000
cd10: 30 30 30 30 30 2b 30 0a 2b 7d 20 2d 72 65 74 75  00000+0.+} -retu
cd20: 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d 6d  rnCodes error -m
cd30: 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c  atch glob -resul
cd40: 74 20 2a 0a 2b 74 65 73 74 20 75 74 69 6c 2d 39  t *.+test util-9
cd50: 2e 33 34 20 7b 54 63 6c 47 65 74 49 6e 74 46 6f  .34 {TclGetIntFo
cd60: 72 49 6e 64 65 78 7d 20 2d 62 6f 64 79 20 7b 0a  rIndex} -body {.
cd70: 2b 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65  +    string inde
cd80: 78 20 61 20 31 2e 30 0a 2b 7d 20 2d 72 65 74 75  x a 1.0.+} -retu
cd90: 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d 6d  rnCodes error -m
cda0: 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c  atch glob -resul
cdb0: 74 20 2a 0a 2b 74 65 73 74 20 75 74 69 6c 2d 39  t *.+test util-9
cdc0: 2e 33 35 20 7b 54 63 6c 47 65 74 49 6e 74 46 6f  .35 {TclGetIntFo
cdd0: 72 49 6e 64 65 78 7d 20 2d 62 6f 64 79 20 7b 0a  rIndex} -body {.
cde0: 2b 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65  +    string inde
cdf0: 78 20 61 20 31 65 32 33 0a 2b 7d 20 2d 72 65 74  x a 1e23.+} -ret
ce00: 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d  urnCodes error -
ce10: 6d 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75  match glob -resu
ce20: 6c 74 20 2a 0a 2b 74 65 73 74 20 75 74 69 6c 2d  lt *.+test util-
ce30: 39 2e 33 36 20 7b 54 63 6c 47 65 74 49 6e 74 46  9.36 {TclGetIntF
ce40: 6f 72 49 6e 64 65 78 7d 20 2d 62 6f 64 79 20 7b  orIndex} -body {
ce50: 0a 2b 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64  .+    string ind
ce60: 65 78 20 61 20 31 2e 35 65 32 0a 2b 7d 20 2d 72  ex a 1.5e2.+} -r
ce70: 65 74 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72  eturnCodes error
ce80: 20 2d 6d 61 74 63 68 20 67 6c 6f 62 20 2d 72 65   -match glob -re
ce90: 73 75 6c 74 20 2a 0a 2b 74 65 73 74 20 75 74 69  sult *.+test uti
cea0: 6c 2d 39 2e 33 37 20 7b 54 63 6c 47 65 74 49 6e  l-9.37 {TclGetIn
ceb0: 74 46 6f 72 49 6e 64 65 78 7d 20 2d 62 6f 64 79  tForIndex} -body
cec0: 20 7b 0a 2b 20 20 20 20 73 74 72 69 6e 67 20 69   {.+    string i
ced0: 6e 64 65 78 20 61 20 30 2b 78 0a 2b 7d 20 2d 72  ndex a 0+x.+} -r
cee0: 65 74 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72  eturnCodes error
cef0: 20 2d 6d 61 74 63 68 20 67 6c 6f 62 20 2d 72 65   -match glob -re
cf00: 73 75 6c 74 20 2a 0a 2b 74 65 73 74 20 75 74 69  sult *.+test uti
cf10: 6c 2d 39 2e 33 38 20 7b 54 63 6c 47 65 74 49 6e  l-9.38 {TclGetIn
cf20: 74 46 6f 72 49 6e 64 65 78 7d 20 2d 62 6f 64 79  tForIndex} -body
cf30: 20 7b 0a 2b 20 20 20 20 73 74 72 69 6e 67 20 69   {.+    string i
cf40: 6e 64 65 78 20 61 20 30 2b 30 78 0a 2b 7d 20 2d  ndex a 0+0x.+} -
cf50: 72 65 74 75 72 6e 43 6f 64 65 73 20 65 72 72 6f  returnCodes erro
cf60: 72 20 2d 6d 61 74 63 68 20 67 6c 6f 62 20 2d 72  r -match glob -r
cf70: 65 73 75 6c 74 20 2a 0a 2b 74 65 73 74 20 75 74  esult *.+test ut
cf80: 69 6c 2d 39 2e 33 39 20 7b 54 63 6c 47 65 74 49  il-9.39 {TclGetI
cf90: 6e 74 46 6f 72 49 6e 64 65 78 7d 20 2d 62 6f 64  ntForIndex} -bod
cfa0: 79 20 7b 0a 2b 20 20 20 20 73 74 72 69 6e 67 20  y {.+    string 
cfb0: 69 6e 64 65 78 20 61 20 30 2b 30 78 67 0a 2b 7d  index a 0+0xg.+}
cfc0: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 65 72   -returnCodes er
cfd0: 72 6f 72 20 2d 6d 61 74 63 68 20 67 6c 6f 62 20  ror -match glob 
cfe0: 2d 72 65 73 75 6c 74 20 2a 0a 2b 74 65 73 74 20  -result *.+test 
cff0: 75 74 69 6c 2d 39 2e 34 30 20 7b 54 63 6c 47 65  util-9.40 {TclGe
d000: 74 49 6e 74 46 6f 72 49 6e 64 65 78 7d 20 2d 62  tIntForIndex} -b
d010: 6f 64 79 20 7b 0a 2b 20 20 20 20 73 74 72 69 6e  ody {.+    strin
d020: 67 20 69 6e 64 65 78 20 61 20 30 2b 30 78 67 0a  g index a 0+0xg.
d030: 2b 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20  +} -returnCodes 
d040: 65 72 72 6f 72 20 2d 6d 61 74 63 68 20 67 6c 6f  error -match glo
d050: 62 20 2d 72 65 73 75 6c 74 20 2a 0a 2b 74 65 73  b -result *.+tes
d060: 74 20 75 74 69 6c 2d 39 2e 34 31 20 7b 54 63 6c  t util-9.41 {Tcl
d070: 47 65 74 49 6e 74 46 6f 72 49 6e 64 65 78 7d 20  GetIntForIndex} 
d080: 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20 73 74 72  -body {.+    str
d090: 69 6e 67 20 69 6e 64 65 78 20 61 20 30 2b 31 2e  ing index a 0+1.
d0a0: 30 0a 2b 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65  0.+} -returnCode
d0b0: 73 20 65 72 72 6f 72 20 2d 6d 61 74 63 68 20 67  s error -match g
d0c0: 6c 6f 62 20 2d 72 65 73 75 6c 74 20 2a 0a 2b 74  lob -result *.+t
d0d0: 65 73 74 20 75 74 69 6c 2d 39 2e 34 32 20 7b 54  est util-9.42 {T
d0e0: 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64 65 78  clGetIntForIndex
d0f0: 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20 20 73  } -body {.+    s
d100: 74 72 69 6e 67 20 69 6e 64 65 78 20 61 20 30 2b  tring index a 0+
d110: 31 65 32 0a 2b 7d 20 2d 72 65 74 75 72 6e 43 6f  1e2.+} -returnCo
d120: 64 65 73 20 65 72 72 6f 72 20 2d 6d 61 74 63 68  des error -match
d130: 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20 2a 0a   glob -result *.
d140: 2b 74 65 73 74 20 75 74 69 6c 2d 39 2e 34 33 20  +test util-9.43 
d150: 7b 54 63 6c 47 65 74 49 6e 74 46 6f 72 49 6e 64  {TclGetIntForInd
d160: 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 2b 20 20 20  ex} -body {.+   
d170: 20 73 74 72 69 6e 67 20 69 6e 64 65 78 20 61 20   string index a 
d180: 30 2b 31 2e 35 65 31 0a 2b 7d 20 2d 72 65 74 75  0+1.5e1.+} -retu
d190: 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 20 2d 6d  rnCodes error -m
d1a0: 61 74 63 68 20 67 6c 6f 62 20 2d 72 65 73 75 6c  atch glob -resul
d1b0: 74 20 2a 0a 2b 74 65 73 74 20 75 74 69 6c 2d 39  t *.+test util-9
d1c0: 2e 34 34 20 7b 54 63 6c 47 65 74 49 6e 74 46 6f  .44 {TclGetIntFo
d1d0: 72 49 6e 64 65 78 7d 20 2d 62 6f 64 79 20 7b 0a  rIndex} -body {.
d1e0: 2b 20 20 20 20 73 74 72 69 6e 67 20 69 6e 64 65  +    string inde
d1f0: 78 20 61 20 30 2b 31 30 30 30 30 30 30 30 30 30  x a 0+1000000000
d200: 30 30 30 0a 2b 7d 20 2d 72 65 74 75 72 6e 43 6f  000.+} -returnCo
d210: 64 65 73 20 65 72 72 6f 72 20 2d 6d 61 74 63 68  des error -match
d220: 20 67 6c 6f 62 20 2d 72 65 73 75 6c 74 20 2a 0a   glob -result *.
d230: 2b 0a 2b 0a 20 23 20 63 6c 65 61 6e 75 70 0a 20  +.+. # cleanup. 
d240: 3a 3a 74 63 6c 74 65 73 74 3a 3a 63 6c 65 61 6e  ::tcltest::clean
d250: 75 70 54 65 73 74 73 0a 20 72 65 74 75 72 6e 0a  upTests. return.