Tcl Source Code

Hex Artifact Content
Login

Artifact d07331e7e25a0063bd5e311e4056e5468ea1f732:

Attachment "TIP-241v4.diff" to ticket [1152746fff] added by mistachkin 2005-03-02 13:53:53.
0000: 49 6e 64 65 78 3a 20 64 6f 63 2f 6c 73 65 61 72  Index: doc/lsear
0010: 63 68 2e 6e 0d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ch.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 3d 3d 0d 0a 52 43 53 20 66  =========..RCS f
0060: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63  ile: /cvsroot/tc
0070: 6c 2f 74 63 6c 2f 64 6f 63 2f 6c 73 65 61 72 63  l/tcl/doc/lsearc
0080: 68 2e 6e 2c 76 0d 0a 72 65 74 72 69 65 76 69 6e  h.n,v..retrievin
0090: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 32 32 0d  g revision 1.22.
00a0: 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 32 32 20  .diff -u -r1.22 
00b0: 6c 73 65 61 72 63 68 2e 6e 0d 0a 2d 2d 2d 20 64  lsearch.n..--- d
00c0: 6f 63 2f 6c 73 65 61 72 63 68 2e 6e 09 35 20 4a  oc/lsearch.n.5 J
00d0: 61 6e 20 32 30 30 35 20 31 36 3a 33 38 3a 35 34  an 2005 16:38:54
00e0: 20 2d 30 30 30 30 09 31 2e 32 32 0d 0a 2b 2b 2b   -0000.1.22..+++
00f0: 20 64 6f 63 2f 6c 73 65 61 72 63 68 2e 6e 09 32   doc/lsearch.n.2
0100: 20 4d 61 72 20 32 30 30 35 20 30 36 3a 33 36 3a   Mar 2005 06:36:
0110: 31 32 20 2d 30 30 30 30 0d 0a 40 40 20 2d 39 33  12 -0000..@@ -93
0120: 2c 36 20 2b 39 33 2c 31 33 20 40 40 0d 0a 20 2e  ,6 +93,13 @@.. .
0130: 54 50 0d 0a 20 5c 66 42 5c 2d 69 6e 74 65 67 65  TP.. \fB\-intege
0140: 72 5c 66 52 0d 0a 20 54 68 65 20 6c 69 73 74 20  r\fR.. The list 
0150: 65 6c 65 6d 65 6e 74 73 20 61 72 65 20 74 6f 20  elements are to 
0160: 62 65 20 63 6f 6d 70 61 72 65 64 20 61 73 20 69  be compared as i
0170: 6e 74 65 67 65 72 73 2e 0d 0a 2b 2e 56 53 20 38  ntegers...+.VS 8
0180: 2e 35 0d 0a 2b 2e 54 50 0d 0a 2b 5c 66 42 5c 2d  .5..+.TP..+\fB\-
0190: 6e 6f 63 61 73 65 5c 66 52 0d 0a 2b 43 61 75 73  nocase\fR..+Caus
01a0: 65 73 20 63 6f 6d 70 61 72 69 73 6f 6e 73 20 74  es comparisons t
01b0: 6f 20 62 65 20 68 61 6e 64 6c 65 64 20 69 6e 20  o be handled in 
01c0: 61 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69  a case-insensiti
01d0: 76 65 20 6d 61 6e 6e 65 72 2e 20 20 48 61 73 20  ve manner.  Has 
01e0: 6e 6f 0d 0a 2b 65 66 66 65 63 74 20 69 66 20 63  no..+effect if c
01f0: 6f 6d 62 69 6e 65 64 20 77 69 74 68 20 74 68 65  ombined with the
0200: 20 5c 66 42 5c 2d 64 69 63 74 69 6f 6e 61 72 79   \fB\-dictionary
0210: 5c 66 52 2c 20 5c 66 42 5c 2d 69 6e 74 65 67 65  \fR, \fB\-intege
0220: 72 5c 66 52 2c 20 6f 72 20 0d 0a 2b 5c 66 42 5c  r\fR, or ..+\fB\
0230: 2d 72 65 61 6c 5c 66 52 20 6f 70 74 69 6f 6e 73  -real\fR options
0240: 2e 0d 0a 2b 2e 56 45 20 38 2e 35 0d 0a 20 2e 54  ...+.VE 8.5.. .T
0250: 50 0d 0a 20 5c 66 42 5c 2d 72 65 61 6c 5c 66 52  P.. \fB\-real\fR
0260: 0d 0a 20 54 68 65 20 6c 69 73 74 20 65 6c 65 6d  .. The list elem
0270: 65 6e 74 73 20 61 72 65 20 74 6f 20 62 65 20 63  ents are to be c
0280: 6f 6d 70 61 72 65 64 20 61 73 20 66 6c 6f 61 74  ompared as float
0290: 69 6e 67 2d 70 6f 69 6e 74 20 76 61 6c 75 65 73  ing-point values
02a0: 2e 0d 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 6c 73  ...Index: doc/ls
02b0: 6f 72 74 2e 6e 0d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d  ort.n..=========
02c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
02d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
02e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
02f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 52 43 53 20  ==========..RCS 
0300: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74  file: /cvsroot/t
0310: 63 6c 2f 74 63 6c 2f 64 6f 63 2f 6c 73 6f 72 74  cl/tcl/doc/lsort
0320: 2e 6e 2c 76 0d 0a 72 65 74 72 69 65 76 69 6e 67  .n,v..retrieving
0330: 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 38 0d 0a   revision 1.18..
0340: 64 69 66 66 20 2d 75 20 2d 72 31 2e 31 38 20 6c  diff -u -r1.18 l
0350: 73 6f 72 74 2e 6e 0d 0a 2d 2d 2d 20 64 6f 63 2f  sort.n..--- doc/
0360: 6c 73 6f 72 74 2e 6e 09 32 37 20 4f 63 74 20 32  lsort.n.27 Oct 2
0370: 30 30 34 20 31 32 3a 35 33 3a 32 32 20 2d 30 30  004 12:53:22 -00
0380: 30 30 09 31 2e 31 38 0d 0a 2b 2b 2b 20 64 6f 63  00.1.18..+++ doc
0390: 2f 6c 73 6f 72 74 2e 6e 09 32 20 4d 61 72 20 32  /lsort.n.2 Mar 2
03a0: 30 30 35 20 30 36 3a 33 36 3a 31 32 20 2d 30 30  005 06:36:12 -00
03b0: 30 30 0d 0a 40 40 20 2d 31 30 2c 37 20 2b 31 30  00..@@ -10,7 +10
03c0: 2c 37 20 40 40 0d 0a 20 27 5c 22 20 52 43 53 3a  ,7 @@.. '\" RCS:
03d0: 20 40 28 23 29 20 24 49 64 3a 20 6c 73 6f 72 74   @(#) $Id: lsort
03e0: 2e 6e 2c 76 20 31 2e 31 37 20 32 30 30 34 2f 31  .n,v 1.17 2004/1
03f0: 30 2f 31 34 20 31 37 3a 32 30 3a 31 31 20 64 6b  0/14 17:20:11 dk
0400: 66 20 45 78 70 20 24 0d 0a 20 27 5c 22 20 0d 0a  f Exp $.. '\" ..
0410: 20 2e 73 6f 20 6d 61 6e 2e 6d 61 63 72 6f 73 0d   .so man.macros.
0420: 0a 2d 2e 54 48 20 6c 73 6f 72 74 20 6e 20 38 2e  .-.TH lsort n 8.
0430: 33 20 54 63 6c 20 22 54 63 6c 20 42 75 69 6c 74  3 Tcl "Tcl Built
0440: 2d 49 6e 20 43 6f 6d 6d 61 6e 64 73 22 0d 0a 2b  -In Commands"..+
0450: 2e 54 48 20 6c 73 6f 72 74 20 6e 20 38 2e 35 20  .TH lsort n 8.5 
0460: 54 63 6c 20 22 54 63 6c 20 42 75 69 6c 74 2d 49  Tcl "Tcl Built-I
0470: 6e 20 43 6f 6d 6d 61 6e 64 73 22 0d 0a 20 2e 42  n Commands".. .B
0480: 53 0d 0a 20 27 5c 22 20 4e 6f 74 65 3a 20 20 64  S.. '\" Note:  d
0490: 6f 20 6e 6f 74 20 6d 6f 64 69 66 79 20 74 68 65  o not modify the
04a0: 20 2e 53 48 20 4e 41 4d 45 20 6c 69 6e 65 20 69   .SH NAME line i
04b0: 6d 6d 65 64 69 61 74 65 6c 79 20 62 65 6c 6f 77  mmediately below
04c0: 21 0d 0a 20 2e 53 48 20 4e 41 4d 45 0d 0a 40 40  !.. .SH NAME..@@
04d0: 20 2d 31 30 37 2c 36 20 2b 31 30 37 2c 31 33 20   -107,6 +107,13 
04e0: 40 40 0d 0a 20 54 68 69 73 20 6f 70 74 69 6f 6e  @@.. This option
04f0: 20 69 73 20 6d 75 63 68 20 6d 6f 72 65 20 65 66   is much more ef
0500: 66 69 63 69 65 6e 74 20 74 68 61 6e 20 75 73 69  ficient than usi
0510: 6e 67 20 5c 66 42 5c 2d 63 6f 6d 6d 61 6e 64 5c  ng \fB\-command\
0520: 66 52 0d 0a 20 74 6f 20 61 63 68 69 65 76 65 20  fR.. to achieve 
0530: 74 68 65 20 73 61 6d 65 20 65 66 66 65 63 74 2e  the same effect.
0540: 0d 0a 20 2e 52 45 0d 0a 2b 2e 56 53 20 38 2e 35  .. .RE..+.VS 8.5
0550: 0d 0a 2b 2e 54 50 20 32 30 0d 0a 2b 5c 66 42 5c  ..+.TP 20..+\fB\
0560: 2d 6e 6f 63 61 73 65 5c 66 52 0d 0a 2b 43 61 75  -nocase\fR..+Cau
0570: 73 65 73 20 63 6f 6d 70 61 72 69 73 6f 6e 73 20  ses comparisons 
0580: 74 6f 20 62 65 20 68 61 6e 64 6c 65 64 20 69 6e  to be handled in
0590: 20 61 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74   a case-insensit
05a0: 69 76 65 20 6d 61 6e 6e 65 72 2e 20 20 48 61 73  ive manner.  Has
05b0: 20 6e 6f 0d 0a 2b 65 66 66 65 63 74 20 69 66 20   no..+effect if 
05c0: 63 6f 6d 62 69 6e 65 64 20 77 69 74 68 20 74 68  combined with th
05d0: 65 20 5c 66 42 5c 2d 64 69 63 74 69 6f 6e 61 72  e \fB\-dictionar
05e0: 79 5c 66 52 2c 20 5c 66 42 5c 2d 69 6e 74 65 67  y\fR, \fB\-integ
05f0: 65 72 5c 66 52 2c 20 6f 72 20 0d 0a 2b 5c 66 42  er\fR, or ..+\fB
0600: 5c 2d 72 65 61 6c 5c 66 52 20 6f 70 74 69 6f 6e  \-real\fR option
0610: 73 2e 0d 0a 2b 2e 56 45 20 38 2e 35 0d 0a 20 2e  s...+.VE 8.5.. .
0620: 54 50 20 32 30 0d 0a 20 5c 66 42 5c 2d 75 6e 69  TP 20.. \fB\-uni
0630: 71 75 65 5c 66 52 0d 0a 20 49 66 20 74 68 69 73  que\fR.. If this
0640: 20 6f 70 74 69 6f 6e 20 69 73 20 73 70 65 63 69   option is speci
0650: 66 69 65 64 2c 20 74 68 65 6e 20 6f 6e 6c 79 20  fied, then only 
0660: 74 68 65 20 6c 61 73 74 20 73 65 74 20 6f 66 20  the last set of 
0670: 64 75 70 6c 69 63 61 74 65 0d 0a 49 6e 64 65 78  duplicate..Index
0680: 3a 20 64 6f 63 2f 73 77 69 74 63 68 2e 6e 0d 0a  : doc/switch.n..
0690: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
06a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
06b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
06c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
06d0: 3d 3d 3d 0d 0a 52 43 53 20 66 69 6c 65 3a 20 2f  ===..RCS file: /
06e0: 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f  cvsroot/tcl/tcl/
06f0: 64 6f 63 2f 73 77 69 74 63 68 2e 6e 2c 76 0d 0a  doc/switch.n,v..
0700: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73  retrieving revis
0710: 69 6f 6e 20 31 2e 38 0d 0a 64 69 66 66 20 2d 75  ion 1.8..diff -u
0720: 20 2d 72 31 2e 38 20 73 77 69 74 63 68 2e 6e 0d   -r1.8 switch.n.
0730: 0a 2d 2d 2d 20 64 6f 63 2f 73 77 69 74 63 68 2e  .--- doc/switch.
0740: 6e 09 32 37 20 4f 63 74 20 32 30 30 34 20 31 34  n.27 Oct 2004 14
0750: 3a 32 34 3a 33 37 20 2d 30 30 30 30 09 31 2e 38  :24:37 -0000.1.8
0760: 0d 0a 2b 2b 2b 20 64 6f 63 2f 73 77 69 74 63 68  ..+++ doc/switch
0770: 2e 6e 09 32 20 4d 61 72 20 32 30 30 35 20 30 36  .n.2 Mar 2005 06
0780: 3a 33 36 3a 31 33 20 2d 30 30 30 30 0d 0a 40 40  :36:13 -0000..@@
0790: 20 2d 38 2c 37 20 2b 38 2c 37 20 40 40 0d 0a 20   -8,7 +8,7 @@.. 
07a0: 27 5c 22 20 52 43 53 3a 20 40 28 23 29 20 24 49  '\" RCS: @(#) $I
07b0: 64 3a 20 73 77 69 74 63 68 2e 6e 2c 76 20 31 2e  d: switch.n,v 1.
07c0: 37 20 32 30 30 34 2f 30 34 2f 32 32 20 32 32 3a  7 2004/04/22 22:
07d0: 33 36 3a 32 32 20 64 6b 66 20 45 78 70 20 24 0d  36:22 dkf Exp $.
07e0: 0a 20 27 5c 22 20 0d 0a 20 2e 73 6f 20 6d 61 6e  . '\" .. .so man
07f0: 2e 6d 61 63 72 6f 73 0d 0a 2d 2e 54 48 20 73 77  .macros..-.TH sw
0800: 69 74 63 68 20 6e 20 37 2e 30 20 54 63 6c 20 22  itch n 7.0 Tcl "
0810: 54 63 6c 20 42 75 69 6c 74 2d 49 6e 20 43 6f 6d  Tcl Built-In Com
0820: 6d 61 6e 64 73 22 0d 0a 2b 2e 54 48 20 73 77 69  mands"..+.TH swi
0830: 74 63 68 20 6e 20 38 2e 35 20 54 63 6c 20 22 54  tch n 8.5 Tcl "T
0840: 63 6c 20 42 75 69 6c 74 2d 49 6e 20 43 6f 6d 6d  cl Built-In Comm
0850: 61 6e 64 73 22 0d 0a 20 2e 42 53 0d 0a 20 27 5c  ands".. .BS.. '\
0860: 22 20 4e 6f 74 65 3a 20 20 64 6f 20 6e 6f 74 20  " Note:  do not 
0870: 6d 6f 64 69 66 79 20 74 68 65 20 2e 53 48 20 4e  modify the .SH N
0880: 41 4d 45 20 6c 69 6e 65 20 69 6d 6d 65 64 69 61  AME line immedia
0890: 74 65 6c 79 20 62 65 6c 6f 77 21 0d 0a 20 2e 53  tely below!.. .S
08a0: 48 20 4e 41 4d 45 0d 0a 40 40 20 2d 35 31 2c 36  H NAME..@@ -51,6
08b0: 20 2b 35 31 2c 39 20 40 40 0d 0a 20 27 5c 22 20   +51,9 @@.. '\" 
08c0: 4f 70 74 69 6f 6e 73 20 64 65 66 69 6e 65 64 20  Options defined 
08d0: 62 79 20 54 49 50 23 37 35 0d 0a 20 2e 56 53 20  by TIP#75.. .VS 
08e0: 38 2e 35 0d 0a 20 2e 54 50 20 31 30 0d 0a 2b 5c  8.5.. .TP 10..+\
08f0: 66 42 5c 2d 6e 6f 63 61 73 65 5c 66 52 0d 0a 2b  fB\-nocase\fR..+
0900: 43 61 75 73 65 73 20 63 6f 6d 70 61 72 69 73 6f  Causes compariso
0910: 6e 73 20 74 6f 20 62 65 20 68 61 6e 64 6c 65 64  ns to be handled
0920: 20 69 6e 20 61 20 63 61 73 65 2d 69 6e 73 65 6e   in a case-insen
0930: 73 69 74 69 76 65 20 6d 61 6e 6e 65 72 2e 0d 0a  sitive manner...
0940: 2b 2e 54 50 20 31 30 0d 0a 20 5c 66 42 5c 2d 6d  +.TP 10.. \fB\-m
0950: 61 74 63 68 76 61 72 5c 66 52 20 5c 66 49 76 61  atchvar\fR \fIva
0960: 72 4e 61 6d 65 5c 66 52 0d 0a 20 54 68 69 73 20  rName\fR.. This 
0970: 6f 70 74 69 6f 6e 20 28 6f 6e 6c 79 20 6c 65 67  option (only leg
0980: 61 6c 20 77 68 65 6e 20 5c 66 42 5c 2d 72 65 67  al when \fB\-reg
0990: 65 78 70 5c 66 52 20 69 73 20 61 6c 73 6f 20 73  exp\fR is also s
09a0: 70 65 63 69 66 69 65 64 29 0d 0a 20 73 70 65 63  pecified).. spec
09b0: 69 66 69 65 73 20 74 68 65 20 6e 61 6d 65 20 6f  ifies the name o
09c0: 66 20 61 20 76 61 72 69 61 62 6c 65 20 69 6e 74  f a variable int
09d0: 6f 20 77 68 69 63 68 20 74 68 65 20 6c 69 73 74  o which the list
09e0: 20 6f 66 20 6d 61 74 63 68 65 73 0d 0a 49 6e 64   of matches..Ind
09f0: 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 43  ex: generic/tclC
0a00: 6d 64 49 4c 2e 63 0d 0a 3d 3d 3d 3d 3d 3d 3d 3d  mdIL.c..========
0a10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0a20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0a30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0a40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 52 43 53  ===========..RCS
0a50: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f   file: /cvsroot/
0a60: 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69 63 2f  tcl/tcl/generic/
0a70: 74 63 6c 43 6d 64 49 4c 2e 63 2c 76 0d 0a 72 65  tclCmdIL.c,v..re
0a80: 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f  trieving revisio
0a90: 6e 20 31 2e 37 31 0d 0a 64 69 66 66 20 2d 75 20  n 1.71..diff -u 
0aa0: 2d 72 31 2e 37 31 20 74 63 6c 43 6d 64 49 4c 2e  -r1.71 tclCmdIL.
0ab0: 63 0d 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74  c..--- generic/t
0ac0: 63 6c 43 6d 64 49 4c 2e 63 09 31 34 20 44 65 63  clCmdIL.c.14 Dec
0ad0: 20 32 30 30 34 20 32 31 3a 31 31 3a 34 35 20 2d   2004 21:11:45 -
0ae0: 30 30 30 30 09 31 2e 37 31 0d 0a 2b 2b 2b 20 67  0000.1.71..+++ g
0af0: 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64 49 4c 2e  eneric/tclCmdIL.
0b00: 63 09 32 20 4d 61 72 20 32 30 30 35 20 30 36 3a  c.2 Mar 2005 06:
0b10: 33 36 3a 32 33 20 2d 30 30 30 30 0d 0a 40 40 20  36:23 -0000..@@ 
0b20: 2d 33 35 2c 36 20 2b 33 35 2c 31 35 20 40 40 0d  -35,6 +35,15 @@.
0b30: 0a 20 7d 20 53 6f 72 74 45 6c 65 6d 65 6e 74 3b  . } SortElement;
0b40: 0d 0a 20 0d 0a 20 2f 2a 0d 0a 2b 20 2a 20 54 68  .. .. /*..+ * Th
0b50: 65 73 65 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69  ese function poi
0b60: 6e 74 65 72 20 74 79 70 65 73 20 61 72 65 20 75  nter types are u
0b70: 73 65 64 20 77 69 74 68 20 74 68 65 20 22 6c 73  sed with the "ls
0b80: 65 61 72 63 68 22 20 61 6e 64 20 22 6c 73 6f 72  earch" and "lsor
0b90: 74 22 0d 0a 2b 20 2a 20 63 6f 6d 6d 61 6e 64 73  t"..+ * commands
0ba0: 20 74 6f 20 66 61 63 69 6c 69 74 61 74 65 20 74   to facilitate t
0bb0: 68 65 20 22 2d 6e 6f 63 61 73 65 22 20 6f 70 74  he "-nocase" opt
0bc0: 69 6f 6e 2e 0d 0a 2b 20 2a 2f 0d 0a 2b 0d 0a 2b  ion...+ */..+..+
0bd0: 74 79 70 65 64 65 66 20 69 6e 74 20 28 2a 53 6f  typedef int (*So
0be0: 72 74 53 74 72 43 6d 70 46 6e 5f 74 29 20 5f 41  rtStrCmpFn_t) _A
0bf0: 4e 53 49 5f 41 52 47 53 5f 28 28 63 6f 6e 73 74  NSI_ARGS_((const
0c00: 20 63 68 61 72 20 2a 2c 20 63 6f 6e 73 74 20 63   char *, const c
0c10: 68 61 72 20 2a 29 29 3b 0d 0a 2b 74 79 70 65 64  har *));..+typed
0c20: 65 66 20 69 6e 74 20 28 2a 53 6f 72 74 4d 65 6d  ef int (*SortMem
0c30: 43 6d 70 46 6e 5f 74 29 20 5f 41 4e 53 49 5f 41  CmpFn_t) _ANSI_A
0c40: 52 47 53 5f 28 28 63 6f 6e 73 74 20 76 6f 69 64  RGS_((const void
0c50: 20 2a 2c 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a   *, const void *
0c60: 2c 0d 0a 2b 09 09 09 20 20 20 20 73 69 7a 65 5f  ,..+...    size_
0c70: 74 29 29 3b 0d 0a 2b 0d 0a 2b 2f 2a 0d 0a 20 20  t));..+..+/*..  
0c80: 2a 20 54 68 65 20 22 6c 73 6f 72 74 22 20 63 6f  * The "lsort" co
0c90: 6d 6d 61 6e 64 20 6e 65 65 64 73 20 74 6f 20 70  mmand needs to p
0ca0: 61 73 73 20 63 65 72 74 61 69 6e 20 69 6e 66 6f  ass certain info
0cb0: 72 6d 61 74 69 6f 6e 20 64 6f 77 6e 20 74 6f 20  rmation down to 
0cc0: 74 68 65 0d 0a 20 20 2a 20 66 75 6e 63 74 69 6f  the..  * functio
0cd0: 6e 20 74 68 61 74 20 63 6f 6d 70 61 72 65 73 20  n that compares 
0ce0: 74 77 6f 20 6c 69 73 74 20 65 6c 65 6d 65 6e 74  two list element
0cf0: 73 2c 20 61 6e 64 20 74 68 65 20 63 6f 6d 70 61  s, and the compa
0d00: 72 69 73 6f 6e 20 66 75 6e 63 74 69 6f 6e 0d 0a  rison function..
0d10: 20 20 2a 20 6e 65 65 64 73 20 74 6f 20 70 61 73    * needs to pas
0d20: 73 20 73 75 63 63 65 73 73 20 6f 72 20 66 61 69  s success or fai
0d30: 6c 75 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  lure information
0d40: 20 62 61 63 6b 20 75 70 20 74 6f 20 74 68 65 20   back up to the 
0d50: 74 6f 70 2d 6c 65 76 65 6c 0d 0a 40 40 20 2d 34  top-level..@@ -4
0d60: 36 2c 36 20 2b 35 35 2c 38 20 40 40 0d 0a 20 20  6,6 +55,8 @@..  
0d70: 20 20 20 69 6e 74 20 69 73 49 6e 63 72 65 61 73     int isIncreas
0d80: 69 6e 67 3b 09 09 2f 2a 20 4e 6f 6e 7a 65 72 6f  ing;../* Nonzero
0d90: 20 6d 65 61 6e 73 20 73 6f 72 74 20 69 6e 20 69   means sort in i
0da0: 6e 63 72 65 61 73 69 6e 67 20 6f 72 64 65 72 2e  ncreasing order.
0db0: 20 2a 2f 0d 0a 20 20 20 20 20 69 6e 74 20 73 6f   */..     int so
0dc0: 72 74 4d 6f 64 65 3b 09 09 2f 2a 20 54 68 65 20  rtMode;../* The 
0dd0: 73 6f 72 74 20 6d 6f 64 65 2e 20 20 4f 6e 65 20  sort mode.  One 
0de0: 6f 66 20 53 4f 52 54 4d 4f 44 45 5f 2a 0d 0a 20  of SORTMODE_*.. 
0df0: 09 09 09 09 20 2a 20 76 61 6c 75 65 73 20 64 65  .... * values de
0e00: 66 69 6e 65 64 20 62 65 6c 6f 77 20 2a 2f 0d 0a  fined below */..
0e10: 2b 20 20 20 20 53 6f 72 74 53 74 72 43 6d 70 46  +    SortStrCmpF
0e20: 6e 5f 74 20 73 74 72 43 6d 70 46 6e 3b 20 20 20  n_t strCmpFn;   
0e30: 20 20 2f 2a 20 42 61 73 69 63 20 73 74 72 69 6e    /* Basic strin
0e40: 67 20 63 6f 6d 70 61 72 65 20 63 6f 6d 6d 61 6e  g compare comman
0e50: 64 20 28 75 73 65 64 20 77 69 74 68 0d 0a 2b 09  d (used with..+.
0e60: 09 09 09 20 2a 20 41 53 43 49 49 20 6d 6f 64 65  ... * ASCII mode
0e70: 29 2e 20 2a 2f 0d 0a 20 20 20 20 20 54 63 6c 5f  ). */..     Tcl_
0e80: 4f 62 6a 20 2a 63 6f 6d 70 61 72 65 43 6d 64 50  Obj *compareCmdP
0e90: 74 72 3b 20 20 20 20 20 2f 2a 20 54 68 65 20 54  tr;     /* The T
0ea0: 63 6c 20 63 6f 6d 70 61 72 69 73 6f 6e 20 63 6f  cl comparison co
0eb0: 6d 6d 61 6e 64 20 77 68 65 6e 20 73 6f 72 74 4d  mmand when sortM
0ec0: 6f 64 65 0d 0a 20 09 09 09 09 20 2a 20 69 73 20  ode.. .... * is 
0ed0: 53 4f 52 54 4d 4f 44 45 5f 43 4f 4d 4d 41 4e 44  SORTMODE_COMMAND
0ee0: 2e 20 20 50 72 65 2d 69 6e 69 74 69 61 6c 69 7a  .  Pre-initializ
0ef0: 65 64 20 74 6f 0d 0a 20 09 09 09 09 20 2a 20 68  ed to.. .... * h
0f00: 6f 6c 64 20 62 61 73 65 20 6f 66 20 63 6f 6d 6d  old base of comm
0f10: 61 6e 64 2e 2a 2f 0d 0a 40 40 20 2d 33 30 39 36  and.*/..@@ -3096
0f20: 2c 37 20 2b 33 31 30 37 2c 37 20 40 40 0d 0a 20  ,7 +3107,7 @@.. 
0f30: 20 20 20 20 63 68 61 72 20 2a 62 79 74 65 73 2c      char *bytes,
0f40: 20 2a 70 61 74 74 65 72 6e 42 79 74 65 73 3b 0d   *patternBytes;.
0f50: 0a 20 20 20 20 20 69 6e 74 20 69 2c 20 6d 61 74  .     int i, mat
0f60: 63 68 2c 20 6d 6f 64 65 2c 20 69 6e 64 65 78 2c  ch, mode, index,
0f70: 20 72 65 73 75 6c 74 2c 20 6c 69 73 74 63 2c 20   result, listc, 
0f80: 6c 65 6e 67 74 68 2c 20 65 6c 65 6d 4c 65 6e 3b  length, elemLen;
0f90: 0d 0a 20 20 20 20 20 69 6e 74 20 64 61 74 61 54  ..     int dataT
0fa0: 79 70 65 2c 20 69 73 49 6e 63 72 65 61 73 69 6e  ype, isIncreasin
0fb0: 67 2c 20 6c 6f 77 65 72 2c 20 75 70 70 65 72 2c  g, lower, upper,
0fc0: 20 70 61 74 49 6e 74 2c 20 6f 62 6a 49 6e 74 3b   patInt, objInt;
0fd0: 0d 0a 2d 20 20 20 20 69 6e 74 20 6f 66 66 73 65  ..-    int offse
0fe0: 74 2c 20 61 6c 6c 4d 61 74 63 68 65 73 2c 20 69  t, allMatches, i
0ff0: 6e 6c 69 6e 65 52 65 74 75 72 6e 2c 20 6e 65 67  nlineReturn, neg
1000: 61 74 65 64 4d 61 74 63 68 2c 20 72 65 74 75 72  atedMatch, retur
1010: 6e 53 75 62 69 6e 64 69 63 65 73 3b 0d 0a 2b 20  nSubindices;..+ 
1020: 20 20 20 69 6e 74 20 6f 66 66 73 65 74 2c 20 61     int offset, a
1030: 6c 6c 4d 61 74 63 68 65 73 2c 20 69 6e 6c 69 6e  llMatches, inlin
1040: 65 52 65 74 75 72 6e 2c 20 6e 65 67 61 74 65 64  eReturn, negated
1050: 4d 61 74 63 68 2c 20 72 65 74 75 72 6e 53 75 62  Match, returnSub
1060: 69 6e 64 69 63 65 73 2c 20 6e 6f 43 61 73 65 3b  indices, noCase;
1070: 0d 0a 20 20 20 20 20 64 6f 75 62 6c 65 20 70 61  ..     double pa
1080: 74 44 6f 75 62 6c 65 2c 20 6f 62 6a 44 6f 75 62  tDouble, objDoub
1090: 6c 65 3b 0d 0a 20 20 20 20 20 53 6f 72 74 49 6e  le;..     SortIn
10a0: 66 6f 20 73 6f 72 74 49 6e 66 6f 3b 0d 0a 20 20  fo sortInfo;..  
10b0: 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 70 61 74 4f     Tcl_Obj *patO
10c0: 62 6a 2c 20 2a 2a 6c 69 73 74 76 2c 20 2a 6c 69  bj, **listv, *li
10d0: 73 74 50 74 72 2c 20 2a 73 74 61 72 74 50 74 72  stPtr, *startPtr
10e0: 2c 20 2a 69 74 65 6d 50 74 72 3b 0d 0a 40 40 20  , *itemPtr;..@@ 
10f0: 2d 33 31 30 34 2c 31 35 20 2b 33 31 31 35 2c 31  -3104,15 +3115,1
1100: 37 20 40 40 0d 0a 20 20 20 20 20 73 74 61 74 69  7 @@..     stati
1110: 63 20 43 4f 4e 53 54 20 63 68 61 72 20 2a 6f 70  c CONST char *op
1120: 74 69 6f 6e 73 5b 5d 20 3d 20 7b 0d 0a 20 09 22  tions[] = {.. ."
1130: 2d 61 6c 6c 22 2c 09 20 20 20 20 22 2d 61 73 63  -all",.    "-asc
1140: 69 69 22 2c 20 20 20 22 2d 64 65 63 72 65 61 73  ii",   "-decreas
1150: 69 6e 67 22 2c 20 22 2d 64 69 63 74 69 6f 6e 61  ing", "-dictiona
1160: 72 79 22 2c 0d 0a 20 09 22 2d 65 78 61 63 74 22  ry",.. ."-exact"
1170: 2c 20 20 20 22 2d 67 6c 6f 62 22 2c 20 20 20 20  ,   "-glob",    
1180: 22 2d 69 6e 63 72 65 61 73 69 6e 67 22 2c 20 22  "-increasing", "
1190: 2d 69 6e 64 65 78 22 2c 0d 0a 2d 09 22 2d 69 6e  -index",..-."-in
11a0: 6c 69 6e 65 22 2c 20 20 22 2d 69 6e 74 65 67 65  line",  "-intege
11b0: 72 22 2c 20 22 2d 6e 6f 74 22 2c 20 20 20 20 20  r", "-not",     
11c0: 20 20 20 22 2d 72 65 61 6c 22 2c 0d 0a 2d 09 22     "-real",..-."
11d0: 2d 72 65 67 65 78 70 22 2c 20 20 22 2d 73 6f 72  -regexp",  "-sor
11e0: 74 65 64 22 2c 20 20 22 2d 73 74 61 72 74 22 2c  ted",  "-start",
11f0: 20 20 20 20 20 20 22 2d 73 75 62 69 6e 64 69 63        "-subindic
1200: 65 73 22 2c 0d 0a 2b 09 22 2d 69 6e 6c 69 6e 65  es",..+."-inline
1210: 22 2c 20 20 22 2d 69 6e 74 65 67 65 72 22 2c 20  ",  "-integer", 
1220: 22 2d 6e 6f 63 61 73 65 22 2c 20 20 20 20 20 22  "-nocase",     "
1230: 2d 6e 6f 74 22 2c 0d 0a 2b 09 22 2d 72 65 61 6c  -not",..+."-real
1240: 22 2c 20 20 20 20 22 2d 72 65 67 65 78 70 22 2c  ",    "-regexp",
1250: 20 20 22 2d 73 6f 72 74 65 64 22 2c 20 20 20 20    "-sorted",    
1260: 20 22 2d 73 74 61 72 74 22 2c 0d 0a 2b 09 22 2d   "-start",..+."-
1270: 73 75 62 69 6e 64 69 63 65 73 22 2c 0d 0a 20 09  subindices",.. .
1280: 4e 55 4c 4c 0d 0a 20 20 20 20 20 7d 3b 0d 0a 20  NULL..     };.. 
1290: 20 20 20 20 65 6e 75 6d 20 6f 70 74 69 6f 6e 73      enum options
12a0: 20 7b 0d 0a 20 09 4c 53 45 41 52 43 48 5f 41 4c   {.. .LSEARCH_AL
12b0: 4c 2c 20 4c 53 45 41 52 43 48 5f 41 53 43 49 49  L, LSEARCH_ASCII
12c0: 2c 20 4c 53 45 41 52 43 48 5f 44 45 43 52 45 41  , LSEARCH_DECREA
12d0: 53 49 4e 47 2c 20 4c 53 45 41 52 43 48 5f 44 49  SING, LSEARCH_DI
12e0: 43 54 49 4f 4e 41 52 59 2c 0d 0a 20 09 4c 53 45  CTIONARY,.. .LSE
12f0: 41 52 43 48 5f 45 58 41 43 54 2c 20 4c 53 45 41  ARCH_EXACT, LSEA
1300: 52 43 48 5f 47 4c 4f 42 2c 20 4c 53 45 41 52 43  RCH_GLOB, LSEARC
1310: 48 5f 49 4e 43 52 45 41 53 49 4e 47 2c 20 4c 53  H_INCREASING, LS
1320: 45 41 52 43 48 5f 49 4e 44 45 58 2c 0d 0a 2d 09  EARCH_INDEX,..-.
1330: 4c 53 45 41 52 43 48 5f 49 4e 4c 49 4e 45 2c 20  LSEARCH_INLINE, 
1340: 4c 53 45 41 52 43 48 5f 49 4e 54 45 47 45 52 2c  LSEARCH_INTEGER,
1350: 20 4c 53 45 41 52 43 48 5f 4e 4f 54 2c 20 4c 53   LSEARCH_NOT, LS
1360: 45 41 52 43 48 5f 52 45 41 4c 2c 0d 0a 2d 09 4c  EARCH_REAL,..-.L
1370: 53 45 41 52 43 48 5f 52 45 47 45 58 50 2c 20 4c  SEARCH_REGEXP, L
1380: 53 45 41 52 43 48 5f 53 4f 52 54 45 44 2c 20 4c  SEARCH_SORTED, L
1390: 53 45 41 52 43 48 5f 53 54 41 52 54 2c 20 4c 53  SEARCH_START, LS
13a0: 45 41 52 43 48 5f 53 55 42 49 4e 44 49 43 45 53  EARCH_SUBINDICES
13b0: 0d 0a 2b 09 4c 53 45 41 52 43 48 5f 49 4e 4c 49  ..+.LSEARCH_INLI
13c0: 4e 45 2c 20 4c 53 45 41 52 43 48 5f 49 4e 54 45  NE, LSEARCH_INTE
13d0: 47 45 52 2c 20 4c 53 45 41 52 43 48 5f 4e 4f 43  GER, LSEARCH_NOC
13e0: 41 53 45 2c 20 4c 53 45 41 52 43 48 5f 4e 4f 54  ASE, LSEARCH_NOT
13f0: 2c 0d 0a 2b 09 4c 53 45 41 52 43 48 5f 52 45 41  ,..+.LSEARCH_REA
1400: 4c 2c 20 4c 53 45 41 52 43 48 5f 52 45 47 45 58  L, LSEARCH_REGEX
1410: 50 2c 20 4c 53 45 41 52 43 48 5f 53 4f 52 54 45  P, LSEARCH_SORTE
1420: 44 2c 20 4c 53 45 41 52 43 48 5f 53 54 41 52 54  D, LSEARCH_START
1430: 2c 0d 0a 2b 09 4c 53 45 41 52 43 48 5f 53 55 42  ,..+.LSEARCH_SUB
1440: 49 4e 44 49 43 45 53 0d 0a 20 20 20 20 20 7d 3b  INDICES..     };
1450: 0d 0a 20 20 20 20 20 65 6e 75 6d 20 64 61 74 61  ..     enum data
1460: 74 79 70 65 73 20 7b 0d 0a 20 09 41 53 43 49 49  types {.. .ASCII
1470: 2c 20 44 49 43 54 49 4f 4e 41 52 59 2c 20 49 4e  , DICTIONARY, IN
1480: 54 45 47 45 52 2c 20 52 45 41 4c 0d 0a 40 40 20  TEGER, REAL..@@ 
1490: 2d 33 31 32 30 2c 36 20 2b 33 31 33 33 2c 38 20  -3120,6 +3133,8 
14a0: 40 40 0d 0a 20 20 20 20 20 65 6e 75 6d 20 6d 6f  @@..     enum mo
14b0: 64 65 73 20 7b 0d 0a 20 09 45 58 41 43 54 2c 20  des {.. .EXACT, 
14c0: 47 4c 4f 42 2c 20 52 45 47 45 58 50 2c 20 53 4f  GLOB, REGEXP, SO
14d0: 52 54 45 44 0d 0a 20 20 20 20 20 7d 3b 0d 0a 2b  RTED..     };..+
14e0: 09 53 6f 72 74 53 74 72 43 6d 70 46 6e 5f 74 20  .SortStrCmpFn_t 
14f0: 73 74 72 43 6d 70 46 6e 20 3d 20 73 74 72 63 6d  strCmpFn = strcm
1500: 70 3b 0d 0a 2b 09 53 6f 72 74 4d 65 6d 43 6d 70  p;..+.SortMemCmp
1510: 46 6e 5f 74 20 6d 65 6d 43 6d 70 46 6e 20 3d 20  Fn_t memCmpFn = 
1520: 6d 65 6d 63 6d 70 3b 0d 0a 20 0d 0a 20 20 20 20  memcmp;.. ..    
1530: 20 6d 6f 64 65 20 3d 20 47 4c 4f 42 3b 0d 0a 20   mode = GLOB;.. 
1540: 20 20 20 20 64 61 74 61 54 79 70 65 20 3d 20 41      dataType = A
1550: 53 43 49 49 3b 0d 0a 40 40 20 2d 33 31 33 31 2c  SCII;..@@ -3131,
1560: 36 20 2b 33 31 34 36 2c 37 20 40 40 0d 0a 20 20  6 +3146,7 @@..  
1570: 20 20 20 6c 69 73 74 50 74 72 20 3d 20 4e 55 4c     listPtr = NUL
1580: 4c 3b 0d 0a 20 20 20 20 20 73 74 61 72 74 50 74  L;..     startPt
1590: 72 20 3d 20 4e 55 4c 4c 3b 0d 0a 20 20 20 20 20  r = NULL;..     
15a0: 6f 66 66 73 65 74 20 3d 20 30 3b 0d 0a 2b 20 20  offset = 0;..+  
15b0: 20 20 6e 6f 43 61 73 65 20 3d 20 30 3b 0d 0a 20    noCase = 0;.. 
15c0: 20 20 20 20 73 6f 72 74 49 6e 66 6f 2e 63 6f 6d      sortInfo.com
15d0: 70 61 72 65 43 6d 64 50 74 72 20 3d 20 4e 55 4c  pareCmdPtr = NUL
15e0: 4c 3b 0d 0a 20 20 20 20 20 73 6f 72 74 49 6e 66  L;..     sortInf
15f0: 6f 2e 69 73 49 6e 63 72 65 61 73 69 6e 67 20 3d  o.isIncreasing =
1600: 20 30 3b 0d 0a 20 20 20 20 20 73 6f 72 74 49 6e   0;..     sortIn
1610: 66 6f 2e 73 6f 72 74 4d 6f 64 65 20 3d 20 30 3b  fo.sortMode = 0;
1620: 0d 0a 40 40 20 2d 33 31 38 33 2c 36 20 2b 33 31  ..@@ -3183,6 +31
1630: 39 39 2c 31 31 20 40 40 0d 0a 20 09 63 61 73 65  99,11 @@.. .case
1640: 20 4c 53 45 41 52 43 48 5f 49 4e 54 45 47 45 52   LSEARCH_INTEGER
1650: 3a 09 09 2f 2a 20 2d 69 6e 74 65 67 65 72 20 2a  :../* -integer *
1660: 2f 0d 0a 20 09 20 20 20 20 64 61 74 61 54 79 70  /.. .    dataTyp
1670: 65 20 3d 20 49 4e 54 45 47 45 52 3b 0d 0a 20 09  e = INTEGER;.. .
1680: 20 20 20 20 62 72 65 61 6b 3b 0d 0a 2b 09 63 61      break;..+.ca
1690: 73 65 20 4c 53 45 41 52 43 48 5f 4e 4f 43 41 53  se LSEARCH_NOCAS
16a0: 45 3a 09 09 2f 2a 20 2d 6e 6f 63 61 73 65 20 2a  E:../* -nocase *
16b0: 2f 0d 0a 2b 09 20 20 20 20 73 74 72 43 6d 70 46  /..+.    strCmpF
16c0: 6e 20 3d 20 73 74 72 63 61 73 65 63 6d 70 3b 0d  n = strcasecmp;.
16d0: 0a 2b 09 20 20 20 20 6d 65 6d 43 6d 70 46 6e 20  .+.    memCmpFn 
16e0: 3d 20 73 74 72 6e 63 61 73 65 63 6d 70 3b 0d 0a  = strncasecmp;..
16f0: 2b 09 20 20 20 20 6e 6f 43 61 73 65 20 3d 20 31  +.    noCase = 1
1700: 3b 0d 0a 2b 09 20 20 20 20 62 72 65 61 6b 3b 0d  ;..+.    break;.
1710: 0a 20 09 63 61 73 65 20 4c 53 45 41 52 43 48 5f  . .case LSEARCH_
1720: 4e 4f 54 3a 09 09 2f 2a 20 2d 6e 6f 74 20 2a 2f  NOT:../* -not */
1730: 0d 0a 20 09 20 20 20 20 6e 65 67 61 74 65 64 4d  .. .    negatedM
1740: 61 74 63 68 20 3d 20 31 3b 0d 0a 20 09 20 20 20  atch = 1;.. .   
1750: 20 62 72 65 61 6b 3b 0d 0a 40 40 20 2d 33 33 31   break;..@@ -331
1760: 37 2c 37 20 2b 33 33 33 38 2c 37 20 40 40 0d 0a  7,7 +3338,7 @@..
1770: 20 09 20 2a 20 72 65 67 65 78 70 20 72 65 70 20   . * regexp rep 
1780: 62 65 66 6f 72 65 20 74 68 65 20 6c 69 73 74 20  before the list 
1790: 72 65 70 2e 0d 0a 20 09 20 2a 2f 0d 0a 20 09 72  rep... . */.. .r
17a0: 65 67 65 78 70 20 3d 20 54 63 6c 5f 47 65 74 52  egexp = Tcl_GetR
17b0: 65 67 45 78 70 46 72 6f 6d 4f 62 6a 28 69 6e 74  egExpFromObj(int
17c0: 65 72 70 2c 20 6f 62 6a 76 5b 6f 62 6a 63 20 2d  erp, objv[objc -
17d0: 20 31 5d 2c 0d 0a 2d 09 09 54 43 4c 5f 52 45 47   1],..-..TCL_REG
17e0: 5f 41 44 56 41 4e 43 45 44 20 7c 20 54 43 4c 5f  _ADVANCED | TCL_
17f0: 52 45 47 5f 4e 4f 53 55 42 29 3b 0d 0a 2b 09 09  REG_NOSUB);..+..
1800: 54 43 4c 5f 52 45 47 5f 41 44 56 41 4e 43 45 44  TCL_REG_ADVANCED
1810: 20 7c 20 54 43 4c 5f 52 45 47 5f 4e 4f 53 55 42   | TCL_REG_NOSUB
1820: 20 7c 20 28 6e 6f 43 61 73 65 20 3f 20 54 43 4c   | (noCase ? TCL
1830: 5f 52 45 47 5f 4e 4f 43 41 53 45 20 3a 20 30 29  _REG_NOCASE : 0)
1840: 29 3b 0d 0a 20 09 69 66 20 28 72 65 67 65 78 70  );.. .if (regexp
1850: 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0d 0a 20 09 20   == NULL) {.. . 
1860: 20 20 20 69 66 20 28 73 74 61 72 74 50 74 72 20     if (startPtr 
1870: 21 3d 20 4e 55 4c 4c 29 20 7b 0d 0a 20 09 09 54  != NULL) {.. ..T
1880: 63 6c 5f 44 65 63 72 52 65 66 43 6f 75 6e 74 28  cl_DecrRefCount(
1890: 73 74 61 72 74 50 74 72 29 3b 0d 0a 40 40 20 2d  startPtr);..@@ -
18a0: 33 34 32 36 2c 37 20 2b 33 34 34 37 2c 37 20 40  3426,7 +3447,7 @
18b0: 40 0d 0a 20 09 20 20 20 20 73 77 69 74 63 68 20  @.. .    switch 
18c0: 28 28 65 6e 75 6d 20 64 61 74 61 74 79 70 65 73  ((enum datatypes
18d0: 29 20 64 61 74 61 54 79 70 65 29 20 7b 0d 0a 20  ) dataType) {.. 
18e0: 09 20 20 20 20 63 61 73 65 20 41 53 43 49 49 3a  .    case ASCII:
18f0: 0d 0a 20 09 09 62 79 74 65 73 20 3d 20 54 63 6c  .. ..bytes = Tcl
1900: 47 65 74 53 74 72 69 6e 67 28 69 74 65 6d 50 74  GetString(itemPt
1910: 72 29 3b 0d 0a 2d 09 09 6d 61 74 63 68 20 3d 20  r);..-..match = 
1920: 73 74 72 63 6d 70 28 70 61 74 74 65 72 6e 42 79  strcmp(patternBy
1930: 74 65 73 2c 20 62 79 74 65 73 29 3b 0d 0a 2b 09  tes, bytes);..+.
1940: 09 6d 61 74 63 68 20 3d 20 73 74 72 43 6d 70 46  .match = strCmpF
1950: 6e 28 70 61 74 74 65 72 6e 42 79 74 65 73 2c 20  n(patternBytes, 
1960: 62 79 74 65 73 29 3b 0d 0a 20 09 09 62 72 65 61  bytes);.. ..brea
1970: 6b 3b 0d 0a 20 09 20 20 20 20 63 61 73 65 20 44  k;.. .    case D
1980: 49 43 54 49 4f 4e 41 52 59 3a 0d 0a 20 09 09 62  ICTIONARY:.. ..b
1990: 79 74 65 73 20 3d 20 54 63 6c 47 65 74 53 74 72  ytes = TclGetStr
19a0: 69 6e 67 28 69 74 65 6d 50 74 72 29 3b 0d 0a 40  ing(itemPtr);..@
19b0: 40 20 2d 33 35 32 34 2c 37 20 2b 33 35 34 35 2c  @ -3524,7 +3545,
19c0: 37 20 40 40 0d 0a 20 09 09 63 61 73 65 20 41 53  7 @@.. ..case AS
19d0: 43 49 49 3a 0d 0a 20 09 09 20 20 20 20 62 79 74  CII:.. ..    byt
19e0: 65 73 20 3d 20 54 63 6c 5f 47 65 74 53 74 72 69  es = Tcl_GetStri
19f0: 6e 67 46 72 6f 6d 4f 62 6a 28 69 74 65 6d 50 74  ngFromObj(itemPt
1a00: 72 2c 20 26 65 6c 65 6d 4c 65 6e 29 3b 0d 0a 20  r, &elemLen);.. 
1a10: 09 09 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68  ..    if (length
1a20: 20 3d 3d 20 65 6c 65 6d 4c 65 6e 29 20 7b 0d 0a   == elemLen) {..
1a30: 2d 09 09 09 6d 61 74 63 68 20 3d 20 28 6d 65 6d  -...match = (mem
1a40: 63 6d 70 28 62 79 74 65 73 2c 20 70 61 74 74 65  cmp(bytes, patte
1a50: 72 6e 42 79 74 65 73 2c 0d 0a 2b 09 09 09 6d 61  rnBytes,..+...ma
1a60: 74 63 68 20 3d 20 28 6d 65 6d 43 6d 70 46 6e 28  tch = (memCmpFn(
1a70: 62 79 74 65 73 2c 20 70 61 74 74 65 72 6e 42 79  bytes, patternBy
1a80: 74 65 73 2c 0d 0a 20 09 09 09 09 28 73 69 7a 65  tes,.. ....(size
1a90: 5f 74 29 20 6c 65 6e 67 74 68 29 20 3d 3d 20 30  _t) length) == 0
1aa0: 29 3b 0d 0a 20 09 09 20 20 20 20 7d 0d 0a 20 09  );.. ..    }.. .
1ab0: 09 20 20 20 20 62 72 65 61 6b 3b 0d 0a 40 40 20  .    break;..@@ 
1ac0: 2d 33 35 36 34 2c 37 20 2b 33 35 38 35 2c 37 20  -3564,7 +3585,7 
1ad0: 40 40 0d 0a 20 09 09 62 72 65 61 6b 3b 0d 0a 20  @@.. ..break;.. 
1ae0: 0d 0a 20 09 20 20 20 20 63 61 73 65 20 47 4c 4f  .. .    case GLO
1af0: 42 3a 0d 0a 2d 09 09 6d 61 74 63 68 20 3d 20 54  B:..-..match = T
1b00: 63 6c 5f 53 74 72 69 6e 67 4d 61 74 63 68 28 54  cl_StringMatch(T
1b10: 63 6c 47 65 74 53 74 72 69 6e 67 28 69 74 65 6d  clGetString(item
1b20: 50 74 72 29 2c 20 70 61 74 74 65 72 6e 42 79 74  Ptr), patternByt
1b30: 65 73 29 3b 0d 0a 2b 09 09 6d 61 74 63 68 20 3d  es);..+..match =
1b40: 20 54 63 6c 5f 53 74 72 69 6e 67 43 61 73 65 4d   Tcl_StringCaseM
1b50: 61 74 63 68 28 54 63 6c 47 65 74 53 74 72 69 6e  atch(TclGetStrin
1b60: 67 28 69 74 65 6d 50 74 72 29 2c 20 70 61 74 74  g(itemPtr), patt
1b70: 65 72 6e 42 79 74 65 73 2c 20 6e 6f 43 61 73 65  ernBytes, noCase
1b80: 29 3b 0d 0a 20 09 09 62 72 65 61 6b 3b 0d 0a 20  );.. ..break;.. 
1b90: 09 20 20 20 20 63 61 73 65 20 52 45 47 45 58 50  .    case REGEXP
1ba0: 3a 0d 0a 20 09 09 6d 61 74 63 68 20 3d 20 54 63  :.. ..match = Tc
1bb0: 6c 5f 52 65 67 45 78 70 45 78 65 63 4f 62 6a 28  l_RegExpExecObj(
1bc0: 69 6e 74 65 72 70 2c 20 72 65 67 65 78 70 2c 20  interp, regexp, 
1bd0: 69 74 65 6d 50 74 72 2c 20 30 2c 20 30 2c 20 30  itemPtr, 0, 0, 0
1be0: 29 3b 0d 0a 40 40 20 2d 33 37 36 36 2c 31 32 20  );..@@ -3766,12 
1bf0: 2b 33 37 38 37 2c 31 32 20 40 40 0d 0a 20 09 09  +3787,12 @@.. ..
1c00: 09 09 09 20 2a 20 63 6f 6d 70 61 72 69 73 6f 6e  ... * comparison
1c10: 20 66 75 6e 63 74 69 6f 6e 20 2a 2f 0d 0a 20 20   function */..  
1c20: 20 20 20 73 74 61 74 69 63 20 43 4f 4e 53 54 20     static CONST 
1c30: 63 68 61 72 20 2a 73 77 69 74 63 68 65 73 5b 5d  char *switches[]
1c40: 20 3d 20 7b 0d 0a 20 09 22 2d 61 73 63 69 69 22   = {.. ."-ascii"
1c50: 2c 20 22 2d 63 6f 6d 6d 61 6e 64 22 2c 20 22 2d  , "-command", "-
1c60: 64 65 63 72 65 61 73 69 6e 67 22 2c 20 22 2d 64  decreasing", "-d
1c70: 69 63 74 69 6f 6e 61 72 79 22 2c 20 22 2d 69 6e  ictionary", "-in
1c80: 63 72 65 61 73 69 6e 67 22 2c 0d 0a 2d 09 22 2d  creasing",..-."-
1c90: 69 6e 64 65 78 22 2c 20 22 2d 69 6e 64 69 63 65  index", "-indice
1ca0: 73 22 2c 20 22 2d 69 6e 74 65 67 65 72 22 2c 20  s", "-integer", 
1cb0: 22 2d 72 65 61 6c 22 2c 20 22 2d 75 6e 69 71 75  "-real", "-uniqu
1cc0: 65 22 2c 20 28 63 68 61 72 20 2a 29 20 4e 55 4c  e", (char *) NUL
1cd0: 4c 0d 0a 2b 09 22 2d 69 6e 64 65 78 22 2c 20 22  L..+."-index", "
1ce0: 2d 69 6e 64 69 63 65 73 22 2c 20 22 2d 69 6e 74  -indices", "-int
1cf0: 65 67 65 72 22 2c 20 22 2d 6e 6f 63 61 73 65 22  eger", "-nocase"
1d00: 2c 20 22 2d 72 65 61 6c 22 2c 20 22 2d 75 6e 69  , "-real", "-uni
1d10: 71 75 65 22 2c 20 28 63 68 61 72 20 2a 29 20 4e  que", (char *) N
1d20: 55 4c 4c 0d 0a 20 20 20 20 20 7d 3b 0d 0a 20 20  ULL..     };..  
1d30: 20 20 20 65 6e 75 6d 20 4c 73 6f 72 74 5f 53 77     enum Lsort_Sw
1d40: 69 74 63 68 65 73 20 7b 0d 0a 20 09 4c 53 4f 52  itches {.. .LSOR
1d50: 54 5f 41 53 43 49 49 2c 20 4c 53 4f 52 54 5f 43  T_ASCII, LSORT_C
1d60: 4f 4d 4d 41 4e 44 2c 20 4c 53 4f 52 54 5f 44 45  OMMAND, LSORT_DE
1d70: 43 52 45 41 53 49 4e 47 2c 20 4c 53 4f 52 54 5f  CREASING, LSORT_
1d80: 44 49 43 54 49 4f 4e 41 52 59 2c 0d 0a 20 09 4c  DICTIONARY,.. .L
1d90: 53 4f 52 54 5f 49 4e 43 52 45 41 53 49 4e 47 2c  SORT_INCREASING,
1da0: 20 4c 53 4f 52 54 5f 49 4e 44 45 58 2c 20 4c 53   LSORT_INDEX, LS
1db0: 4f 52 54 5f 49 4e 44 49 43 45 53 2c 20 4c 53 4f  ORT_INDICES, LSO
1dc0: 52 54 5f 49 4e 54 45 47 45 52 2c 0d 0a 2d 09 4c  RT_INTEGER,..-.L
1dd0: 53 4f 52 54 5f 52 45 41 4c 2c 20 4c 53 4f 52 54  SORT_REAL, LSORT
1de0: 5f 55 4e 49 51 55 45 0d 0a 2b 09 4c 53 4f 52 54  _UNIQUE..+.LSORT
1df0: 5f 4e 4f 43 41 53 45 2c 20 4c 53 4f 52 54 5f 52  _NOCASE, LSORT_R
1e00: 45 41 4c 2c 20 4c 53 4f 52 54 5f 55 4e 49 51 55  EAL, LSORT_UNIQU
1e10: 45 0d 0a 20 20 20 20 20 7d 3b 0d 0a 20 0d 0a 20  E..     };.. .. 
1e20: 20 20 20 20 69 66 20 28 6f 62 6a 63 20 3c 20 32      if (objc < 2
1e30: 29 20 7b 0d 0a 40 40 20 2d 33 37 38 35 2c 36 20  ) {..@@ -3785,6 
1e40: 2b 33 38 30 36 2c 37 20 40 40 0d 0a 20 0d 0a 20  +3806,7 @@.. .. 
1e50: 20 20 20 20 73 6f 72 74 49 6e 66 6f 2e 69 73 49      sortInfo.isI
1e60: 6e 63 72 65 61 73 69 6e 67 20 3d 20 31 3b 0d 0a  ncreasing = 1;..
1e70: 20 20 20 20 20 73 6f 72 74 49 6e 66 6f 2e 73 6f       sortInfo.so
1e80: 72 74 4d 6f 64 65 20 3d 20 53 4f 52 54 4d 4f 44  rtMode = SORTMOD
1e90: 45 5f 41 53 43 49 49 3b 0d 0a 2b 20 20 20 20 73  E_ASCII;..+    s
1ea0: 6f 72 74 49 6e 66 6f 2e 73 74 72 43 6d 70 46 6e  ortInfo.strCmpFn
1eb0: 20 3d 20 73 74 72 63 6d 70 3b 0d 0a 20 20 20 20   = strcmp;..    
1ec0: 20 73 6f 72 74 49 6e 66 6f 2e 69 6e 64 65 78 76   sortInfo.indexv
1ed0: 20 3d 20 4e 55 4c 4c 3b 0d 0a 20 20 20 20 20 73   = NULL;..     s
1ee0: 6f 72 74 49 6e 66 6f 2e 69 6e 64 65 78 63 20 3d  ortInfo.indexc =
1ef0: 20 30 3b 0d 0a 20 20 20 20 20 73 6f 72 74 49 6e   0;..     sortIn
1f00: 66 6f 2e 69 6e 74 65 72 70 20 3d 20 69 6e 74 65  fo.interp = inte
1f10: 72 70 3b 0d 0a 40 40 20 2d 33 38 38 33 2c 36 20  rp;..@@ -3883,6 
1f20: 2b 33 39 30 35 2c 39 20 40 40 0d 0a 20 09 63 61  +3905,9 @@.. .ca
1f30: 73 65 20 4c 53 4f 52 54 5f 49 4e 54 45 47 45 52  se LSORT_INTEGER
1f40: 3a 0d 0a 20 09 20 20 20 20 73 6f 72 74 49 6e 66  :.. .    sortInf
1f50: 6f 2e 73 6f 72 74 4d 6f 64 65 20 3d 20 53 4f 52  o.sortMode = SOR
1f60: 54 4d 4f 44 45 5f 49 4e 54 45 47 45 52 3b 0d 0a  TMODE_INTEGER;..
1f70: 20 09 20 20 20 20 62 72 65 61 6b 3b 0d 0a 2b 09   .    break;..+.
1f80: 63 61 73 65 20 4c 53 4f 52 54 5f 4e 4f 43 41 53  case LSORT_NOCAS
1f90: 45 3a 0d 0a 2b 09 20 20 20 20 73 6f 72 74 49 6e  E:..+.    sortIn
1fa0: 66 6f 2e 73 74 72 43 6d 70 46 6e 20 3d 20 73 74  fo.strCmpFn = st
1fb0: 72 63 61 73 65 63 6d 70 3b 0d 0a 2b 09 20 20 20  rcasecmp;..+.   
1fc0: 20 62 72 65 61 6b 3b 0d 0a 20 09 63 61 73 65 20   break;.. .case 
1fd0: 4c 53 4f 52 54 5f 52 45 41 4c 3a 0d 0a 20 09 20  LSORT_REAL:.. . 
1fe0: 20 20 20 73 6f 72 74 49 6e 66 6f 2e 73 6f 72 74     sortInfo.sort
1ff0: 4d 6f 64 65 20 3d 20 53 4f 52 54 4d 4f 44 45 5f  Mode = SORTMODE_
2000: 52 45 41 4c 3b 0d 0a 20 09 20 20 20 20 62 72 65  REAL;.. .    bre
2010: 61 6b 3b 0d 0a 40 40 20 2d 34 31 35 37 2c 37 20  ak;..@@ -4157,7 
2020: 2b 34 31 38 32 2c 37 20 40 40 0d 0a 20 20 20 20  +4182,7 @@..    
2030: 20 7d 0d 0a 20 0d 0a 20 20 20 20 20 69 66 20 28   }.. ..     if (
2040: 69 6e 66 6f 50 74 72 2d 3e 73 6f 72 74 4d 6f 64  infoPtr->sortMod
2050: 65 20 3d 3d 20 53 4f 52 54 4d 4f 44 45 5f 41 53  e == SORTMODE_AS
2060: 43 49 49 29 20 7b 0d 0a 2d 09 6f 72 64 65 72 20  CII) {..-.order 
2070: 3d 20 73 74 72 63 6d 70 28 54 63 6c 47 65 74 53  = strcmp(TclGetS
2080: 74 72 69 6e 67 28 6f 62 6a 50 74 72 31 29 2c 20  tring(objPtr1), 
2090: 54 63 6c 47 65 74 53 74 72 69 6e 67 28 6f 62 6a  TclGetString(obj
20a0: 50 74 72 32 29 29 3b 0d 0a 2b 09 6f 72 64 65 72  Ptr2));..+.order
20b0: 20 3d 20 69 6e 66 6f 50 74 72 2d 3e 73 74 72 43   = infoPtr->strC
20c0: 6d 70 46 6e 28 54 63 6c 47 65 74 53 74 72 69 6e  mpFn(TclGetStrin
20d0: 67 28 6f 62 6a 50 74 72 31 29 2c 20 54 63 6c 47  g(objPtr1), TclG
20e0: 65 74 53 74 72 69 6e 67 28 6f 62 6a 50 74 72 32  etString(objPtr2
20f0: 29 29 3b 0d 0a 20 20 20 20 20 7d 20 65 6c 73 65  ));..     } else
2100: 20 69 66 20 28 69 6e 66 6f 50 74 72 2d 3e 73 6f   if (infoPtr->so
2110: 72 74 4d 6f 64 65 20 3d 3d 20 53 4f 52 54 4d 4f  rtMode == SORTMO
2120: 44 45 5f 44 49 43 54 49 4f 4e 41 52 59 29 20 7b  DE_DICTIONARY) {
2130: 0d 0a 20 09 6f 72 64 65 72 20 3d 20 44 69 63 74  .. .order = Dict
2140: 69 6f 6e 61 72 79 43 6f 6d 70 61 72 65 28 0d 0a  ionaryCompare(..
2150: 20 09 09 54 63 6c 47 65 74 53 74 72 69 6e 67 28   ..TclGetString(
2160: 6f 62 6a 50 74 72 31 29 2c 20 54 63 6c 47 65 74  objPtr1), TclGet
2170: 53 74 72 69 6e 67 28 6f 62 6a 50 74 72 32 29 29  String(objPtr2))
2180: 3b 0d 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69  ;..Index: generi
2190: 63 2f 74 63 6c 43 6d 64 4d 5a 2e 63 0d 0a 3d 3d  c/tclCmdMZ.c..==
21a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
21b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
21c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
21d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
21e0: 3d 0d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76  =..RCS file: /cv
21f0: 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65  sroot/tcl/tcl/ge
2200: 6e 65 72 69 63 2f 74 63 6c 43 6d 64 4d 5a 2e 63  neric/tclCmdMZ.c
2210: 2c 76 0d 0a 72 65 74 72 69 65 76 69 6e 67 20 72  ,v..retrieving r
2220: 65 76 69 73 69 6f 6e 20 31 2e 31 31 35 0d 0a 64  evision 1.115..d
2230: 69 66 66 20 2d 75 20 2d 72 31 2e 31 31 35 20 74  iff -u -r1.115 t
2240: 63 6c 43 6d 64 4d 5a 2e 63 0d 0a 2d 2d 2d 20 67  clCmdMZ.c..--- g
2250: 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64 4d 5a 2e  eneric/tclCmdMZ.
2260: 63 09 32 31 20 4f 63 74 20 32 30 30 34 20 31 35  c.21 Oct 2004 15
2270: 3a 31 39 3a 34 36 20 2d 30 30 30 30 09 31 2e 31  :19:46 -0000.1.1
2280: 31 35 0d 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f  15..+++ generic/
2290: 74 63 6c 43 6d 64 4d 5a 2e 63 09 32 20 4d 61 72  tclCmdMZ.c.2 Mar
22a0: 20 32 30 30 35 20 30 36 3a 33 36 3a 32 38 20 2d   2005 06:36:28 -
22b0: 30 30 30 30 0d 0a 40 40 20 2d 32 35 30 31 2c 32  0000..@@ -2501,2
22c0: 33 20 2b 32 35 30 31 2c 32 36 20 40 40 0d 0a 20  3 +2501,26 @@.. 
22d0: 20 20 20 20 69 6e 74 20 6f 62 6a 63 3b 09 09 09      int objc;...
22e0: 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 61 72 67  /* Number of arg
22f0: 75 6d 65 6e 74 73 2e 20 2a 2f 0d 0a 20 20 20 20  uments. */..    
2300: 20 54 63 6c 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20   Tcl_Obj *CONST 
2310: 6f 62 6a 76 5b 5d 3b 09 2f 2a 20 41 72 67 75 6d  objv[];./* Argum
2320: 65 6e 74 20 6f 62 6a 65 63 74 73 2e 20 2a 2f 0d  ent objects. */.
2330: 0a 20 7b 0d 0a 2d 20 20 20 20 69 6e 74 20 69 2c  . {..-    int i,
2340: 20 6a 2c 20 69 6e 64 65 78 2c 20 6d 6f 64 65 2c   j, index, mode,
2350: 20 72 65 73 75 6c 74 2c 20 73 70 6c 69 74 4f 62   result, splitOb
2360: 6a 73 2c 20 6e 75 6d 4d 61 74 63 68 65 73 53 61  js, numMatchesSa
2370: 76 65 64 3b 0d 0a 2b 20 20 20 20 69 6e 74 20 69  ved;..+    int i
2380: 2c 20 6a 2c 20 69 6e 64 65 78 2c 20 6d 6f 64 65  , j, index, mode
2390: 2c 20 72 65 73 75 6c 74 2c 20 73 70 6c 69 74 4f  , result, splitO
23a0: 62 6a 73 2c 20 6e 75 6d 4d 61 74 63 68 65 73 53  bjs, numMatchesS
23b0: 61 76 65 64 2c 20 6e 6f 43 61 73 65 3b 0d 0a 20  aved, noCase;.. 
23c0: 20 20 20 20 63 68 61 72 20 2a 70 61 74 74 65 72      char *patter
23d0: 6e 3b 0d 0a 20 20 20 20 20 54 63 6c 5f 4f 62 6a  n;..     Tcl_Obj
23e0: 20 2a 73 74 72 69 6e 67 4f 62 6a 2c 20 2a 69 6e   *stringObj, *in
23f0: 64 65 78 56 61 72 4f 62 6a 2c 20 2a 6d 61 74 63  dexVarObj, *matc
2400: 68 56 61 72 4f 62 6a 3b 0d 0a 20 20 20 20 20 54  hVarObj;..     T
2410: 63 6c 5f 4f 62 6a 20 2a 43 4f 4e 53 54 20 2a 73  cl_Obj *CONST *s
2420: 61 76 65 64 4f 62 6a 76 20 3d 20 6f 62 6a 76 3b  avedObjv = objv;
2430: 0d 0a 20 20 20 20 20 54 63 6c 5f 52 65 67 45 78  ..     Tcl_RegEx
2440: 70 20 72 65 67 45 78 70 72 20 3d 20 4e 55 4c 4c  p regExpr = NULL
2450: 3b 0d 0a 20 20 20 20 20 73 74 61 74 69 63 20 43  ;..     static C
2460: 4f 4e 53 54 20 63 68 61 72 20 2a 6f 70 74 69 6f  ONST char *optio
2470: 6e 73 5b 5d 20 3d 20 7b 0d 0a 2d 09 22 2d 65 78  ns[] = {..-."-ex
2480: 61 63 74 22 2c 20 22 2d 67 6c 6f 62 22 2c 20 22  act", "-glob", "
2490: 2d 69 6e 64 65 78 76 61 72 22 2c 20 22 2d 6d 61  -indexvar", "-ma
24a0: 74 63 68 76 61 72 22 2c 20 22 2d 72 65 67 65 78  tchvar", "-regex
24b0: 70 22 2c 20 22 2d 2d 22 2c 20 0d 0a 2b 09 22 2d  p", "--", ..+."-
24c0: 65 78 61 63 74 22 2c 20 22 2d 67 6c 6f 62 22 2c  exact", "-glob",
24d0: 20 22 2d 69 6e 64 65 78 76 61 72 22 2c 20 22 2d   "-indexvar", "-
24e0: 6d 61 74 63 68 76 61 72 22 2c 20 22 2d 6e 6f 63  matchvar", "-noc
24f0: 61 73 65 22 2c 20 22 2d 72 65 67 65 78 70 22 2c  ase", "-regexp",
2500: 20 22 2d 2d 22 2c 20 0d 0a 20 09 4e 55 4c 4c 0d   "--", .. .NULL.
2510: 0a 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20 20 65  .     };..     e
2520: 6e 75 6d 20 6f 70 74 69 6f 6e 73 20 7b 0d 0a 2d  num options {..-
2530: 09 4f 50 54 5f 45 58 41 43 54 2c 20 4f 50 54 5f  .OPT_EXACT, OPT_
2540: 47 4c 4f 42 2c 20 4f 50 54 5f 49 4e 44 45 58 56  GLOB, OPT_INDEXV
2550: 2c 20 4f 50 54 5f 4d 41 54 43 48 56 2c 20 4f 50  , OPT_MATCHV, OP
2560: 54 5f 52 45 47 45 58 50 2c 20 4f 50 54 5f 4c 41  T_REGEXP, OPT_LA
2570: 53 54 0d 0a 2b 09 4f 50 54 5f 45 58 41 43 54 2c  ST..+.OPT_EXACT,
2580: 20 4f 50 54 5f 47 4c 4f 42 2c 20 4f 50 54 5f 49   OPT_GLOB, OPT_I
2590: 4e 44 45 58 56 2c 20 4f 50 54 5f 4d 41 54 43 48  NDEXV, OPT_MATCH
25a0: 56 2c 20 4f 50 54 5f 4e 4f 43 41 53 45 2c 20 4f  V, OPT_NOCASE, O
25b0: 50 54 5f 52 45 47 45 58 50 2c 20 4f 50 54 5f 4c  PT_REGEXP, OPT_L
25c0: 41 53 54 0d 0a 20 20 20 20 20 7d 3b 0d 0a 2b 20  AST..     };..+ 
25d0: 20 20 20 74 79 70 65 64 65 66 20 69 6e 74 20 28     typedef int (
25e0: 2a 73 74 72 43 6d 70 46 6e 5f 74 29 20 5f 41 4e  *strCmpFn_t) _AN
25f0: 53 49 5f 41 52 47 53 5f 28 28 63 6f 6e 73 74 20  SI_ARGS_((const 
2600: 63 68 61 72 20 2a 2c 20 63 6f 6e 73 74 20 63 68  char *, const ch
2610: 61 72 20 2a 29 29 3b 0d 0a 2b 20 20 20 20 73 74  ar *));..+    st
2620: 72 43 6d 70 46 6e 5f 74 20 73 74 72 43 6d 70 46  rCmpFn_t strCmpF
2630: 6e 20 3d 20 73 74 72 63 6d 70 3b 0d 0a 20 0d 0a  n = strcmp;.. ..
2640: 20 20 20 20 20 6d 6f 64 65 20 3d 20 4f 50 54 5f       mode = OPT_
2650: 45 58 41 43 54 3b 0d 0a 20 20 20 20 20 69 6e 64  EXACT;..     ind
2660: 65 78 56 61 72 4f 62 6a 20 3d 20 4e 55 4c 4c 3b  exVarObj = NULL;
2670: 0d 0a 20 20 20 20 20 6d 61 74 63 68 56 61 72 4f  ..     matchVarO
2680: 62 6a 20 3d 20 4e 55 4c 4c 3b 0d 0a 20 20 20 20  bj = NULL;..    
2690: 20 6e 75 6d 4d 61 74 63 68 65 73 53 61 76 65 64   numMatchesSaved
26a0: 20 3d 20 30 3b 0d 0a 2b 20 20 20 20 6e 6f 43 61   = 0;..+    noCa
26b0: 73 65 20 3d 20 30 3b 0d 0a 20 20 20 20 20 66 6f  se = 0;..     fo
26c0: 72 20 28 69 20 3d 20 31 3b 20 69 20 3c 20 6f 62  r (i = 1; i < ob
26d0: 6a 63 3b 20 69 2b 2b 29 20 7b 0d 0a 20 09 69 66  jc; i++) {.. .if
26e0: 20 28 54 63 6c 47 65 74 53 74 72 69 6e 67 28 6f   (TclGetString(o
26f0: 62 6a 76 5b 69 5d 29 5b 30 5d 20 21 3d 20 27 2d  bjv[i])[0] != '-
2700: 27 29 20 7b 0d 0a 20 09 20 20 20 20 62 72 65 61  ') {.. .    brea
2710: 6b 3b 0d 0a 40 40 20 2d 32 35 35 36 2c 36 20 2b  k;..@@ -2556,6 +
2720: 32 35 35 39 2c 39 20 40 40 0d 0a 20 09 20 20 20  2559,9 @@.. .   
2730: 20 7d 0d 0a 20 09 20 20 20 20 6d 61 74 63 68 56   }.. .    matchV
2740: 61 72 4f 62 6a 20 3d 20 6f 62 6a 76 5b 69 5d 3b  arObj = objv[i];
2750: 0d 0a 20 09 20 20 20 20 6e 75 6d 4d 61 74 63 68  .. .    numMatch
2760: 65 73 53 61 76 65 64 20 3d 20 2d 31 3b 0d 0a 2b  esSaved = -1;..+
2770: 09 7d 20 65 6c 73 65 20 69 66 20 28 69 6e 64 65  .} else if (inde
2780: 78 20 3d 3d 20 4f 50 54 5f 4e 4f 43 41 53 45 29  x == OPT_NOCASE)
2790: 20 7b 0d 0a 2b 09 20 20 20 20 73 74 72 43 6d 70   {..+.    strCmp
27a0: 46 6e 20 3d 20 73 74 72 63 61 73 65 63 6d 70 3b  Fn = strcasecmp;
27b0: 0d 0a 2b 09 20 20 20 20 6e 6f 43 61 73 65 20 3d  ..+.    noCase =
27c0: 20 31 3b 0d 0a 20 09 7d 20 65 6c 73 65 20 7b 0d   1;.. .} else {.
27d0: 0a 20 09 20 20 20 20 6d 6f 64 65 20 3d 20 69 6e  . .    mode = in
27e0: 64 65 78 3b 0d 0a 20 09 7d 0d 0a 40 40 20 2d 32  dex;.. .}..@@ -2
27f0: 36 39 34 2c 31 38 20 2b 32 37 30 30 2c 31 38 20  694,18 +2700,18 
2800: 40 40 0d 0a 20 09 7d 20 65 6c 73 65 20 7b 0d 0a  @@.. .} else {..
2810: 20 09 20 20 20 20 73 77 69 74 63 68 20 28 6d 6f   .    switch (mo
2820: 64 65 29 20 7b 0d 0a 20 09 20 20 20 20 63 61 73  de) {.. .    cas
2830: 65 20 4f 50 54 5f 45 58 41 43 54 3a 0d 0a 2d 09  e OPT_EXACT:..-.
2840: 09 69 66 20 28 73 74 72 63 6d 70 28 54 63 6c 47  .if (strcmp(TclG
2850: 65 74 53 74 72 69 6e 67 28 73 74 72 69 6e 67 4f  etString(stringO
2860: 62 6a 29 2c 20 70 61 74 74 65 72 6e 29 20 3d 3d  bj), pattern) ==
2870: 20 30 29 20 7b 0d 0a 2b 09 09 69 66 20 28 73 74   0) {..+..if (st
2880: 72 43 6d 70 46 6e 28 54 63 6c 47 65 74 53 74 72  rCmpFn(TclGetStr
2890: 69 6e 67 28 73 74 72 69 6e 67 4f 62 6a 29 2c 20  ing(stringObj), 
28a0: 70 61 74 74 65 72 6e 29 20 3d 3d 20 30 29 20 7b  pattern) == 0) {
28b0: 0d 0a 20 09 09 20 20 20 20 67 6f 74 6f 20 6d 61  .. ..    goto ma
28c0: 74 63 68 46 6f 75 6e 64 3b 0d 0a 20 09 09 7d 0d  tchFound;.. ..}.
28d0: 0a 20 09 09 62 72 65 61 6b 3b 0d 0a 20 09 20 20  . ..break;.. .  
28e0: 20 20 63 61 73 65 20 4f 50 54 5f 47 4c 4f 42 3a    case OPT_GLOB:
28f0: 0d 0a 2d 09 09 69 66 20 28 54 63 6c 5f 53 74 72  ..-..if (Tcl_Str
2900: 69 6e 67 4d 61 74 63 68 28 54 63 6c 47 65 74 53  ingMatch(TclGetS
2910: 74 72 69 6e 67 28 73 74 72 69 6e 67 4f 62 6a 29  tring(stringObj)
2920: 2c 20 70 61 74 74 65 72 6e 29 29 20 7b 0d 0a 2b  , pattern)) {..+
2930: 09 09 69 66 20 28 54 63 6c 5f 53 74 72 69 6e 67  ..if (Tcl_String
2940: 43 61 73 65 4d 61 74 63 68 28 54 63 6c 47 65 74  CaseMatch(TclGet
2950: 53 74 72 69 6e 67 28 73 74 72 69 6e 67 4f 62 6a  String(stringObj
2960: 29 2c 20 70 61 74 74 65 72 6e 2c 20 6e 6f 43 61  ), pattern, noCa
2970: 73 65 29 29 20 7b 0d 0a 20 09 09 20 20 20 20 67  se)) {.. ..    g
2980: 6f 74 6f 20 6d 61 74 63 68 46 6f 75 6e 64 3b 0d  oto matchFound;.
2990: 0a 20 09 09 7d 0d 0a 20 09 09 62 72 65 61 6b 3b  . ..}.. ..break;
29a0: 0d 0a 20 09 20 20 20 20 63 61 73 65 20 4f 50 54  .. .    case OPT
29b0: 5f 52 45 47 45 58 50 3a 0d 0a 20 09 09 72 65 67  _REGEXP:.. ..reg
29c0: 45 78 70 72 20 3d 20 54 63 6c 5f 47 65 74 52 65  Expr = Tcl_GetRe
29d0: 67 45 78 70 46 72 6f 6d 4f 62 6a 28 69 6e 74 65  gExpFromObj(inte
29e0: 72 70 2c 20 6f 62 6a 76 5b 69 5d 2c 0d 0a 2d 09  rp, objv[i],..-.
29f0: 09 09 54 43 4c 5f 52 45 47 5f 41 44 56 41 4e 43  ..TCL_REG_ADVANC
2a00: 45 44 29 3b 0d 0a 2b 09 09 09 54 43 4c 5f 52 45  ED);..+...TCL_RE
2a10: 47 5f 41 44 56 41 4e 43 45 44 20 7c 20 28 6e 6f  G_ADVANCED | (no
2a20: 43 61 73 65 20 3f 20 54 43 4c 5f 52 45 47 5f 4e  Case ? TCL_REG_N
2a30: 4f 43 41 53 45 20 3a 20 30 29 29 3b 0d 0a 20 09  OCASE : 0));.. .
2a40: 09 69 66 20 28 72 65 67 45 78 70 72 20 3d 3d 20  .if (regExpr == 
2a50: 4e 55 4c 4c 29 20 7b 0d 0a 20 09 09 20 20 20 20  NULL) {.. ..    
2a60: 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52  return TCL_ERROR
2a70: 3b 0d 0a 20 09 09 7d 20 65 6c 73 65 20 7b 0d 0a  ;.. ..} else {..
2a80: 49 6e 64 65 78 3a 20 74 65 73 74 73 2f 63 6d 64  Index: tests/cmd
2a90: 49 4c 2e 74 65 73 74 0d 0a 3d 3d 3d 3d 3d 3d 3d  IL.test..=======
2aa0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2ab0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2ac0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
2ad0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 52 43  ============..RC
2ae0: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74  S file: /cvsroot
2af0: 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73 2f 63  /tcl/tcl/tests/c
2b00: 6d 64 49 4c 2e 74 65 73 74 2c 76 0d 0a 72 65 74  mdIL.test,v..ret
2b10: 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e  rieving revision
2b20: 20 31 2e 32 33 0d 0a 64 69 66 66 20 2d 75 20 2d   1.23..diff -u -
2b30: 72 31 2e 32 33 20 63 6d 64 49 4c 2e 74 65 73 74  r1.23 cmdIL.test
2b40: 0d 0a 2d 2d 2d 20 74 65 73 74 73 2f 63 6d 64 49  ..--- tests/cmdI
2b50: 4c 2e 74 65 73 74 09 31 34 20 4f 63 74 20 32 30  L.test.14 Oct 20
2b60: 30 34 20 31 37 3a 32 30 3a 31 31 20 2d 30 30 30  04 17:20:11 -000
2b70: 30 09 31 2e 32 33 0d 0a 2b 2b 2b 20 74 65 73 74  0.1.23..+++ test
2b80: 73 2f 63 6d 64 49 4c 2e 74 65 73 74 09 32 20 4d  s/cmdIL.test.2 M
2b90: 61 72 20 32 30 30 35 20 30 36 3a 33 36 3a 33 35  ar 2005 06:36:35
2ba0: 20 2d 30 30 30 30 0d 0a 40 40 20 2d 32 33 2c 37   -0000..@@ -23,7
2bb0: 20 2b 32 33 2c 37 20 40 40 0d 0a 20 7d 20 7b 31   +23,7 @@.. } {1
2bc0: 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20   {wrong # args: 
2bd0: 73 68 6f 75 6c 64 20 62 65 20 22 6c 73 6f 72 74  should be "lsort
2be0: 20 3f 6f 70 74 69 6f 6e 73 3f 20 6c 69 73 74 22   ?options? list"
2bf0: 7d 7d 0d 0a 20 74 65 73 74 20 63 6d 64 49 4c 2d  }}.. test cmdIL-
2c00: 31 2e 32 20 7b 54 63 6c 5f 4c 73 6f 72 74 4f 62  1.2 {Tcl_LsortOb
2c10: 6a 43 6d 64 20 70 72 6f 63 65 64 75 72 65 7d 20  jCmd procedure} 
2c20: 7b 0d 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61  {..     list [ca
2c30: 74 63 68 20 7b 6c 73 6f 72 74 20 2d 66 6f 6f 20  tch {lsort -foo 
2c40: 7b 31 20 33 20 32 20 35 7d 7d 20 6d 73 67 5d 20  {1 3 2 5}} msg] 
2c50: 24 6d 73 67 0d 0a 2d 7d 20 7b 31 20 7b 62 61 64  $msg..-} {1 {bad
2c60: 20 6f 70 74 69 6f 6e 20 22 2d 66 6f 6f 22 3a 20   option "-foo": 
2c70: 6d 75 73 74 20 62 65 20 2d 61 73 63 69 69 2c 20  must be -ascii, 
2c80: 2d 63 6f 6d 6d 61 6e 64 2c 20 2d 64 65 63 72 65  -command, -decre
2c90: 61 73 69 6e 67 2c 20 2d 64 69 63 74 69 6f 6e 61  asing, -dictiona
2ca0: 72 79 2c 20 2d 69 6e 63 72 65 61 73 69 6e 67 2c  ry, -increasing,
2cb0: 20 2d 69 6e 64 65 78 2c 20 2d 69 6e 64 69 63 65   -index, -indice
2cc0: 73 2c 20 2d 69 6e 74 65 67 65 72 2c 20 2d 72 65  s, -integer, -re
2cd0: 61 6c 2c 20 6f 72 20 2d 75 6e 69 71 75 65 7d 7d  al, or -unique}}
2ce0: 0d 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 6f 70 74  ..+} {1 {bad opt
2cf0: 69 6f 6e 20 22 2d 66 6f 6f 22 3a 20 6d 75 73 74  ion "-foo": must
2d00: 20 62 65 20 2d 61 73 63 69 69 2c 20 2d 63 6f 6d   be -ascii, -com
2d10: 6d 61 6e 64 2c 20 2d 64 65 63 72 65 61 73 69 6e  mand, -decreasin
2d20: 67 2c 20 2d 64 69 63 74 69 6f 6e 61 72 79 2c 20  g, -dictionary, 
2d30: 2d 69 6e 63 72 65 61 73 69 6e 67 2c 20 2d 69 6e  -increasing, -in
2d40: 64 65 78 2c 20 2d 69 6e 64 69 63 65 73 2c 20 2d  dex, -indices, -
2d50: 69 6e 74 65 67 65 72 2c 20 2d 6e 6f 63 61 73 65  integer, -nocase
2d60: 2c 20 2d 72 65 61 6c 2c 20 6f 72 20 2d 75 6e 69  , -real, or -uni
2d70: 71 75 65 7d 7d 0d 0a 20 74 65 73 74 20 63 6d 64  que}}.. test cmd
2d80: 49 4c 2d 31 2e 33 20 7b 54 63 6c 5f 4c 73 6f 72  IL-1.3 {Tcl_Lsor
2d90: 74 4f 62 6a 43 6d 64 20 70 72 6f 63 65 64 75 72  tObjCmd procedur
2da0: 65 2c 20 64 65 66 61 75 6c 74 20 6f 70 74 69 6f  e, default optio
2db0: 6e 73 7d 20 7b 0d 0a 20 20 20 20 20 6c 73 6f 72  ns} {..     lsor
2dc0: 74 20 7b 64 20 65 20 63 20 62 20 61 20 5c 7b 20  t {d e c b a \{ 
2dd0: 64 33 35 20 64 33 30 30 7d 0d 0a 20 7d 20 7b 61  d35 d300}.. } {a
2de0: 20 62 20 63 20 64 20 64 33 30 30 20 64 33 35 20   b c d d300 d35 
2df0: 65 20 5c 7b 7d 0d 0a 40 40 20 2d 33 38 33 2c 36  e \{}..@@ -383,6
2e00: 20 2b 33 38 33 2c 31 32 20 40 40 0d 0a 20 74 65   +383,12 @@.. te
2e10: 73 74 20 63 6d 64 49 4c 2d 34 2e 33 33 20 7b 44  st cmdIL-4.33 {D
2e20: 69 63 74 69 6f 6e 61 72 79 43 6f 6d 70 61 72 65  ictionaryCompare
2e30: 20 70 72 6f 63 65 64 75 72 65 2c 20 63 68 61 72   procedure, char
2e40: 73 20 62 65 74 77 65 65 6e 20 5a 20 61 6e 64 20  s between Z and 
2e50: 61 20 69 6e 20 41 53 43 49 49 7d 20 7b 0d 0a 20  a in ASCII} {.. 
2e60: 20 20 20 20 6c 73 6f 72 74 20 2d 64 69 63 74 69      lsort -dicti
2e70: 6f 6e 61 72 79 20 5b 6c 69 73 74 20 41 41 20 21  onary [list AA !
2e80: 20 63 20 43 43 20 60 5d 0d 0a 20 7d 20 5b 6c 69   c CC `].. } [li
2e90: 73 74 20 21 20 60 20 41 41 20 63 20 43 43 5d 0d  st ! ` AA c CC].
2ea0: 0a 2b 74 65 73 74 20 63 6d 64 49 4c 2d 34 2e 33  .+test cmdIL-4.3
2eb0: 34 20 7b 53 6f 72 74 43 6f 6d 70 61 72 65 20 70  4 {SortCompare p
2ec0: 72 6f 63 65 64 75 72 65 2c 20 2d 61 73 63 69 69  rocedure, -ascii
2ed0: 20 6f 70 74 69 6f 6e 20 77 69 74 68 20 2d 6e 6f   option with -no
2ee0: 63 61 73 65 20 6f 70 74 69 6f 6e 7d 20 7b 0d 0a  case option} {..
2ef0: 2b 20 20 20 20 6c 73 6f 72 74 20 2d 61 73 63 69  +    lsort -asci
2f00: 69 20 2d 6e 6f 63 61 73 65 20 7b 64 20 65 20 63  i -nocase {d e c
2f10: 20 62 20 61 20 64 33 35 20 64 33 30 30 20 31 30   b a d35 d300 10
2f20: 30 20 32 30 7d 0d 0a 2b 7d 20 7b 31 30 30 20 32  0 20}..+} {100 2
2f30: 30 20 61 20 62 20 63 20 64 20 64 33 30 30 20 64  0 a b c d d300 d
2f40: 33 35 20 65 7d 0d 0a 2b 74 65 73 74 20 63 6d 64  35 e}..+test cmd
2f50: 49 4c 2d 34 2e 33 35 20 7b 53 6f 72 74 43 6f 6d  IL-4.35 {SortCom
2f60: 70 61 72 65 20 70 72 6f 63 65 64 75 72 65 2c 20  pare procedure, 
2f70: 2d 61 73 63 69 69 20 6f 70 74 69 6f 6e 20 77 69  -ascii option wi
2f80: 74 68 20 2d 6e 6f 63 61 73 65 20 6f 70 74 69 6f  th -nocase optio
2f90: 6e 7d 20 7b 0d 0a 2b 20 20 20 20 6c 73 6f 72 74  n} {..+    lsort
2fa0: 20 2d 61 73 63 69 69 20 2d 6e 6f 63 61 73 65 20   -ascii -nocase 
2fb0: 7b 64 20 45 20 63 20 42 20 61 20 44 33 35 20 64  {d E c B a D35 d
2fc0: 33 30 30 20 31 30 30 20 32 30 7d 0d 0a 2b 7d 20  300 100 20}..+} 
2fd0: 7b 31 30 30 20 32 30 20 61 20 42 20 63 20 64 20  {100 20 a B c d 
2fe0: 64 33 30 30 20 44 33 35 20 45 7d 0d 0a 20 0d 0a  d300 D35 E}.. ..
2ff0: 20 74 65 73 74 20 63 6d 64 49 4c 2d 35 2e 31 20   test cmdIL-5.1 
3000: 7b 6c 73 6f 72 74 20 77 69 74 68 20 6c 69 73 74  {lsort with list
3010: 20 73 74 79 6c 65 20 69 6e 64 65 78 7d 20 7b 0d   style index} {.
3020: 0a 20 20 20 20 20 6c 73 6f 72 74 20 2d 61 73 63  .     lsort -asc
3030: 69 69 20 2d 64 65 63 72 65 61 73 69 6e 67 20 2d  ii -decreasing -
3040: 69 6e 64 65 78 20 7b 30 20 31 7d 20 7b 0d 0a 49  index {0 1} {..I
3050: 6e 64 65 78 3a 20 74 65 73 74 73 2f 6c 73 65 61  ndex: tests/lsea
3060: 72 63 68 2e 74 65 73 74 0d 0a 3d 3d 3d 3d 3d 3d  rch.test..======
3070: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3080: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3090: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
30a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 52  =============..R
30b0: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f  CS file: /cvsroo
30c0: 74 2f 74 63 6c 2f 74 63 6c 2f 74 65 73 74 73 2f  t/tcl/tcl/tests/
30d0: 6c 73 65 61 72 63 68 2e 74 65 73 74 2c 76 0d 0a  lsearch.test,v..
30e0: 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73  retrieving revis
30f0: 69 6f 6e 20 31 2e 31 33 0d 0a 64 69 66 66 20 2d  ion 1.13..diff -
3100: 75 20 2d 72 31 2e 31 33 20 6c 73 65 61 72 63 68  u -r1.13 lsearch
3110: 2e 74 65 73 74 0d 0a 2d 2d 2d 20 74 65 73 74 73  .test..--- tests
3120: 2f 6c 73 65 61 72 63 68 2e 74 65 73 74 09 31 35  /lsearch.test.15
3130: 20 4f 63 74 20 32 30 30 33 20 31 33 3a 31 35 3a   Oct 2003 13:15:
3140: 34 35 20 2d 30 30 30 30 09 31 2e 31 33 0d 0a 2b  45 -0000.1.13..+
3150: 2b 2b 20 74 65 73 74 73 2f 6c 73 65 61 72 63 68  ++ tests/lsearch
3160: 2e 74 65 73 74 09 32 20 4d 61 72 20 32 30 30 35  .test.2 Mar 2005
3170: 20 30 36 3a 33 36 3a 33 37 20 2d 30 30 30 30 0d   06:36:37 -0000.
3180: 0a 40 40 20 2d 36 31 2c 37 20 2b 36 31 2c 32 35  .@@ -61,7 +61,25
3190: 20 40 40 0d 0a 20 7d 20 31 0d 0a 20 74 65 73 74   @@.. } 1.. test
31a0: 20 6c 73 65 61 72 63 68 2d 32 2e 31 30 20 7b 73   lsearch-2.10 {s
31b0: 65 61 72 63 68 20 6d 6f 64 65 73 7d 20 7b 0d 0a  earch modes} {..
31c0: 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68       list [catch
31d0: 20 7b 6c 73 65 61 72 63 68 20 2d 67 6c 69 62 20   {lsearch -glib 
31e0: 7b 62 2e 78 20 62 78 20 78 79 20 62 63 78 7d 20  {b.x bx xy bcx} 
31f0: 62 2e 78 7d 20 6d 73 67 5d 20 24 6d 73 67 0d 0a  b.x} msg] $msg..
3200: 2d 7d 20 7b 31 20 7b 62 61 64 20 6f 70 74 69 6f  -} {1 {bad optio
3210: 6e 20 22 2d 67 6c 69 62 22 3a 20 6d 75 73 74 20  n "-glib": must 
3220: 62 65 20 2d 61 6c 6c 2c 20 2d 61 73 63 69 69 2c  be -all, -ascii,
3230: 20 2d 64 65 63 72 65 61 73 69 6e 67 2c 20 2d 64   -decreasing, -d
3240: 69 63 74 69 6f 6e 61 72 79 2c 20 2d 65 78 61 63  ictionary, -exac
3250: 74 2c 20 2d 67 6c 6f 62 2c 20 2d 69 6e 63 72 65  t, -glob, -incre
3260: 61 73 69 6e 67 2c 20 2d 69 6e 64 65 78 2c 20 2d  asing, -index, -
3270: 69 6e 6c 69 6e 65 2c 20 2d 69 6e 74 65 67 65 72  inline, -integer
3280: 2c 20 2d 6e 6f 74 2c 20 2d 72 65 61 6c 2c 20 2d  , -not, -real, -
3290: 72 65 67 65 78 70 2c 20 2d 73 6f 72 74 65 64 2c  regexp, -sorted,
32a0: 20 2d 73 74 61 72 74 2c 20 6f 72 20 2d 73 75 62   -start, or -sub
32b0: 69 6e 64 69 63 65 73 7d 7d 0d 0a 2b 7d 20 7b 31  indices}}..+} {1
32c0: 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 2d 67   {bad option "-g
32d0: 6c 69 62 22 3a 20 6d 75 73 74 20 62 65 20 2d 61  lib": must be -a
32e0: 6c 6c 2c 20 2d 61 73 63 69 69 2c 20 2d 64 65 63  ll, -ascii, -dec
32f0: 72 65 61 73 69 6e 67 2c 20 2d 64 69 63 74 69 6f  reasing, -dictio
3300: 6e 61 72 79 2c 20 2d 65 78 61 63 74 2c 20 2d 67  nary, -exact, -g
3310: 6c 6f 62 2c 20 2d 69 6e 63 72 65 61 73 69 6e 67  lob, -increasing
3320: 2c 20 2d 69 6e 64 65 78 2c 20 2d 69 6e 6c 69 6e  , -index, -inlin
3330: 65 2c 20 2d 69 6e 74 65 67 65 72 2c 20 2d 6e 6f  e, -integer, -no
3340: 63 61 73 65 2c 20 2d 6e 6f 74 2c 20 2d 72 65 61  case, -not, -rea
3350: 6c 2c 20 2d 72 65 67 65 78 70 2c 20 2d 73 6f 72  l, -regexp, -sor
3360: 74 65 64 2c 20 2d 73 74 61 72 74 2c 20 6f 72 20  ted, -start, or 
3370: 2d 73 75 62 69 6e 64 69 63 65 73 7d 7d 0d 0a 2b  -subindices}}..+
3380: 74 65 73 74 20 6c 73 65 61 72 63 68 2d 32 2e 31  test lsearch-2.1
3390: 31 20 7b 73 65 61 72 63 68 20 6d 6f 64 65 73 20  1 {search modes 
33a0: 77 69 74 68 20 2d 6e 6f 63 61 73 65 7d 20 7b 0d  with -nocase} {.
33b0: 0a 2b 20 20 20 20 6c 73 65 61 72 63 68 20 2d 65  .+    lsearch -e
33c0: 78 61 63 74 20 2d 6e 6f 63 61 73 65 20 7b 61 20  xact -nocase {a 
33d0: 62 20 63 20 41 20 42 20 43 7d 20 41 0d 0a 2b 7d  b c A B C} A..+}
33e0: 20 30 0d 0a 2b 74 65 73 74 20 6c 73 65 61 72 63   0..+test lsearc
33f0: 68 2d 32 2e 31 32 20 7b 73 65 61 72 63 68 20 6d  h-2.12 {search m
3400: 6f 64 65 73 20 77 69 74 68 20 2d 6e 6f 63 61 73  odes with -nocas
3410: 65 7d 20 7b 0d 0a 2b 20 20 20 20 6c 73 65 61 72  e} {..+    lsear
3420: 63 68 20 2d 67 6c 6f 62 20 2d 6e 6f 63 61 73 65  ch -glob -nocase
3430: 20 7b 61 20 62 20 63 20 41 20 42 20 43 7d 20 41   {a b c A B C} A
3440: 2a 0d 0a 2b 7d 20 30 0d 0a 2b 74 65 73 74 20 6c  *..+} 0..+test l
3450: 73 65 61 72 63 68 2d 32 2e 31 33 20 7b 73 65 61  search-2.13 {sea
3460: 72 63 68 20 6d 6f 64 65 73 20 77 69 74 68 20 2d  rch modes with -
3470: 6e 6f 63 61 73 65 7d 20 7b 0d 0a 2b 20 20 20 20  nocase} {..+    
3480: 6c 73 65 61 72 63 68 20 2d 72 65 67 65 78 70 20  lsearch -regexp 
3490: 2d 6e 6f 63 61 73 65 20 7b 61 20 62 20 63 20 41  -nocase {a b c A
34a0: 20 42 20 43 7d 20 5e 41 5c 24 0d 0a 2b 7d 20 30   B C} ^A\$..+} 0
34b0: 0d 0a 2b 74 65 73 74 20 6c 73 65 61 72 63 68 2d  ..+test lsearch-
34c0: 32 2e 31 34 20 7b 73 65 61 72 63 68 20 6d 6f 64  2.14 {search mod
34d0: 65 73 20 77 69 74 68 6f 75 74 20 2d 6e 6f 63 61  es without -noca
34e0: 73 65 7d 20 7b 0d 0a 2b 20 20 20 20 6c 73 65 61  se} {..+    lsea
34f0: 72 63 68 20 2d 65 78 61 63 74 20 7b 61 20 62 20  rch -exact {a b 
3500: 63 20 41 20 42 20 43 7d 20 41 0d 0a 2b 7d 20 33  c A B C} A..+} 3
3510: 0d 0a 2b 74 65 73 74 20 6c 73 65 61 72 63 68 2d  ..+test lsearch-
3520: 32 2e 31 35 20 7b 73 65 61 72 63 68 20 6d 6f 64  2.15 {search mod
3530: 65 73 20 77 69 74 68 6f 75 74 20 2d 6e 6f 63 61  es without -noca
3540: 73 65 7d 20 7b 0d 0a 2b 20 20 20 20 6c 73 65 61  se} {..+    lsea
3550: 72 63 68 20 2d 67 6c 6f 62 20 7b 61 20 62 20 63  rch -glob {a b c
3560: 20 41 20 42 20 43 7d 20 41 2a 0d 0a 2b 7d 20 33   A B C} A*..+} 3
3570: 0d 0a 2b 74 65 73 74 20 6c 73 65 61 72 63 68 2d  ..+test lsearch-
3580: 32 2e 31 36 20 7b 73 65 61 72 63 68 20 6d 6f 64  2.16 {search mod
3590: 65 73 20 77 69 74 68 6f 75 74 20 2d 6e 6f 63 61  es without -noca
35a0: 73 65 7d 20 7b 0d 0a 2b 20 20 20 20 6c 73 65 61  se} {..+    lsea
35b0: 72 63 68 20 2d 72 65 67 65 78 70 20 7b 61 20 62  rch -regexp {a b
35c0: 20 63 20 41 20 42 20 43 7d 20 5e 41 5c 24 0d 0a   c A B C} ^A\$..
35d0: 2b 7d 20 33 0d 0a 20 0d 0a 20 74 65 73 74 20 6c  +} 3.. .. test l
35e0: 73 65 61 72 63 68 2d 33 2e 31 20 7b 6c 73 65 61  search-3.1 {lsea
35f0: 72 63 68 20 65 72 72 6f 72 73 7d 20 7b 0d 0a 20  rch errors} {.. 
3600: 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20      list [catch 
3610: 6c 73 65 61 72 63 68 20 6d 73 67 5d 20 24 6d 73  lsearch msg] $ms
3620: 67 0d 0a 40 40 20 2d 37 31 2c 31 30 20 2b 38 39  g..@@ -71,10 +89
3630: 2c 31 30 20 40 40 0d 0a 20 7d 20 7b 31 20 7b 77  ,10 @@.. } {1 {w
3640: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f  rong # args: sho
3650: 75 6c 64 20 62 65 20 22 6c 73 65 61 72 63 68 20  uld be "lsearch 
3660: 3f 6f 70 74 69 6f 6e 73 3f 20 6c 69 73 74 20 70  ?options? list p
3670: 61 74 74 65 72 6e 22 7d 7d 0d 0a 20 74 65 73 74  attern"}}.. test
3680: 20 6c 73 65 61 72 63 68 2d 33 2e 33 20 7b 6c 73   lsearch-3.3 {ls
3690: 65 61 72 63 68 20 65 72 72 6f 72 73 7d 20 7b 0d  earch errors} {.
36a0: 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63  .     list [catc
36b0: 68 20 7b 6c 73 65 61 72 63 68 20 61 20 62 20 63  h {lsearch a b c
36c0: 7d 20 6d 73 67 5d 20 24 6d 73 67 0d 0a 2d 7d 20  } msg] $msg..-} 
36d0: 7b 31 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22  {1 {bad option "
36e0: 61 22 3a 20 6d 75 73 74 20 62 65 20 2d 61 6c 6c  a": must be -all
36f0: 2c 20 2d 61 73 63 69 69 2c 20 2d 64 65 63 72 65  , -ascii, -decre
3700: 61 73 69 6e 67 2c 20 2d 64 69 63 74 69 6f 6e 61  asing, -dictiona
3710: 72 79 2c 20 2d 65 78 61 63 74 2c 20 2d 67 6c 6f  ry, -exact, -glo
3720: 62 2c 20 2d 69 6e 63 72 65 61 73 69 6e 67 2c 20  b, -increasing, 
3730: 2d 69 6e 64 65 78 2c 20 2d 69 6e 6c 69 6e 65 2c  -index, -inline,
3740: 20 2d 69 6e 74 65 67 65 72 2c 20 2d 6e 6f 74 2c   -integer, -not,
3750: 20 2d 72 65 61 6c 2c 20 2d 72 65 67 65 78 70 2c   -real, -regexp,
3760: 20 2d 73 6f 72 74 65 64 2c 20 2d 73 74 61 72 74   -sorted, -start
3770: 2c 20 6f 72 20 2d 73 75 62 69 6e 64 69 63 65 73  , or -subindices
3780: 7d 7d 0d 0a 2b 7d 20 7b 31 20 7b 62 61 64 20 6f  }}..+} {1 {bad o
3790: 70 74 69 6f 6e 20 22 61 22 3a 20 6d 75 73 74 20  ption "a": must 
37a0: 62 65 20 2d 61 6c 6c 2c 20 2d 61 73 63 69 69 2c  be -all, -ascii,
37b0: 20 2d 64 65 63 72 65 61 73 69 6e 67 2c 20 2d 64   -decreasing, -d
37c0: 69 63 74 69 6f 6e 61 72 79 2c 20 2d 65 78 61 63  ictionary, -exac
37d0: 74 2c 20 2d 67 6c 6f 62 2c 20 2d 69 6e 63 72 65  t, -glob, -incre
37e0: 61 73 69 6e 67 2c 20 2d 69 6e 64 65 78 2c 20 2d  asing, -index, -
37f0: 69 6e 6c 69 6e 65 2c 20 2d 69 6e 74 65 67 65 72  inline, -integer
3800: 2c 20 2d 6e 6f 63 61 73 65 2c 20 2d 6e 6f 74 2c  , -nocase, -not,
3810: 20 2d 72 65 61 6c 2c 20 2d 72 65 67 65 78 70 2c   -real, -regexp,
3820: 20 2d 73 6f 72 74 65 64 2c 20 2d 73 74 61 72 74   -sorted, -start
3830: 2c 20 6f 72 20 2d 73 75 62 69 6e 64 69 63 65 73  , or -subindices
3840: 7d 7d 0d 0a 20 74 65 73 74 20 6c 73 65 61 72 63  }}.. test lsearc
3850: 68 2d 33 2e 34 20 7b 6c 73 65 61 72 63 68 20 65  h-3.4 {lsearch e
3860: 72 72 6f 72 73 7d 20 7b 0d 0a 20 20 20 20 20 6c  rrors} {..     l
3870: 69 73 74 20 5b 63 61 74 63 68 20 7b 6c 73 65 61  ist [catch {lsea
3880: 72 63 68 20 61 20 62 20 63 20 64 7d 20 6d 73 67  rch a b c d} msg
3890: 5d 20 24 6d 73 67 0d 0a 2d 7d 20 7b 31 20 7b 62  ] $msg..-} {1 {b
38a0: 61 64 20 6f 70 74 69 6f 6e 20 22 61 22 3a 20 6d  ad option "a": m
38b0: 75 73 74 20 62 65 20 2d 61 6c 6c 2c 20 2d 61 73  ust be -all, -as
38c0: 63 69 69 2c 20 2d 64 65 63 72 65 61 73 69 6e 67  cii, -decreasing
38d0: 2c 20 2d 64 69 63 74 69 6f 6e 61 72 79 2c 20 2d  , -dictionary, -
38e0: 65 78 61 63 74 2c 20 2d 67 6c 6f 62 2c 20 2d 69  exact, -glob, -i
38f0: 6e 63 72 65 61 73 69 6e 67 2c 20 2d 69 6e 64 65  ncreasing, -inde
3900: 78 2c 20 2d 69 6e 6c 69 6e 65 2c 20 2d 69 6e 74  x, -inline, -int
3910: 65 67 65 72 2c 20 2d 6e 6f 74 2c 20 2d 72 65 61  eger, -not, -rea
3920: 6c 2c 20 2d 72 65 67 65 78 70 2c 20 2d 73 6f 72  l, -regexp, -sor
3930: 74 65 64 2c 20 2d 73 74 61 72 74 2c 20 6f 72 20  ted, -start, or 
3940: 2d 73 75 62 69 6e 64 69 63 65 73 7d 7d 0d 0a 2b  -subindices}}..+
3950: 7d 20 7b 31 20 7b 62 61 64 20 6f 70 74 69 6f 6e  } {1 {bad option
3960: 20 22 61 22 3a 20 6d 75 73 74 20 62 65 20 2d 61   "a": must be -a
3970: 6c 6c 2c 20 2d 61 73 63 69 69 2c 20 2d 64 65 63  ll, -ascii, -dec
3980: 72 65 61 73 69 6e 67 2c 20 2d 64 69 63 74 69 6f  reasing, -dictio
3990: 6e 61 72 79 2c 20 2d 65 78 61 63 74 2c 20 2d 67  nary, -exact, -g
39a0: 6c 6f 62 2c 20 2d 69 6e 63 72 65 61 73 69 6e 67  lob, -increasing
39b0: 2c 20 2d 69 6e 64 65 78 2c 20 2d 69 6e 6c 69 6e  , -index, -inlin
39c0: 65 2c 20 2d 69 6e 74 65 67 65 72 2c 20 2d 6e 6f  e, -integer, -no
39d0: 63 61 73 65 2c 20 2d 6e 6f 74 2c 20 2d 72 65 61  case, -not, -rea
39e0: 6c 2c 20 2d 72 65 67 65 78 70 2c 20 2d 73 6f 72  l, -regexp, -sor
39f0: 74 65 64 2c 20 2d 73 74 61 72 74 2c 20 6f 72 20  ted, -start, or 
3a00: 2d 73 75 62 69 6e 64 69 63 65 73 7d 7d 0d 0a 20  -subindices}}.. 
3a10: 74 65 73 74 20 6c 73 65 61 72 63 68 2d 33 2e 35  test lsearch-3.5
3a20: 20 7b 6c 73 65 61 72 63 68 20 65 72 72 6f 72 73   {lsearch errors
3a30: 7d 20 7b 0d 0a 20 20 20 20 20 6c 69 73 74 20 5b  } {..     list [
3a40: 63 61 74 63 68 20 7b 6c 73 65 61 72 63 68 20 22  catch {lsearch "
3a50: 5c 7b 22 20 62 7d 20 6d 73 67 5d 20 24 6d 73 67  \{" b} msg] $msg
3a60: 0d 0a 20 7d 20 7b 31 20 7b 75 6e 6d 61 74 63 68  .. } {1 {unmatch
3a70: 65 64 20 6f 70 65 6e 20 62 72 61 63 65 20 69 6e  ed open brace in
3a80: 20 6c 69 73 74 7d 7d 0d 0a 40 40 20 2d 33 32 30   list}}..@@ -320
3a90: 2c 36 20 2b 33 33 38 2c 31 35 20 40 40 0d 0a 20  ,6 +338,15 @@.. 
3aa0: 74 65 73 74 20 6c 73 65 61 72 63 68 2d 31 33 2e  test lsearch-13.
3ab0: 32 20 7b 73 65 61 72 63 68 20 66 6f 72 20 61 6c  2 {search for al
3ac0: 6c 20 6d 61 74 63 68 65 73 7d 20 7b 0d 0a 20 20  l matches} {..  
3ad0: 20 20 20 6c 73 65 61 72 63 68 20 2d 61 6c 6c 20     lsearch -all 
3ae0: 7b 61 20 62 20 61 20 63 20 61 20 64 7d 20 61 0d  {a b a c a d} a.
3af0: 0a 20 7d 20 7b 30 20 32 20 34 7d 0d 0a 2b 74 65  . } {0 2 4}..+te
3b00: 73 74 20 6c 73 65 61 72 63 68 2d 31 33 2e 33 20  st lsearch-13.3 
3b10: 7b 73 65 61 72 63 68 20 66 6f 72 20 61 6c 6c 20  {search for all 
3b20: 6d 61 74 63 68 65 73 20 77 69 74 68 20 2d 6e 6f  matches with -no
3b30: 63 61 73 65 7d 20 7b 0d 0a 2b 20 20 20 20 6c 73  case} {..+    ls
3b40: 65 61 72 63 68 20 2d 61 6c 6c 20 2d 65 78 61 63  earch -all -exac
3b50: 74 20 2d 6e 6f 63 61 73 65 20 7b 61 20 62 20 63  t -nocase {a b c
3b60: 20 41 20 42 20 43 7d 20 41 0d 0a 2b 7d 20 7b 30   A B C} A..+} {0
3b70: 20 33 7d 0d 0a 2b 74 65 73 74 20 6c 73 65 61 72   3}..+test lsear
3b80: 63 68 2d 31 33 2e 34 20 7b 73 65 61 72 63 68 20  ch-13.4 {search 
3b90: 66 6f 72 20 61 6c 6c 20 6d 61 74 63 68 65 73 20  for all matches 
3ba0: 77 69 74 68 20 2d 6e 6f 63 61 73 65 7d 20 7b 0d  with -nocase} {.
3bb0: 0a 2b 20 20 20 20 6c 73 65 61 72 63 68 20 2d 61  .+    lsearch -a
3bc0: 6c 6c 20 2d 67 6c 6f 62 20 2d 6e 6f 63 61 73 65  ll -glob -nocase
3bd0: 20 7b 61 20 62 20 63 20 41 20 42 20 43 7d 20 41   {a b c A B C} A
3be0: 2a 0d 0a 2b 7d 20 7b 30 20 33 7d 0d 0a 2b 74 65  *..+} {0 3}..+te
3bf0: 73 74 20 6c 73 65 61 72 63 68 2d 31 33 2e 35 20  st lsearch-13.5 
3c00: 7b 73 65 61 72 63 68 20 66 6f 72 20 61 6c 6c 20  {search for all 
3c10: 6d 61 74 63 68 65 73 20 77 69 74 68 20 2d 6e 6f  matches with -no
3c20: 63 61 73 65 7d 20 7b 0d 0a 2b 20 20 20 20 6c 73  case} {..+    ls
3c30: 65 61 72 63 68 20 2d 61 6c 6c 20 2d 72 65 67 65  earch -all -rege
3c40: 78 70 20 2d 6e 6f 63 61 73 65 20 7b 61 20 62 20  xp -nocase {a b 
3c50: 63 20 41 20 42 20 43 7d 20 5e 41 5c 24 0d 0a 2b  c A B C} ^A\$..+
3c60: 7d 20 7b 30 20 33 7d 0d 0a 20 0d 0a 20 74 65 73  } {0 3}.. .. tes
3c70: 74 20 6c 73 65 61 72 63 68 2d 31 34 2e 31 20 7b  t lsearch-14.1 {
3c80: 63 6f 6d 62 69 6e 61 74 69 6f 6e 73 3a 20 2d 61  combinations: -a
3c90: 6c 6c 20 61 6e 64 20 2d 69 6e 6c 69 6e 65 7d 20  ll and -inline} 
3ca0: 7b 0d 0a 20 20 20 20 20 6c 73 65 61 72 63 68 20  {..     lsearch 
3cb0: 2d 61 6c 6c 20 2d 69 6e 6c 69 6e 65 20 2d 67 6c  -all -inline -gl
3cc0: 6f 62 20 7b 61 31 20 62 32 20 61 33 20 63 34 20  ob {a1 b2 a3 c4 
3cd0: 61 35 20 64 36 7d 20 61 2a 0d 0a 49 6e 64 65 78  a5 d6} a*..Index
3ce0: 3a 20 74 65 73 74 73 2f 73 77 69 74 63 68 2e 74  : tests/switch.t
3cf0: 65 73 74 0d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  est..===========
3d00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3d10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3d20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3d30: 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 52 43 53 20 66 69  ========..RCS fi
3d40: 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63 6c  le: /cvsroot/tcl
3d50: 2f 74 63 6c 2f 74 65 73 74 73 2f 73 77 69 74 63  /tcl/tests/switc
3d60: 68 2e 74 65 73 74 2c 76 0d 0a 72 65 74 72 69 65  h.test,v..retrie
3d70: 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e  ving revision 1.
3d80: 31 30 0d 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e  10..diff -u -r1.
3d90: 31 30 20 73 77 69 74 63 68 2e 74 65 73 74 0d 0a  10 switch.test..
3da0: 2d 2d 2d 20 74 65 73 74 73 2f 73 77 69 74 63 68  --- tests/switch
3db0: 2e 74 65 73 74 09 31 34 20 44 65 63 20 32 30 30  .test.14 Dec 200
3dc0: 33 20 31 38 3a 33 32 3a 33 36 20 2d 30 30 30 30  3 18:32:36 -0000
3dd0: 09 31 2e 31 30 0d 0a 2b 2b 2b 20 74 65 73 74 73  .1.10..+++ tests
3de0: 2f 73 77 69 74 63 68 2e 74 65 73 74 09 32 20 4d  /switch.test.2 M
3df0: 61 72 20 32 30 30 35 20 30 36 3a 33 36 3a 33 39  ar 2005 06:36:39
3e00: 20 2d 30 30 30 30 0d 0a 40 40 20 2d 33 39 2c 36   -0000..@@ -39,6
3e10: 20 2b 33 39 2c 31 38 20 40 40 0d 0a 20 74 65 73   +39,18 @@.. tes
3e20: 74 20 73 77 69 74 63 68 2d 31 2e 37 20 7b 73 69  t switch-1.7 {si
3e30: 6d 70 6c 65 20 70 61 74 74 65 72 6e 73 7d 20 7b  mple patterns} {
3e40: 0d 0a 20 20 20 20 20 73 77 69 74 63 68 20 78 20  ..     switch x 
3e50: 61 20 7b 66 6f 72 6d 61 74 20 31 7d 20 64 65 66  a {format 1} def
3e60: 61 75 6c 74 20 7b 66 6f 72 6d 61 74 20 32 7d 20  ault {format 2} 
3e70: 63 20 7b 66 6f 72 6d 61 74 20 33 7d 20 64 65 66  c {format 3} def
3e80: 61 75 6c 74 20 7b 66 6f 72 6d 61 74 20 34 7d 0d  ault {format 4}.
3e90: 0a 20 7d 20 34 0d 0a 2b 74 65 73 74 20 73 77 69  . } 4..+test swi
3ea0: 74 63 68 2d 31 2e 38 20 7b 73 69 6d 70 6c 65 20  tch-1.8 {simple 
3eb0: 70 61 74 74 65 72 6e 73 20 77 69 74 68 20 2d 6e  patterns with -n
3ec0: 6f 63 61 73 65 7d 20 7b 0d 0a 2b 20 20 20 20 73  ocase} {..+    s
3ed0: 77 69 74 63 68 20 2d 6e 6f 63 61 73 65 20 62 20  witch -nocase b 
3ee0: 61 20 7b 66 6f 72 6d 61 74 20 31 7d 20 62 20 7b  a {format 1} b {
3ef0: 66 6f 72 6d 61 74 20 32 7d 20 63 20 7b 66 6f 72  format 2} c {for
3f00: 6d 61 74 20 33 7d 20 64 65 66 61 75 6c 74 20 7b  mat 3} default {
3f10: 66 6f 72 6d 61 74 20 34 7d 0d 0a 2b 7d 20 32 0d  format 4}..+} 2.
3f20: 0a 2b 74 65 73 74 20 73 77 69 74 63 68 2d 31 2e  .+test switch-1.
3f30: 39 20 7b 73 69 6d 70 6c 65 20 70 61 74 74 65 72  9 {simple patter
3f40: 6e 73 20 77 69 74 68 20 2d 6e 6f 63 61 73 65 7d  ns with -nocase}
3f50: 20 7b 0d 0a 2b 20 20 20 20 73 77 69 74 63 68 20   {..+    switch 
3f60: 2d 6e 6f 63 61 73 65 20 42 20 61 20 7b 66 6f 72  -nocase B a {for
3f70: 6d 61 74 20 31 7d 20 62 20 7b 66 6f 72 6d 61 74  mat 1} b {format
3f80: 20 32 7d 20 63 20 7b 66 6f 72 6d 61 74 20 33 7d   2} c {format 3}
3f90: 20 64 65 66 61 75 6c 74 20 7b 66 6f 72 6d 61 74   default {format
3fa0: 20 34 7d 0d 0a 2b 7d 20 32 0d 0a 2b 74 65 73 74   4}..+} 2..+test
3fb0: 20 73 77 69 74 63 68 2d 31 2e 31 30 20 7b 73 69   switch-1.10 {si
3fc0: 6d 70 6c 65 20 70 61 74 74 65 72 6e 73 20 77 69  mple patterns wi
3fd0: 74 68 20 2d 6e 6f 63 61 73 65 7d 20 7b 0d 0a 2b  th -nocase} {..+
3fe0: 20 20 20 20 73 77 69 74 63 68 20 2d 6e 6f 63 61      switch -noca
3ff0: 73 65 20 62 20 61 20 7b 66 6f 72 6d 61 74 20 31  se b a {format 1
4000: 7d 20 42 20 7b 66 6f 72 6d 61 74 20 32 7d 20 63  } B {format 2} c
4010: 20 7b 66 6f 72 6d 61 74 20 33 7d 20 64 65 66 61   {format 3} defa
4020: 75 6c 74 20 7b 66 6f 72 6d 61 74 20 34 7d 0d 0a  ult {format 4}..
4030: 2b 7d 20 32 0d 0a 2b 74 65 73 74 20 73 77 69 74  +} 2..+test swit
4040: 63 68 2d 31 2e 31 31 20 7b 73 69 6d 70 6c 65 20  ch-1.11 {simple 
4050: 70 61 74 74 65 72 6e 73 20 77 69 74 68 20 2d 6e  patterns with -n
4060: 6f 63 61 73 65 7d 20 7b 0d 0a 2b 20 20 20 20 73  ocase} {..+    s
4070: 77 69 74 63 68 20 2d 6e 6f 63 61 73 65 20 78 20  witch -nocase x 
4080: 61 20 7b 66 6f 72 6d 61 74 20 31 7d 20 64 65 66  a {format 1} def
4090: 61 75 6c 74 20 7b 66 6f 72 6d 61 74 20 32 7d 20  ault {format 2} 
40a0: 63 20 7b 66 6f 72 6d 61 74 20 33 7d 20 64 65 66  c {format 3} def
40b0: 61 75 6c 74 20 7b 66 6f 72 6d 61 74 20 34 7d 0d  ault {format 4}.
40c0: 0a 2b 7d 20 34 0d 0a 20 0d 0a 20 74 65 73 74 20  .+} 4.. .. test 
40d0: 73 77 69 74 63 68 2d 32 2e 31 20 7b 73 69 6e 67  switch-2.1 {sing
40e0: 6c 65 2d 61 72 67 75 6d 65 6e 74 20 66 6f 72 6d  le-argument form
40f0: 20 66 6f 72 20 70 61 74 74 65 72 6e 2f 63 6f 6d   for pattern/com
4100: 6d 61 6e 64 20 70 61 69 72 73 7d 20 7b 0d 0a 20  mand pairs} {.. 
4110: 20 20 20 20 73 77 69 74 63 68 20 62 20 7b 0d 0a      switch b {..
4120: 40 40 20 2d 38 39 2c 37 20 2b 31 30 31 2c 34 33  @@ -89,7 +101,43
4130: 20 40 40 0d 0a 20 7d 20 65 78 61 63 74 0d 0a 20   @@.. } exact.. 
4140: 74 65 73 74 20 73 77 69 74 63 68 2d 33 2e 36 20  test switch-3.6 
4150: 7b 2d 65 78 61 63 74 20 76 73 2e 20 2d 67 6c 6f  {-exact vs. -glo
4160: 62 20 76 73 2e 20 2d 72 65 67 65 78 70 7d 20 7b  b vs. -regexp} {
4170: 0d 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74  ..     list [cat
4180: 63 68 20 7b 73 77 69 74 63 68 20 2d 66 6f 6f 20  ch {switch -foo 
4190: 61 20 62 20 63 7d 20 6d 73 67 5d 20 24 6d 73 67  a b c} msg] $msg
41a0: 0d 0a 2d 7d 20 7b 31 20 7b 62 61 64 20 6f 70 74  ..-} {1 {bad opt
41b0: 69 6f 6e 20 22 2d 66 6f 6f 22 3a 20 6d 75 73 74  ion "-foo": must
41c0: 20 62 65 20 2d 65 78 61 63 74 2c 20 2d 67 6c 6f   be -exact, -glo
41d0: 62 2c 20 2d 69 6e 64 65 78 76 61 72 2c 20 2d 6d  b, -indexvar, -m
41e0: 61 74 63 68 76 61 72 2c 20 2d 72 65 67 65 78 70  atchvar, -regexp
41f0: 2c 20 6f 72 20 2d 2d 7d 7d 0d 0a 2b 7d 20 7b 31  , or --}}..+} {1
4200: 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 2d 66   {bad option "-f
4210: 6f 6f 22 3a 20 6d 75 73 74 20 62 65 20 2d 65 78  oo": must be -ex
4220: 61 63 74 2c 20 2d 67 6c 6f 62 2c 20 2d 69 6e 64  act, -glob, -ind
4230: 65 78 76 61 72 2c 20 2d 6d 61 74 63 68 76 61 72  exvar, -matchvar
4240: 2c 20 2d 6e 6f 63 61 73 65 2c 20 2d 72 65 67 65  , -nocase, -rege
4250: 78 70 2c 20 6f 72 20 2d 2d 7d 7d 0d 0a 2b 74 65  xp, or --}}..+te
4260: 73 74 20 73 77 69 74 63 68 2d 33 2e 37 20 7b 2d  st switch-3.7 {-
4270: 65 78 61 63 74 20 76 73 2e 20 2d 67 6c 6f 62 20  exact vs. -glob 
4280: 76 73 2e 20 2d 72 65 67 65 78 70 20 77 69 74 68  vs. -regexp with
4290: 20 2d 6e 6f 63 61 73 65 7d 20 7b 0d 0a 2b 20 20   -nocase} {..+  
42a0: 20 20 73 77 69 74 63 68 20 2d 65 78 61 63 74 20    switch -exact 
42b0: 2d 6e 6f 63 61 73 65 20 61 61 61 61 62 20 7b 0d  -nocase aaaab {.
42c0: 0a 2b 09 5e 61 2a 62 24 09 7b 63 6f 6e 63 61 74  .+.^a*b$.{concat
42d0: 20 72 65 67 65 78 70 7d 0d 0a 2b 09 2a 62 09 7b   regexp}..+.*b.{
42e0: 63 6f 6e 63 61 74 20 67 6c 6f 62 7d 0d 0a 2b 09  concat glob}..+.
42f0: 61 61 61 61 62 09 7b 63 6f 6e 63 61 74 20 65 78  aaaab.{concat ex
4300: 61 63 74 7d 0d 0a 2b 09 64 65 66 61 75 6c 74 09  act}..+.default.
4310: 7b 63 6f 6e 63 61 74 20 6e 6f 6e 65 7d 0d 0a 2b  {concat none}..+
4320: 20 20 20 20 7d 0d 0a 2b 7d 20 65 78 61 63 74 0d      }..+} exact.
4330: 0a 2b 74 65 73 74 20 73 77 69 74 63 68 2d 33 2e  .+test switch-3.
4340: 38 20 7b 2d 65 78 61 63 74 20 76 73 2e 20 2d 67  8 {-exact vs. -g
4350: 6c 6f 62 20 76 73 2e 20 2d 72 65 67 65 78 70 20  lob vs. -regexp 
4360: 77 69 74 68 20 2d 6e 6f 63 61 73 65 7d 20 7b 0d  with -nocase} {.
4370: 0a 2b 20 20 20 20 73 77 69 74 63 68 20 2d 72 65  .+    switch -re
4380: 67 65 78 70 20 2d 6e 6f 63 61 73 65 20 61 61 61  gexp -nocase aaa
4390: 61 62 20 7b 0d 0a 2b 09 5e 61 2a 62 24 09 7b 63  ab {..+.^a*b$.{c
43a0: 6f 6e 63 61 74 20 72 65 67 65 78 70 7d 0d 0a 2b  oncat regexp}..+
43b0: 09 2a 62 09 7b 63 6f 6e 63 61 74 20 67 6c 6f 62  .*b.{concat glob
43c0: 7d 0d 0a 2b 09 61 61 61 61 62 09 7b 63 6f 6e 63  }..+.aaaab.{conc
43d0: 61 74 20 65 78 61 63 74 7d 0d 0a 2b 09 64 65 66  at exact}..+.def
43e0: 61 75 6c 74 09 7b 63 6f 6e 63 61 74 20 6e 6f 6e  ault.{concat non
43f0: 65 7d 0d 0a 2b 20 20 20 20 7d 0d 0a 2b 7d 20 72  e}..+    }..+} r
4400: 65 67 65 78 70 0d 0a 2b 74 65 73 74 20 73 77 69  egexp..+test swi
4410: 74 63 68 2d 33 2e 39 20 7b 2d 65 78 61 63 74 20  tch-3.9 {-exact 
4420: 76 73 2e 20 2d 67 6c 6f 62 20 76 73 2e 20 2d 72  vs. -glob vs. -r
4430: 65 67 65 78 70 20 77 69 74 68 20 2d 6e 6f 63 61  egexp with -noca
4440: 73 65 7d 20 7b 0d 0a 2b 20 20 20 20 73 77 69 74  se} {..+    swit
4450: 63 68 20 2d 67 6c 6f 62 20 2d 6e 6f 63 61 73 65  ch -glob -nocase
4460: 20 61 61 61 61 62 20 7b 0d 0a 2b 09 5e 61 2a 62   aaaab {..+.^a*b
4470: 24 09 7b 63 6f 6e 63 61 74 20 72 65 67 65 78 70  $.{concat regexp
4480: 7d 0d 0a 2b 09 2a 62 09 7b 63 6f 6e 63 61 74 20  }..+.*b.{concat 
4490: 67 6c 6f 62 7d 0d 0a 2b 09 61 61 61 61 62 09 7b  glob}..+.aaaab.{
44a0: 63 6f 6e 63 61 74 20 65 78 61 63 74 7d 0d 0a 2b  concat exact}..+
44b0: 09 64 65 66 61 75 6c 74 09 7b 63 6f 6e 63 61 74  .default.{concat
44c0: 20 6e 6f 6e 65 7d 0d 0a 2b 20 20 20 20 7d 0d 0a   none}..+    }..
44d0: 2b 7d 20 67 6c 6f 62 0d 0a 2b 74 65 73 74 20 73  +} glob..+test s
44e0: 77 69 74 63 68 2d 33 2e 31 30 20 7b 2d 65 78 61  witch-3.10 {-exa
44f0: 63 74 20 76 73 2e 20 2d 67 6c 6f 62 20 76 73 2e  ct vs. -glob vs.
4500: 20 2d 72 65 67 65 78 70 20 77 69 74 68 20 2d 6e   -regexp with -n
4510: 6f 63 61 73 65 7d 20 7b 0d 0a 2b 20 20 20 20 73  ocase} {..+    s
4520: 77 69 74 63 68 20 2d 6e 6f 63 61 73 65 20 61 61  witch -nocase aa
4530: 61 61 62 20 7b 5e 61 2a 62 24 7d 20 7b 63 6f 6e  aab {^a*b$} {con
4540: 63 61 74 20 72 65 67 65 78 70 7d 20 2a 62 20 7b  cat regexp} *b {
4550: 63 6f 6e 63 61 74 20 67 6c 6f 62 7d 20 5c 0d 0a  concat glob} \..
4560: 2b 09 20 20 20 20 61 61 61 61 62 20 7b 63 6f 6e  +.    aaaab {con
4570: 63 61 74 20 65 78 61 63 74 7d 20 64 65 66 61 75  cat exact} defau
4580: 6c 74 20 7b 63 6f 6e 63 61 74 20 6e 6f 6e 65 7d  lt {concat none}
4590: 0d 0a 2b 7d 20 65 78 61 63 74 0d 0a 2b 74 65 73  ..+} exact..+tes
45a0: 74 20 73 77 69 74 63 68 2d 33 2e 31 31 20 7b 2d  t switch-3.11 {-
45b0: 65 78 61 63 74 20 76 73 2e 20 2d 67 6c 6f 62 20  exact vs. -glob 
45c0: 76 73 2e 20 2d 72 65 67 65 78 70 20 77 69 74 68  vs. -regexp with
45d0: 20 2d 6e 6f 63 61 73 65 7d 20 7b 0d 0a 2b 20 20   -nocase} {..+  
45e0: 20 20 73 77 69 74 63 68 20 2d 6e 6f 63 61 73 65    switch -nocase
45f0: 20 2d 2d 20 2d 67 6c 6f 62 20 7b 0d 0a 2b 09 5e   -- -glob {..+.^
4600: 67 2e 2a 62 24 09 7b 63 6f 6e 63 61 74 20 72 65  g.*b$.{concat re
4610: 67 65 78 70 7d 0d 0a 2b 09 2d 2a 09 7b 63 6f 6e  gexp}..+.-*.{con
4620: 63 61 74 20 67 6c 6f 62 7d 0d 0a 2b 09 2d 67 6c  cat glob}..+.-gl
4630: 6f 62 09 7b 63 6f 6e 63 61 74 20 65 78 61 63 74  ob.{concat exact
4640: 7d 0d 0a 2b 09 64 65 66 61 75 6c 74 20 7b 63 6f  }..+.default {co
4650: 6e 63 61 74 20 6e 6f 6e 65 7d 0d 0a 2b 20 20 20  ncat none}..+   
4660: 20 7d 0d 0a 2b 7d 20 65 78 61 63 74 0d 0a 20 0d   }..+} exact.. .
4670: 0a 20 74 65 73 74 20 73 77 69 74 63 68 2d 34 2e  . test switch-4.
4680: 31 20 7b 65 72 72 6f 72 20 69 6e 20 65 78 65 63  1 {error in exec
4690: 75 74 65 64 20 63 6f 6d 6d 61 6e 64 7d 20 7b 0d  uted command} {.
46a0: 0a 20 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63  .     list [catc
46b0: 68 20 7b 73 77 69 74 63 68 20 61 20 61 20 7b 65  h {switch a a {e
46c0: 72 72 6f 72 20 22 4a 75 73 74 20 61 20 74 65 73  rror "Just a tes
46d0: 74 22 7d 20 64 65 66 61 75 6c 74 20 7b 66 6f 72  t"} default {for
46e0: 6d 61 74 20 31 7d 7d 20 6d 73 67 5d 20 5c 0d 0a  mat 1}} msg] \..
46f0: 49 6e 64 65 78 3a 20 77 69 6e 2f 74 63 6c 57 69  Index: win/tclWi
4700: 6e 50 6f 72 74 2e 68 0d 0a 3d 3d 3d 3d 3d 3d 3d  nPort.h..=======
4710: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4720: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4730: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
4740: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 52 43  ============..RC
4750: 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74  S file: /cvsroot
4760: 2f 74 63 6c 2f 74 63 6c 2f 77 69 6e 2f 74 63 6c  /tcl/tcl/win/tcl
4770: 57 69 6e 50 6f 72 74 2e 68 2c 76 0d 0a 72 65 74  WinPort.h,v..ret
4780: 72 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e  rieving revision
4790: 20 31 2e 34 33 0d 0a 64 69 66 66 20 2d 75 20 2d   1.43..diff -u -
47a0: 72 31 2e 34 33 20 74 63 6c 57 69 6e 50 6f 72 74  r1.43 tclWinPort
47b0: 2e 68 0d 0a 2d 2d 2d 20 77 69 6e 2f 74 63 6c 57  .h..--- win/tclW
47c0: 69 6e 50 6f 72 74 2e 68 09 33 20 4e 6f 76 20 32  inPort.h.3 Nov 2
47d0: 30 30 34 20 32 31 3a 30 37 3a 30 31 20 2d 30 30  004 21:07:01 -00
47e0: 30 30 09 31 2e 34 33 0d 0a 2b 2b 2b 20 77 69 6e  00.1.43..+++ win
47f0: 2f 74 63 6c 57 69 6e 50 6f 72 74 2e 68 09 32 20  /tclWinPort.h.2 
4800: 4d 61 72 20 32 30 30 35 20 30 36 3a 33 36 3a 34  Mar 2005 06:36:4
4810: 30 20 2d 30 30 30 30 0d 0a 40 40 20 2d 34 35 2c  0 -0000..@@ -45,
4820: 36 20 2b 34 35 2c 31 33 20 40 40 0d 0a 20 23 69  6 +45,13 @@.. #i
4830: 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68  nclude <string.h
4840: 3e 0d 0a 20 0d 0a 20 2f 2a 0d 0a 2b 20 2a 20 54  >.. .. /*..+ * T
4850: 68 65 73 65 20 73 74 72 69 6e 67 20 66 75 6e 63  hese string func
4860: 74 69 6f 6e 73 20 61 72 65 20 6e 6f 74 20 64 65  tions are not de
4870: 66 69 6e 65 64 20 77 69 74 68 20 74 68 65 20 73  fined with the s
4880: 61 6d 65 20 6e 61 6d 65 73 20 6f 6e 20 57 69 6e  ame names on Win
4890: 64 6f 77 73 2e 0d 0a 2b 20 2a 2f 0d 0a 2b 0d 0a  dows...+ */..+..
48a0: 2b 23 64 65 66 69 6e 65 20 73 74 72 63 61 73 65  +#define strcase
48b0: 63 6d 70 20 73 74 72 69 63 6d 70 0d 0a 2b 23 64  cmp stricmp..+#d
48c0: 65 66 69 6e 65 20 73 74 72 6e 63 61 73 65 63 6d  efine strncasecm
48d0: 70 20 73 74 72 6e 69 63 6d 70 0d 0a 2b 0d 0a 2b  p strnicmp..+..+
48e0: 2f 2a 0d 0a 20 20 2a 20 4e 65 65 64 20 74 6f 20  /*..  * Need to 
48f0: 62 6c 6f 63 6b 20 6f 75 74 20 74 68 65 73 65 20  block out these 
4900: 69 6e 63 6c 75 64 65 73 20 66 6f 72 20 62 75 69  includes for bui
4910: 6c 64 69 6e 67 20 65 78 74 65 6e 73 69 6f 6e 73  lding extensions
4920: 20 77 69 74 68 20 4d 65 74 72 6f 57 65 72 6b 73   with MetroWerks
4930: 0d 0a 20 20 2a 20 63 6f 6d 70 69 6c 65 72 20 66  ..  * compiler f
4940: 6f 72 20 57 69 6e 33 32 2e 0d 0a 20 20 2a 2f 0d  or Win32...  */.
4950: 0a                                               .